HC-05藍(lán)牙模塊是任何Arduino項(xiàng)目必不可少的藍(lán)牙模塊!很容易進(jìn)行連接以及在Arduino IDE中編寫代碼。在大多數(shù)項(xiàng)目中,我們通常將HC05連接至Arduino,并使用它與其他智能設(shè)備(如手機(jī))進(jìn)行無(wú)線通信。這非常簡(jiǎn)單,我們已經(jīng)用它建立了許多有趣的項(xiàng)目,例如藍(lán)牙控制機(jī)器人、藍(lán)牙語(yǔ)音控制、藍(lán)牙家庭自動(dòng)化等。但是,您是否需要將兩個(gè)HC-05連接在一起?將HC05相互連接并非易事,其中涉及一些其他步驟。本文將指導(dǎo)您完成此過程。

所需的組件
● 2個(gè)Arduino開發(fā)板
● 2個(gè)HC05藍(lán)牙模塊
● 面包板
● 跳線
● 2個(gè)1kΩ電阻
● 2個(gè)2.2kΩ電阻
電路原理圖
以下是基本電路圖。將其中的兩個(gè)電路連接起來,一個(gè)用于主機(jī)電路,一個(gè)用于從機(jī)電路。對(duì)于連接,我們?cè)谶@里所做的就是將HC05連接到Arduino。 HC05的接收器(Rx)引腳在0V至3.3V范圍內(nèi)運(yùn)行,而Arduino在0V至5V范圍內(nèi)運(yùn)行。因此,我們將使用電阻器(R1和R2)創(chuàng)建一個(gè)分壓器,以將Arduino的5V輸出降低至3.3V,以免損壞HC05模塊。

我為R1使用1kΩ,為R2使用2.2KΩ,但您可以使用任何電阻值,只要R2大約是R1的兩倍(R2≈2R1)即可。如下所示為Arduino主機(jī)藍(lán)牙電路和Arduino從機(jī)藍(lán)牙電路。


HC05模塊的初始配置
這是將兩個(gè)HC05模塊連接在一起所需的額外步驟。我們需要更改HC05藍(lán)牙模塊內(nèi)部的某些設(shè)置,為此,我們必須進(jìn)入HC05模塊的AT命令模式,并通過Arduino IDE的串口監(jiān)視器向其發(fā)送命令。為此,我們需要編寫一個(gè)Arduino代碼,以通過串口監(jiān)視器將命令發(fā)送到HC05。
首先將SoftwareSerial庫(kù)添加到此代碼。
#include
定義發(fā)送(Tx)和接收(Rx)引腳號(hào)。我將引腳2用于Tx,將引腳3用于Rx。
#define tx 2
#define rx 3
給藍(lán)牙連接起個(gè)名字(這里我使用configBt),然后告訴SoftwareSerial庫(kù)哪個(gè)引腳是Tx,哪個(gè)引腳是Rx。語(yǔ)法為bluetoothName(Rx,Tx);
SoftwareSerial configBt(rx, tx); // RX, TX
為了配置藍(lán)牙模塊,Arduino需要以波特率38400向其發(fā)送命令。同樣,我們將藍(lán)牙連接的波特率也設(shè)置為38400。將發(fā)送(Tx)設(shè)置為輸出引腳,將接收(Rx)設(shè)置為輸入引腳
void setup()
{
Serial.begin(38400);
configBt.begin(38400);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數(shù)中,我們實(shí)現(xiàn)代碼的主要部分。這里的想法是通過Arduino的Tx引腳將串口監(jiān)視器中文本框中鍵入的內(nèi)容發(fā)送到HC05。然后在串口監(jiān)視器中顯示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
}
}
首先將此代碼上傳到連接到主機(jī)HC05模塊的Arduino。上傳代碼后,拔出Arduino電源線。按住HC05上的按鈕。現(xiàn)在,在仍按住HC05上的按鈕的同時(shí)插入Arduino電源線。好了,現(xiàn)在您可以釋放HC05上的按鈕了。這就是您進(jìn)入HC05的AT模式的方式。要檢查您是否已正確完成此操作,請(qǐng)確保HC05上的紅燈大約每秒閃爍一次(緩慢閃爍?。?。通常,在將HC05連接到任何藍(lán)牙設(shè)備之前,它的紅燈會(huì)以非常高的頻率閃爍(快速閃爍?。?/p>
接下來,打開串口監(jiān)視器。在串行監(jiān)視器窗口的右下角,如果尚未設(shè)置,請(qǐng)確保將行結(jié)束符設(shè)置設(shè)置為“Both NL and CL”,并將波特率設(shè)置為38400。現(xiàn)在,在串口監(jiān)視器輸入中鍵入AT命令,如果一切順利,您將從串行監(jiān)視器窗口中顯示的HC05中獲得“OK”。恭喜你!您已成功登錄HC05模塊的AT命令模式。
現(xiàn)在,在下表中輸入以下命令以配置主HC05模塊:
| COMMAND | RESPONSE | 功能 |
| AT | OK | 測(cè)試 |
| AT + CMODE? | OK | 確定檢查CMODE或連接模式-CMODE:0為從機(jī),1為主機(jī) |
| AT + CMODE = 1 | OK | 在配置主機(jī)HC05時(shí)將CMODE設(shè)置為1 |
| AT + ADDR? | + ADDR:FCA8:9A:58D5 OK | 返回HC05的地址 |
Arduino之間藍(lán)牙通信測(cè)試
首先,為主機(jī)HCHC模塊和從機(jī)HC05模塊供電。接通電源并經(jīng)過幾秒鐘后,查看HC05模塊上的紅燈。
紅燈閃爍速度表示什么
閃爍頻率很高(快速閃爍?。┻@意味著您的HC05模塊未相互連接!
低頻閃爍(緩慢閃爍?。┎诲e(cuò)!但是我們?nèi)匀恍枰僮鲆淮螜z查,以確保此設(shè)置有效!
一旦您的紅燈以低頻閃爍(緩慢閃爍?。涂梢源_定兩個(gè)HC05都已相互連接,但是我們尚未測(cè)試是否可以在主從之間來回發(fā)送數(shù)據(jù)。
將以下代碼上傳到Arduino,這是測(cè)試發(fā)射器(Tx)的代碼,關(guān)于發(fā)射器和接收器的完整代碼也可以在此頁(yè)面的底部找到。
按照前面的代碼,我們將SoftwareSerial庫(kù)添加到此代碼中,并定義發(fā)送(Tx)和接收(Rx)引腳號(hào)。然后,我們命名藍(lán)牙連接并將Tx和Rx引腳號(hào)傳遞到庫(kù)。
#include
#define tx 2
#define rx 3
SoftwareSerial bt(rx,tx); //RX, TX
在setup函數(shù)中,我們將再次設(shè)置Arduino串口監(jiān)視器和藍(lán)牙的波特率。與以前的代碼相比,您在這里看到區(qū)別嗎?我們使用的波特率為9600波特。與其他藍(lán)牙設(shè)備通信時(shí),這是HC05藍(lán)牙模塊的默認(rèn)預(yù)設(shè)通信波特率。因此,請(qǐng)注意,38400用于通過AT命令配置HC05,而9600是HC05模塊的默認(rèn)波特率。最后,就像之前我們將Tx引腳配置為輸出并將Rx引腳配置為輸入一樣。
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數(shù)中,我們要做的就是通過HC05傳輸一個(gè)隨機(jī)值“ 123”。
void loop()
{
bt.write(123);
}
將以下代碼上傳到另一個(gè)Arduino,這是測(cè)試接收(Rx)的代碼:
與前面的代碼完全相同,我們配置了SoftwareSerial庫(kù)。
#include
#define tx 2
#define rx 3
SoftwareSerial bt(rx, tx); //RX, TX
setup函數(shù)功能中的代碼與測(cè)試發(fā)射(Tx)的代碼完全相同。
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
在loop函數(shù)中,我們只需要接收發(fā)送中的Arduino發(fā)送的內(nèi)容即可。如果接收緩沖區(qū)已從HC05接收到某些數(shù)據(jù),則顯示串口監(jiān)視器中接收到的內(nèi)容。
void loop()
{
if(bt.available()>0)
{
Serial.println(bt.read());
}
}
將相應(yīng)的代碼上傳到每個(gè)Arduino之后,將串口監(jiān)視器打開到接收的Arduino。 確保在串口監(jiān)視器中將波特率選擇為9600,將行結(jié)尾符選擇為Newline。 如果一切正常,您應(yīng)該會(huì)看到123。

注意:如果已將發(fā)送和接收Arduinos都連接到同一臺(tái)筆記本電腦,請(qǐng)確保在“工具”>“端口”下選擇正確的COM端口。 您應(yīng)該連接到接收到的Arduino的COM端口。
如果一切順利,請(qǐng)交換HC05模塊,以確保雙向通信可以完成!
編輯:hfy
-
無(wú)線通信
+關(guān)注
關(guān)注
58文章
4987瀏覽量
146892 -
藍(lán)牙模塊
+關(guān)注
關(guān)注
30文章
661瀏覽量
57875 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
196966
發(fā)布評(píng)論請(qǐng)先 登錄
兩個(gè)RS485-Modbus主站如何通訊
低功耗藍(lán)牙模塊在電表中的應(yīng)用方案
LE Audio藍(lán)牙模塊方案:重塑無(wú)線音頻新體驗(yàn)
HC-05的部分指令不正常
飛易通藍(lán)牙模塊與解決方案:全場(chǎng)景無(wú)線連接的核心引擎
FSC-HC05藍(lán)牙模塊:高性能無(wú)線連接的核心解決方案
基本半導(dǎo)體連獲兩個(gè)行業(yè)獎(jiǎng)項(xiàng)
如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模塊?
如何用Arduino Nano/UNO R3開發(fā)板給另一個(gè)Arduino IDE不能下載的Arduino Nano/UNO R3開發(fā)板重新燒錄引導(dǎo)程序bootlaoder
兩個(gè)設(shè)備藍(lán)牙音頻改用一個(gè)怎么實(shí)現(xiàn)
請(qǐng)問一個(gè)藍(lán)牙芯片可以同時(shí)傳輸兩個(gè)不同的數(shù)據(jù)嗎?
PTR54L05藍(lán)牙模塊有哪些特性?
ESP32用作經(jīng)典藍(lán)牙串口透?jìng)?b class='flag-5'>模塊與手機(jī)進(jìn)行串口通信
基于Arduino IDE的兩個(gè)HC-05藍(lán)牙模塊連接設(shè)計(jì)方案
評(píng)論