2022年8月23日 星期二

HC-05 藍牙模塊與 NodeMCU 接口

 

介紹

HC-05 藍牙模塊

HC-05 藍牙模塊

HC-05 是一種藍牙設備,用於與支持藍牙的設備(如智能手機)進行無線通信。它使用串行通信 (USART) 與微控制器通信。

該設備將無線通信協議添加到嵌入式應用程序中,通過它可以與任何其他支持藍牙的設備進行通信。

AT 命令用於命令藍牙模塊。我們可以更改其有關密碼、名稱、USART 通信設置(如波特率、否)的設置。停止位或奇偶校驗等

有關 HC-05 藍牙模塊、其引腳以及如何使用它的更多信息,請參閱  傳感器和模塊部分中的主題HC-05 藍牙模塊。

基於 NodeMCU 的 ESP8266 具有 UART 串​​行通信模塊,通過它可以與藍牙模塊進行通信。要了解基於 Lua 的 NodeMCU UART 功能,請參閱 NodeMCU UART with ESPlorer IDE

接口圖

HC-05 藍牙模塊接口與NodeMCU

HC-05 藍牙模塊接口與NodeMCU

 

注意: 設備的默認藍牙名稱為“HC-05”,連接的默認 PIN(密碼)為“0000”或“1234”。

例子

讓我們開發一個小應用程序,我們可以在其中通過智能手機控制 LED 開關。

這是通過將 HC-05 藍牙模塊與 NodeMCU 連接來完成的。來自 HC-05 的數據由 NodeMCU 串行接收/發送。

在此應用程序中,當從智能手機發送 1 時,LED 將打開,如果發送 2,則 LED 將關閉。如果接收到的數據不是 1 或 2,它將向選擇正確選​​項的移動設備返回一條消息。

我們可以用 Lua 腳本或 C/C++ 語言為 NodeMCU DevKit 編寫代碼。我們使用 ESPlorer IDE 用 Lua 腳本編寫代碼,使用 Arduino IDE 用 C/C++ 編寫代碼。要了解更多信息,請參閱 使用 ESPlorer IDE 開始使用 NodeMCU(對 NodeMCU 使用 Lua 腳本)和使用 Arduino IDE 開始使用 NodeMCU(對 NodeMCU 使用基於 C 語言的 Arduino 草圖)。

用於藍牙的 Lua 腳本

LEDpin = 4

gpio.mode(LEDpin, gpio.OUTPUT)--set LED pin as output pin
gpio.write(LEDpin, gpio.LOW)-- set LED state initially low

--begin uart with specs
uart.setup(0, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)
--set callback function on receive to make decision about LED on/off
uart.on("data",1,
function(data)
    if(data == "1") then
        gpio.write(LEDpin, gpio.HIGH)
        print("LED ON")
    elseif(data == "2") then
        gpio.write(LEDpin, gpio.LOW)
        print("LED OFF")
    else
        print("select proper option") 
    end
end, 0)

以下是在智能手機的藍牙終端上發送上述示例的命令時從 NodeMCU 藍牙收到的響應。

藍牙終端窗口

此外,我們可以從 Arduino IDE 為上述示例編寫代碼。要了解如何開始使用帶有 Arduino IDE 的 NodeMCU,請參閱 使用 Arduino IDE 開始使用 NodeMCU

用於藍牙的 Arduino 草圖

int LED = D4;

void setup() {
 pinMode(LED, OUTPUT);
 Serial.begin(9600); /* Define baud rate for serial communication */
}

void loop() {

 if (Serial.available())  /* If data is available on serial port */
    {
      char data_received; 
      data_received = Serial.read();  /* Data received from bluetooth */
      if (data_received == '1')
      {
       digitalWrite(LED, HIGH);
       Serial.write("LED turned ON\n");        
      }
      else if (data_received == '2')
      {
       digitalWrite(LED, LOW);
       Serial.write("LED turned OFF\n");
      }
      else
      {
       Serial.write("Select either 1 or 2");
      }
    }
}

 

資料來源:https://www.electronicwings.com/nodemcu/hc-05-bluetooth-module-interfacing-with-nodemcu

沒有留言: