20221201 鳳山國中
主題:micro:bit基礎藍芽應用
本教材網址:http://gg.gg/20221201fs
研習日期:111.12.01 (四)上午08:30~11:30
地點:鳳山國中藝術大樓二樓
講師:黃文玉老師 (shspswenyu@gmail.com)
一、軟體部份
MakeCode:微軟設計的積木式推疊的程式語言平台
網址:https://makecode.microbit.org/ (今天以此平台的教學為主)
線上編輯器,還有模擬器可用
也有離線版,但我很少用:https://makecode.microbit.org/offline-app
適合國中小學生的使用
擴展藍牙積木
添加「藍牙」積木(在【擴展】搜尋【Bluetooth】(在【廣播積木】改為【藍牙積木】,兩者不能共存)
藍牙與廣播的比較
使用配對說明
藍牙連線的設定,如下圖
有三種,直接使用第一種【不需配對】比較方便!
不需配對:使用手機APP時,仍要先要到手機藍牙配對,但在藍牙下搜尋即可發現此設備,並直接進行配對。
自動配對(預設值):micro:bit開發板先進入【配對模式】(按A+B、Reset、放 Reset、放A+B),手機藍牙才可發現此設備,不用輸入密碼即可配對成功!
密碼配對:開發板先進入【配對模式】(按A+B、Reset、放 Reset、放A+B),手機藍牙才可發現此設備,按A鍵後,開發板會出現6位密碼,輸入手機後才可配對成功!
使用上,如果發現無法進行上面三種配對方式切換時,請關閉makecode再重新開啟程式
如果一直無法搜尋到此藍牙設備時,請將開發板進入【配對模式】再進行搜尋
二、micro:bit Blue手機APP的使用
此 app 透過藍芽通訊來監控micro:bit 的內部感測器
micro:bit Blue是早期Martin Woolley 這位作者所開發的APP(只適用android手機),但目前已下架。
https://play.google.com/store/apps/details?id=com.bluetooth.mwoolley.microbitbledemo&hl=zh_TW
內文說到:建議用戶使用Bitty Software(https://bittysoftware.blogspot.com/ )的Bitty Blue或Bitty Controller代替此應用程序,該應用程序已不再受支持。
後發現Bitty Blue也下架 (網路上有APK檔可下載)
Bitty Controller為付費的APP(120元),我覺得最好用是Dual D-Pad Controller(後面小車的操控會介紹到)
如果只要用Dual D-Pad Controller,Google Play下有一免費的Microbit DPAD Bluetooth Ctrl的APP可用
micro:bit Blue APP雖已下架,但在網路上找到apk檔 https://www.waveshare.net/w/upload/5/53/Com-bluetooth-mwoolley-microbitbledemo.7.apk
怕此apk檔以後不見了,我已自行下載在雲端 https://drive.google.com/file/d/1OxSu-Pma89TWSjaewvSpYtggUVquiTNT/view?usp=sharing
先利用makecode寫一個啟動所有藍牙服務的程式(如下圖)
原本有一韌體再先加入,在這邊直接把我們寫的程式上傳到micro:bit
利用手機
手機利用藍牙與micro:bit配對
開啟micro:bit Blue APP連接已配對的micro:bit
進入主畫面
大部份跟之前的內容一下,直接參閱06APP的應用 micro:bit Blue
Dual D-Pad Controller 的使用,請參閱 28手機控制自走車
控制LED或繼電器
利用IO Digital Output
將LED的正極接Pin0、LED的負極接GND
將繼電器的OUT接Pin0、繼電器的+接3V、繼電器的一接GND (繼電器要支援3V的)
控制小車
利用Dual D-Pad Controller
簡單的測試程式
如果沒有micro:bit Blue APP,Google Play下有一免費的Microbit DPAD Bluetooth Ctrl的APP可用
以【麥昆小車V3】來做範例
麥昆小車積木:在擴展中輸入maqueen
控制麥昆小車3的程式:https://makecode.microbit.org/_D5JhjedXWEgs
註:無法使用登月小車(不支援藍牙積木)
登月小車積木:在擴展中輸入 https://github.com/iCShopMgr/MoonCar
三、藍牙串口服務測試
實作內容說明:
一開始啟用藍牙串口(UART)服務
micro:bit會一直讀取來自串口的資料,並判斷是否有【換行】
如果讀取到的資料是1,就將屏幕的呈現【愛心】圖案 (就相當於近端開燈)
如果讀取到的資料是0,就將屏幕的所有LED燈點滅掉 (就相當於近端關燈)
如果讀取到的資料不是1或2,就將屏幕上顯示所輸入的資料
按A按會將目前的【光線感測值】寫入到串口
按B按會將目前的【方位感測值】寫入到串口 (使用方位角一開始可能要求畫圓來校正羅盤,可改用光線感測值)
補充說明:串口UART(Universal Asynchronous Receiver/Transmitter,即通用異步收發器)串口通信是單片機最常用的一種通信技術,通常用於微控制器和電腦之間、微控制器和微控制器以及微控制器和無線模組之間的通信。
如何判斷【資料接收完畢】
利用是否收到一些【特殊符號】來做判斷
最常見有:
LF(Line Feed)最後加上特殊字元 \n,表示「換行」。(建議用此)
CR(Carriage Return)最後加上特殊字元 \r,表示「回車」,把裝置的位置重設到一行字的頭。
四、利用手機APP透過藍牙與micro:bit互動
手機先透過藍牙與micro:bit進行配對
micro:bit只支援【BLE】,不支援【經典藍牙】???(再查細節)
常見的手機藍牙APP
不適用的藍牙APP:(這些APP只針對【經典藍牙】,配對後雖可看到,但連不上)
Arduino BlueControl
Arduino Bluetooth Control(尤大大)
Annikken Andee
適用的藍牙APP:(這些APP針對【BLE】)
Serial Bluetooth Terminal
nRF Connect (除支援android,也支援ISO)
LightBlue
BLE scanner
V7RC(最近很紅,除支援android,也支援ISO)
Bluetooth Electronics(這APP可做操控面板,但一直無法連上micro:bit,失敗,真的很可惜)
各APP基本功能介紹:
Serial Bluetooth Terminal
nRF Connect (除支援android,也支援ISO)
V7RC
到Google Play安裝V7RC的APP
原理如下圖
連線後APP會一直送出訊息
作品說明
利用轉盤來控制屏幕顯示內容
CH1(左右移動),基準值1500
CH1>1700點亮右方(4,2)的燈
CH1<1300點亮左方(0,2)的燈
CH2(上下移動),基準值1500
CH1>1700點亮上方(2,0)的燈
CH1<1300點亮下方(2,4)的燈
CH3(上下移動),基準值1500
CH1>1700 關閉上方(2,0)的燈
CH1<1300關閉下方(2,4)的燈
CH4(左右移動),基準值1500
CH1>1700關閉右方(4,2)的燈
CH1<1300關閉左方(0,2)的燈
makecode程式如下:https://makecode.microbit.org/_D9VYTJ2FAR0o
用V7RC操控麥昆小車
採用【車輛】模式即可
右邊為CH1(控制左右)
左邊為CH2(控制前後)
小車的makecode程式:https://makecode.microbit.org/_4Az129F6Cbfj
五、利用App Inventor 來寫手機的APP
進入 app inventor2 (http://ai2.appinventor.mit.edu)
使用google帳號登入
可以轉繁體中文,但建議直接用英文版就好了
建立一個新專案(Start new project),命名為microbitBLE01
拉出一個【水平排列】的框
並在其中添加4個按鈕。重命名按鈕:ButtonScan,ButtonStopScan,ButtonConnect和ButtonDisconnect
在【水平排列】下方添加一個標籤。 重命名LabelStatus並將其文本更改為 Status:
將ListView拉到Status:下方,並將其重命名為ListBLE
接下來,我們要安裝BluetoothLE擴展,點選import extension
https://iot.appinventor.mit.edu/#/bluetoothle/bluetoothleintro
Download the BluetoothLE extension (version 20200828) https://iot.appinventor.mit.edu/assets/resources/edu.mit.appinventor.ble-20200828.aix
將【藍牙擴展】拖放到Screen1上,因為它是不可見的組件,所以它會顯示在Screen1的下方
接下來,點選Blocks開始寫程式了
首先,點右上角的 block ,進入程式編輯畫面
當ButtonScan.Click (當Scan按鍵被點擊的時候)
當 ButtonStopScan.Click
當 ButtonConnect.Click
當 ButtonDisconnect.Click
按Scan後,要列出可用的藍牙設備
與藍牙設備連接後
當藍牙設備斷線後
大功告成
但BluetoothLE 擴展尚未更新以支持 Android 12 ,所以上面程式在Scan時Android 12的手機會出問題! https://community.appinventor.mit.edu/t/android-permissions-ble-android-12/66469/3
修正方式:
添加BluetoothClient (在Connectivity項目內),只拉進去不做任何動作
再加入如下的兩段程式
利用手機按鈕控制小車的運動
接下來加入讀取micro:bit UART的擴展功能
擴展的網址 Download the BBC micro:bit extension https://iot.appinventor.mit.edu/assets/resources/SimpleMicrobit.aix
上面這一版沒有UART的擴展功能
所以使用早一點的版本 https://community.appinventor.mit.edu/t/app-inventor-micro-bit-and-uart/44876
First we have to set up a basic app that can connect to a BLE device. Head over to: http://iot.appinventor.mit.edu/assets/howtos/MIT_App_Inventor_Basic_Connection.pdf (這就是我前面那4個按鈕的教材)
But: download the BLE extension from here: (instead of the link given in the PDF, which is old) http://iot.appinventor.mit.edu/assets/resources/edu.mit.appinventor.ble-20200828.aix (最新的)
At the time of writing, this is the latest one. If there is a later one, you probably find it here: http://iot.appinventor.mit.edu/#/bluetoothle/bluetoothleintro
Do NOT download the micro:bit extension found here: http://iot.appinventor.mit.edu/#/microbit/microbitintro It does not have UART support. (不支援UART)
Instead, download the oldest micro:bit extension, found here: http://iot.appinventor.mit.edu/assets/resources/com.bbc.microbit.profile.aix (使用這個舊版的才有支援UART)
參考資料:https://blog.cavedu.com/2019/10/28/app-inventor-control-and-read-microbit/
麥昆小車makecode程式:https://makecode.microbit.org/_Lc2g9ahs8TiX (含溫度服務功能)
App inventor程式
利用手機讀取 micro:bit 的 Temperature
基本介紹到此