基於Arduino UNO開發板無線連接伺服電機方案設計

2021-01-10 電子發燒友
基於Arduino UNO開發板無線連接伺服電機方案設計

風箏 發表於 2021-01-09 11:47:36

在機器人中使用伺服電機進行精確控制很常見。在本文中,我們將向您展示如何使用Arduino UNO開發板無線連接一個伺服電機,並且通過藍牙連接一臺Android設備。我們已經介紹過如何使用Arduino開發板控制伺服電機,這次我們使用無線藍牙模塊HC-06控制伺服電機。

所需的材料

●    Arduino UNO開發板

●    HC-05或HC-06藍牙模塊

●    伺服電機

●    Playstore的Roboremo App

●    麵包板

●    連接導線

HC-06藍牙模塊

藍牙可以運行在以下兩種模式:

1.    AT指令設置模式

2.    工作模式

在AT指令設置模式下,我們可以配置藍牙屬性,如藍牙信號的名稱、密碼、運行波特率等。工作模式是我們可以在PIC單片機和藍牙模塊之間發送和接收數據的一種模式。因此,在本教程中,我們將僅使用工作模式進行測試。AT指令設置模式保留為默認設置。設備名稱將是HC-05,密碼將為0000或1234,最重要的是所有藍牙模塊的默認波特率為9600。

該模塊工作在5V電源,信號引腳工作在3.3V,所以模塊內部安裝有一個3.3V穩壓器。因此我們不必擔心。在六個引腳中工作模式只使用了四個引腳。引腳連接表如下所示

序號 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開發板藍牙控制伺服電機的電路圖:

配置Roboremo App以控制伺服電機

第1步: 從Android Play商店下載Roboremo應用程式並將其安裝到您的智慧型手機中。安裝完成後,您將看到如下圖左側所示的應用程式窗口,然後點擊「Menu」按鈕,您將看到如下圖右側所示的窗口:

第2步: 然後點擊「connect」按鈕,你會看到如下圖3所示的窗口,然後你需要選擇'Bluetooth RFCOMM',然後你就可以將HC-06藍牙模塊連接到Android應用'Roboremo'。

第3步: 連接HC-06藍牙模塊後,返回到第2步右側的窗口,然後點擊'edit ui'按照您的需要創建用戶界面。

當點擊''edit ui"時,您將再次看到圖1所示的窗口,然後在屏幕上的任意位置點擊屏幕,您將看到如下圖所示的應用程式窗口,並選擇「Button」以獲得一個按鈕模板。

第4步: 選擇按鈕模板後,您將在屏幕上獲得一個按鈕進行編輯。您可以調整大小並將結構移動到屏幕的任何位置。現在,為了設置通過藍牙點擊發送的值,需要設置「set press action」,並鍵入您想要從該特定按鈕發送的值。就像我們通過按下Roboremo android應用程式中的'Start'按鈕發送'1'來旋轉伺服。

第5步: 最終我們設計了一個用戶界面來使用智慧型手機來控制伺服電機。

代碼和說明

本文末尾給出了使用藍牙控制伺服電機的完整Arduino代碼。

Arduino自帶有伺服電機庫,它處理所有PWM相關的事情來旋轉伺服,你只需要輸入你想旋轉的角度,然後使用函數servo1.write(angle)即可;該函數將使伺服電機旋轉到所需的角度。

因此,我們首先定義伺服電機庫和軟體串行庫用於定義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);

現在,將所有變量和組件設置為初始階段。在這裡,我們使用Arduino開發板的第9腳連接了伺服電機,並將伺服電機的初始位置設置為0度。串行和藍牙通信的波特率也設置為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()函數中,Arduino將始終檢查輸入值,並根據智慧型手機接收到的值旋轉伺服器。所有的值將通過串行通信接收。

如果該值為0,伺服將旋轉到0度。同樣,如果我們從藍牙應用程式發送45、90、135和180,則伺服器將分別旋轉到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);

}

如果我們通過按下開始按鈕發送值'1',伺服將一直旋轉,直到按下停止按鈕。在這裡我們按下停止按鈕時發送'2',Arduino開發板讀取後,它將跳出while循環,伺服電機停止旋轉。

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應用程式「Roboremo」來控制伺服電機。在這個應用程式的界面中,我們創建了5個按鈕來控制伺服電機,如前所述。每個按鈕的功能在下表中給出:

序號 按鈕名稱 發送值 描述 1 Start 1 該按鈕用於開始將伺服從0°旋轉到180°。 2 Stop 2 該按鈕用於在任何時候停止伺服。 3 0⁰ 0 該按鈕用於將伺服旋轉至0°。 4 90⁰ 90 該按鈕用於將伺服旋轉至90°。 5 180⁰ 180 該按鈕用於將伺服旋轉至180°。

因此,通過在Android應用程式Roboremo上按下這些按鈕,數據將通過智慧型手機的藍牙發送到HC-06藍牙模塊。Arduino接收來自該HC-06模塊的數據,然後根據代碼中按鈕表示的角度旋轉伺服電機。我們也可以編寫角度45和135的代碼,但由於Roboremo應用程式的限制,只能創建5個按鈕,所以我們跳過了這兩個按鈕。

通過使用這種方式,我們可以使用藍牙將數據從智慧型手機發送到Arduino開發板,然後以無線方式控制伺服器。這可以用於許多應用程式,如玩具車、機器人等。
編輯:hfy

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 十個中文例程教會你輕鬆上手製作Arduino智能小車
    當時的想法是設計一款基於Arduino的入門級機器人,可以和三五好友在有限的空間裡進行踢足球等互動,而且要做到取材容易製作簡單,在設計的上採用了模塊化的接插結構,同時還要注重外觀擁有個性。2、基於Arduino的自平衡遙控小車車模平衡控制也是通過負反饋來實現的。因為車模有兩個輪子著地,車體只會在輪子滾動的方向上發生傾斜。
  • 使用Arduino Nano開發板製作手勢控制的機械臂
    當手套上的彎曲傳感器彎曲時,安裝在夾具上的伺服電機旋轉,夾具打開。準備好3D列印的機械臂本文中使用的3D印表機械手是根據ThinZverse中EEZYbotARM提供的設計製作的。Thingiverse連結中提供了製作3D印表機械臂和帶有視頻的組裝細節的完整過程,該連結在上方共享。上圖是組裝4臺伺服電機後3D列印的機械臂的圖像。
  • 基於STM32的永磁同步電機伺服控制器設計
    摘要:首先介紹了永磁同步電機伺服控制器的基本功能及控制原理,並以STM32F407為基礎進行了小功率的伺服控制器設計,詳細講述了伺服控制器的軟、硬體的具體設計流程及其實現方式。並通過意法半導體公司提供的相關軟體設計工具快速、有效地完成伺服控制器的設計、調試。
  • arduino開發板有什麼用
    對Arduino的編程是通過 Arduino程式語言 (基於 Wiring)和Arduino開發環境(基於 Processing)來實現的。基於Arduino的項目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟體,他們之間進行通信 (比如 Flash, Processing, MaxMSP)來實現。   總有一款適合你——Arduino開發板終極盤點。
  • 基於F2808的永磁同步電機伺服系統設計
    摘要:設計了一種基於DSF F2808的永磁同步電機(PMSM)伺服控制系統,系統基於針對PMSM控制的工程實際,設計了一種基於DSP F2808的數字伺服控制系統,採用直流母線電壓紋波補償、遇限削弱積分PI控制算法、防振蕩處理等控制策略,實現PMSM高性能伺服控制,給出了伺服控制系統相關原理、軟硬體設計和實驗結果。基於上述方法開發的控制裝置具有良好的性能,已獲得實際應用。
  • 四個方法簡化運動控制系統設計——降低伺服電機成本
    使用基於PC的控制軟體、EtherCAT網絡、集成驅動器和單電纜技術進行配置,可簡化運動控制系統設計,並降低伺服電機成本。無論是改造項目還是新應用,選擇和安裝最佳伺服電機,都不是一項簡單的任務。任何升級通常都需要調整驅動器、變速箱、編碼器以及與電機接觸的其它部件。為每個伺服驅動器單獨編程和配置,也會增加調試時間和不必要的成本。
  • 直流伺服電機、交流伺服電機和步進電機的優缺點
    僅僅將負載直接連接到電機的轉軸上也可以極低速的同步旋轉;  ⑻由於速度正比於脈衝頻率,因而有比較寬的轉速範圍。這些電機具有一個共同的特點:轉速高、工作電流低,其中直流伺服電機J40SY272A的性能參數見表1。經過方案調研和審核,選取Magtrol的測功機HD510、HD710、測功機控制器DSP6001、三相電力分析儀6530,2臺安捷倫HP6673A大功率直流電源組建系統。  系統的機械部分是測試設備同被測電機連接的裝置,如聯軸器及法蘭盤支架。
  • 基於nRF24L01+與Arduino的超聲波測距系統設計
    發射端由Arduino開發板、無線射頻發射模塊、天線、超聲波模塊及電源模塊組成。接收端由Arduino開發板、無線射頻接收模塊、天線和終端設備等組成。在系統發射端,超聲波模塊HC—SR04對距離信號進行實時採集,在Arduino的控制下通過無線射頻發射模塊將距離數位訊號發送至接收端;在系統接收端,在Arduino開發板的作用下,通過無線射頻接收模塊接收發射端發送過來的距離數位訊號,通過串口通信模塊與PC機進行通信,在PC機中利用軟體讀取數據並繪製曲線。
  • 數碼管與ARDUINO 開發板的連接使用
    數碼管模塊與arduino連接示意圖接線說明:數碼管的VCC –arduino上的5V數碼管的GND -- arduino上的GND數碼管的DS -- arduino上的A0數碼管的ST_CP -- arduino上的A1數碼管的SH_CP -- arduino上的A2
  • 萬能超的arduino學習日記(一)
    本科時候有接觸過arduino,但是由於導師方向原因,轉做了3D列印和動力學分析,所以這裡是啥都會一點點的萬能超,希望能夠和大家一起學習討論。最近由於興趣原因,決定重新撿起arduino,所以決定寫這個萬能超的arduino學習日記跟大家一起重新學習。最開始的入門學習,我選擇跟B站太極創客的學習視頻,因為有基礎,選擇二倍速觀看學習。
  • 伺服電機電子齒輪比計算方法
    使用MSP430G2 LaunchPad開發板驅動伺服電機的方法 在本篇文章中,我們將主要介紹一些有關伺服電機的基礎知識以及如何將伺服電機與
  • arduino從零開始(4)PWM與呼吸燈
    在arduino中,我們常用PWM來驅動LED的暗亮程度,電機的轉速等。我們知道,在數字電路中,電壓信號是離散的: 不是 0(0V)  就是 1(5V或者3.3V), 那麼如何輸出介於 0v 和  5V之間的某個電壓值呢?簡單來說就是在一個周期內讓電壓在0V與5V之間快速切換,根據5V的佔比便可以模擬出0v到5v之間的不同電壓。
  • 基於MODBUS總線伺服電機運動控制方案
    在運動控制中,伺服電機以其響應速度快,控制精準等優點以被更多的客戶所選用。如果把總線通信與伺服控制技術統一起來,將推動運動控制技術以及設備遠程監控技術的發展。MODBUS作為一種通用的現場總線,已經得到很廣泛的應用,很多廠商PLC、智能I/O與A/D模塊具備MODBUS通訊接口。本文在闡述MODBUS通信協議的基礎上,構建了基於MODBUS的伺服電機運動控制。
  • Arduino與樹莓派 哪款開發板更適合你
    Arduino和樹莓派(Raspberry Pi)都是電子創意設計的常用開發工具,那麼它們之間到底有什麼區別和特點呢?今天Z博士就跟大家分享一下Arduino和樹莓派的比較。Arduino是一款基於微控制器(單片機)的電子開發板,它可以運行一些相對比較簡單的應用程式。
  • 音圈電機伺服驅動器與運動機構設計
    編者按:為滿足一類音圈直流伺服電機的高速振動定位精度工作的精度需求,研發了一種高性能的音圈電機高精度位置定位設備。基於ARMCortex M3系列的STM32F103VCT6處理器設計了音圈直流伺服電機控制系統。
  • ADI伺服電機控制解決方案
    打開APP ADI伺服電機控制解決方案 發表於 2019-01-25 15:39:46 針對電機控制解決方案,ADI 公司提供了門類齊全的產品組合,其中包括了模數/數模轉換器、放大器、嵌入式處理器、 iCoupler®數字隔離器、電源管理器件和實時乙太網解決方案;這些高性能的器件和增加系統集成度有助於實現更新型的拓撲 結構設計,為客戶實現系統的差異化設計帶來價值,比如,更快主頻的處理器可以運行更加複雜的算法,高性能的 ADC 可以支持更高性能的電流環控制等等
  • 國外知名伺服電機/系統製造商盤點
    、可編程型及多軸運動控制型伺服驅動產品及相關解決方案的生產和貿易性企業。 SIMOTICS 1FT7永磁同步電機 歐系伺服特點是過載能力高,動態響應好,驅動器開放性強,且具有總線接口,包括現場總線、工業乙太網甚至無線網絡技術。
  • 簡單了解伺服電機連接減速機的方式
    伺服電機在封閉的環裡面使用。就是說它隨時把信號傳給系統,同時把系統給出的信號來修正自己的運轉。伺服是可以變速,扭力比普通電機大,但是當負載較大時,長時間運行對伺服電機影響不好,扭力也不夠,加減速機主要作用是加大扭力,和減速作用。
  • 數字交流伺服驅動器實現方案
    引言  國際整流器件公司針對高性能交流伺服驅動的需求,設計出了基於硬體實現的完整的伺服驅動控制單片解決方案IRMCK201, 適用不同類型的永磁或交流感應電機,具有編碼器位置反饋接口,將運動控制算法通過硬體實現,從而省略了編程任務,達到實時控制的目的。
  • 伺服電機的調試方法及伺服電機的選用選型
    在伺服電機上:設置控制方式;設置使能由外部控制;編碼器信號輸出的齒輪比;設置控制信號與電機轉速的比例關係。一般來說,建議使伺服工作中的最大設計轉速對應9V的控制電壓。比如,山洋是設置1V電壓對應的轉速,出廠值為500,如果你只準備讓電機在1000轉以下工作,那麼,將這個參數設置為111。