本篇目的是提供一個樣板,讓您的App可以發送多種訊號給micro:bit,同時控制與讀取 micro:bit 的感測器(例如:溫度感測器),這樣,遙控機器人的基礎功能就差不多完成了。這邊當然要自賣自誇一下,App Inventor IoT 網站上的 micro:bit 與 BLE extension 就是我在MIT當訪問學者時的工作項目之一。本文同時也參考了 Mason兄的小山貓專案。先來看看執行影片吧 App Inventor端 Designer頁面設定請由MIT App Inventor 網站下載最新的 micro:bit 與 BLE extension,或由此下載 .aia / .hex 原始檔。再匯入您的 App Inventor 專案即可。 用到的元件種類不多,一個ListPicker用來選擇要連線的藍牙裝置,一個用來斷線的按鈕。以及四個發送不同字元的按鈕,不難發現這就是控制機器人的常見介面。您之後當然可以根據您的需要來修改。 micro:bit元件方面,由於我們要從手機發字元給micro:bit,所以需要使用 microbit_Uart 元件,另外也希望能從手機端看到microbit的溫度感測器值,所以再加入microbit_Temperature 元件。請注意這兩個元件都要基於 BluetothLE 元件才能執行,不是 BluetoothClient元件,前者是藍牙低功耗BLE,後者是傳統藍牙SPP。 Blocks STEP1 程式初始化時,先掃描附近的藍牙裝置,並把掃到的裝置放到 SelectBLE 這個 ListPicker 裡面。另外要斷線的時候,就直接呼叫 BluetoothLE.Disconnect 指令就好 STEP2 在ListPicker中選擇您的 micro:bit (名字很特殊不會選錯)
STEP3 讀取micro:bit 溫度感測器值 在上一步已經要求取得micro:bit溫度感測器,所以要用 TemperatureReceived 事件來取得回傳的溫度值。
STEP4 接下來就是自由發揮啦!在此用四個按鈕的 TouchDown 事件來發送不同的指令給 micro:bit,在此使用的指令是 WriteRXCharacteristic 指令來發送 “R\n” 這樣的字串出去,R是根據不同的按鈕的控制指令,\n 則是換行符號,代表一個命令的結尾。
接著用 anyButton.TouchUp 來管理所有按鈕的 touchUp 事件,當然缺點就是 Disconnect 按鈕也算進去,您可以在這個事件中加入 component 不等於 Button_Disconnect 就可以了~
|
microbit 端請到 makecode 網站,開啟一個新的micro:bit專案並完成以下程式。 STEP1 micro:bit 在啟動時會顯示”BLE”訊息提示使用者,並執行藍牙溫度服務與UART服務。在此宣告一個文字變數 RX_Data 來接收從手機發送過來的藍牙訊息。 並在藍牙成功連線與斷線的事件顯示對應訊息 (“C” / “D”)
STEP2 接下來就是等是否收到新的藍牙訊號,在此以換行符號 (newLine)作區別,並把讀取結果放在 RX_Data 變數中。最後比較變數內容並執行對應動作即可,如果您想要控制機器人的話,只需要在各個 case 中放入對應的馬達控制指令即可,非常簡單。
執行畫面
|