HC-05藍牙模塊是任何Arduino項目必不可少的藍牙模塊!很容易進行連接以及在Arduino IDE中編寫代碼。在大多數項目中,我們通常將HC05連接至Arduino,并使用它與其他智能設備(如手機)進行無線通信。這非常簡單,我們已經用它建立了許多有趣的項目,例如藍牙控制機器人、藍牙語音控制、藍牙家庭自動化等。但是,您是否需要將兩個HC-05連接在一起?將HC05相互連接并非易事,其中涉及一些其他步驟。本文將指導您完成此過程。
所需的組件
● 2個Arduino開發板
● 2個HC05藍牙模塊
● 面包板
● 跳線
● 2個1kΩ電阻
● 2個2.2kΩ電阻
電路原理圖
以下是基本電路圖。將其中的兩個電路連接起來,一個用于主機電路,一個用于從機電路。對于連接,我們在這里所做的就是將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主機藍牙電路和Arduino從機藍牙電路。
HC05模塊的初始配置
這是將兩個HC05模塊連接在一起所需的額外步驟。我們需要更改HC05藍牙模塊內部的某些設置,為此,我們必須進入HC05模塊的AT命令模式,并通過Arduino IDE的串口監視器向其發送命令。為此,我們需要編寫一個Arduino代碼,以通過串口監視器將命令發送到HC05。
首先將SoftwareSerial庫添加到此代碼。
#include
定義發送(Tx)和接收(Rx)引腳號。我將引腳2用于Tx,將引腳3用于Rx。
#define tx 2
#define rx 3
給藍牙連接起個名字(這里我使用configBt),然后告訴SoftwareSerial庫哪個引腳是Tx,哪個引腳是Rx。語法為bluetoothName(Rx,Tx);
SoftwareSerial configBt(rx, tx); // RX, TX
為了配置藍牙模塊,Arduino需要以波特率38400向其發送命令。同樣,我們將藍牙連接的波特率也設置為38400。將發送(Tx)設置為輸出引腳,將接收(Rx)設置為輸入引腳
void setup()
{
Serial.begin(38400);
configBt.begin(38400);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數中,我們實現代碼的主要部分。這里的想法是通過Arduino的Tx引腳將串口監視器中文本框中鍵入的內容發送到HC05。然后在串口監視器中顯示HC05的輸出。
void loop()
{
if(configBt.available()) // if the HC05 is sending something…
{
Serial.print(configBt.readString()); // print in serial monitor
}
if(Serial.available()) // if serial monitor is outputting something…
{
configBt.write(Serial.read()); // write to Arduino’s Tx pin
}
}
首先將此代碼上傳到連接到主機HC05模塊的Arduino。上傳代碼后,拔出Arduino電源線。按住HC05上的按鈕。現在,在仍按住HC05上的按鈕的同時插入Arduino電源線。好了,現在您可以釋放HC05上的按鈕了。這就是您進入HC05的AT模式的方式。要檢查您是否已正確完成此操作,請確保HC05上的紅燈大約每秒閃爍一次(緩慢閃爍!)。通常,在將HC05連接到任何藍牙設備之前,它的紅燈會以非常高的頻率閃爍(快速閃爍!)。
接下來,打開串口監視器。在串行監視器窗口的右下角,如果尚未設置,請確保將行結束符設置設置為“Both NL and CL”,并將波特率設置為38400。現在,在串口監視器輸入中鍵入AT命令,如果一切順利,您將從串行監視器窗口中顯示的HC05中獲得“OK”。恭喜你!您已成功登錄HC05模塊的AT命令模式。
現在,在下表中輸入以下命令以配置主HC05模塊:
COMMAND | RESPONSE | 功能 |
AT | OK | 測試 |
AT + CMODE? | OK | 確定檢查CMODE或連接模式-CMODE:0為從機,1為主機 |
AT + CMODE = 1 | OK | 在配置主機HC05時將CMODE設置為1 |
AT + ADDR? | + ADDR:FCA8:9A:58D5 OK | 返回HC05的地址 |
Arduino之間藍牙通信測試
首先,為主機HCHC模塊和從機HC05模塊供電。接通電源并經過幾秒鐘后,查看HC05模塊上的紅燈。
紅燈閃爍速度表示什么
閃爍頻率很高(快速閃爍!)這意味著您的HC05模塊未相互連接!
低頻閃爍(緩慢閃爍!)不錯!但是我們仍然需要再做一次檢查,以確保此設置有效!
一旦您的紅燈以低頻閃爍(緩慢閃爍!),就可以確定兩個HC05都已相互連接,但是我們尚未測試是否可以在主從之間來回發送數據。
將以下代碼上傳到Arduino,這是測試發射器(Tx)的代碼,關于發射器和接收器的完整代碼也可以在此頁面的底部找到。
按照前面的代碼,我們將SoftwareSerial庫添加到此代碼中,并定義發送(Tx)和接收(Rx)引腳號。然后,我們命名藍牙連接并將Tx和Rx引腳號傳遞到庫。
#include
#define tx 2
#define rx 3
SoftwareSerial bt(rx,tx); //RX, TX
在setup函數中,我們將再次設置Arduino串口監視器和藍牙的波特率。與以前的代碼相比,您在這里看到區別嗎?我們使用的波特率為9600波特。與其他藍牙設備通信時,這是HC05藍牙模塊的默認預設通信波特率。因此,請注意,38400用于通過AT命令配置HC05,而9600是HC05模塊的默認波特率。最后,就像之前我們將Tx引腳配置為輸出并將Rx引腳配置為輸入一樣。
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數中,我們要做的就是通過HC05傳輸一個隨機值“ 123”。
void loop()
{
bt.write(123);
}
將以下代碼上傳到另一個Arduino,這是測試接收(Rx)的代碼:
與前面的代碼完全相同,我們配置了SoftwareSerial庫。
#include
#define tx 2
#define rx 3
SoftwareSerial bt(rx, tx); //RX, TX
setup函數功能中的代碼與測試發射(Tx)的代碼完全相同。
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數中,我們只需要接收發送中的Arduino發送的內容即可。如果接收緩沖區已從HC05接收到某些數據,則顯示串口監視器中接收到的內容。
void loop()
{
if(bt.available()>0)
{
Serial.println(bt.read());
}
}
將相應的代碼上傳到每個Arduino之后,將串口監視器打開到接收的Arduino。 確保在串口監視器中將波特率選擇為9600,將行結尾符選擇為Newline。 如果一切正常,您應該會看到123。
注意:如果已將發送和接收Arduinos都連接到同一臺筆記本電腦,請確保在“工具”>“端口”下選擇正確的COM端口。 您應該連接到接收到的Arduino的COM端口。
如果一切順利,請交換HC05模塊,以確保雙向通信可以完成!
編輯:hfy
-
無線通信
+關注
關注
58文章
4604瀏覽量
143806 -
藍牙模塊
+關注
關注
30文章
578瀏覽量
55860 -
Arduino
+關注
關注
188文章
6477瀏覽量
187692
發布評論請先 登錄
相關推薦
評論