Author Archives: CAVEDU小編

[App Inventor+Microbit小專題 ] 按鈕控制畫面小球

作者/攝影  曾吉弘
時間  3小時
成本
難度  * * * *
材料表
  • 個人電腦
  • App Inventor開發環境
  • 支援BLE的Android手機
  • BBC Micro:bit開發板

本文要介紹如何透過BBC Micro:bit開發板上的按鈕來控制App Inventor畫面上的小球左右移動,碰到畫面邊緣還會在Micro:bit LED matrix 上顯示對應的字樣。

 

範例 aia檔下載請按我

 

藍牙配對

 

Micro:bit端設定:

  1. 同時按住Microbit 正面A、B按鍵,不要放掉
  2. 按住A、B鍵時,把背面的Reset 鍵按下後再放開。
  3. 這時應該可以看到 “PAIRING MODE!” 以跑馬燈方式出現在Microbit LED 螢幕上,若看到這訊息,便可以放開A、B鍵。
  4. PAIRING MODE! 結束後,會看到一個圖形出現在Microbit LED 螢幕上,不同的Microbit 出現的圖案也不同,這是Microbit 不同裝置獨特的”簽名” (Signature) 。

  1. 這時候的Microbit 已經準備好跟其他裝置配對,請看以下影片教學

 

 

 

Android手機端設定:

  1. 進入Android手機的設定–>藍牙
  2. 確認Micro:bit 已進入配對模式
  3. 當Micro:bit上的‘PAIRING MODE!’ 顯示完,搜尋(每隻Android手機這個選項的文字不一定相同,但意思差不多),應該會看到類似 micro:bit [XXXXX]的選項,其中XXXXX 會根據每片micro:bit而不同。點選該裝置來配對。

4.micro:bit 會出現向左的箭頭,然後Android裝置上會跳出畫面要求輸入配對PIN碼的視窗。

5.按住Micro:bit 的按鍵A ,這時microbit 會連續出現六個數字,這就是配對碼。

6.回到Android裝置上,輸入這六個數字。如果Microbit 出現[V],代表配對成功。如果是[X]代表沒成功,請再試一次

 

編寫程式

匯入BLE 與 micro:bit extension

 

請登入MIT App Inventor官方網站,建立新專案,在Designer頁面中點選Palette左下角的Extension,再點選”Import extension“與”URL:

  1. 貼入以下兩個 extension link:

 

2. 請加入 Microbit_LedMicrobit_Button這兩個Microbit元件。兩者的BluetoothDevice 屬性設為 “BluetoothLE1″。這步驟很容易忘記,別漏掉了

  1. 加入四個按鈕放入 horizontalArrangement元件中,分別用於掃描、停止掃描連線與斷線

 

  1. 新增Canvas畫布元件(寬高各為320像素,底色隨意),再放入一個Ball元件。完成後Designer頁面如下圖(可以不用一模一樣)

Blocks頁面

 

本範例的基本概念是按下Micro:bit板子上的兩個按鈕可以控制小球左右移動,碰到Canvas邊緣會在LED矩陣上顯示對應的文字。開始吧:

STEP1: BLE連線成功後啟動Clockl元件

在BluetoothLE1.Connected事件中,首先啟動Clock.Timer(timer Interval 設為100),並顯示相關訊息,最後要求Micro:bit開始更新兩個按鈕的狀態。

STEP2:按下Micro:bit左側A按鈕

Microbit_Button1.ButtonAStateReceived事件中:

○如果按下了左側的A按鈕(Button_State_Value為true),則讓ball_X 變數值累減10。

○讓Ball1元件移動到(ball_X, 100),也就是左移10像素。

STEP3:按下Micro:bit右側B按鈕

現在看到右側的B按鈕,所做的事情幾乎一模一樣但是Ball1元件的移動方向是相反的。

Microbit_Button1.ButtonBStateReceived事件:

○如果按下了右側的B按鈕(Button_State_Value為true),則讓ball_X 變數值累加10。

○讓Ball1元件移動到(ball_X, 100),也就是右移10像素。

STEP4 Ball reached canvas’ edge

當小球碰到Canvas畫面四邊時,我們希望在Micro:bit的LED矩陣上顯示對應的文字。

Ball1.EdgeReached事件中,使用 if / else if 來檢查到底碰到了哪一邊,根據App Inventor的文件,1是北方,所以要透過Microbit_Led1.WriteLEDText指令來顯示’N’。其餘類推,請看下圖:

完工了!來試試看吧。請確認您的Micro:bit與Android已經配對好了。按下Microbit板子上的按鈕應該讓畫面上的小球左右移動,試試看讓小球去撞牆吧,看看有沒有顯示對應的文字。試試看用 Micro:bit LED 搭配 App Inventor 做出更多功能吧

 

 

相關文章:

[ Micro:bit開箱文] 手勢辨識Grove也有Micro:bit的擴充板套件了Grove Inventor Kit

Micro:bit 為英國廣播公司(BBC) 為推廣學齡兒童程式邏輯教育給所推出的簡潔版卡式開發硬體;外形小巧便於攜帶,在程式教學上的特點有著簡單好上手的介面,硬體上有內含幾款感測器可供單獨使用,以及其可擴充性接腳的設計可將其教育應用的觸角更加延伸。

作者/攝影  林德昀
時間  拆開包裝紙的時間
成本 約NT:1,900
難度  * * *
材料表
  • Grove Inventor Kit

本套件由創客界知名的 Seeed 為 Micro:bit 所推出符合 Grove 標準的模組化套件,一般在物聯網的學習上通常使用的麵包板及杜邦線會有較多接線上的出錯機會,而對於硬體較不熟悉的軟體初學者若使用此套件學習可事先排除很多上述的問題而可更直接專注於程式學習上。

本套件包含:

  1. 擴充母板
  2. 迷你喇叭模組
  3. 角度感測模組
  4. 超音波感測器模組
  5. 光感測器模組
  6. 防水三色發光二極體條
  7. 手勢感應器模組 (筆者認為最有可玩性的模組)
  8. 4 位數字顯示器
  9. 紅光 LED 模組
  10. micro USB 線
  11. 五色鱷魚夾線各2條 (黑、白、紅、綠、黃)
  12. 使用手冊

 

手勢辨識

Micro:bit 上 5×5 LEDs 顯示手勢方向

 

以手勢控制彩虹燈走向

(程式實作部分請期待另篇應用教學文)

 

1.擴充母板

將Micro:bit 的擴充腳位拉出,有給 Grove 4-pin 接頭×4, 以及可供鱷魚夾或香焦棒使用的接點:P0,P1,P2,P8,P12,P13,及3.3V和GND,左方還有PWR的電源指示LED,及僅使用於供電使用的Micro USB接頭 (無法寫入程式);右方中間有廷伸用的接頭目前尚未有其資料,待有新資訊後補充。

 

下圖為Micro:bit 放入後週邊使用其他配線的示意圖

  1. 迷你喇叭模組

可由此喇叭發出汽車,門鈴⋯⋯等,經由不同的頻率的輪入訊號,可得出多樣變化的聲音;此模組中有可供調整輪出音量的可變電阻。

 

  1. 角度感測模組

由10k 歐姆可變電阻組成的角度感測模組,變化角度可由0~300度。可在學習專案中控制音量或馬達轉速⋯⋯等。

 

4.超音波感測器模組

可由此模組以非接觸的方式測量距離,可學習依據不同的距離變化將變量經由Micro:bit轉化為光或聲音的不同變化。

 

5.光感測器模組

可檢測出光度的變化而輸出相對應的訊號,可學習依照訊號強弱的不同而控制LED閃爍⋯⋯等應用。

 

  1. 防水三色發光二極體條

由30顆3色LED 所組成1公尺長的LED 條,每一LED 可由程式獨立控制顯示不同色彩,其封裝具有防水性,可使用於戶外而無需擔心下雨淋溼的影響。

 

7.手勢感應器模組

具有識別 上、下、左、右、前、後、順時鐘、反時鐘及揮手共9種手勢的感測模組。其感測範圍於前方5~15公分,視角60度內的區域內。由於未有詳細資料,筆者猜其工作原理可能為以紅外光加上脈波調變及都卜勒效應所作的感測器。可由本模組實作手勢操作各項目應用,如切換音樂,調整音量,開關燈⋯⋯等。

 

脈波調變:以脈波的形態將訊號改變為所需要的波形,創客界常用的PWM即為一種工作時間寬度上的脈波調變;在實際生活中,各遙控器不相互干擾也是一種脈波調變的應用。

 

都卜勒效應:當接近或遠離時,會對觀察者造成測量頻率的變化;如火車接近時的鳴笛聲會較尖銳,而遠離時會較低沉。

 

  1. 四位數字顯示器

可於學習專案中用作顯示時間或實驗數值。

 

  1. 紅光 LED 模組

需注意LED腳位,若不亮時請檢查是否接反。

  1. 使用手冊

內含12種對於以上模組的基礎程式應用

 

相關文章:

[LattePanda] 使用Google Assistant玩互動語音助理

作者/攝影  袁佑緣
時間  1小時
成本
難度  * * * * *
材料表
  • LattePanda
  • 螢幕
  • 鍵盤
  • 滑鼠
  • 喇叭
  • 麥克風

本文說明如何使用 LattePanda搭配Google推出的Google Assistant服務,來打造一個智慧助手,一起來看看是如何完成的吧!

 

STEP0. 事前準備

為了要能夠使用語音服務,除了我們的小電腦LattePanda外,請額外再準備USB麥克風以及喇叭,另外本次的範例會需要連到Google 雲端的服務,所以請確認LattePanda能夠連到網路。

 

STEP1. 首先我們要到先設定一個Google Developer Project

請點選以下的網址到Google Cloud Platform,如下圖。

https://console.cloud.google.com/project

接著請點選”CREATE PROJECT”,建立一個新的專案,如下圖,建立一個新專案名稱為my-google-assistant。

初始設定完成後,要等幾分鐘才會建立完成,回到Platform的右上角可以看到正在建立新專案。

 

STEP2. 接著我們要完成Google Assistant API的設定

首先,請連到Google API的設定網頁(https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview),並把Google Assistant API設定為”ENABLE”。

接著,為了要取用Google雲端的API,我們必須先有一個認證的client端,所以請連到以下的網址來建立一組oauth client ID。

https://console.developers.google.com/apis/credentials/oauthclient

而如果還沒有設定過Consent Screen的話,系統會提示您填上必要的設定,請點選”Configure consent screen”,設定如下圖。

最後回到”Create client ID”這一步,在Application Type填上Other即可。

到這裡,我們就已經完成了Client ID的設定囉!

最後,請把這個Client ID資訊下載到電腦上(請點選右方的下載箭頭),待會在進行Google Assistant認證的時候會用到。

STEP3.設定Google Acitvity

 

在進到安裝Google Assistant 的程式之前,我們要先設定一下這個Google帳號的

Activity,請連到以下的網址進行設定。

 

https://myaccount.google.com/activitycontrols

 

至於什麼是Activity呢?簡單說就是允許Google能否取用某些個人資訊,例如聲音、App資訊等,為了要能夠讓Google助手能正常運作,請將以下三個Activity設為Enabled。

 

Web & App Activity

Device Information

Voice & Audio Activity

STEP4.安裝Google Assistant SDK Python函式庫

我們使用的Google Assistant SDK是基於Python這個程式語言下去實做的,所以必須先在電腦上安裝Python的執行環境。

請到Python的官網(https://www.python.org/downloads/windows/)下載最新版的安裝檔。

接下來執行下載的Python安裝檔,並記得將勾選”Add Python to PATH”的選項,讓Python的執行位址加到Windows的系統變數中。

再來,請按下Windows的快捷鍵<Win>+R,啟動Windows快速開啟,並打上cmd呼叫Windows Command Prompt。

請在開啟的Command Prompt中輸入以下指令

 

pip install –upgrade setuptools

 

呼叫Python的套件管理員更新setuptools這個套件。

接著再輸入以下指令

 

pip install –upgrade google-auth-oauthlib[tool]

 

把Google認證oauth client的工具安裝到系統中。

還記得我們在STEP2中下載的Client ID JSON檔嗎?請將下載的JSON檔的位址複製起來,並改到以下指令中的”path/to/client_secret_XXXXX.json”

 

在Command Prompt中輸入以下指令以完成認證。

 

google-oauthlib-tool –client-secrets path/to/client_secret_XXXXX.json –scope https://www.googleapis.com/auth/assistant-sdk-prototype –save

 

Google會自動提示您在瀏覽器中完成認證,認證完成如下圖。

認證完的credential.json會自動存在電腦的系統上,Windows環境中預設會存在AppData中,使用者以後在啟動Google Assistant時不用擔心需要再次認證。

最後我們看到Google Assistant SDK的source,前面有說過這個SDK是基於Python這款程式語言去實做的,使用上非常容易上手,而官方的github網址在這邊(https://github.com/googlesamples/assistant-sdk-python)。

裡面有紀錄如何安裝SDK,以及如何去使用提供的函式庫功能,另外還有一些現成的範例可以讓入門的使用者去做體驗,如果讀者想要擴充、修改自己的Google Assistant的功能,可以下載(Download ZIP)整個專案來去修改,有興趣的朋友不妨去嘗試看看!

 

而本文章為了快速的demo,在這邊直接使用包好的assistant-sdk範例套件,讓使用者可以省去下載、手動安裝的過程,所以請在Command Prompt中輸入以下指令

 

pip install google-assistant-sdk[samples]

 

最後我們輸入以下的指令來執行一個簡單的範例pushtotalk。

 

googlesamples-assistant-pushtotalk

 

這支pushtotalk會提示使用者按下Enter鍵並開啟Google Assistant的語音對談功能,請確定您的麥克風與喇叭都有接到LattePanda上,並確認前面的步驟都設定正確,接下來就可以來玩玩看Google Assistant有什麼功能吧!

 

 

相關文章:

 

 

 

[App Inventor+Microbit小專題 ] LED控制

作者/攝影  曾吉弘
時間  3小時
成本
難度  * * *
材料表
  • 個人電腦
  • App Inventor開發環境
  • 支援BLE的Android手機
  • BBC Micro:bit開發板

本文要介紹如何讓App Inventor 透過 BLE 來與最近非常熱門的BBC Micro:bit開發板互動。Micro:bit板子上已經具備了BLE藍牙通訊功能,搭配app Inventor寫好的micro:bit extesion,就能有更多互動的效果。本範例修改自 MIT App Inventor IoT網站之 Micro:bit範例

範例 aia檔下載請按我

藍牙配對

 

Micro:bit端設定:

  1. 同時按住Microbit 正面A、B按鍵,不要放掉
  2. 按住A、B鍵時,把背面的Reset 鍵按下後再放開。
  3. 這時應該可以看到 “PAIRING MODE!” 以跑馬燈方式出現在Microbit LED 螢幕上,若看到這訊息,便可以放開A、B鍵。
  4. PAIRING MODE! 結束後,會看到一個圖形出現在Microbit LED 螢幕上,不同的Microbit 出現的圖案也不同,這是Microbit 不同裝置獨特的”簽名” (Signature) 。

  1. 這時候的Microbit 已經準備好跟其他裝置配對,請看以下影片教學

 

 

 

Android手機端設定:

1.進入Android手機的設定–>藍牙

2.確認Micro:bit 已進入配對模式

3.當Micro:bit上的‘PAIRING MODE!’ 顯示完,搜尋(每隻Android手機這個選項的文字不一定相同,但意思差不多),應該會看到類似 micro:bit [XXXXX]的選項,其中XXXXX 會根據每片micro:bit而不同。點選該裝置來配對。

4.micro:bit 會出現向左的箭頭,然後Android裝置上會跳出畫面要求輸入配對PIN碼的視窗。

5.按住Micro:bit 的按鍵A ,這時microbit 會連續出現六個數字,這就是配對碼。

6.回到Android裝置上,輸入這六個數字。如果Microbit 出現[V],代表配對成功。如果是[X]代表沒成功,請再試一次

編寫程式來控制Micro:bit LED matrix

匯入BLE 與 micro:bit extension

 

請登入MIT App Inventor官方網站,建立新專案,在Designer葉面中點選Palette左下角的Extension,再點選”Import extension“與”URL:

  1. 貼入以下兩個 extension link:

 

2. 請加入 Microbit_Led 這個元件,這是一個非可視元件。並把它的 BluetoothDevice 屬性設為 “BluetoothLE1″。這步驟很容易忘記,別漏掉了

  1. 加入四個按鈕放入 horizontalArrangement元件中,分別用於掃描、停止掃描連線與斷線
  2. 加入一個說明訊息用的 label
  3. 加入一個 ListVeiw,當掃描到鄰近的BLE裝置時會顯示在這裡
  4. 新增一個 TextBox,在此輸入我們希望 micro:bit呈現的英文字(中文不行喔)
  5. 新增兩個按鈕,一個是 [Write to LED] 把 Textbox 內容丟給 micro:bit ,一個是[DrawSmiley],讓 Micro:bit 呈現我們所指定的點陣圖案。

Blocks頁面

  1. 掃描與連線

  1. 畫笑臉副程式

在此用一個副程式 DrawSmiley 來代表,我們會用一個 5 x 5 的數字陣列發給 Micro:bit,就能藉此顯示我們想要的圖形。

在此用到的是 Microbit_Led1.WriteLEDMatrixState指令搭配 binary to base 10 指令組合起來的 0101 陣列,1代表 LED亮起,0則是熄滅。仔細看看,這樣就是一個笑臉呢

0 1 0 1 0

0 1 0 1 0

0 0 0 0 0

1 0 0 0 1

0 1 1 1 0

  1. 發送Textbox內容到 Micro:bit

沒錯,就這麼簡單,直接把 Textbox內容透過 Microbit_Led1.WriteLEDText指令發送出去就好,但不能打中文喔

斷線

斷線時會呼叫 bluetoothLE元件來中斷藍牙連線,確認斷線之後則顯示相關訊息。

完工了!來試試看吧。請確認您的Micro:bit與Android已經配對好了。按下按鈕應該可以看到您在 Textbox 中輸入的文字(中文不行喔)以跑馬燈的形式出現在micro:bit 的 LED matrix 上。按下 smilley 按鈕應該也能看到笑臉圖案, 試試看用 Micro:bit LED 搭配 App Inventor 做出更多功能吧

 

相關文章:

 

完成如下圖:

[Micro:bit] 使用MicroPython與Boson套件設計智慧風扇

本篇文章將帶領讀者使用Microbit輕鬆打造一台小型的智慧風扇,有興趣的朋友不妨參考一下本文,一起來動手DIY吧!

作者/攝影  袁佑緣
時間  3小時
成本
難度  * * *
材料表
  • Micro:bit
  • 樂高積木
  • Micro:bit Boson 擴充版

 

介紹

本篇文章的主角是BBC推出的微型電腦micro:bit,有興趣的朋友不妨參考一下micro:bit的官方網站(http://microbit.org/),裡面有許多適合入門又豐富有趣的應用喔!

而為了要打造一台電動風扇,我們需要加裝額外的擴充版跟電子元件,本文所使用的是DFRobot推出的Boson擴充版,Boson是DFRobot 所推出的一系列電子套件,外型就像積木一樣,除了相容於LEGO之外,還可以用金屬羅絲固定,並且附有磁吸式的底座,容易組裝也容易拆卸,且電路的接口都有經過特別的設計,隨插及用,非常適合沒有電路基礎的小朋友們入門電子實做的世界!

 

想了解更多boson kit相關資訊的朋友,不妨去參考一下DFRobot的官方網站說明喔(https://www.dfrobot.com/blog-630.html)!

準備

經過前面的介紹,接下來我們就要來正式進入我們的實做部份了,首先我們在軟體以及硬體上做一些準備。

 

組裝擴充版

準備我們的micro:bit以及Boson擴充板,組裝圖如下,記得micro:bit的logo朝下面,有LED陣列的那面朝上喔,如果說到時候燒錄程式失敗的話,就會用LED陣列顯示出錯誤訊息。

micro:bit控制板

組裝micro:bit boson擴充板

組裝完成!

 

風扇製作

本範例的硬體主要是用LEGO來做,請參考下方的圖片,零件上用LEGO動力機械的基本套件就能完成囉,當然有興趣的朋友也可以自己DIY設計一個獨特風格的電風扇底座,只要記得上面要有四個boson的座,在待會的實做部份我們會慢慢放入感測器以及馬達、風扇。

軟體安裝

Micro:bit 預設的程式撰寫環境有兩種,一種是圖形化的JavaScript Blocks Editor,另外一種則是我們接下來用的MicroPython Editor。

Microbit let’s code 網站:http://microbit.org/code/

MicroPython 線上編輯器

 

 

MicroPython是將原本就容易學習的程式語言Python實做到為微控制板的架構上,好比說是micro:bit,以下是micro:bit MicroPython的詳細說明文件(http://microbit-micropython.readthedocs.io/en/latest/tutorials/introduction.html),裡面有詳細敘述許多的功能,以及API取用的方法,比起圖形化的Block Editor 來說雖然難度上升了一點,但是彈性也增加了,可以讓我們程式撰寫的功能範圍變得更廣!

MicroPython for micro:bit文件

 

除了使用剛剛在官網看到的線上版,也可以下載MicroPython文件中推薦的Mu Editor(https://codewith.mu/#download),這款編輯器主打簡單、易學,初學者只要專心在學習如何撰寫MicroPython上就好。

Mu 編輯器

 

除此之外,這個編輯器還是跨平台的,不只Windows平台上可以執行,macOS或者是Linux也可以,請讀者依照自己的作業系統環境來下載。

下載Mu Editor

 

下載完成後,打開來之後就會有如下圖的編輯器,當我們要上傳程式碼的時後,請先將micro:bit用usb線接到電腦上,再按下flash的按鈕就行囉!

實做

STEP1:控制馬達 

首先我們先加入Boson套件中的馬達,請裝在基座的正中間,組裝如下圖。

裝完馬達跟風扇之後,接下來請把Boson的訊號線接到micro:bit Boson擴充板的8號腳位上,也就是右上角的那個插座,如下圖。

再來請打開我們的Mu Editor,並打上以下的範例程式碼。

from microbit import *

mode = [700, 900, 1023]
while True:
    for speed in mode:
        print(speed)
        pin8.write_analog(speed)
        sleep(1000)

 

程式碼解說

首先從microbit這個Python函式庫中引入所有的函式,也就是把我們所需要的工具都加進這支程式當中。

接下來再宣告一個變數mode,為三個數字的串列(list),其實就是建造一個三段變速的電風扇,而裡面的數字大小代表的則是馬達的輸出馬力,數字越大就會越強,風力也越大,注意到1023是最高的馬力,而最低馬力700則是個建議的數值,太低的話有可能馬達會轉不到風扇,這點要特別注意喔!

最後我們有一個大大的while迴圈,裡面在包著一個for迴圈,所謂的迴圈就是會在某種條件下一直執行動作的意思,好比說while True就是一直迴圈,for speed in mode就是在三段變速中各執行一次的意思。

至於for迴圈裡面的所執行的動作,就是很直接的把我們的馬達設成三段變速中的速度囉!其中要注意的是,我們所使用是函式(function)是write_analog,意思就是用類比(analog)電壓去驅動我們風扇的馬達,因為用數位的模式就只有開跟關的模式,為了要做到變速的模式,才需要用到類比控制喔!

 

 

 

STEP2:開關控制 

有了馬達之後,我們學會了撰寫程式碼來控制電風扇,但是這樣在使用上可能還不夠直接,如果說我們要像生活中的電風扇一樣,可以有個按鈕來開關電風扇呢?這時候就需要加裝感測器(sensor)啦,請依照下方的組裝圖加上一個Boson套件的按鈕,並把它接到擴充版上的腳位12上。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('ON' if fan_switch else 'OFF')
        pin8.write_digital(int(fan_switch))
        while pin12.read_digital():
            sleep(100)

 

程式碼解說

在這個範例中,我們把重點放在風扇的開關上,所以在控制轉動風扇的馬達時,我們使用的就不是像前面變速式的類比(analog)方式,而是開跟關兩種模式互相切換的數位(digital)方式,所以用的函式是用write_digital。

在程式中,我們有宣告一個變數fan_switch,用來儲存現在使用者控制風扇的按鈕狀態(第12號腳位),每當使用者按下開關又放開之後,就會改變一次fan_switch的狀態,有可能是從開的狀態轉成關(ON->OFF),或者是相反,只要我們把這個fan_switch變數轉成數字後丟到控制馬達的函式上,就能夠達到開關風扇的功能囉!

請參考下面的示範影片,讀者是否能能順利做到開關風扇呢?

https://youtu.be/QeR3TxfTs5g)

 

STEP3:風量調整

 

接下來我們來整合一下前面兩步的範例,除了要能夠開關之外,還要加入一個旋鈕來調整風力大小,讓這個風扇更加的貼近使用者!

請按照下圖,加裝一個Boson 旋鈕套件到風扇的基座上,並把訊號線接到擴充板的0號腳位上,也就是板子的左上角。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

程式好像比起前面兩個程式碼加起來多了不少,就讓我們慢慢來拆解看看是怎麼實作的吧!

首先我們比起STEP1中的三段變速又更明確的定義了馬力(fan_power)跟風速模式(fan_mode)了,並且我們用def定義了一個自己的函式出來,這個fan_mode_switch函式主要會從吃進來的value值,也就是我們旋鈕轉到的數值,來決定我們現在風扇的模式,並輸出對應的馬力值。

而我們是如何判斷風扇馬力的模式呢?其實就是把我們的旋鈕數值(0到1023)分成三等份,然後看看當下使用者轉到的數值是落那一個區間上,就把它對應到三種不同的風力模式(slow, medium, fast)。

最後,這隻範例程式碼還有一個小細節是值得初學者去注意的,當我們在切換模式的時候,我們都必須要注意只有當前一刻風力模式跟此刻轉到的風力模式時才需要去改變我們馬達的轉速,同時顯示的馬力大小才需要去更新,所以我們會用一個previous_mode變數來儲存上一刻的模式喔!

以下是我們的示範影片。

 

STEP4:智慧風扇

最後,我們還想要加入一些常見的風扇沒有的功能,來讓我們的小風扇更加的智慧化,並貼近使用者的使用環境。請依照下面的組裝圖加上一個Boson套件的motion 感測器,並把訊號線接到1號腳位上。

而什麼是motion sensor呢?其實就是所謂的PIR(Passive Infrared Sensor),常見的用途就是用來偵測人體的接近(靠著生物體的紅外線),有時候我們在逃生梯上下樓時,電燈自動會開啟其實就是因為有這種感測器,它會自動偵測有人在走動來自動打光。

而我們想要實做的功能就是除了STEP3中有的功能以外,還要加入一個情境,如果偵測到有人的話,例如說偵測到人的手,就會自動開啟電風扇,而不需要特地去壓按鈕還開電風扇,一起來看是如何實做的吧!

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    elif pin1.read_digital():
        fan_switch = True
        print('Fan status: ' + 'ON')
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

比起STEP3的程式碼,我們延伸了主結構中的if…else…,將fan_switch的狀態以外,再新增(elif)了一個motion sensor的狀態(pin1.read_digital),注意到motion sensor只能偵測是否有人靠近,所以使用的是數位的訊號(digital),它無法偵測距離多寡,而且如果身體靜止一段時間的話,也不會觸發motion sensor喔!

以下是我們最後完成的智慧風扇影片,可以用按鈕開關風扇,還可以用旋鈕調整轉速,並且還能用motion sensor在有人的時候自動開啟風扇!

 

相關文章:

 

 

 

 

[雙A計畫]藍牙模組(HC05、HC06)常見的指令使用教學

在教到藍牙之間的通訊的課時,常常會搞錯藍牙型號,想寫這篇文跟大家分享,市面上常用的HC-05和HC-06外觀幾乎一樣,不知道如何對藍牙鮑率做設定,想深入研究可以來看看喔。

作者/攝影  許鈺莨
時間  30分鐘
成本
  • 600~800
難度  * * *
材料表
  • 藍牙模組HC-05*1
  • 藍牙模組HC-06*1
  • USB TO TTL線*1
  • Arduino UNO*1

在按照本文中步驟操作時,請讀者一定要購買時請先與商家進行確認以下幾點:

  • 藍牙型號是HC-05還是HC-06
  • 若是已經確認藍牙型號後,請再與商家確認出廠預設鮑率是9600、38400…..等。

如果以上兩點都已確認過,在做藍牙相關設定時會比較快上手,但一切以商家給的文件為主。

接下來教大家如何快速辨別我們買的藍牙是型號是HC-05還是HC-06,還有藍牙指令設定,所以針對以下幾個部分,我以Keyes藍牙的 HC-05和HC-06做範例:
(本文參考instructable藍牙文件、Retun的Blog)

 

  1. 藍牙HC-05和用Arduino UNO 板設定AT指令教學
  2. [進階設定]HC-05主動模式和手機藍牙連線
  3. 藍牙HC-06和用Arduino UNO 板設定AT指令教學
  4. 藍牙HC-05 USB轉TTL模組設定AT指令教學
  5. 藍牙HC-06 USB轉TTL模組設定AT指令教學

1.藍牙HC-05和Arduino UNO 板設定AT指令教學(適合課堂上多人使用)

如果看見藍牙有六隻針腳時,就可能是型號HC-05的藍牙,但是還是要依照以下步驟實際接線測試或與商家確認藍牙型號。

 

設定HC-05的AT指令之前,先與Arduino UNO接線,請先將Arduino的RESET和Arduino的GND接在一起,使得Arduino成為重置模式再依照下方依序接線:

藍牙Arduino UNO
KEY(or En)3.3V
VCC5V
GNDGND
TXDTXD
RXDRXD
STATE不用接

接完線後,將Arduino UNO 用USB連接到電腦,選擇該板子的COM Port,按下Serial Monitor,由於這是Keyes藍牙HC-05的鮑率出廠時預設為38400,所以Serial Monitor的鮑率要選38400,另外一個選項要選NL&CR,即可下AT指令,大小寫不拘。
用藍牙HC-05的好處就是如果設成別的鮑率,之後如果忘記了,在Serial Monitor還是可以固定選38400,再用「AT+UART?」指令查詢,或是設定成別的鮑率。

輸入AT指令第一次會出現ERROR:(0),第二次輸入AT出現OK,即可進入AT模式。

因為HC-05為主從一體(Slave & Master)藍牙,指令多達36種,所以接下來會告訴各位常用的指令。

如果你和我一樣是講師在課堂上教學的話,則一開始這裡有兩個步驟非常重要:

  1. 查詢HC-05 address
  2. 知道自己藍牙的address後改名字

因為在上藍牙通訊時,如果只有兩三位同學的話,還可以一個一個連address測試,但是10幾、20幾位同時在課堂上連線時會搞混,會不知道是不是會連到自己的藍牙,所以要先查出自己藍牙的address的指令,再改藍牙名字。

 

  • 查詢HC-05 address: 「AT+ADDR?」

  • 改名字為CAVEDU: 「AT+NAME=CAVEDU」

  • 查名字 :         「AT+NAME?(確認是否改對)」

  • 改鮑率為9600 : 「AT+UART=9600,0,0」

  • 查鮑率: 「AT+UART? 」

如果改完鮑率請把藍牙電源拔掉再重新接上,再把KEY腳位接上3.3V,新的鮑率設定才會生效

 

  • 設定配對密碼為1234: 「AT+ PSWD=1234」

HC-05還有設定主動模式(Master)的功能,指令如下:

 

  • 設定被動模式: 「AT+ROLE=0」

  • 查詢主/從模式:         「AT+ROLE? 」

  • 設定主動模式: 「AT+ROLE=1」

  • 預設出廠模式: 「AT+ORGL」

如上圖所示,設成出廠模式時,可以用前面所知的AT指令可以查到所有的狀態,包括名字、鮑率、密碼皆已回復。如果之前設成主端(Master),後來也會回復設成從端(Slave)。

 

 

 

  1. [進階設定]HC-05主動模式和手機藍牙連線

既然已經知道如何手動下AT指令設定HC-05為主動模式的話,接下來試著跟手機藍牙連線吧!

既然要和手機連線的話,手機裡就必須先安裝有接收藍牙字串的APP,我是用Android系統的手機,Google paly商店可以搜尋名字為「Bluetooth Terminal」的APP,而在IPHONE的App store也可以搜尋得到一樣名稱的APP,這款APP可以和HC-05雙向溝通。

 

而如何知道手機的藍牙位址,可以由 :設定→關於手機→狀態,知道訊息。

再上一個段落已經知道如何設定HC-05的主動模式了,所以這節以主動連到手機藍牙位址為主。

下列敘述完整步驟,從設定主動模式開始:

 

Step1:切換至主動模式。

輸入指令「AT+ROLE=1」,收到回應「OK」,表示藍牙模組已進入主動模式。

 

Step2:確認藍牙模式。

輸入指令「AT+ROLE?」,收到回應「+ROLE:1」、「OK」,表示當前藍牙為主動模式。

 

Step3:指定藍牙連線至手機連接模式。

輸入指令「AT+CMODE=0」,收到回應「OK」,表示藍牙將連線至手機。

 

Step4:重啟藍牙。

輸入指令「AT+RESET」,收到回應「OK」,表示藍牙重置。

 

Step5:初始化SPP 函式庫。

輸入指令「AT+INIT」,收到回應「OK」,表示藍牙SPP函式庫已初始化。

 

Step6:設定詢問模式。

輸入指令「AT+INQM=1,9,48」,收到回應「OK」

1:RSSI信號強度指示。

9:可以搜尋9個藍牙設備。

48:搜尋時間為48*1.28秒=61.44秒內。

 

Step7:開始詢問,將搜尋周遭藍牙裝置。

輸入指令「AT+INQ」,收到回應「+INQ:12:34:567890:1F1F,7FFF」(該參數為藍牙Address,不同模組Address亦不同)、「OK」。

 

Step8:結束詢問。

輸入指令「AT+INQC」,收到回應「OK」,需要再次輸入指令「AT+STATE?」確認藍牙狀態,若藍牙回應為「+STATE:INQUIRING」、「OK」,代表藍牙未結束詢問,必須回Step4重啟藍牙和Step5初始化SPP 函式庫後,輸入指令「AT+STATE?」,回應為「+STATE: INITIALIZED」,才能成功連線手機藍牙。

 

Step9:綁定連線手機藍牙Address。

輸入指令「AT+BIND=1234,56,abcdef」(在此裝置Address以12:34:56:ab:cd:ef為例),收到回應「OK」。

 

Step10:和手機藍牙連線。

輸入指令「AT+LINK=1234,56,abcdef」

連線後,手機會出現輸入配對密碼1234,表示配對成功,之後就都不需要配對。

當配對成功後,接下來開啟Bluetooth Terminal,先按下「send」後,會出現之前配對成功的裝置清單,選擇之後即可雙向溝通。

下列是配對成功,HC-05和手機雙向溝通的畫面:

3.藍牙HC-06和用Arduino UNO 板設定AT指令教學(適合個人使用)

 

目前的HC-06藍牙會有四條針腳居多,分別是VCC、GND、TX、RX,以下是HC-06的正反面:

HC-06正面                                                                                                          HC-06反面

在設AT指令前,也是先與Arduino UNO接線,只需要接四條線。

和前面HC-05方法一樣,要先將Arduino UNO 的RESET和自己的GND接線,再和HC-06接在一起。

藍牙Arduino UNO
VCC5V
GNDGND
TXDTXD
RXDRXD

 

HC-06出廠後多半都已經設定為從端(Slave),而AT指令只有少數的指令如:密碼、鮑率、姓名….等,以下Arduino UNO Serial monitor示範AT指令,所有AT指令皆要大寫:

 

  • AT測試,回應OK

和HC-05不同的是,因為Keyes的HC-06出廠時預設為9600,所以Serial monitor的鮑率選項要選9600,選擇「沒有行結尾」或「No line ending」。

測試成功後,接下來就是設定其他的AT指令:

 

  • 查詢版本: 「AT+VERSION」

  • 設定名字為CAVEDU02: 「AT+NAMECAVEDU02」

  • 設定密碼為1234: 「AT+PIN1234」

  • 設定鮑率為9600: 「AT+BAUD4」
編號鮑率備註
11200設定鮑率為1200
22400設定鮑率為2400
34800設定鮑率為4800
49600設定鮑率為9600(原廠預設)
519200設定鮑率為19200
638400設定鮑率為38400
757600設定鮑率為57600
8115200設定鮑率為115200

與前篇HC-05最大的不同點是,假設你鮑率已經設成9600,若想要改鮑率或改名時,則你的Serial monitor的鮑率選項要選9600才能成功下AT指令;如果你鮑率已經設成38400,則你的Serial monitor的鮑率選項要選38400才能成功。也就是說,當你設定好之後就要記住自己鮑率是設定多少,否則就要每個鮑率去試試看,不像HC-05有固定鮑率為38400可以容易設定,這也是HC-06最大的缺點。

 

那麼問題來了,大家有沒有發現HC-06的AT指令比較少,並沒有像HC-05一樣有查詢address指令,那上課時怎麼辦呢?

個人較好的做法是在上課前先一一設定藍牙名字,上課時學員們才不會連到別人的藍牙。

因此我的建議是,HC-05和HC-06價錢如果差不多的話,可以買HC-05有較多的AT指令設定,上課時學員既可以學習去查address指令,又可以不會搞混連線到別人的藍牙,重點是老師就不用在上課前花時間設定所有學員的藍牙名稱。

 

  1. 藍牙HC-05 USB轉TTL模組設定AT指令教學

如果沒有Arduino UNO板,則用USB 轉TTL模組也是可以設定AT指令,那麼要在哪裡設定AT指令呢?

其實只要能夠讀取COM Port,使用任何一種終端機軟體皆可,如Putty、RealTerm….等等,我是使用AI的 CH430G USB 轉TTL模組,和使用AccessPort這個終端機軟體。

USB 轉TTL模組

 

AcessPort終端機

在使用AcessPort終端機前,HC-05先與USB 轉TTL模組接線:

USB TO TTLHC-05
3.3VKEY(or En)
5VVCC
GNDGND
RXDTXD
TXDRXD

 

接線時要注意是和USB 轉TTL模組連接,USB 轉TTL模組TXD和HC-05的RXD互接;

USB 轉TTL模組RXD和HC-05的TXD互接。

 

再將USB 轉TTL模組插入電腦USB時,會自動安裝驅動程式:

驅動安裝好了之後,需來到裝置管理員查COM Port,這也是和藍牙溝通的COM Port,所以在AcessPort終端機要選同一個 COM Port。

打開AcessPort終端機後按齒輪圖示 ,設定好鮑率9600和COM Port:

再按下電源圖示 ,就可以設定HC-05 AT指令,AT指令請參考「1.分辨藍牙HC-05和Arduino UNO 板設定AT指令教學」。

並在下方發送區輸入AT指令後要先按下鍵盤Enter後再按下「發送數據」即可,以下方圖示表示:

5.藍牙HC-06 USB轉TTL模組設定AT指令教學

USB 轉TTL模組和HC-06接線圖:

要注意的一點是,USB 轉TTL模組的TX要接HC-06的RX;USB 轉TTL模組的RX要接HC-06的TX。

USB TO TTLHC-06
5.0VVCC
GNDGND
RXDTXD
TXDRXD

 

AT指令和前面一致,請參考「2.分辨藍牙HC-06和用Arduino UNO 板設定AT指令教學」

並在下方發送區輸入AT指令後按下「發送數據」即可,以下方圖示表示:

 

相關文章:

 

【臺北市職能發展學院 X CAVEDU教育團隊】物聯網運用與開發​-學員錄取名單

 

主辦單位:臺北市職能發展學院

培訓單位:翰尼斯企業有限公司

學員錄取名單:

正取

蔡O帆華O永連O宇
蔡O志周O杰陳O儒
高O育強O涵張O雄
廖O維李O漢周O和
李O熹沈O財鄭O澤
陳O峰詹O洋周O慧
彭O芳林O源吳O進
楊O誌陳O銓張O潁
曾O燕徐O志楊O軒
余O興孫O青

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

 

課程大綱   

課程名稱課程內容
教務說明

Linklt7697相見歡

教務管理規定說明

1.  職訓計畫介紹

2.  出缺勤管理辦法與退訓規定

3.  學員應盡權利與義務

4.  申訴管道

Linklt 7697 規格介紹、使用環境設定。

數位控制實習

基本電子輸入輸出控制實習基本電子輸入輸出控制實習
雲端服務運用認識  MediaTek Cloud Sandbox 雲服務

上傳感測器資料至 MCS 雲服務

MCS 雲端智慧居家控制

手機程式設計編寫 Android app 使用 App Inventor

Android 裝置透過 BLE 與 7697 互動

擴充裝置電路設計實作使用電路設計軟體設計與製作擴充電路板
開源時代-認識開放政府認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

讓 LINE 與 7697 對話吧!認識 LINE API 使用 Python/NodeJS

架設 LINE回音機器人透過 Line API 與 7697 互動

注意事項:

1.第一次上課請遞交學員資料卡、職能進修契約書,1吋大頭照(2張)、身份證正反面影本。

2.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

3.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

 

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

[阿吉老師的MIT奇幻之旅-雜記] 阿吉老師的美簽申請之旅

作者/攝影  曾吉弘
時間  1個月
成本
  • 面談費用$4960
  • 護照快遞費用$220
難度  *******
材料表
  • 相關文件
  • 耐心(要很多)

 

本文要介紹阿吉老師申請美簽B1的過程。根據官方網站的說明:B-1/B-2訪客簽證是提供給到美國短暫停留的商務(B-1),或旅遊或就醫(B-2)的人使用。一般而言,B-1簽證是專為與商務夥伴洽商、出席科學、教育、專業或商務大會/會議、進行地產交易或協商合約的旅客而設。B-2簽證則為旅遊性質,包括觀光、探訪朋友或親戚、就醫及出席聯誼、社交或服務性質的活動。B-1及B-2簽證通常被合併簽發為一組簽證:B-1/B-2簽證。

 

本文意在協助申請美國簽證者能順利完成,唯根據個人經歷流程分享,無惡意、誤導或造假之意圖。

 

好了,開始吧:

  1. 先和自己說:”我OK,我一定可以的!
  2. USTravelDocs網站建立帳號,由此可以看到相關的進度
  3. 填好DS160表格,這份文件大概要填1~1.5小時,問得非常鉅細靡遺,不過別擔心,每一個問題都有繁體中文翻譯,每一頁做完都可以存檔後繼續。耐心就一定能填完,如果有漏填任何一項,系統會和你說。網頁上有很多熱心網友把每一個頁面都擷圖下來,我就沒這麼做了。DS-160 FAQ請點我
  4. 繳費,現在台幣比較大所以是$4960,總之AIT說多少就是多少,線上轉上或印出去郵局繳費就對了。下圖中136後的11碼就是您用於安排面談的號碼。

請注意:在當天5點前繳納,需等待到下一個工作日中午1點之後生效使用。 如是當天5點之後繳納的費用,需等待到下兩個工作日中午1點之後生效使用。

5.安排面談,需要使用繳費單上的收據編號才能安排面談,也就是今天繳費,最快要明天中午之後才能安排面談,總之手腳要快!(需要攜帶的東西有以下,但是以官方網站最新公告為主:

  1. 預約確認單(要繳費完才能預約面談,所以趕快繳費!)
  2. DS-160確認頁

(圖片來源http://dennyeyberg.wixsite.com/filipino-am-visa/ds-160-confirmation-page-example)

  1. 有效護照
  2. 所有的舊護照(其實沒用到)
  3. 六個月內拍的5吋照片,AIT台北辦事處旁邊的全家可以拍,AIT裡面也有快拍機。
  4. 繳費收據(帶了但沒用到)
  5. 其他包含(但可能沒用到):旅行行程表、工作證明、收入/財力證明、成績單/畢業證書等。

 

6. 面談

  1. 美國在臺協會台北辦事處(10659台北市信義路三段134巷7號)
  2. 請比預約時間提早15分鐘到達即可,會有協會人員在外面幫您確認文件,他會幫您把用不到的東西抽掉歸還並協助排序。
  3. 進去前手機要先託管,會給您一個號碼牌,面談完離開後就可領回。
  4. 繳交相關資料,這時會確認相關資料是否遺漏,如果缺重要資料就…下次再來。要重新繳費預約面談(照片忘了拍倒還好,AIT中有拍照機)。
  5. 輸入指紋
  6. 面談
  7. 中間的時間都是在等,等多久很難說。我進去到出來共花了1小時,時間不算太久。

7. 查詢護照狀態,請由網頁中間輸入您的護照號碼,會顯示相關狀態。

8.如果確認已進入快遞寄送,可由此查詢(嘉里大榮美簽查詢服務),查詢的序號是預約確認單上右下角的八碼數字(以下圖片引用自嘉里大榮美簽查詢服務)

面談結束會問什麼問題其實很難預測,完全看面試官心情。但由於我是交換學者,所以他對於我的研究項目就興致勃勃地問很多,我就說是手機程式設計、IoT、機器人等等,這時…

 

他突然轉身進去問了其他同事一些東西

 

然後笑瞇瞇地給我一張紅色單子要進行額外的行政審查程序(Administrative Processing Case),要我繳交上面所勾選的資料,大部分像是旅遊計畫、研究計畫等等都是現成的東西沒什麼問題,但其中有一個東西是advisor letter需要MIT回答相關問題,所以又等了幾天才能補件。

這個行政審查程序最多不會超過60天(天啊!!),期間只能由這個網站去查詢case number,這個網站後來才知道有台大學長因為研究領域比較偏國防,足足拖了兩三個月。可能和新總統有關吧…

 

有幾件事先和大家說:

  1. AIT電話非常不容易打通,要有心理準備
  2. 面試官最大,但據實回答應該都沒什麼問題。尤其是像我這種已收到對方邀請函或是入學通知等正式文件的,就算碰到上述的行政審查程序,可能會晚點出發(沒辦法…),但應該還是能順利成行。
  3. 非移民簽證問題不大,除非是某些特殊狀況國家:查德、伊朗、利比亞、朝鮮、敘利亞、委內瑞拉、葉門和索馬利亞。更多資訊,請參閱:https://travel.state.gov/content/travel/en/news/important-announcement.html

 

終於順利拿到簽證,請密切關注阿吉老師的MIT奇幻之旅吧~

 

相關文章:

【11/9開課】人工智能服務與Opendata大數據專題實作|​臺北市職能發展學院 X CAVEDU教育團隊

Acupass報名請點我

以下為本次物聯網運用與開發課程招生簡章 (詳細報名簡章請按我)

一、主辦單位:臺北市職能發展學院

二、培訓單位:翰尼斯企業有限公司

三、訓練班別與課程資訊:人工智能服務與Opendata大數據專題實作

班別名稱人數時數訓練起迄日期上課時間報名截止日錄取公告自行負擔費用
人工智能服務與Opendata大數據專題實作30人21小時106/11/9

106/11/30

週二、四

18:30-21:30

線上報名;106年11月8日中午12:00截止106/11/8 933元
製表日期:106.10.06

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

四、參訓資格與訓練費用負擔:

(一)年齡:年滿15歲以上民眾有意願參加進修訓練者(自行負擔個人訓練費用之20%)。

(二)性別:男女兼收

(三)開班條件:具特殊身分參訓者人數,須佔每班次實際開訓人數10%(含)以上,如特定對象不足額方開放一般民眾參訓。

 

五、報名方式與繳交文件:

(一)先完成線上報名,報名網址:https://www.accupass.com/event/1710031100534614309170

(二)經培訓單位通知後,請繳交下列文件:

  1. 身分證(正反面影本)
  2. 1吋相片2張
  3. 特定對象身分證明文件(無者免附)

資料不齊或欠缺者,恕不接受報名。

六、錄訓機制:

(一)甄試方式:採「甄選審查錄訓」方式。

甄選審查錄訓將以筆試跟面試兩階段進行。筆試主要針對基礎知識了解程度做評鑑,將其評鑑結果跟面試成績做加總,占甄選審查標準20%。

面試主要針對申請人參與意願、基礎知識了解程度、學經歷及證照進行分數計算作為評鑑標準,占甄選審查標準80%。

筆試以是非題跟選擇題為主,使其學員了解物聯網基礎知識。口試將針對參與意願(50%)、基礎知識了解(25%)、學經歷簡述(25%)為評鑑標準。

【甄試日期】106年11月8日

甄試成績達錄訓標準70分者為合格,依甄試總成績高低順序排列後,分列正取、備取,錄取名單於各班錄取公告日公佈於CAVEDU教育團隊首頁(http://www.cavedu.com/),並以E-mail與簡訊方式通知錄取學員,未錄取者不另通知。

106/11/9開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。

八、課程大綱   

課程名稱課程內容
教務說明

人工智能服務與opendata大數據概論

教務管理規定—

  1. 職訓計畫介紹
  2. 出缺勤管理辦法與退訓規定
  3. 學員應盡權利與義務
  4. 申訴管道
基本電子輸入輸出控制實習基本電子輸入輸出控制實習
程式語法基礎認識 Python 程式語言

變數、判斷式與程式流程

基礎互動專題製作

雲端服務運用認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

擴充裝置電路設計實作使用電路設計軟體設計與製作擴充電路板
Facebook API根據開發板資訊來發佈 Facebook 個人訊息
微軟認知服務上傳照片到微軟認知服務 Face API 並取得臉孔資訊(年齡、性別、情緒等)

九、注意事項:

1.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。

扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

2.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

[開箱]DFRobot Boson Starter Kit for BBC micro:bit

作者/攝影  曾吉弘
時間  30分鐘
成本
  • DFRobot Boson Starter Kit for BBC micro:bit
難度  *
材料表
  • DFRobot Boson Starter Kit for BBC micro:bit

本文要介紹DFRobot公司針對BBC micro:bit所推出的 BOSON kit 套件包(micro:bit另購),這樣可以讓您的專題更豐富喔

感謝DFRobot很快就寄出一套給我們玩,這次封面的色調走粉色系,看起來非常舒服。

其中最重要的就是這片micro:bit擴充板囉,上面有電源開關、六個周邊接頭、音量鍵以及耳機插孔(之前用microbit居然要剪線… 覺得不太方便)。當然原本板子上的0、1、2、3V與GND鱷魚夾頭也都在喔

 

盒子裡面有哪些東西呢?

  • micro:bit 之Boson 擴充板 x 1
  • 紅色按鈕 x 1
  • 紅色 LED 模組 x 1
  • 旋轉感測器(旋鈕式電位計) x 1
  • 聲音感測器 x 1
  • 動作感測器 x 1
  • 迷你風扇模組 x 1
  • 迷你伺服機 x 1
  • RGB LED 燈條 x 1
  • Micro USB 傳輸線 x 1
  • 3-Pin 傳輸線(連接microbit 與模組),短中各數條
  • 教學色卡 1批

 

盒子裡面提供了很多有趣的範例,馬上就可以開始玩喔,例如以下的彩虹燈,可以根據旋鈕來調整燈光顏色~

看看這些色卡,真的很漂亮。有四個馬上可以做出來的小專題喔!

(*圖片經同意引用自DFRobot網站)

 

相關文章:

 

 

[開箱文] 新玩具!!ARDUBOY開箱!

哈囉!各位親愛的讀者們,學校開學也過了一段時間,相信大家都在漸漸的收心,但是小編今天要來跟大家介紹的,絕對是讓您無法收心的好物(誤!?)。

作者/攝影  郭皇甫/吳怡婷
時間  30分鐘
成本
  • ARDUBOY
難度  *
材料表
  • ARDUBOY

相信和小編一樣年代的玩家,都有聽過一款掌機叫「Game Boy」。沒錯!這款曾風糜全球,銷售超過1億台的掌機,現在又出現了。不過這次,不是「Game Boy」,而是「Arduboy」。小編有幸拿到了這台掌機,與擁有遊戲魂的你們,一同分享。

 

外盒的顏色只有黑與白,相當乾脆,似乎也說明了它的遊戲也只有黑白二色。盒裝正面寫著ARDUOBOY的字樣,以及相當懷念的十字按鍵與二顆AB按鈕。(這就是小時候躲在被子裡,陪我熬過許多夜晚的萬惡小按鈕)

圖01 Arduboy外盒包裝

 

盒裝的一側有QR Code與Arduboy的網址,英文寫著「開源遊戲平台。免費製作與分享8位元的遊戲」,衝著可以自製遊戲的這一點,非常值得!

圖02 盒裝側邊

另一側寫著「容易學習編寫、創作自己的遊戲。免費的遊戲、線上教學、加入社團吧!」。(我也想加入啊!!!)

圖03 盒裝另一側

轉到盒裝背面,這一面就相當詳細了,上頭寫著「Arduboy可以讓你創作並與他人分享自己的遊戲。可以在Arduboy的論壇裡,查看並下載遊戲」。右邊是遊戲參考畫面,左邊是Arduboy的規格。

圖04 盒裝背面

  • 重量:14公克
  • 內含遊戲:1款
  • 快閃記憶體:32kb
  • RAM:2.5kb
  • EEPROM:1kb
  • 頻率:16mhz
  • 單色顯示器:OLED
  • 像素:128*64 Pixels
  • 鋰聚合物電池:180mAh
  • 壓電揚聲器:1
  • 晶片:ATMEGA32U4

打開盒裝後,會看到可愛的Arduboy被包在夾鏈袋中,內含物有Arduboy、Micro USB線、說明書。

圖05 Arduboy與usb線

 

 

登登登!主角登場!正面採透明壓克力外罩,讓你可以清楚看到這塊板子的內部結構;背面使用金屬背蓋,整個提昇它的質感。

圖06 Arduboy正面

 

圖07 Arduboy背面

與Game Boy不同的是,Arduboy少了選擇與開始鍵,不過沒有關係,還是可以玩。電源開關在最上方;最下面是USB孔。

圖08 Arduboy按鍵

打開電源,遊戲主畫面是一隻小美人魚,頭髮還會飄動;遊戲選單在右邊,雖然不多,但夠用了。

圖09 遊戲開始畫面

遊戲運行畫面相當流暢,雖然是8-bit遊戲,但基本的人物、場景、怪物、血量、分數都有了。

圖10 遊戲運行畫面

遊戲結束後,還會有最高分數的畫面統計,真的是做得相當完整。

圖11 遊戲結束畫面

當然囉,一款遊戲怎麼能夠滿足廣大的遊戲迷呢?在Arduboy的社群(https://community.arduboy.com/)裡,有著更多的遊戲等著你下載,在這個社群裡,每個人都是遊戲製作者,把自己製作的遊戲分享出來,一方面可以得到測試的回饋;另一方面又能增加曝光度,何樂而不為呢?

圖12 Arduboy社群網站

同場加映,左邊彩色的盒裝裡也是Arduboy,以橫的方式手持,遊戲是相當經典的「俄羅方塊」,玩起來也是十分順暢喔!

圖13 二款Arduboy盒裝

圖14 二款不同的Arduboy

 

最後,附上遊戲試玩的影片,讓廣大的遊戲迷們一起過過癮吧!

 

相關文章:

 

 

[LattePanda] 作品發表:中文手指閱讀器

這次跟各位讀者分享的作品,是淡江大學電機系CILAB實驗室朱永龍同學發表的專題,CILAB在互動式學習、人機互動、嵌入式系統、影像分析與辨識 、模式識別是主要研究方向,近年在小朋友學習、弱勢族群、MAKE領域發表相當多作品,更多作品可以到這裡

作者/攝影 徐豐智/朱永龍

本次作品為中文手指閱讀器,希望提供視障者一個輕巧且易於攜帶的閱讀器;將閱讀器穿戴在視障者的食指上,協助他們閱讀紙本書籍上的中文文字。視障者使用手指閱讀器時,系統首先會利用震動提示的方式,來引導視障者將食指移動到適當的閱讀位置(觸覺回饋)。系統辨識書籍上的中文文字完成後,透過朗讀文字提供視障者聽覺上的回饋。

 

來認識一下視障者的相關資訊吧

一般日常生活中閱讀文字是不可或缺的事情,除了閱讀書籍外,包括閱讀藥物罐上的說明,操作家電(例如微波爐)上的按鈕,閱讀車站內看板上相關訊息(例如位置、樓層)時,都需要辨識這些文字訊息。對視障者來說,理解這些文字訊息是一件困難的任務。對「中途失明者」來說更是如此,所謂的「中途失明者」是指年齡為15歲以上之視障者,他們原本擁有正常的視力,後來因為疾病或意外傷害導致失明。這些視障者未曾接受過特殊教育,他們普遍呈現摸讀速度緩慢、連續性不足、缺乏效率等問題。(*註解[1]-[5])

 

為了協助視障者閱讀文字,近年來國內外許多研究者提出許多研究成果。主要可分為穿戴式裝備或是手持式裝置兩大類型的輔具。(*註解[6]-[13])

  • 穿戴式輔具:

將身體當為攝影機或相機的載具,並在攝影機擷取影像後,搜尋影像中可能存在的文字區塊加以辨識。學者Yi與Tain將小型攝影機架設在眼鏡上,並透過影像分析與文字辨識技術,辨識出書寫在物品上的文字。Hanif與Prevost 同樣將小型攝影機架設在眼鏡上的方式,來辨識招牌上的文字,並提供一個震動回饋來與視障者互動。Mattar等人[8]設計一個頭戴式攝影機,來辨識招牌上的文字。Ezaki等人將攝影機架設在肩膀上,來辨識招牌上的文字。

  • 手持式輔具:

手持式裝置的特色就是視障者透過PDA或智慧型手機作為影像擷取裝置。學者Peters 等人[10]以PDA的相機擷取影像來辨識鈔票、條碼與商品上的標籤。Shen等人[11]使用智慧型手機辨識門牌或路標,並提供震動回饋來與視障者互動。

 

現在技術上常遇到的問題

  • 在擷取影像時,影像品質容易受到光源、焦距、反光等影響。
  • 在複雜背景中尋找文字區域也不容易。
  • 需要耗費大量的運算資源(處理時間可能需要數秒至數十秒)。
  • 很難辨別出哪些文字資訊才是視障者真正關心的資訊。

由MIT多媒體實驗室Shilkrot等人在2014與2015年所提出的穿戴式手指閱讀器。協助視障者閱讀紙本書籍上的英文文字。當系統辨識書籍上的英文文字後,利用語音朗讀文字的方式,讓視障者得知書籍上的文字內容為何。

這次主題以辨識繁體中文為主,將閱讀器套在食指上並指向書籍,閱讀器將透過震動提示引導視障者閱讀書中文字,閱讀器也將透過攝影機逐一朗讀出書籍上的文字內容,閱讀器也可以幫助外籍人士學習中文字。

View post on imgur.com

裡面的硬體裝置包含(1)小型攝影機、(2)震動馬達、(3)電容式觸控開關,(4)控制馬達的微控制系統。我們利用小型攝影機擷取影像資訊來判斷手指與書本文字的相對位置,並進一步擷取文字字元的影像。

 

我們來看看硬體

閱讀器裡面安置一個(5)電容式觸控開關,手指可藉由觸摸開關來切換閱讀器的中文閱讀模式、閱讀器內部也安置四個具震動功能之微型馬達,電腦端的控制系統可以即時控制馬達震動,並透過震動的提示資訊,引導食指移動到適當的閱讀位置。(6)LattePanda做我們文字辨識的後端處理系統,配合閱讀器可以隨時做文字處理,並隨時提供給使用者語音回饋。

View post on imgur.com

View post on imgur.com

情景一 單字閱讀模式

閱讀器擁有中文單字閱讀模式,使用者手指指向文字時,閱讀器將只偵測手指上方所指到的中文單字,單字閱讀模式不使用振動馬達,並且關閉其它跳行偵測和引導換行等震動提示功能。

View post on imgur.com

單一字閱讀

 

情景二 文章閱讀書籍文字

視障者在閱讀文章時並無法順利的將手指指在適當的文字位置上,文章閱讀模式在閱讀書籍時,閱讀器會透過震動馬達的震動來提示視障者,並引導食指移動到適當的文字位置,方便閱讀器做文字辨識。

我們在手指閱讀器內部安置了四個具震動功能之微型馬達。電腦端依據不同的使用情景設計了三種主要的引導機制(A)引導使用者到距離手指最接近的文字段落,並引導手指移至該行文字的開頭位置(圖4(a))。(B) 當手指出現跳行或偏移到其他橫行文字的情況時,閱讀器透過震動提示的方式,引導手指移回原本的閱讀的位置(圖(b))。(C) 當手指移動到此橫行文字段落的結尾邊界時,將提示回到行頭並到達下一行從頭開始閱讀(圖(c))。

View post on imgur.com

(a) 引導至開頭

View post on imgur.com

(b) 跳行提醒

View post on imgur.com

 

(c) 閱讀至結尾邊界時(震動引導機制

 

中文字元切割

當手指閱讀器將指尖前方的影像資訊傳送至電腦端後,CILAB開發一套中文字元擷取與辨識演算法來辨識影像中的文字。下圖是系統流程圖,這個系統利用影像前處理(灰階、Otsu、Opening、Closing)等演算法,找出指尖位置與傾斜角度,再偵測出行高等相關資訊來做文字擷取切割出單一的文字圖,透過中文字元辨識以及文字轉語音讓閱讀器念出中文。

View post on imgur.com

系統流程圖

 

若是針對整張影像做二色化處理,其二色化結果非常容易受到光源以及其他因素影像,經常出現文字破損的情況,也進一步影響文字切割以及中文字元辨識(OCR)的準確性。設計者採用區域式(local-based)的二色化處理擷取出完整度較好的文字影像,並提升文字切割以及中文字元辨識(OCR)的準確性。

另外採用投影掃描線法來偵測橫行,圖的灰色區域代表掃描線經過文字區塊(圖6a)。當系統偵測橫行並計算出行高後,我們會根據指尖位置,往上方延伸兩倍行高的高度,以及四倍行高的寬度,進行區域影像的切割(如圖(a)之紅色矩形區域),並針對此矩形區域使用Otsu threshold再次進行二色化處理,圖7(b)為此矩形區域進行二色化處理後之結果。

View post on imgur.com

橫向投影掃描線法

View post on imgur.com

View post on imgur.com

 

 

接著使用垂直投影的方式來切割中文字元(圖(a)),此種方式相較於切割英文字元會有較為複雜的問題,對於某些中文字來說(例如:化、川),以垂直投影進行文字切割時,一個完整的中文字元會被分割成兩個或三個獨立的文字區塊。

我們發現中文字的外觀都非常接近方正型,我們根據中文字的行高資訊,在做文字切割時,將部分寬度較小的且鄰近的中文字元合併成一個中文字元,圖 (b)為成功切割出一中文字元。

View post on imgur.com

圖(a)垂直投影掃描線

View post on imgur.com

(b)切割獨立元

 

註解

[1] 柯明期, 中途失明者適應與重建之研究。師範大學特殊教育所碩士論文, 2004。

[2] 李佳玲, 中高齡視障者電腦使用動機及對圖書館電子化資源服務需求之研究。臺灣大學圖書資訊學研究所碩士論文, 2013。

[3] W. Jeong, “Emotions in information seeking of blind people,” in Diane Nahl and Dania Bilal (Eds.), Information and Emotion: The Emergent Affective Paradigm in Information Behavior Research and Theory pp. 267-278, 2007.

[4] 陳怡佩。視覺障礙兒童及青少年的資訊需求。臺灣圖書館管理季刊, 2(3), pp. 32-43, 2006.

[5] K. Carey, “The opportunities and challenges of the digital age: a blind user’s perspective,” Library Trends 55(4): 767-784, 2007.

[6] C. Yi, and Y. Tian, “Assistive text reading from complex background for blind persons,” in Camera-Based Document Analysis and Recognition. Springer, 15–28, 2012.

[7] S. M. Hanif, and L. Prevost, “Texture based text detection in natural scene images-a help to blind and visually impaired persons,” In CVHI, 2007.

[8] M. Mattar, A. Hanson, and E. Learned-Miller, “Sign classification using local and meta-features,” in IEEE CVPR Workshops, pp. 26–26, 2005.

[9] N. Ezaki, M. Bulacu, and L. Schomaker, “Text detection from natural scene images: towards a system for visually impaired persons,” in Proc. of ICPR, vol. 2, pp. 683–686, 2004.

[10] J.-P. Peters, C. Thillou, and S. Ferreira, “Embedded reading device for blind people: a user-centered design.” in Proc. of IEEE ISIT, pp. 217–222, 2004.

[11] H. Shen, and J. M. Coughlan, “Towards a real-time system for finding and reading signs for visually impaired users,” In Proc. of ICCHP, pp. 41–47, 2012.

[12] R. Shilkrot, J. Huber, C. Liu, P. Maes, and S. C. Nanayakkara, “Fingerreader: A wearable device to support text reading on the go,” in CHI EA, ACM, pp. 2359–2364, 2014.

[13] R. Shilkrot, J. Huber, M. E. Wong, P. Maes, and S. C. Nanayakkara, “Fingerreader: A wearable device to explore printed text on the go,” in ACM CHI 2015, pp. 2363–2372, 2015.

 

相關文章:

 

 

 

 

 

 

 

 

 

 

 

[Processing匯入OpneCV視覺函式庫] 臉孔追蹤小專題

作者/攝影  曾吉弘
時間  3小時
成本
  • Webcam
難度  * * * *
材料表
  • 個人電腦
  • Webcam 或筆電內建攝影鏡頭
  • Processing IDE

本文要介紹如何在 Processing 中匯入OpenCV視覺函式庫,並做到臉孔追蹤的效果。

 

這比建置完整的OpenCV環境做法簡單多了,但是功能相對也會比完整的openCV環境來得少,就看您個人的需求囉。其實 Processing 的程式碼都很簡潔,也很容易做出漂亮的介面,是阿吉老師上課很喜歡的。Processing結合Arduino也很簡單。

 

硬體

請將#1伺服機的訊號腳位接到Arduino的#9腳位,用於控制PTZ平台的水平方向移動(Pan)

請將#2伺服機的訊號腳位接到Arduino的#11腳位,用於控制PTZ平台的垂直方向移動(Tilt)。其餘分別接電接地完成即可。

View post on imgur.com

示意圖(圖片來源 adafruit 與 sparkfun.com):

View post on imgur.com

View post on imgur.com

您可由 thingiverse這樣的網站找到更多的PTZ平台設計

 

Processing設定

1.下載Processing

2.開啟 Sketch → Import Library…   Add Library:在跳出選單中下載openCV, processing video函式庫

View post on imgur.com

View post on imgur.com

View post on imgur.com

3.下載Arduino函式庫,完成之後可以在 File → Examples 看到相關範例,都可以直接玩玩看喔

 

View post on imgur.com

4.開啟範例程式:LiveCamTest,就可以直接追蹤臉孔囉,以下是我們加入Arduino相關控制碼

import gab.opencv.*;
import processing.video.*;
import java.awt.*;
import processing.serial.*;
import cc.arduino.*;

int center_x, center_y;
Arduino arduino;

Capture video;
OpenCV opencv;

void setup() {
  size(640, 480);  
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
  println(Arduino.list());

  arduino = new Arduino(this, Arduino.list()[0], 57600); 
  //0代表第一個COM裝置,請根據實際狀況修改
  arduino.pinMode(9, Arduino.SERVO);     //#1 servo 水平
  arduino.pinMode(11, Arduino.SERVO);   //#2 servo 垂直
  video.start();
}

void draw() {
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  noFill();
  stroke(0, 255, 0);
  strokeWeight(2);
  Rectangle[] faces = opencv.detect();   //偵測是否有臉
  println(faces.length);                            //偵測到幾張臉

  for (int i = 0; i < faces.length; i++) {    //根據臉孔數目來跑迴圈
    println(faces[i].x + "," + faces[i].y);    //顯示臉的座標
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); //畫長方形把臉框出來
    center_x = faces[i].x + (faces[i].width/2);   //起始點x + 0.5*寬
    center_y = faces[i].y + (faces[i].height /2);  //起始點y + 0.5*高
    print(center_x); 
    print(", "); 
    println(center_y);
    ellipse(center_x, center_y, 10, 10);
    arduino.servoWrite(9, int(map(center_x, 100, 270, 0, 180)));  
    //本組數值是center_x 於畫面之左右極值,需依照實際情況調整
    arduino.servoWrite(11, int(map(center_y, 80, 250, 0, 180)));  
    //本組數值是center_y 於畫面的上下極值,需依照實際情況調整
  }
  delay(100);
}

void captureEvent(Capture c) {
  c.read();
}

執行

 

由console的訊息可以看到以下訊息:

 

OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com

Using Java OpenCV 2.4.5.0

Load cascade from: C:/Users/user/Documents/Processing/libraries/opencv_processing/library/cascade-files/haarcascade_frontalface_alt.xml

Cascade loaded: haarcascade_frontalface_alt.xml

 

代表在此的臉孔追蹤還是用到了Haar分類演算法,點選連結可以看到關於本分類法的數理基礎。

 

執行畫面如下,可以看到畫面會把偵測到的臉孔標出來,也會在console中顯示偵測到的臉孔張數與座標

View post on imgur.com

View post on imgur.com

相關文章:

 

 

 

 

 

 

[ DIY人型機器人 ] DeAGOSTINI-Robi機器人組裝分享

View post on imgur.com

作者/攝影  葉哲志
時間  二~三天
成本
  • 約42,000
難度  * * *
材料表
  • Robi機器人第一至七十期

View post on imgur.com

Robi是由日本機械人創作者高橋智隆所設計的機器人,並在DeAGOSTINI出版的「洛比」週刊活耀於2014年,「洛比」除了會在每一期介紹各式各樣與機器人相關的內容,每篇雜誌都會伴隨Robi機器人的部件,讓訂閱者能享受了解、組裝機器人的樂趣。

View post on imgur.com

組裝Robi機器人的契機在我個人參訪CAVEDU教育團隊時,意外得知了這個小傢伙,半個身體與整箱的零件堆放在一個大紙箱裡頭,不過! Robi與所有的零件就堆放在眼前了,機會難得,就由我接手讓Robi動起來!

View post on imgur.com

View post on imgur.com

Robi已經有些部分完成了,除了Robi的頭部外殼與擺放用的支撐架(圖中的不是實際運作的上半身噢),其餘還包含了一部分的上肢,可惜的是有銜接Robi左手的部分似乎遺失了某塊零件,看來在搞定之前只能擱置了。

View post on imgur.com

那麼就先把所有尚未組裝的零件來張合照,這些就是將要攻克的目標!

View post on imgur.com

什麼?你說怎麼有隻腳剛剛都沒提到?其實那是我剛開始組Robi時太興奮而忘記記錄的,所以確實有一隻腳已經被我給完成了,但別擔心看不到怎麼組裝的,機器人也是兩隻腳,當然能帶各位體驗一次組裝Robi的過程啦~

 

首先以我開始組裝的27號期刊為例,薄薄的一本乍看之下根本只剩一張紙了阿…

View post on imgur.com

View post on imgur.com

其實每篇期刊介紹機器人的內容都很獨特,位於內頁左半邊的目錄依序介紹「洛比的機器人見聞錄」、「機器人巨星檔案」、「機器人技術的世界」及「組裝導覽」,見聞錄裡主要介紹現行實際運作的機器人,諸如保全、相聲、送貨……等等所涉獵的機器人,巨星檔案則是像原子小金鋼或鋼鐵人這類位於科幻中存在的機器人,機器人技術則時常介紹一些機器人所運用的科技,機器人繪製自身所見的3D地圖從沒聽過對吧!但內容還是要請各位訂購後在閱讀了,所以現在就先翻到「組裝導覽」。

View post on imgur.com

內容先是介紹當期所給的零件與組裝時需配合的已組裝好零件,再來就是手把手的圖例教學啦,基本上照著做十分的容易,所以後續就接著左腳的實際組裝吧!

View post on imgur.com

Robi機器人其中的核心角色—「伺服馬達」,可以跟旁邊的實際腳部大小做比較,能利用的空間被十足的精簡了呢。

View post on imgur.com

雖然使用了工具來拆裝,但這把螺絲起子也是期刊所給的,它也是整個組裝中唯一的工具噢。把伺服馬達拆開是為了要接線,這樣才能控制Robi靈活的作動。

View post on imgur.com

View post on imgur.com

電線銜接馬達控制面板的部分必須使用貼紙保護,在很早以前就先把貼紙給了玩家們,還好之前的組裝者好好的保留了下來。

 

View post on imgur.com

View post on imgur.com

接完線就能配合其餘零件按圖索驥了。

View post on imgur.com

馬達與零件是有防呆措施的,只要不刻意用力按壓,裝錯了一定能知道。

View post on imgur.com

馬達與零件是有防呆措施的,只要不刻意用力按壓,裝錯了一定能知道。

View post on imgur.com

View post on imgur.com

用螺絲固定腳踝零件至底板,之後讓馬達之間互相串接,這樣就不會有一堆亂七八糟的線暴露在外了。要留意線路的走法,避免被錯誤的壓迫到,而此時增加的第二顆伺服馬達有額外貼了白色貼紙,這樣能讓Robi的腳踝看起來一致。

View post on imgur.com

View post on imgur.com

要注意螺絲分做圓頭與平頭,鎖個圓頭螺絲在腳底害Robi每一步像在踩積木,他一定氣到摔給你看。

View post on imgur.com

View post on imgur.com

依序鎖零件,串接第三顆馬達,鎖零件,串接第四顆馬達,Robi的腳便迅速的成型了!

View post on imgur.com

 

View post on imgur.com

準備下半身合體!期刊很有趣的附贈了顆足球,Robi再等等就有靈活的雙腳啦。

View post on imgur.com

 

 

 

 

 

雖然小腿的部分還需要收線處理,但基本上已經把Robi組完一半了!截至目前為止是到達54號期刊,剩下其他特殊的零件。

View post on imgur.com

剩餘的零件就是用於線路的排線、揚聲器、人體感測器、貼紙……等等,但礙於上半身缺乏關鍵的零件而無法將東西安裝於身體內部,因為是需要不斷組裝後測試有沒有損壞的部件,先跳過組裝後半段要拆開再試,。

View post on imgur.com

那麼Robi的組裝就先暫且告一段落,其時實際的去接觸機器人十分有趣之外,在組裝的過程你能發現機器人的結構富含諸多的巧思,如果有機會的話,不妨多多參與機器人相關的事物吧,他真的值得你去體驗,那麼有關於Robi機器人的分享到此,謝謝觀看!

 

相關文章:

 

 

 

 

 

 

 

[LinkIt 7697開發板教學]MCS雲端RGB LED類比控制-Blocklyduino圖形化開發環境

作者/攝影  曾吉弘
時間  3小時
成本
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材
難度  * * *
材料表
  • 個人電腦
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材

本文要介紹如何使用Mediatek Cloud Sandbox (聯發科技實驗室推出的雲服務)來控制LinkIt 7697上的 RGB LED 的個別顏色亮度。程式使用Blocklyduino圖形化開發環境開發板製作的小型電路專題。您可由此比較與一般Arduino IDE的類C語法的異同。請參考我們上課的投影片(超過100頁喔)!:

 


 

MCS端設定

        請登入MCS雲服務,建立新的原型,其下有三個整數(integer)型態的控制器,channel id 分別是 red, green, blue,下限0上限255,這是對應於Arduino的 analogWrite語法的參數。詳細建立資料通道畫面如下:

View post on imgur.com

建立好三個資料通道之後,請為這個原型建立一個測試裝置,完成如下圖:

View post on imgur.com

硬體線路

請將Linkit 7697插上麵包板,並根據下圖將RGB LED負極(最長腳)接到GND腳位。左到右分別代表R G B三個顏色的腳位,請分別接到LinkIt 7697的P10、P8與P6腳位。

View post on imgur.com

Blocklyduino程式碼

初始化/setup():在此會先連上指定的Wi-Fi AP、MCS伺服器並新增所指定的通道id。請注意相關資訊不要打錯

View post on imgur.com

重複執行/loop()

在此會持續與MCS保持同步,如果任一通道有更新(使用者在MCS輸入新的數值)的話,就會根據新的數值來控決定對應的RGB LED顏色強度。最後則是把MCS的數值顯示於Serial Monitor

View post on imgur.com

7697程式碼

上述BlocklyDuino轉出來的Arduino程式碼如下,請直接上傳到7697之後就可以執行,重要的指令都以註解方式寫在程式碼中。

 

操作

請先檢查相關資料是否都正確,執行7697端程式。確認7697已連上MCS之後,請在各個控制器通道輸入0~255之間的數值,即可看到RGB LED顏色產生變化,也會把相關數值顯示於Serial Monitor

 

由於BlocklyDuino目前尚未提供MCS的PWM控制器資料通道的指令,但您可以自行在轉為Arduino code之後將 MCSControllerInteger red(“red”);     改為 MCSControllerPWM red(“red”);   這樣就能在MCS端使用PWM控制器資料通道的拉桿來控制LED亮度。

#include <LWiFi.h>
#include "MCS.h"

char _lwifi_ssid[] = "";     //Wi-Fi 帳號
char _lwifi_pass[] = "";   //Wi-Fi 密碼
MCSDevice mcs("", ""); //MCS測試裝置的 deviceId, deviceKey

MCSControllerInteger red("red");            //新增 channelId 為 red 的整數型控制資料通道
MCSControllerInteger green("green");  // green
MCSControllerInteger blue("blue");       // blue

void setup()
{
  mcs.addChannel(red);                             //將這三個channel 加入測試裝置
  mcs.addChannel(green);
  mcs.addChannel(blue);
  while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) {
    delay(1000);                                            //每隔1秒試著去連上指定的 Wi-Fi AP
  }
  while (!mcs.connected()) {                    //持續與MCS保持連線
    mcs.connect();
  }
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  while (!mcs.connected()) {                         //檢查與MCS的連線狀態,如果斷線會在此重連
    mcs.connect();
    if (mcs.connected()) {
      Serial.println("MCS Reconnected.");
    }
  }
  mcs.process(100);
  if (red.updated()) {                                       //如果各控制資料通道更新
    analogWrite(10, red.value());                 //根據該值來控制LED亮度
  } else if (green.updated()) {
    analogWrite(8, green.value());
  } else if (blue.updated()) {
    analogWrite(6, blue.value());
  }

  Serial.print(red.value());
  Serial.print(", ");
  Serial.print(green.value());
  Serial.print(", ");
  Serial.println(blue.value());                      //顯示各資料通道數值於Serial monitor
}

 

 

相關文章: