20藍牙再探索
(2022/09/30)
有關這主題,之前已有研究過,但已經忘了差不多了,再加上有相關研習的課程要上,所以再來複習一下
之前的文章,供參:
一、使用配對說明
添加「藍牙」積木(在【擴展】搜尋【Bluetooth】(在【廣播積木】改為【藍牙積木】,兩者不能共存)
藍牙連線的設定,如下圖
有三種,直接使用第一種【不需配對】比較方便!
不需配對:使用手機APP時,仍要配對,但在藍牙下搜尋即可發現此設備,並直接進行配對。
自動配對(預設值):開發板先進入【配對模式】(按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也下架
Bitty Controller為付費的APP(120元)
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
micro:bit Blue APP的功能
這是您可以使用此APP和BBC micro:bit進行的一些操作
在手機屏幕上控制micro:bit的3D圖像,通過移動真正的micro:bit在空間中旋轉它
監控您的micro:bit處理器的溫度
將您的手機用作瑣事記分牌,並通過按micro:bit上的按鈕來授予彩色星星
將手機連接至藍牙心率監測器,並在運動時觀看心率直方圖。觀看與micro:bit顯示屏上顯示的直方圖相同的直方圖,這樣您就可以戴上micro:bit,並將手機放在包中不可見
玩動物蔬菜礦物猜謎遊戲
按下按鈕A,用micro:bit進行計數,完成後,使用按鈕B將累計的計數器值發送到手機。計數時,電話不需要參與,僅在上傳最終值時才涉及。您甚至可以數松鼠。或者是其他東西 :-)
您需要在micro:bit上使用正確的代碼。如有疑問,請訪問https://github.com/bittysoftware/microbit_blue_device_code ,在這裡您可以找到一些方便的十六進製文件可供下載。
先利用makecode寫一個啟動所有藍牙服務的程式(如下圖)
原本有一韌體再先加入,在這邊直接把我們寫的程式上傳到micro:bit
利用手機
手機利用藍牙與micro:bit配對
開啟micro:bit Blue APP連接已配對的micro:bit
進入主畫面
大部份跟之前的內容一下,直接參閱06APP的應用 micro:bit Blue
Dual D-Pad Controller 的使用,請參閱 28手機控制自走車
三、藍牙串口服務測試
實作內容說明:
一開始啟用藍牙串口(UART)服務
micro:bit會一直讀取來自串口的資料,並判斷是否有【換行】
如果讀取到的資料是1,就將屏幕的呈現【愛心】圖案 (就相當於近端開燈)
如果讀取到的資料是0,就將屏幕的所有LED燈點滅掉 (就相當於近端關燈)
如果讀取到的資料不是1或2,就將屏幕上顯示所輸入的資料
按A按會將目前的【光線感測值】寫入到串口
按B按會將目前的【方位感測值】寫入到串口 (使用方位角一開始可能要求畫圓來校正羅盤)
補充說明:串口UART(Universal Asynchronous Receiver/Transmitter,即通用異步收發器)串口通信是單片機最常用的一種通信技術,通常用於微控制器和電腦之間、微控制器和微控制器以及微控制器和無線模組之間的通信。
程式如下:下載 https://drive.google.com/file/d/1Ggu4xwIaIHxRoI10CEZ2r5Pw71ibB8pB/view?usp=sharing
如何判斷【資料接收完畢】
利用是否收到一些【特殊符號】來做判斷
最常見有:
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(最近很紅)
Bluetooth Electronics(這APP可做操控面板,但一直無法連上micro:bit,失敗,真的很可惜)
各APP基本功能介紹:
Serial Bluetooth Terminal
參閱參考文
nRF Connect (除支援android,也支援ISO)
LightBlue
BLE scanner
V7RC
原理如下圖
連線後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)的燈
程式如下:下載 https://drive.google.com/file/d/1erPlb1WPuEJn4fIX-9lcc0One3bqqSOm/view?usp=sharing
簡易操作