基于藍牙的智能手機控制機器人汽車
你們中的大多數(shù)人可能知道機器人項目及其使用微控制器的工作。在當(dāng)今時代,這樣的DIY機器人項目是如此受歡迎和最需要的。因此,我們決定使用Arduino制作一個新的機器人項目藍牙控制機器人汽車,它非常簡單,與嵌入式技術(shù)的學(xué)生,愛好者和初學(xué)者完美兼容。通過添加更多的技術(shù),這些未來機器人將在不同的領(lǐng)域用于不同的目的,如消防機器人、監(jiān)視機器人等。
在這個項目中,我們將使用Arduino作為微控制器來制作一個無線藍牙控制的機器人汽車。這將是一個令人興奮的項目,它是無線通信、機器人和電子技術(shù)的結(jié)合。我們可以用智能手機控制機器人,只需要在Playstore上安裝一個應(yīng)用程序(見后文)。我們正在集成一個藍牙模塊,用于在機器人汽車和支持藍牙的設(shè)備之間進行無縫無線通信。
我們之前創(chuàng)建了一些其他基于物聯(lián)網(wǎng)的機器人項目:
?使用NodeMCU的無線控制機器人
?使用Arduino的手勢控制機器人
?基于Arduino IDE的ESP32 CAM監(jiān)控機器人
制造無線機器人汽車所需的組件
?Arduino UNO *1
?l298n2a電機驅(qū)動模塊*1
?HC-05藍牙模塊*
?5v減速電機*2
?電力供應(yīng)
?機器人底盤
?連接電線
?控制器應(yīng)用和智能手機
L298N電機驅(qū)動器引腳
該模塊的功能是作為輪減速電機的驅(qū)動器/控制器,可以控制它們的方向和速度。由于我們沒有利用Arduino產(chǎn)生的PWM信號來調(diào)節(jié)速度,因此減速電機將以最大速度運行,因為我們保持了主板上排序的PWM引腳(ENA & ENB)的當(dāng)前狀態(tài)。因此,驅(qū)動模塊僅用于改變電機的旋轉(zhuǎn)方向,允許機器人在所有四個方向上移動。
它主要包括從連接電機到控制電機的所有連接。
VCC:用于向電路板提供電源的引腳。其工作電源電壓范圍為4-46伏。
GND:用于連接單板和電源接地的引腳。為了確保電路板在與已經(jīng)通電的Arduino接口時能夠正常工作,必須在電路板的地與Arduino的地之間建立連接。
5V:因為電路板有一個內(nèi)置的5伏穩(wěn)壓器。該引腳提供恒定的5伏輸出,為內(nèi)部邏輯電路供電,同時為微控制器等其他設(shè)備供電。
ENA和ENB:這些引腳用于控制電機的速度。將指定的引腳拉高將啟動電機以最高速度旋轉(zhuǎn),而將它們拉低將停止其運動。然而,通過利用脈寬調(diào)制(PWM),可以控制電機的速度。通常,模塊在這些引腳上配備了跳線。安裝跳線后,電機以最高速度運行。如果您希望以編程方式調(diào)節(jié)電機速度,則必須移除跳線并將引腳連接到Arduino的pwm支持引腳。
IN1和IN2:這些引腳用于控制電機的旋轉(zhuǎn)方向和停止電機。這兩個引腳被分配用于控制一側(cè)電機,而IN3和IN4被分配用于控制另一側(cè)電機。將邏輯HIGH-LOW設(shè)置為IN1和IN2將在前進方向上創(chuàng)建自旋,而LOW-HIGH將反轉(zhuǎn)自旋。同樣,IN3和in4也是如此。輸入LOW-LOW和HIGH-HIGH邏輯將導(dǎo)致電機停止。這些引腳連接到Arduino的數(shù)字引腳上。
OUT-1 & OUT-2:該引腳用于連接電機。一個電機連接到OUT-1,另一個連接到OUT-2。您可以將電機連接到5v至35v的電壓范圍。請記住,無論施加到VCC的電壓是多少,您都會得到大約2伏的衰減。
HC-05藍牙輸出
它是電子工程中廣泛使用的無線通信模塊。它使用串行UART通信進行數(shù)據(jù)傳輸。
模塊可以在兩種模式下工作:
主模式:可以與所有從機共享數(shù)據(jù)。
從模式:從主藍牙接收數(shù)據(jù)。
在這里,我們的藍牙模塊是一個奴隸,而智能手機是一個主人。
它由6個引腳組成,分別是STATE, RXD, TXD, GND, VCC和EN,如模塊背面所述。
STATE引腳:該引腳定義模塊的狀態(tài),無論它是否與另一個設(shè)備配對。
RxD引腳:該引腳使用串行UART通信。當(dāng)模塊處于命令模式時,該引腳用于發(fā)送AT命令。
TxD引腳:該引腳使用串行UART通信。該引腳用于在模塊處于命令模式時推出對AT命令的響應(yīng)。
Vcc引腳:該引腳用于為模塊供電,使其工作。它通常連接到Arduino板上的5V引腳。其電壓范圍在3.6v到5v之間。
GND引腳:該引腳用于將模塊連接到Arduino板的接地。
EN引腳:該引腳用于命令模式和數(shù)據(jù)模式之間的切換。如果此引腳設(shè)置為HIGH,則模塊將處于命令模式。同樣,如果該引腳設(shè)置為LOW,則模塊將處于數(shù)據(jù)模式。
機器人汽車底盤組裝
我們已經(jīng)使用了一個亞克力激光切割板與所有必要的配件兼容。它是精確切割與所有空間提供的組件配件使用螺絲刀。您也可以參考各種在線平臺購買此類類型的底盤原型
這些都有所有需要的零件,如電機,電池支架,所有的輪子和螺絲。你只需要正確地挑選和擰它。您也可以參考制造商組裝視頻。這些都是低成本,高度耐用,精確裝配。所以,你不用擔(dān)心試穿的問題。
看看我的底盤原型在所有的配件后:
Arduino藍牙控制機器人電路圖
以下是藍牙控制機器人汽車的綜合電路圖,設(shè)計簡單易懂,易于實現(xiàn)。
讓我們看看它們之間的聯(lián)系:
首先,將藍牙HC-05模塊連接到Arduino上,檢查IDE串口監(jiān)視器上接收到的數(shù)據(jù)。在我的例子中,HC-05的Txd和Rxd分別連接到11和10個數(shù)字引腳。BT模塊通過將電源引腳連接到各自的Arduino電源引腳來獲得Arduino的電源。
Arduino從L298N板的5v輸出端子和地線獲得電力。
L298N的連接:
正如我們已經(jīng)看到的L298N電機驅(qū)動器的引腳描述。因此,它現(xiàn)在很容易與Arduino接口。
通過將電池的正極連接到驅(qū)動板的VCC,我們可以為電機驅(qū)動器供電,我們使用2S鋰離子電池,輸出電壓約為7.4伏。之所以做出這種選擇,是因為我們使用的是在3至12伏電壓范圍內(nèi)工作的bo齒輪電機,電路板內(nèi)部電路在輸出電機端子處減少約2伏對電機功能的影響最小。因此,電機將得到附近5.5 -6伏特。
現(xiàn)在,要將數(shù)字方向控制引腳連接到Arduino,只需將Arduino的任意四個數(shù)字引腳連接到驅(qū)動板的IN1, IN2, IN3和IN4引腳,并根據(jù)正確的Arduino引腳定制代碼。
實際連接和功能如下:
應(yīng)用程序配置接口Bot與智能手機
將機器人汽車與我們的智能手機連接是一個非常簡單的過程,我們只需要從Playstore下載一個名為“Bluetooth RC car”的應(yīng)用程序。該應(yīng)用程序有一個預(yù)先構(gòu)建的界面來控制任何類型的藍牙RC機器人。該應(yīng)用程序有圖形按鈕,滑塊,甚至傳感器(例如,加速度計)直觀控制。它還有各種其他內(nèi)置功能來控制不同的功能,比如打開/關(guān)閉汽車的前燈和后燈等等。
打開安卓智能手機的Playstore,搜索“Bluetooth RC Car”。你會發(fā)現(xiàn)一個像這樣的應(yīng)用程序:
安裝應(yīng)用程序并打開它。您將看到一個吸引人的界面,使控制汽車變得容易。
智能手機控制的機器人汽車工作原理
我們都知道Arduino是機器人汽車的大腦。它使用Arduino IDE(集成開發(fā)環(huán)境)進行編程,以接收和處理通過藍牙發(fā)送的命令。編寫編程代碼來解釋接收到的信號并將其轉(zhuǎn)換為電機的特定動作,例如前進,后退,向左或向右轉(zhuǎn)彎以及停止。
在繼續(xù)操作之前,請確保機器人車的開關(guān)處于打開狀態(tài),并確認電池已充滿電。此外,仔細檢查所有連接,確保它們是安全的,沒有松動。
機器人和智能手機之間的無線接口是通過機器人的藍牙連接功能實現(xiàn)的,該功能是通過使用HC-05模塊實現(xiàn)的。
在我們的藍牙智能手機上,移動應(yīng)用程序有一個控制界面。該界面允許用戶向機器人汽車發(fā)送命令,指定所需的動作或運動。
?將Code上傳到Arduino,檢查BT模塊指示燈是否閃爍。
?打開應(yīng)用,打開智能手機藍牙,將應(yīng)用與BT模塊“HC-05”配對。
?如果申請配對成功,左上角的紅色標記將變?yōu)榫G色。
一旦建立連接并準備好控制界面,用戶就可以使用智能手機設(shè)備無線控制機器人汽車??刂菩盘柾ㄟ^藍牙傳輸,并由Arduino板接收,然后Arduino板對其進行解釋并相應(yīng)地控制電機,執(zhí)行所需的運動。
藍牙控制機器人汽車的Arduino代碼
我們知道藍牙模塊使用串行通信來傳輸數(shù)據(jù)。該程序讀取串口上可用的藍牙模塊數(shù)據(jù)。根據(jù)所接收到的命令或數(shù)據(jù),處理器執(zhí)行所期望的移動功能。
我們已經(jīng)包含了SoftwareSerial庫來定義串行通信引腳與BT模塊通信。代碼內(nèi)部,Pin 11被定義為RX,那么它必須連接到BT模塊的TxD上。同理,引腳10插入BT模塊的RxD。此外,我們將IN1, IN2, IN3和IN4引腳定義為Arduino的2,3,4和5個數(shù)字引腳。
在setup()函數(shù)中,我們以9600的波特率初始化硬件串行通信,而函數(shù)bt.begin()以相同的波特率初始化藍牙通信。我們還定義了引腳模式,并將所有方向控制引腳初始設(shè)置為LOW,以停止任何類型的電機運動。
Inside Loop()函數(shù),我們正在檢查串行端口上可用的數(shù)據(jù),并將其打印到串行監(jiān)視器以檢查BT模塊的功能。發(fā)送任何字符終端命令連接到您的智能手機上顯示它在串行監(jiān)視器。
我們使用Switch Case語句比較接收到的數(shù)據(jù),如果條件為真,語句將被執(zhí)行。
我們在循環(huán)外定義的switch語句中調(diào)用了五個不同的移動函數(shù)。
運動函數(shù):我們已經(jīng)定義了四種類型的運動函數(shù)和一個停止函數(shù)。配置四個數(shù)字引腳(IN1, IN2, IN3, IN4)將控制所有方向的移動。提供高-低指令對于轉(zhuǎn)動輪子至關(guān)重要。有時開發(fā)人員必須根據(jù)他們的硬件連接調(diào)整這些命令來設(shè)置True方向。
本文編譯自iotdesignpro