Arduino Uno,電子愛好者和學(xué)生中最受歡迎的微控制器,使用 Arduino 很容易開始使用嵌入式系統(tǒng) 但是 Arduino 的一個缺點是它需要使用 USB 電纜連接到計算機(jī)才能上傳代碼,因為它已經(jīng)完成了對無線通信有任何板載支持。有時,如果您的項目固定在某個地方,則很難將板與 PC 連接起來。解決這個問題的唯一方法是對 Arduino 進(jìn)行無線編程。在 ESP8266 和 ESP32 中可以輕松完成無線編程或 OTA(無線)編程,因為它們內(nèi)置了 Wi-Fi 支持。但在 Arduino 中,我們必須使用藍(lán)牙模塊對其進(jìn)行無線編程。所以在這里我們將學(xué)習(xí)如何通過藍(lán)牙對 Arduino 進(jìn)行編程。
所需組件
Arduino UNO
HC05藍(lán)牙模塊
跳線
1K、2.2K 電阻器
電容 (0.1uF)
電源適配器
面包板
HC05藍(lán)牙模塊
HC-05模塊是藍(lán)牙串口協(xié)議模塊,專為微控制器之間的無線通信而設(shè)計。HC-05藍(lán)牙模塊提供主從模式配置之間的切換模式,并通過9600波特率的串行通信進(jìn)行通信,便于與控制器接口。HC05 模塊在 3.3 V 上工作,但我們可以將其連接到 5V 電源電壓,因為該模塊帶有板載 5v 至 3.3 V 穩(wěn)壓器。
藍(lán)牙是最簡單的無線通信方式,我們用它構(gòu)建了許多有趣的項目,如 藍(lán)牙控制機(jī)器人、 藍(lán)牙語音控制、 藍(lán)牙家庭自動化等。您可以在此處查看所有基于藍(lán)牙的項目。
通過藍(lán)牙對 Arduino 進(jìn)行編程
要對 Arduino 進(jìn)行無線編程,首先,我們必須對 Arduino 進(jìn)行編程以響應(yīng) AT 命令。為此,將 Arduino 連接到筆記本電腦的串口并上傳以下代碼:
#includeSoftwareSerial HC05(2,3); 無效設(shè)置() { 序列號.開始(9600); Serial.println("輸入AT指令:"); HC05.開始(38400); } 無效循環(huán)() { 如果 (HC05.available()) Serial.write(HC05.read()); if (Serial.available()) HC05.write(Serial.read()); }
代碼的前兩行用于包含SoftwareSerial庫并定義連接藍(lán)牙的發(fā)送器和接收器引腳。SoftwareSerial庫用于允許與 Arduino 的硬件 Tx 和 Rx 引腳以外的數(shù)字引腳進(jìn)行串行通信。多個軟件串行端口可用于使用SoftwareSerial庫進(jìn)行串行通信。
#includeSoftwareSerial HC05(2,3);
現(xiàn)在在setup 函數(shù)中,定義硬件和軟件串行端口的波特率。硬件和軟件串行端口的波特率分別為 9600 和 38400。
無效設(shè)置() { 序列號.開始(9600); Serial.println("輸入AT指令:"); HC05.開始(38400); }
循環(huán)函數(shù)內(nèi)部使用了兩個if條件。第一個條件檢查是否向 HC05 發(fā)出任何命令,如果是,則將其寫入 Arduino 串行監(jiān)視器。第二個條件檢查是否有任何命令發(fā)送給 Arduino 串行監(jiān)視器,如果是,則將其發(fā)送給 HC05。
無效循環(huán)() { 如果 (HC05.available()) Serial.write(HC05.read()); if (Serial.available()) HC05.write(Serial.read()); }
接下來,在 HC05 上連接 Arduino,使其進(jìn)入 AT 命令模式。相同的電路圖如下:
在將 Arduino 連接到計算機(jī)之前,先按下按鍵,然后將 Arduino 連接到計算機(jī)。按住按鍵直到藍(lán)牙模塊 LED 開始以 2 秒的間隔閃爍。藍(lán)牙模塊 LED 在命令模式下的閃爍速度比正常模式下慢。
現(xiàn)在打開一個串行監(jiān)視器并輸入以下命令,作為回報,每次命令成功運行時,板都會以“ OK ”響應(yīng)。
AT+ORGL
AT+ROLE=0
AT+POLAR=1,0
AT+UART=115200, 0, 0
AT+INIT
成功測試 AT 命令后,只需移除所有連接并按照下面的示意圖連接即可。
使用適配器或 9V 電池為 Arduino 供電。之后,轉(zhuǎn)到筆記本電腦中的“設(shè)備”,打開藍(lán)牙,然后將藍(lán)牙模塊連接到筆記本電腦。
設(shè)備配對成功后,接下來的任務(wù)就是找到HC05藍(lán)牙模塊的COM口。為此,請轉(zhuǎn)到“設(shè)備管理器”,然后檢查 COM 端口選項。它將顯示兩個 COM 端口,一個用于傳入,另一個用于傳出。在上傳程序時,我們需要選擇第二個 COM 端口號。
現(xiàn)在打開 Arduino IDE 并選擇閃爍程序,選擇正確的 com 端口,然后點擊上傳按鈕。如果一切順利,Arduino 板載 LED 將以 1 秒的間隔開始閃爍。
#include
SoftwareSerial HC05(2,3);
無效設(shè)置()
{
序列號.開始(9600);
Serial.println("輸入AT指令:");
HC05.開始(38400);
}
無效循環(huán)()
{
如果 (HC05.available())
Serial.write(HC05.read());
if (Serial.available())
HC05.write(Serial.read());
}
-
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5869瀏覽量
171231 -
編程
+關(guān)注
關(guān)注
88文章
3637瀏覽量
93989 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187838
發(fā)布評論請先 登錄
相關(guān)推薦
如何使用Arduino開發(fā)板通過藍(lán)牙方式控制伺服電機(jī)
怎樣通過Arduino IDE對Arduino UNO進(jìn)行編程呢
matlab如何通過藍(lán)牙連接arduino?
為Arduino項目進(jìn)行無線藍(lán)牙控制和編程
如何使用Arduino Uno對ATtiny85進(jìn)行編程
![如何使用<b class='flag-5'>Arduino</b> Uno對ATtiny85<b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web2/M00/5B/8A/pYYBAGLs1WyARj5WAADo2_tMZmU354.png)
如何使用Arduino IDE對ESP32進(jìn)行無線編程
![如何使用<b class='flag-5'>Arduino</b> IDE對ESP32<b class='flag-5'>進(jìn)行</b>無線<b class='flag-5'>編程</b>](https://file.elecfans.com/web2/M00/5D/DE/poYBAGL0spmAU90WAARudAMm4Yg724.png)
如何使用藍(lán)牙模塊HC-05對Arduino進(jìn)行無線編程
![如何使用<b class='flag-5'>藍(lán)牙</b>模塊HC-05對<b class='flag-5'>Arduino</b><b class='flag-5'>進(jìn)行</b>無線<b class='flag-5'>編程</b>](https://file.elecfans.com/web2/M00/63/C5/poYBAGMEiGGAWt8LAAQNeTnm2bU333.png)
使用Arduino通過USB串行對ESP32S3進(jìn)行編程和調(diào)試
![使用<b class='flag-5'>Arduino</b><b class='flag-5'>通過</b>USB串行對ESP32S3<b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>和調(diào)試](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用USBasp和Arduino IDE對ATtiny MCU進(jìn)行編程
![使用USBasp和<b class='flag-5'>Arduino</b> IDE對ATtiny MCU<b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用Arduino對虛擬爪機(jī)進(jìn)行編程
![使用<b class='flag-5'>Arduino</b>對虛擬爪機(jī)<b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何使用Arduino UNO對ESP8266進(jìn)行編程
![如何使用<b class='flag-5'>Arduino</b> UNO對ESP8266<b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
通過HC 05模塊與Arduino進(jìn)行藍(lán)牙對話
![<b class='flag-5'>通過</b>HC 05模塊與<b class='flag-5'>Arduino</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>藍(lán)牙</b>對話](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
QM:以現(xiàn)代方式對Arduino進(jìn)行編程
![QM:以現(xiàn)代方式對<b class='flag-5'>Arduino</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用智能手機(jī)對arduino進(jìn)行編程
![使用智能手機(jī)對<b class='flag-5'>arduino</b><b class='flag-5'>進(jìn)行</b><b class='flag-5'>編程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論