在機器人中使用伺服電機進行精確控制很常見。在本文中,我們將向您展示如何使用Arduino UNO開發(fā)板無線連接一個伺服電機,并且通過藍牙連接一臺Android設(shè)備。我們已經(jīng)介紹過如何使用Arduino開發(fā)板控制伺服電機,這次我們使用無線藍牙模塊HC-06控制伺服電機。
所需的材料
● Arduino UNO開發(fā)板
● HC-05或HC-06藍牙模塊
● 伺服電機
● Playstore的Roboremo App
● 面包板
● 連接導(dǎo)線
HC-06藍牙模塊
藍牙可以運行在以下兩種模式:
1. AT指令設(shè)置模式
2. 工作模式
在AT指令設(shè)置模式下,我們可以配置藍牙屬性,如藍牙信號的名稱、密碼、運行波特率等。工作模式是我們可以在PIC單片機和藍牙模塊之間發(fā)送和接收數(shù)據(jù)的一種模式。因此,在本教程中,我們將僅使用工作模式進行測試。AT指令設(shè)置模式保留為默認設(shè)置。設(shè)備名稱將是HC-05,密碼將為0000或1234,最重要的是所有藍牙模塊的默認波特率為9600。
該模塊工作在5V電源,信號引腳工作在3.3V,所以模塊內(nèi)部安裝有一個3.3V穩(wěn)壓器。因此我們不必擔心。在六個引腳中工作模式只使用了四個引腳。引腳連接表如下所示
序號 | HC-05模塊的引腳 | MCU的引腳 | PIC的引腳 |
1 | Vcc | Vdd | 第31腳 |
2 | Gnd | Gnd | 第32腳 |
3 | Tx | RC6 / Tx / CK | 第25腳 |
4 | Rx | RC7 / Rx / DT | 第26腳 |
5 | State | NC | NC |
6 | EN(Enable) | NC | NC |
電路原理圖
使用Arduino開發(fā)板藍牙控制伺服電機的電路圖:
配置Roboremo App以控制伺服電機
第1步: 從Android Play商店下載Roboremo應(yīng)用程序并將其安裝到您的智能手機中。安裝完成后,您將看到如下圖左側(cè)所示的應(yīng)用程序窗口,然后點擊“Menu”按鈕,您將看到如下圖右側(cè)所示的窗口:
第2步: 然后點擊“connect”按鈕,你會看到如下圖3所示的窗口,然后你需要選擇'Bluetooth RFCOMM',然后你就可以將HC-06藍牙模塊連接到Android應(yīng)用'Roboremo'。
第3步: 連接HC-06藍牙模塊后,返回到第2步右側(cè)的窗口,然后點擊'edit ui'按照您的需要創(chuàng)建用戶界面。
當點擊''edit ui"時,您將再次看到圖1所示的窗口,然后在屏幕上的任意位置點擊屏幕,您將看到如下圖所示的應(yīng)用程序窗口,并選擇“Button”以獲得一個按鈕模板。
第4步: 選擇按鈕模板后,您將在屏幕上獲得一個按鈕進行編輯。您可以調(diào)整大小并將結(jié)構(gòu)移動到屏幕的任何位置?,F(xiàn)在,為了設(shè)置通過藍牙點擊發(fā)送的值,需要設(shè)置“set press action”,并鍵入您想要從該特定按鈕發(fā)送的值。就像我們通過按下Roboremo android應(yīng)用程序中的'Start'按鈕發(fā)送'1'來旋轉(zhuǎn)伺服。
第5步: 最終我們設(shè)計了一個用戶界面來使用智能手機來控制伺服電機。
代碼和說明
本文末尾給出了使用藍牙控制伺服電機的完整Arduino代碼。
Arduino自帶有伺服電機庫,它處理所有PWM相關(guān)的事情來旋轉(zhuǎn)伺服,你只需要輸入你想旋轉(zhuǎn)的角度,然后使用函數(shù)servo1.write(angle)即可;該函數(shù)將使伺服電機旋轉(zhuǎn)到所需的角度。
因此,我們首先定義伺服電機庫和軟件串行庫用于定義Rx和Tx引腳。
#include
#include
在下面的代碼中,我們正在初始化Arduino的Rx和Tx引腳,為伺服電機和其他事情定義變量。
Servo myServo;
int TxD = 11;
int RxD = 10;
int servoposition;
int servopos;
int new1;
SoftwareSerial bluetooth(TxD, RxD);
現(xiàn)在,將所有變量和組件設(shè)置為初始階段。在這里,我們使用Arduino開發(fā)板的第9腳連接了伺服電機,并將伺服電機的初始位置設(shè)置為0度。串行和藍牙通信的波特率也設(shè)置為9600。
void setup() {
int pos=0;
myServo.attach(9);
myServo.write(0);
Serial.begin(9600); // start serial communication at 9600bps
bluetooth.begin(9600);
}
在void loop()函數(shù)中,Arduino將始終檢查輸入值,并根據(jù)智能手機接收到的值旋轉(zhuǎn)伺服器。所有的值將通過串行通信接收。
如果該值為0,伺服將旋轉(zhuǎn)到0度。同樣,如果我們從藍牙應(yīng)用程序發(fā)送45、90、135和180,則伺服器將分別旋轉(zhuǎn)到45、90、135和180度角。
void loop() {
if (bluetooth.available()){
String value = bluetooth.readString();
servoposition = value.toInt();
if (value.toInt() == 0){
Serial.println(servoposition);
myServo.write(0);
}
if (value.toInt() == 45){
Serial.println(servoposition);
myServo.write(45);
}
if (value.toInt() == 90){
Serial.println(servoposition);
myServo.write(90);
}
if (value.toInt() == 135){
Serial.println(servoposition);
myServo.write(135);
}
if (value.toInt() == 180){
Serial.println(servoposition);
myServo.write(180);
}
如果我們通過按下開始按鈕發(fā)送值'1',伺服將一直旋轉(zhuǎn),直到按下停止按鈕。在這里我們按下停止按鈕時發(fā)送'2',Arduino開發(fā)板讀取后,它將跳出while循環(huán),伺服電機停止旋轉(zhuǎn)。
while(value.toInt()==1){
if (bluetooth.available())
{
value = bluetooth.readString();
Serial.println(value);
if (value.toInt()==2)
{Serial.println("YYY");break; }
}
servopos++;
delay(30);
Serial.println(servopos);
myServo.write(servopos);
if (servopos ==180 )
{servopos=0;break;}
}
}
}
使用藍牙的伺服電機控制的工作過程
在這個項目中,我們使用Android應(yīng)用程序“Roboremo”來控制伺服電機。在這個應(yīng)用程序的界面中,我們創(chuàng)建了5個按鈕來控制伺服電機,如前所述。每個按鈕的功能在下表中給出:
序號 | 按鈕名稱 | 發(fā)送值 | 描述 |
1 | Start | 1 | 該按鈕用于開始將伺服從0°旋轉(zhuǎn)到180°。 |
2 | Stop | 2 | 該按鈕用于在任何時候停止伺服。 |
3 | 0? | 0 | 該按鈕用于將伺服旋轉(zhuǎn)至0°。 |
4 | 90? | 90 | 該按鈕用于將伺服旋轉(zhuǎn)至90°。 |
5 | 180? | 180 | 該按鈕用于將伺服旋轉(zhuǎn)至180°。 |
因此,通過在Android應(yīng)用程序Roboremo上按下這些按鈕,數(shù)據(jù)將通過智能手機的藍牙發(fā)送到HC-06藍牙模塊。Arduino接收來自該HC-06模塊的數(shù)據(jù),然后根據(jù)代碼中按鈕表示的角度旋轉(zhuǎn)伺服電機。我們也可以編寫角度45和135的代碼,但由于Roboremo應(yīng)用程序的限制,只能創(chuàng)建5個按鈕,所以我們跳過了這兩個按鈕。
通過使用這種方式,我們可以使用藍牙將數(shù)據(jù)從智能手機發(fā)送到Arduino開發(fā)板,然后以無線方式控制伺服器。這可以用于許多應(yīng)用程序,如玩具車、機器人等。
編輯:hfy
-
伺服電機
+關(guān)注
關(guān)注
88文章
2120瀏覽量
59660 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192161 -
伺服電機控制
+關(guān)注
關(guān)注
0文章
17瀏覽量
7694
發(fā)布評論請先 登錄
如何選擇合適的芯科科技Wi-Fi開發(fā)板
【新品】遠距離圖傳數(shù)傳模塊開發(fā)板、藍牙模塊開發(fā)板、無線模塊開發(fā)板

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

基于RV1126開發(fā)板實現(xiàn)人臉檢測方案

雷卯收集4G/WIFI無線傳輸產(chǎn)品開發(fā)板

通過Arduino Nano Matter開發(fā)板構(gòu)建智能卷簾系統(tǒng)

Arduino Nano Matter開發(fā)板正式上市
使用恩智浦無線FRDM開發(fā)板實現(xiàn)創(chuàng)新無線解決方案

基于Arduino的串口通信項目
無線連接測試儀的技術(shù)原理和應(yīng)用場景
如何使用Arduino實現(xiàn)CAN總線通信
?Banana Pi BPi-M4 Zero 開源硬件開發(fā)板評測試: 全志科技H618 方案設(shè)計 ,板載4G 內(nèi)存,32G eMMC
瑞薩在無線連接領(lǐng)域的創(chuàng)新與未來展望

評論