使用NodeMCU的無線控制機(jī)器人
因?yàn)?a href="/tags/機(jī)器人" target="_blank">機(jī)器人,自動(dòng)化才成為可能,現(xiàn)在他們正在做工業(yè)中的大部分工作。機(jī)器人被編程來完成重復(fù)的任務(wù),但它們也可以被手動(dòng)操作來完成一些復(fù)雜的任務(wù),比如手術(shù)。但現(xiàn)在,隨著人工智能和物聯(lián)網(wǎng)的引入,機(jī)器人能夠自己做出決策,并能夠在沒有任何人為干預(yù)的情況下執(zhí)行許多任務(wù)。
機(jī)器人可以通過藍(lán)牙、LoRa、Wifi等多種方式進(jìn)行無線控制。在本教程中,我們將使用NodeMCU制作一個(gè)可以通過互聯(lián)網(wǎng)瀏覽器無線控制的網(wǎng)絡(luò)控制機(jī)器人汽車。該網(wǎng)頁還將顯示機(jī)器人與障礙物的實(shí)時(shí)距離。那么,我們開始吧。
組件的要求
?NodeMCU (ESP-12e)
?L293D或L298電機(jī)驅(qū)動(dòng)IC
?2個(gè)直流電機(jī)
?超聲波傳感器(HC-SR04)
?12 v電池
?5v電源(選配)
L298D電機(jī)驅(qū)動(dòng)模塊有一個(gè)內(nèi)置的5v電源,但如果你使用的是L293D IC,那么你必須使用7805 IC制作一個(gè)5v電源電路。
線路圖
使用NodeMCU的Wi-Fi控制汽車的完整電路圖如下:
電路連接如下:
NodeMCU的L298的IN1引腳->的D6
NodeMCU的L298的IN2引腳-> D7
L298的IN3引腳-> NodeMCU的D1
NodeMCU的L298的IN4引腳-> D3
傳感器的觸發(fā)腳- NodeMCU的> D4
NodeMCU的> D8傳感器回波引腳
NodeMCU的Vin -> 12v電池
傳感器5v和GND -> L298模塊5v和GND。
L298模塊12v -> 12v電池
為了調(diào)整電機(jī)的速度,使用驅(qū)動(dòng)模塊的使能引腳并將其連接到NodeMCU的PWM引腳(D2, D5),否則使用跳線將它們連接到5v。
Web控制的Robot的最終設(shè)置如下所示
代碼與說明
要用Arduino IDE編程N(yùn)odeMCU,請(qǐng)進(jìn)入File - > preferences - >Settings。
在“附加板管理器URL”字段中輸入,然后單擊“確定”。
現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。
在板管理器窗口中,在搜索框中輸入esp, esp8266將在下面列出。現(xiàn)在選擇最新版本的板并點(diǎn)擊安裝。
安裝完成后,進(jìn)入“工具>單板> NodeMCU 1.0(ESP-12E模塊)”。現(xiàn)在您可以使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。
我們需要兩個(gè)庫來制作基于本地web服務(wù)器的NodeMCU。從給出的鏈接下載這些庫,然后進(jìn)入
ESPAsyncTCP
ESPAsycnWebServer
完整的代碼在本教程的末尾給出,在這里我們一步一步地解釋代碼。
1. 首先,使用#include<>包含所有必需的庫
2. 設(shè)置Wi-Fi證書,并聲明傳感器和電機(jī)驅(qū)動(dòng)器所需的所有NodeMCU引腳。
3. 現(xiàn)在,我們將制作一個(gè)HTML頁面,其中將有5個(gè)按鈕來移動(dòng)機(jī)器人向前,向后,向右,向左和停止。該網(wǎng)頁還顯示了任何障礙物與機(jī)器人的距離。此HTML代碼將使用programm關(guān)鍵字存儲(chǔ)在Program內(nèi)存中。
4. 然后在HTML內(nèi)容中編寫一個(gè)腳本,該腳本可以在預(yù)定義的時(shí)間之后運(yùn)行,以更新汽車與墻壁的距離。Setinterval函數(shù)負(fù)責(zé)在不刷新頁面的情況下定期更新距離。這里我們每隔5秒更新一次距離。
5. 現(xiàn)在,創(chuàng)建一個(gè)函數(shù)來計(jì)算到墻的距離。我們可以用聲速乘以接收到聲音的時(shí)間來計(jì)算距離。
6. 在void setup函數(shù)中,將模塊與Wi-Fi連接,并檢查來自服務(wù)器的傳入消息。初始化波特率為115200的串行通信,檢查給定的Wi-Fi網(wǎng)絡(luò)并打印IP地址。
現(xiàn)在,將帶有輸入字段的網(wǎng)頁發(fā)送到客戶機(jī)計(jì)算機(jī)。
檢查來自客戶機(jī)-服務(wù)器的輸入U(xiǎn)RL,并根據(jù)方向?qū)PIO設(shè)置為HIGH/LOW。
同樣,調(diào)用server.on()獲取其他方向和更新網(wǎng)頁上顯示的距離
使用NodeMCU測(cè)試Wi-Fi控制機(jī)器人
使用USB線將NodeMCU與筆記本電腦/PC相連,在工具菜單中選擇單板并上傳代碼。確保您的模塊和筆記本電腦/PC連接到相同的Wi-Fi網(wǎng)絡(luò)。
現(xiàn)在,打開串行監(jiān)視器。在這里,您將看到NodeMCU的IP地址。復(fù)制此IP并粘貼到瀏覽器的地址欄中。
在瀏覽器中輸入IP地址后,屏幕上就會(huì)加載包含所有5個(gè)按鈕的網(wǎng)頁。
現(xiàn)在,你可以在任何地方使用網(wǎng)絡(luò)瀏覽器控制你的機(jī)器人汽車。為了使汽車更先進(jìn),你可以在機(jī)器人的所有側(cè)面添加更多的超聲波傳感器,也可以通過使用我們?cè)谥悄芄姘屙?xiàng)目中使用的HTML表單發(fā)送速度值來調(diào)整汽車的速度。
本文編譯自iotdesignpro