避障小車(chē)是一種智能設(shè)備,可以自動(dòng)感知前方的障礙物,并通過(guò)朝另一個(gè)方向轉(zhuǎn)動(dòng)來(lái)避開(kāi)障礙物。該設(shè)計(jì)允許小車(chē)通過(guò)避免碰撞在未知環(huán)境中導(dǎo)航,這是任何自主移動(dòng)小車(chē)的主要要求。避障小車(chē)的應(yīng)用不受限制,現(xiàn)在大多數(shù)軍事組織都使用它,這有助于執(zhí)行許多士兵無(wú)法完成的危險(xiǎn)工作。
在本篇文章中,我們將使用Arduino和超聲波傳感器制作一個(gè)避障小車(chē)。這里,超聲波傳感器用于通過(guò)計(jì)算機(jī)器人和障礙物之間的距離來(lái)感測(cè)路徑中的障礙物。如果機(jī)器人發(fā)現(xiàn)任何障礙物,它會(huì)改變方向并繼續(xù)移動(dòng)。
超聲波傳感器如何用于避免障礙物
在制作之前,了解超聲波傳感器的工作原理非常重要,因?yàn)檫@種傳感器在檢測(cè)障礙物方面起著重要作用。超聲波傳感器工作的基本原理是記錄傳感器在撞擊表面后傳輸超聲波束和接收超聲波束所需的時(shí)間。然后使用該公式計(jì)算距離。在本文中,使用了廣泛使用的HC-SR04超聲波傳感器。
因此,HC-SR04的Trig引腳高至少10 us。聲波束以8個(gè)40KHz的脈沖傳輸。

然后信號(hào)撞擊表面并返回并由HC-SR04的接收器Echo引腳捕獲。 Echo引腳在發(fā)送高電平時(shí)為高電平。
光束返回所用的時(shí)間保存在變量中,并使用如下所示的適當(dāng)計(jì)算轉(zhuǎn)換為距離
距離=(時(shí)間x空氣中聲音的速度(343 m / s))/ 2
可輕松找到避免機(jī)器人的障礙物的組件。為了搭建底盤(pán),可以使用任何玩具底盤(pán)或者可以定制。
需要的組件
● Arduino NANO或Uno開(kāi)發(fā)板
● HC-SR04超聲波傳感器
● LM298N電機(jī)驅(qū)動(dòng)器模塊
● 5V直流電動(dòng)機(jī)
● 電池
● 車(chē)輪
● 機(jī)殼
● 跳線
電路原理圖
避障小車(chē)的Arduino編程
在本文末尾處將給出了完整程序。該程序?qū)ㄔO(shè)置HC-SR04模塊并將信號(hào)輸出到電機(jī)引腳以相應(yīng)地移動(dòng)電機(jī)方向。此項(xiàng)目中不會(huì)使用任何庫(kù)。
首先在程序中定義HC-SR04的TRIG和ECHO引腳。在本文中,trig引腳連接到GPIO9,echo引腳連接到Arduino NANO的GPIO10。
int trigPin = 9; // trig pin of HC-SR04
int echoPin = 10; // Echo pin of HC-SR04
定義用于輸入LM298N電機(jī)驅(qū)動(dòng)器模塊的引腳。 LM298N有4個(gè)數(shù)據(jù)輸入引腳,用于控制連接到它的電機(jī)方向。
int revleft4 = 4; //REVerse motion of Left motor
int fwdleft5 = 5; //ForWarD motion of Left motor
int revright6 = 6; //REVerse motion of Right motor
int fwdright7 = 7; //ForWarD motion of Right motor
LM298N電機(jī)驅(qū)動(dòng)器模塊
在setup()函數(shù)中,定義使用的GPIO引腳的數(shù)據(jù)方向。四個(gè)電機(jī)引腳和Trig引腳設(shè)置為輸出,Echo引腳設(shè)置為輸入。
pinMode(revleft4, OUTPUT); // set Motor pins as output
pinMode(fwdleft5, OUTPUT);
pinMode(revright6, OUTPUT);
pinMode(fwdright7, OUTPUT);
pinMode(trigPin, OUTPUT); // set trig pin as output
pinMode(echoPin, INPUT); //set echo pin as input to capture reflected waves
在loop()函數(shù)中,從HC-SR04獲取距離并根據(jù)距離移動(dòng)電機(jī)方向。距離將顯示機(jī)器人前方的物體距離。通過(guò)將超聲波束發(fā)射至10 us并在10us后接收來(lái)獲取距離。
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // send waves for 10 us
delayMicroseconds(10);
duration = pulseIn(echoPin, HIGH); // receive reflected waves
distance = duration / 58.2; // convert to distance
delay(10);
如果距離大于定義的距離意味著其路徑中沒(méi)有障礙物并且它將向前移動(dòng)。
if (distance > 19)
{
digitalWrite(fwdright7, HIGH); // move forward
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, HIGH);
digitalWrite(revleft4, LOW);
}
如果距離小于規(guī)定的距離以避開(kāi)障礙物意味著前方存在一些障礙物。因此,在這種情況下,機(jī)器人將停止一段時(shí)間并在此之后向后移動(dòng)再次停止一段時(shí)間,然后轉(zhuǎn)向另一個(gè)方向。
if (distance < 18)
{
digitalWrite(fwdright7, LOW);//Stop
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(500);
digitalWrite(fwdright7, LOW); //movebackword
digitalWrite(revright6, HIGH);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, HIGH);
delay(500);
digitalWrite(fwdright7, LOW);//Stop
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(100);
digitalWrite(fwdright7, HIGH);
digitalWrite(revright6, LOW);
digitalWrite(revleft4, LOW);
digitalWrite(fwdleft5, LOW);
delay(500);
}
編輯:hfy
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
31079瀏覽量
222258 -
超聲波傳感器
+關(guān)注
關(guān)注
18文章
625瀏覽量
38121 -
Arduino
+關(guān)注
關(guān)注
190文章
6526瀏覽量
196934
發(fā)布評(píng)論請(qǐng)先 登錄
倍加福超聲波傳感器的選型攻略
通用型液位超聲波傳感器GPLUS:設(shè)計(jì)與應(yīng)用的絕佳之選
什么是超聲波原理的液位傳感器?
超聲波傳感器線圈:自動(dòng)駕駛實(shí)現(xiàn)精確實(shí)時(shí)近距離感知的關(guān)鍵
【項(xiàng)目實(shí)戰(zhàn)】基于Hi3861的鴻蒙智能小車(chē)(循跡、超聲波避障、遠(yuǎn)程控制、語(yǔ)音控制、4G定位)有教程代碼
【項(xiàng)目實(shí)戰(zhàn)】基于WS63的鴻蒙星閃紅外遙控車(chē)(循跡、超聲波避障、遠(yuǎn)程控制、星閃/紅外遙控)有教程代碼
無(wú)線超聲波測(cè)距傳感器:精準(zhǔn)感知,開(kāi)啟智能測(cè)距新時(shí)代
高頻超聲波傳感器:科技浪潮中的“隱形守護(hù)者”
盤(pán)點(diǎn)割草機(jī)器人六大避障傳感器
微型超聲波傳感器:小身軀里的探測(cè)革命,開(kāi)啟智能感知新維度
超聲波測(cè)距換能器:工業(yè)與生活中的測(cè)量利器
超聲波清洗的原理是什么?超聲波清洗是如何起作用的?
超聲波多功能氣象傳感器:精準(zhǔn)感知,氣象監(jiān)測(cè)新利器
超聲波液位傳感器的應(yīng)用和原理,這回終于搞明白了!
超聲波局放傳感器:精準(zhǔn)捕捉設(shè)備“隱疾”的科技之眼
基于Arduino和超聲波傳感器避障小車(chē)制作方案
評(píng)論