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