Arduino首次接觸就上手 - 藍牙4.0篇01_控制LED亮滅
| 撰寫/攝影 | 曾吉弘 |
| 難度 |
★★★☆☆ |
| 時間 |
2hrs |
| 材料表 |
|
|
中文系列文章 |
English version |
|
|
範例影片
https://youtu.be/Ryf8kbFrVHs硬體
HC10藍牙模組包含了以下腳位:
請把 HM10 藍牙模組搭配 Grove 接頭接上 [Arduino首次接觸就上手] 的 D7 Grove port,實際上裏面包含了GND, Vcc, D7, D8 等四支腳位,它一樣是一片 Arduino UNO,只是把常見的電路模組整合在同一片電路板上,無須再使用麵包板。但也正因如此,多數腳位已被占用,例如LED已連接到D4,除非將 LED 從板子上拆下來,否則無法作為其他用途。因此本範例使用 [Arduino首次接觸就上手] 尚未被占用的腳位D7與D8做為通訊腳位。
如果您使用傳統獨立運作的 Arduino,請把 HC10 的TX, RX 依序接到 Arduino 的 D7, D8 腳位 (或其他腳位也可以,但請記得修改 Arduino 程式碼),並完成電源接腳VCC與GND的連接。
App Inventor 編寫簡易的藍牙訊息發送程式
萬丈高樓平地起,先從最簡單的LED亮滅開始吧。這個由 App Inventor 編寫的 app 可以搜尋鄰近的藍牙BLE裝置、進行藍牙連線/斷線,並運用兩個按鈕發送不同的字元給 Arduino,Arduino 就會根據接收到的字元執行對應的動作。別小看這個 app,可以延伸出非常多應用呢!Designer畫面編排
畫面元件很簡單,點選 [Scan] 之後,會掃描手機附近的藍牙BLE裝置,並顯示於 ListView 中。本範例的 HC10 的預設名稱會叫做 HMSoft XX:XX:XX ,後面12碼為藍牙位址。 點選 [Connect] 連線,連線成功之後畫面會顯示相關訊息。這時可以點選 [LED ON] 與 [LED OFF],這時候 [Arduino首次接觸就上手] 的 D4 LED 應該會隨之亮暗。 操作完畢之後請點選 [Disconnect] 斷開藍牙連線。
blocks程式設計
STEP1: 在 ButtonScan.Click 事件中,使用 BluetoothLE.StartScanning 來掃描鄰近的藍牙裝置。如果有掃描到任何藍牙BLE裝置,會呼叫 BluetoothLE.DeviceFound事件,並把 DeviceList 放到 ListView (已改名 ListBLE中) 在 ButtonStopScan.Click 事件中,使用 BluetoothLE.StopScanning 來停止掃描 SERVICE_UUID / CHARACTERISTIC_UUID 維持預設值就好,無須修改。
STEP2:
按下 [ButtonConnect] 按鈕時,使用 BluetoothLE.Connect 來對所選擇的藍牙裝置連線,這是一種常見的作法。您也可以改用 ConnectWithAddress 來直接對已知位址的藍牙裝置來連線。
連線成功會自動呼叫 BluetoothLE.Connected 事件並執行其內容。
STEP3:
按下 [Button_on] 按鈕時,會透過 BluetoothLE.WriteBytes 送出一個字元 “o”;另外則是在按下 [Button_off] 按鈕時送出一個字元 “f”。
這裡的做法其實相當多元,您可以改用 WriteInteger / WriteString 等語法試試看,當然也要 修改 Arduino 端的程式碼。
STEP4:
按下 ButtonDisconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。
斷線完成,會自動呼叫 BluetoothLE.Disconnected 事件並執行其內容。
Arduino的CODE
Arduino 程式碼也相當簡單易懂,設定好 HC10 模組所連接的腳位(D7與D8)之後(注意:程式上的設定的TX腳位要接到Arduino的RX腳位、程式上的設定的RX腳位要接到Arduino的TX腳位),就會等候是否有資料送進來,並執行對應的動作。 您可以將本範例視為基礎樣板延伸出更多功能,快點試試看吧! [pastacode lang="python" manual="%23include%20%3CSoftwareSerial.h%3E%0ASoftwareSerial%20HM10(7%2C%208)%3B%20%2F%2F%20RX%2C%20TX%0Achar%20appData%3B%0AString%20inData%20%3D%20%22%22%3B%0Avoid%20setup(void)%0A%7B%0A%20%20Serial.begin(9600)%3B%0A%20%20Serial.println(%22HM10%20serial%20started%20at%209600%22)%3B%0A%20%20HM10.begin(9600)%3B%20%2F%2F%20set%20HM10%20serial%20at%209600%20baud%20rate%0A%20%20pinMode(4%2C%20OUTPUT)%3B%20%2F%2F%20onboard%20LED%0A%20%20digitalWrite(4%2C%20LOW)%3B%20%2F%2F%20switch%20OFF%20LED%0A%7D%0A%0Avoid%20loop(void)%0A%7B%0A%20%20HM10.listen()%3B%20%20%2F%2F%20listen%20the%20HM10%20port%0A%20%20while%20(HM10.available()%20%3E%200)%20%7B%20%20%20%2F%2F%20if%20HM10%20sends%20something%20then%20read%0A%20%20%20%20appData%20%3D%20HM10.read()%3B%0A%20%20%20%20inData%20%3D%20String(appData)%3B%20%20%2F%2F%20save%20the%20data%20in%20string%20format%0A%20%20%20%20Serial.println(appData)%3B%0A%20%20%7D%0A%0A%20%20if%20(Serial.available())%20%7B%20%20%2F%2F%20Read%20user%20input%20if%20available.%0A%20%20%20%20delay(10)%3B%0A%20%20%20%20HM10.write(Serial.read())%3B%0A%20%20%7D%0A%20%20if%20(%20inData%20%3D%3D%20%22f%22)%20%7B%0A%20%20%20%20Serial.println(%22LED%20OFF%22)%3B%0A%20%20%20%20digitalWrite(4%2C%20LOW)%3B%20%2F%2F%20switch%20OFF%20LED%0A%20%20%20%20delay(500)%3B%0A%20%20%7D%0A%20%20if%20(%20inData%20%3D%3D%20%22o%22)%20%7B%0A%20%20%20%20Serial.println(%22LED%20ON%22)%3B%0A%20%20%20%20digitalWrite(4%2C%20HIGH)%3B%20%2F%2F%20switch%20OFF%20LED%0A%20%20%20%20delay(500)%3B%0A%20%20%7D%0A%7D%0A" message="" highlight="" provider="manual"/] 實際執行 請先確認 HC10 模組已經接好,燒錄上述 arduino 程式碼到 [Arduino首次接觸就上手] 套件,再安裝 app inventor 到您的 Android 裝置上。根據上述影片來操作,即可根據 app 按鈕來控制 D4 LED 亮暗。 注意:App Inventor 已於 2021 年上半年登陸 iOS 平台,但到本文編寫日期,BLE 功能還在測試中。
相關文章
- CAVEDU blog 超經典雙A計畫 App Inventor + Arduino 藍牙通訊
- App Inventor 物聯網相關文章
留言 💬 (0)
還沒有留言,來當第一個。