HC-05 藍牙模塊是任何Arduino 項目的首選藍牙模塊!在 Arduino IDE 中連接和編碼很容易。在大多數項目中,我們通常將 HC05 連接到 Arduino,并使用它與其他智能設備(如手機)進行無線通信。
您是否需要將兩個 HC-05 連接在一起?將 HC05 連接到智能手機并不那么簡單,還涉及一些額外的步驟。本教程將指導您完成此過程。讓我們直接跳進去!
所需材料
2x Arduino(任何型號都可以;我使用的是 Arduino Uno R3 和 Arduino Nano)
2x HC05 藍牙模塊
面包板
跳線
2x 1kΩ 電阻
2x 2.2kΩ 電阻
電路原理圖
這是基本電路圖。連接這些電路中的 2 個,一個用于主機,一個用于從機。對于連接,我們在這里所做的就是將 HC05 連接到 Arduino。HC05 的接收器 (Rx) 引腳在 0V 至 3.3V 范圍內工作,而 Arduino 在 0V 至 5V 范圍內工作。因此,我們將使用電阻器(R1 和 R2)創建一個分壓器,將 Arduino 的 5V 輸出降低到 3.3V,以免損壞 HC05 模塊。
我對 R1 使用 1kΩ,對 R2 使用 2.2KΩ,但您可以使用任何電阻值,只要 R2 大約是 R1 值的兩倍(R2 ≈ 2R1)。同樣,重復主從電路,Arduino Master藍牙電路和Arduino Slave藍牙 電路如下圖所示。
HC05 模塊的初始配置
這是將兩個 HC05 模塊連接在一起所需的額外步驟。我們需要更改 HC05 藍牙模塊內部的一些設置,為此,我們必須進入 HC05 模塊的AT 命令模式并通過 Arduino IDE 的串行監視器向它發送命令。為此,我們需要編寫一個 Arduino 代碼,通過串行監視器向 HC05 發送命令。
配置HC05模塊的代碼可以在本頁底部找到,代碼解釋如下
將 SoftwareSerial 庫添加到此代碼中。
#include 《 SoftwareSerial .h》
定義發送 (Tx) 和接收 (Rx) 引腳編號。我將引腳 2 用于 Tx,將引腳 3 用于 Rx。
#定義發送 2
#define rx 3
為藍牙連接命名(這里我使用的是 configBt),然后告訴 SoftwareSerial 庫哪個引腳是 Tx,哪個引腳是 Rx。語法是bluetoothName(Rx, Tx);
SoftwareSerial configBt(rx, tx); // 接收,發送
為了配置藍牙模塊,Arduino 需要以 38400 波特的波特率向其發送命令。同樣,我們將藍牙連接的波特率也設置為 38400 波特。將發送 (Tx) 設置為輸出引腳,將接收 (Rx) 設置為輸入引腳
無效設置()
{
序列號.begin(38400);
configBt.開始(38400);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
在永遠循環中,我們有代碼的主要部分。這里的想法是通過 Arduino 的 Tx 引腳將在串行監視器的文本框中鍵入的任何內容發送到 HC05。然后在串行監視器中顯示 HC05 輸出的任何內容。
無效循環()
{
if(configBt.available()) // 如果 HC05 正在發送一些東西……
{
串行.print(configBt.readString()); // 在串行監視器中打印
}
if( Serial .available()) // 如果串行監視器正在輸出一些東西……
{
configBt.write(串行.read());// 寫入 Arduino 的 Tx 引腳
}
}
首先將此代碼上傳到連接到主 HC05 模塊的 Arduino 中。上傳代碼后,拔掉 Arduino 電源線。按住HC05 上的按鈕。現在插入 Arduino 電源線,同時按住 HC05 上的按鈕。好了,現在你可以松開HC05上的按鈕了。這就是您進入 HC05 的 AT 模式的方式。要檢查您是否正確執行此操作,請確保HC05 上的紅燈大約每秒鐘閃爍一次(緩慢閃爍!)。通常在HC05連接到任何藍牙設備之前,它的紅燈會以非常高的頻率閃爍(快速閃爍!)。
接下來,打開串口監視器(串口監視器按鈕位于 Arduino IDE 的右上角)。在串行監視器窗口的右下角,如果您還沒有這樣做,請確保將行結束設置設置為“NL 和 CL”,波特率設置為38400。現在,在串口監視器中輸入 AT,如果一切順利,您將在串口監視器窗口中顯示 HC05 的“OK”。恭喜!您已成功登錄 HC05 模塊的 AT 命令模式。
現在,在下表中輸入以下命令來配置 主 HC05 模塊:
接下來將您的計算機連接到您的另一個 HC05,從機:
Arduino 到 Arduino 藍牙通信測試
首先,給主從HC05模塊供電。通電幾秒鐘后,查看 HC05 模塊上的紅燈。
一旦您的紅燈以低頻閃爍(慢閃!),您可以確定您的兩個 HC05 已相互連接,但我們尚未測試是否可以在主從之間來回發送數據。畢竟,這是這里的主要目的。
將以下代碼上傳到其中一個 Arduino,這是測試發射器 (Tx)的代碼,發射器和接收器的完整代碼可以在此頁面底部找到。
在前面的代碼之后,我們將 SoftwareSerial 庫添加到此代碼中,并定義發送 (Tx) 和接收 (Rx) 引腳號。然后我們命名藍牙連接并將 Tx 和 Rx 引腳號傳遞給庫。
#include 《 SoftwareSerial .h》
#定義發送 2
#define rx 3
軟件串行 bt(rx,tx); //接收,發送
在設置功能中,我們再次設置 Arduino 串行監視器和藍牙的波特率。與之前的代碼相比,您看到這里的區別了嗎?我們使用 9600 波特的波特率。這是HC05藍牙模塊與其他藍牙設備通信時默認預設的通信波特率。因此,請注意 38400 波特用于使用 AT 命令配置HC05,而 9600 波特是 HC05 模塊的默認波特率。最后,就像我們之前將 Tx 引腳配置為輸出,將 Rx 引腳配置為輸入一樣。
無效設置()
{
序列號.begin(9600);
bt.開始(9600);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
在永遠循環中,我們所做的只是通過 HC05 傳輸一個隨機值“123”。
無效循環()
{
bt.write(123);
}
將此代碼上傳到另一個 Arduino,這是測試接收 (Rx) 的代碼:
和前面的代碼一模一樣,我們配置SoftwareSerial庫。
#include 《 SoftwareSerial .h》
#定義發送 2
#define rx 3
SoftwareSerial bt(rx, tx); //接收,發送
設置函數中的代碼與測試傳輸 (Tx) 的代碼完全相同。
無效設置()
{
序列號.begin(9600);
bt.開始(9600);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
在永遠循環中,我們只需要接收我們從發送 Arduino 發送的內容。如果接收緩沖區從 HC05 接收到一些數據,則在串行監視器中顯示接收到的任何數據。
無效循環()
{
如果(bt.available()》0)
{
串行.println(bt.read());
}
}
將各自的代碼上傳到每個 Arduino 后,打開接收 Arduino 的串行監視器。確保在串行監視器中選擇波特率為 9600 并以換行符結尾的行。如果一切正常,您應該會看到 123。
注意:如果您已將發送和接收 Arduinos 連接到同一臺筆記本電腦,請確保在 TOOLS 》 PORT 下選擇正確的 COM 端口。您應該連接到接收 Arduino 的 COM 端口。
如果一切順利,更換 HC05 模塊以確保可以雙向通信,我們完成了!
HC05配置:
#include
#定義發送 2
#define rx 3
SoftwareSerial configBt(rx, tx); // 接收,發送
無效設置()
{
序列號.開始(38400);
configBt.開始(38400);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
無效循環()
{
if(configBt.available()) //如果藍牙模塊正在發送一些東西...
{
Serial.print(configBt.readString()); //打印藍牙模塊發送的任何內容
}
if(Serial.available()) //如果我們在串行監視器輸入文本框中輸入了任何內容...
{
configBt.write(Serial.read()); //將我們在串口監視器輸入文本框中輸入的任何內容寫入藍牙模塊
}
}
接收者:
#include
#定義發送 2
#define rx 3
SoftwareSerial bt(rx, tx); //接收,發送
無效設置()
{
序列號.開始(9600);
bt.開始(9600);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
無效循環()
{
如果(bt.available()>0)
{
Serial.println(bt.read());
}
}
發件人:
#include
#定義發送 2
#define rx 3
軟件串行 bt(rx,tx); //接收,發送
無效設置()
{
序列號.開始(9600);
bt.開始(9600);
pinMode(TX,輸出);
pinMode(rx,輸入);
}
無效循環()
{
bt.write(123);
}
評論
查看更多