2024年6月4日 星期二

ESP32 藍牙模組與模擬軟體通訊

藍牙技術是一種無線數據和語音通信開放的全球規範,它是基於低成本的近距離無線連接,為固定和移動設備建立通信環境的一種特殊的近距離無線技術連接,在短距離間交換資料,以形成個人區域網路。其使用短波特高頻無線電波,經由2.4至2.485 GHz的ISM頻段來進行通訊。 

本實作使用 WeMos LoLin32 開發板配合U8g2程式庫於OLED中顯示訊息。直接將 WeMos LoLin32 以 USB 線連接到開發電腦進行程式編譯上傳即可。使用Arduino IDE 編譯 ESP32 程式前請先確認已經正確選定開發板規格。

使用 BluetoothSerial 程式庫可以很方便的控制 ESP32 內的藍牙模組,詳細的程式庫資料請參考 這裡 。本實作利用藍牙通訊接收命令後在OLED中顯示兩種訊息 Power On、Power Off,關於如何在OLED中輸出字串請參考 這裡

ESP32 與 OLED 接腳設定
1. 電源接線:
【ESP32】3.3V →【OLED】VCC
【ESP32】GND →【OLED】GND

2. 信號接線:
【ESP32】22→【ESP-01】SCL
【ESP32】21→【ESP-01】SDA

撰寫實驗程式如下:
#include <U8g2lib.h>//引入OLED程式庫
#include <BluetoothSerial.h> //引入藍牙程式庫

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
BluetoothSerial BT;  //建立藍牙物件

char instr; //設定接收訊息的變數

void setup(void) {
 u8g2.begin(); //初始顯示器物件
 u8g2.setFont(u8g2_font_t0_22b_te); //指定字型
 BT.begin("ESP32藍牙"); //初始藍牙物件
}

void loop(void) {

    if (BT.available()){  // 若接收到藍牙序列資料
    instr = BT.read();
    switch (instr){
    case '1':   // 若接收到指令'1'
       u8g2.clearBuffer(); //清除暫存區
       u8g2.drawStr(10, 50, "Power On"); //設定繪製內容
       u8g2.sendBuffer(); //送出繪製內容
       BT.println("電源開啟!");
      break;
    case '0':    // 接收到指令'0'
       u8g2.clearBuffer(); //清除暫存區
       u8g2.drawStr(10, 50, "Power Off"); //設定繪製內容
       u8g2.sendBuffer(); //送出繪製內容
       BT.println("電源關閉!");
      break;
      }
    }

在安卓手機中安裝 Serial Bluetooth Terminal 進行藍牙通訊測試。
1.安裝程式

2.將手機藍牙與ESP32藍芽模組配對連線。

3.開啟 Serial Bluetooth Terminal選取要操作的已連線藍芽設備。

4.在終端機畫面中輸入控制指令0、1,即可讓ESP32控制的OLED顯示對應訊息 Power On、Power Off,而終端機畫面會輸出"電源開啟!"、"電源關閉!"的對應訊息。


沒有留言:

張貼留言

熱門文章