cavedu
  • CAVEDU教育團隊
  • BOSON電子積木套件
    • 認識BOSON
      • 輸入模組
        • i1旋鈕模組
        • i2r按鈕模組
        • i3自鎖開關
        • i4光感測器
        • i5傾斜感測器
        • i6水分感測器
        • i7火焰感測器
        • i8觸碰感測器
        • i9聲音感測器
        • i10紅外線接近度感測器
        • i11溫度感測器
        • i12導電感測開關
        • i13動作感測器
        • i16土壤濕度感測器
        • i17酸鹼值感測器
        • i18濕度感測器
        • i19防水溫度感測器
        • i20心律監測感測器
        • i22超音波感測器
      • 輸出模組
        • o2LED燈模組
        • o5蜂鳴器模組
        • o6風扇模組
        • o7錄音機模組/喇叭
        • o9馬達模組
        • o10伺服機模組
        • o11OLED顯示模組
        • 七彩燈條
      • 功能模組
        • f1運算邏輯模組AND
        • f2運算邏輯模組OR
        • f3運算邏輯模組NOT
        • f4分配模組
        • f6閾模組
        • f7計數模組
        • f8計時模組(0-60秒)
    • 實作範例教學
    • 資源鏈結
  • LinkIt 7697 BlocklyDuino 使用指南
  • LinkIt 7697 - Arduino IDE 開發指南
  • 💻Raspberry Pi Pico介紹
    • Raspberry Pi Pico 擴充板
    • Raspberry Pi Pico 使用Arduino IDE
  • 洞洞么教學材料包
    • 新版LinkIt 7697開發板 V1.1版使用序列埠印出指令亂碼問題
    • 模組使用教學
      • LED模組
      • LED模組(三色)
      • 按鈕模組
      • 旋轉電位計模組
      • 光敏模組
      • 微動開關模組
      • DHT11溫溼度感測器模組
      • 無源蜂鳴器模組
      • 有源蜂鳴器模組
      • 震動開關模組
      • 滾珠開關模組
      • 超音波測距感測器
      • 伺服機
      • 紅外線偵測模組
      • I2C 1602液晶顯示模組
      • 熱敏(溫度)模組
      • DHT 22溫溼度模組(For Pico)
    • micro:bit影片教學
  • 洞洞兩教學材料包(貓咪盃硬體組材料包)
    • 模組使用教學
      • LED模組
      • 繼電器
      • 大顆LED紅綠燈整合模組
      • 旋轉可變電阻
      • 光線模組
      • 土壤溼度模組
      • 避障紅外線模組
      • 按鈕模組
      • 滾珠開關模組
      • 霍爾磁性模組
      • RGB LED共陰模組
      • 電晶體MOS模組
      • 兩路L9110S馬達模組
      • 無源蜂鳴器
      • SR-04P超音波
      • DHT11溫溼度模組
      • 舵機
      • LCD1602液晶模組
      • Max7219 8X8 矩陣LED模組
      • WS2812 RGB12燈燈環模組
  • 洞洞伍AIoT教學材料包
    • Raspberry Pi Pico W 介紹
    • 程式撰寫軟體下載
    • 模組使用教學
      • 溫溼度感測器
      • 旋轉電位計模組
      • RFID模組
      • RGB全彩LED模組(共陽極)
      • 按鈕模組
      • OLED 顯示器模組
      • 有源蜂鳴器模組
      • SG90伺服馬達模組
      • PIR生物紅外線感測器模組
      • 氣體感測器Gas Sensor(MQ7)模組
      • 數位式光強度感測器模組
  • Arduino首次接觸就上手
    • 認識Hangeekduino圖形化介面
    • Hangeekduino範例程式
      • 輸入模組
        • 按鈕模組
        • 旋轉電位計模組
        • 聲音感測模組
        • 光感測器模組
        • 溫溼度感測模組
        • 三軸加速度模組
        • 氣壓感測模組
      • 輸出模組
        • LED模組
        • 蜂鳴器模組
        • OLED顯示模組
    • 書籍內容更新_202012更新
    • [Processing 互動裝置藝術結合 Arduino ]
      • 範例01_Processing IDE 下載、基本範例
      • 範例02_連接Arduino_數位輸入與類比輸入
      • 範例03_Processing控制LED
      • 範例04_療癒海浪 - 按鈕與多個類比感測器
      • 範例05_天空飄著雲 - DHT溫溼度感測器
      • 6. 滾球小遊戲 - 三軸加速度感測器
      • 範例07_風車轉轉 - 聲音感測器
    • Arduino BLE藍牙通訊 - Android 手機
      • Example 01
      • Example 02
      • Example 03
  • 其他感測器模組
    • 火焰感測器
    • 手指偵測心跳模組
    • 心律感測器
    • 科易KEYES 雨水感測器
    • Grove–VOC與eCO2 氣體感測器 (SGP30)
    • 高精度升降壓電源模組XYS3580
  • MCS Lite 介紹及感測器網頁遠端監控
    • 5-4 MCS Lite 介紹及MCS Lite 環境建置
    • 5-5 網頁遠端監控LED
    • 5-6 雲端溫濕度監控
  • 初學Jetson Nano不說No-CAVEDU教你一次懂
    • 書籍更新修改內容
Powered by GitBook
On this page
  • 中文系列文章
  • English version
  • 範例影片
  • 硬體
  • App Inventor 編寫簡易的藍牙訊息發送程式
  • Designer畫面編排
  • blocks程式設計
  • Arduino CODE
  • 實際執行

Was this helpful?

  1. Arduino首次接觸就上手
  2. Arduino BLE藍牙通訊 - Android 手機

Example 01

PreviousArduino BLE藍牙通訊 - Android 手機NextExample 02

Last updated 3 years ago

Was this helpful?

【雙A計劃】是 CAVEDU blog 上非常熱門的文章之一,使用 Arduino 搭配 HC05/06 等傳統藍牙通訊模組來與 App Inventor 通訊。但隨著藍牙4.0逐漸普及,後續的開發板例如 LinkIt 7697 ,甚至 Raspberry Pi 等單板電腦也直接在板子上整合了藍牙BLE晶片。

本篇將比照【雙A計劃】Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅,但改用[Arduino 首次接觸就上手]電子教學套件,搭配 HC10 藍牙模組來介紹如何用 Android 手機控制 Arduino的LED 亮滅。

關於[Arduino 首次接觸就上手]電子教學套件,我們已經寫了非常完整的基礎教學,您可以選用 Arduino 類C語法或專用的 HangeekDuino 圖形介面來開發。本系列文章的範例程式請由 Github 下載 (EX01_controlLED)

中文系列文章

English version

範例影片

硬體

HC10藍牙模組包含了以下腳位:

請把 HC10 藍牙模組搭配 Grove 接頭接上 [Arduino首次接觸就上手] 的 D7 Grove port,實際上裏面包含了GND, Vcc, D7, D8 等四支腳位,它一樣是一片 Arduino UNO,只是把常見的電路模組整合在同一片電路板上,無須再使用麵包板。但也正因如此,多數腳位已被占用,例如LED已連接到D4,除非將 LED 從板子上拆下來,否則無法作為其他用途。因此本範例使用 [Arduino首次接觸就上手] 尚未被占用的腳位D7與D8做為通訊腳位。

如果您使用傳統獨立運作的 Arduino,請把 HC10 的RX, TX 依序接到 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 按鈕時,會透過 </code> BluetoothLE.WriteBytes</code> 送出一個字元 'o';另外則是在按下 Button_off 按鈕時送出一個字元 'f'。

這裡的做法其實相當多元,您可以改用 WriteInteger 或 WriteString 等語法試試看,當然也要 修改 Arduino 端的程式碼。

STEP4:

按下 ButtonDisconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。

斷線完成,會自動呼叫 BluetoothLE.Disconnected 事件並執行其內容。

Arduino CODE

Arduino 程式碼也相當簡單易懂,設定好 HC10 模組所連接的腳位(D7與D8)之後,就會等候是否有資料送進來,並執行對應的動作。

您可以將本範例視為基礎樣板延伸出更多功能,快點試試看吧!

#include <SoftwareSerial.h>
SoftwareSerial HM10(7, 8); // RX, TX
char appData;
String inData = "";
void setup(void)
{
  Serial.begin(9600);
  Serial.println("HM10 serial started at 9600");
  HM10.begin(9600); // set HM10 serial at 9600 baud rate
  pinMode(4, OUTPUT); // onboard LED
  digitalWrite(4, LOW); // switch OFF LED
}

void loop(void)
{
  HM10.listen();  // listen the HM10 port
  while (HM10.available() > 0) {   // if HM10 sends something then read
    appData = HM10.read();
    inData = String(appData);  // save the data in string format
    Serial.println(appData);
  }

  if (Serial.available()) {  // Read user input if available.
    delay(10);
    HM10.write(Serial.read());
  }
  if ( inData == "f") {
    Serial.println("LED OFF");
    digitalWrite(4, LOW); // switch OFF LED
    delay(500);
  }
  if ( inData == "o") {
    Serial.println("LED ON");
    digitalWrite(4, HIGH); // switch OFF LED
    delay(500);
  }
}

實際執行

請先確認 HC10 模組已經接好,燒錄上述 arduino 程式碼到 [Arduino首次接觸就上手] 套件,再安裝 app inventor 到您的 Android 裝置上。根據上述影片來操作,即可根據 app 按鈕來控制 D4 LED 亮暗。

注意:App Inventor 已於 2021 年上半年登陸 iOS 平台,但到本文編寫日期,BLE 功能還在測試中。

【雙A計畫】 常見問題整理
【雙A計畫】藍牙模組(HC05/06)常用指令教學
【雙A計劃】Part0:App Inventor 透過藍牙傳送訊號給 Arduino
【雙A計劃】Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅
【雙A計劃】Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗
【雙A計劃】Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態
【雙A計劃】Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人
【雙A計劃】Part5:Paperduino 藍牙控制 LED 閃爍
【雙A計畫】Part6:Arduino 傳兩筆資料到 Android 手機
【雙A計劃】Part7:Arduino超音波感測距離回傳數值給Android手機
【雙A計劃】Part8:Android 手機對 Arduino 同時進行資料收發
【雙A計劃】Part9:藍牙遙控機器手臂車
Arduino LED Blink
Arduino LED PWM
Arduino LED Blink (Arduino 101 with BLE)
Arduino LED PWM (Arduino 101 with BLE)