技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 如何使用Arduino構(gòu)建一個(gè)消防機(jī)器人

如何使用Arduino構(gòu)建一個(gè)消防機(jī)器人

時(shí)間:2022-11-29 09:35:41來(lái)源:circuitdigest

導(dǎo)語(yǔ):?根據(jù)國(guó)家犯罪記錄局(NCRB)的數(shù)據(jù),據(jù)估計(jì),從2010年到2014年,印度因火災(zāi)事故造成超過(guò)1.2萬(wàn)人死亡。

  盡管對(duì)火災(zāi)事故采取了很多預(yù)防措施,但這些自然/人為災(zāi)難確實(shí)時(shí)不時(shí)發(fā)生。在發(fā)生火災(zāi)時(shí),為了救人和滅火,我們被迫使用不安全的人力資源。隨著技術(shù)的進(jìn)步,特別是在機(jī)器人技術(shù)方面,很有可能用機(jī)器人代替人類來(lái)滅火。這將提高消防員的效率,并防止他們冒著生命危險(xiǎn)。今天我們將使用Arduino構(gòu)建一個(gè)消防機(jī)器人,它將自動(dòng)感應(yīng)火災(zāi)并啟動(dòng)水泵

  在這個(gè)項(xiàng)目中,我們將學(xué)習(xí)如何使用Arduino構(gòu)建一個(gè)簡(jiǎn)單的機(jī)器人,它可以向火移動(dòng)并在火周圍抽水來(lái)?yè)錅缁?。這是一個(gè)非常簡(jiǎn)單的機(jī)器人,可以教我們機(jī)器人的基本概念;一旦您了解了以下基礎(chǔ)知識(shí),您就可以構(gòu)建更復(fù)雜的機(jī)器人。所以讓我們開(kāi)始吧...

  所需材料:

  Arduino UNO

  火災(zāi)傳感器或火焰?zhèn)鞲衅?3 個(gè))

  伺服電機(jī) (SG90)

  L293D電機(jī)驅(qū)動(dòng)模塊

  微型直流潛水泵

  小型面包板

  帶電機(jī)(2)和輪子(2)的機(jī)器人底盤(pán)(任何類型)

  一個(gè)小罐頭

  連接線

  消防機(jī)器人工作理念:

  該項(xiàng)目的主要大腦是Arduino,但為了感知火災(zāi),我們使用如下所示的火災(zāi)傳感器模塊(火焰?zhèn)鞲衅?。

poYBAGN943uAKwnrAAA2B2vFaz4168.jpg

  如您所見(jiàn),這些傳感器有一個(gè)紅外接收器(光電二極管),用于檢測(cè)火災(zāi)。這怎么可能?當(dāng)火燃燒時(shí),它會(huì)發(fā)出少量的紅外線,這種光會(huì)被傳感器模塊上的紅外接收器接收。然后,我們使用運(yùn)算放大器檢查紅外接收器兩端的電壓變化,這樣,如果檢測(cè)到火災(zāi),輸出引腳(DO)將給出0V(LOW),如果沒(méi)有火災(zāi),輸出引腳將為5V(HIGH)。

  因此,我們?cè)跈C(jī)器人的三個(gè)方向上放置了三個(gè)這樣的傳感器,以感知火在哪個(gè)方向燃燒。

pYYBAGN9432ALCJWAAAbNj-O4F8037.png

  我們檢測(cè)火災(zāi)方向,我們可以通過(guò)L293D 模塊驅(qū)動(dòng)電機(jī)來(lái)使用電機(jī)在火災(zāi)附近移動(dòng)。當(dāng)靠近火災(zāi)時(shí),我們必須用水將其撲滅。使用一個(gè)小容器我們可以攜帶水,容器中還放置了一個(gè)5V泵,整個(gè)容器放置在伺服電機(jī)的頂部,以便我們可以控制必須噴水的方向?,F(xiàn)在讓我們繼續(xù)連接

  電路圖:

  下面給出了該消防機(jī)器人的完整電路圖

pYYBAGN944KAXcB3AADjRf7HLKU405.png

  您可以連接所有顯示的連接以上傳程序以檢查工作情況,也可以完全組裝機(jī)器人,然后繼續(xù)連接。這兩種方式的連接都非常簡(jiǎn)單,您應(yīng)該能夠正確處理。

  根據(jù)您使用的機(jī)器人底盤(pán),您可能無(wú)法使用我正在使用的相同類型的容器。在這種情況下,請(qǐng)發(fā)揮自己的創(chuàng)造力來(lái)設(shè)置泵送系統(tǒng)。但是,代碼將保持不變。我用一個(gè)小鋁罐(冷飲罐)將泵放在里面,然后在里面倒水。然后,我將整個(gè)罐子組裝在伺服電機(jī)的頂部,以控制水的方向。我的機(jī)器人組裝后看起來(lái)像這樣。

poYBAGN944SAJO0LAADQPAM6TjQ791.jpg

pYYBAGN944aAas7bAAAwji-PEBA061.jpg

poYBAGN944eAbRAZAAA8kDy2ZOE740.jpg

  如您所見(jiàn),我已使用膠水將伺服翅片固定在容器底部,并使用螺母和螺栓將伺服電機(jī)固定在底盤(pán)上。我們可以簡(jiǎn)單地將容器放在電機(jī)頂部,然后觸發(fā)其中的泵通過(guò)管子向外泵水。然后可以使用伺服器旋轉(zhuǎn)整個(gè)容器以控制水的方向。

  對(duì) Arduino 進(jìn)行編程:

  準(zhǔn)備好硬件后,您可以上傳Arduino代碼以進(jìn)行某些操作。本頁(yè)末尾給出了完整的程序。但是,我在這里進(jìn)一步解釋了一些重要的零碎內(nèi)容。

  眾所周知,火災(zāi)傳感器在發(fā)生火災(zāi)時(shí)將輸出高電平,在發(fā)生火災(zāi)時(shí)將輸出低電平。因此,我們必須繼續(xù)檢查這些傳感器是否發(fā)生火災(zāi)。如果沒(méi)有火災(zāi),我們要求電機(jī)保持停止,使所有引腳高,如下所示

  if (digitalRead(Left_S) ==1 && digitalRead(Right_S)==1 && digitalRead(Forward_S) ==1) //If Fire not detected all sensors are zero

  {

  //Do not move the robot

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. HIGH);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. HIGH);

  }

  同樣,如果發(fā)生火災(zāi),我們可以通過(guò)旋轉(zhuǎn)相應(yīng)的電機(jī)來(lái)要求機(jī)器人向該方向移動(dòng)。一旦它到達(dá)火場(chǎng),左右傳感器將不會(huì)檢測(cè)到火勢(shì),因?yàn)樗鼤?huì)直立在火場(chǎng)前方?,F(xiàn)在我們使用名為“fire”的變量來(lái)執(zhí)行函數(shù)來(lái)熄火。

  else if (digitalRead(Forward_S) ==0) //If Fire is straight ahead

  {

  //Move the robot forward

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. LOW);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. LOW);

  fire = true;

  }

  一旦變量火災(zāi)變?yōu)檎?,消防機(jī)器人arduino代碼將執(zhí)行put_off_fire功能,直到火災(zāi)被撲滅。這是使用下面的代碼完成的。

  while (fire == true)

  {

  put_off_fire();

  }

  在 put_off_fire() 中,我們只需要通過(guò)使所有引腳變高來(lái)停止機(jī)器人。然后打開(kāi)泵將水推出容器,同時(shí)我們還可以使用伺服電機(jī)旋轉(zhuǎn)容器,使水均勻地分開(kāi)。這是使用下面的代碼完成的

  void put_off_fire()

  {

  delay (500);

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. HIGH);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. HIGH);

  digitalWrite(pump, HIGH); delay(500);

  for (pos = 50; pos <= 130; pos += 1) {

  myservo.write(pos);

  delay(10);

  }

  for (pos = 130; pos >= 50; pos -= 1) {

  myservo.write(pos);

  delay(10);

  }

  digitalWrite(pump,LOW);

  myservo.write(90);

  fire=false;

  }

  消防機(jī)器人工作:

  建議分步檢查機(jī)器人的輸出,而不是第一次一起運(yùn)行。您可以將機(jī)器人構(gòu)建到伺服電機(jī)上,并檢查它是否能夠成功跟蹤火災(zāi)。然后您可以檢查泵和伺服電機(jī)是否正常工作。一旦一切按預(yù)期工作,您就可以運(yùn)行下面的程序并享受消防機(jī)器人的完整工作。

pYYBAGN944mAGyq0AAC5yLEl5Bg463.jpg

  機(jī)器人的完整工作可以在下面的視頻中找到??梢詸z測(cè)到火災(zāi)的最大距離取決于火災(zāi)的大小,對(duì)于小火柴棍來(lái)說(shuō),距離相對(duì)較小。您還可以使用模塊頂部的電位計(jì)來(lái)控制機(jī)器人的靈敏度。我用移動(dòng)電源為機(jī)器人供電,你可以使用電池,甚至可以用12V電池供電。

  /*------ Arduino Fire FighTIng Robot Code----- */

  #include

  Servo myservo;

  int pos = 0;

  boolean fire = false;

  /*-------defining Inputs------*/

  #define Left_S 9 // left sensor

  #define Right_S 10 // right sensor

  #define Forward_S 8 //forward sensor

  /*-------defining Outputs------*/

  #define LM1 2 // left motor

  #define LM2 3 // left motor

  #define RM1 4 // right motor

  #define RM2 5 // right motor

  #define pump 6

  void setup()

  {

  pinMode(Left_S, INPUT);

  pinMode(Right_S, INPUT);

  pinMode(Forward_S, INPUT);

  pinMode(LM1. OUTPUT);

  pinMode(LM2. OUTPUT);

  pinMode(RM1. OUTPUT);

  pinMode(RM2. OUTPUT);

  pinMode(pump, OUTPUT);

  myservo.attach(11);

  myservo.write(90);

  }

  void put_off_fire()

  {

  delay (500);

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. HIGH);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. HIGH);

  digitalWrite(pump, HIGH); delay(500);

  for (pos = 50; pos <= 130; pos += 1) {

  myservo.write(pos);

  delay(10);

  }

  for (pos = 130; pos >= 50; pos -= 1) {

  myservo.write(pos);

  delay(10);

  }

  digitalWrite(pump,LOW);

  myservo.write(90);

  fire=false;

  }

  void loop()

  {

  myservo.write(90); //Sweep_Servo();

  if (digitalRead(Left_S) ==1 && digitalRead(Right_S)==1 && digitalRead(Forward_S) ==1) //If Fire not detected all sensors are zero

  {

  //Do not move the robot

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. HIGH);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. HIGH);

  }

  else if (digitalRead(Forward_S) ==0) //If Fire is straight ahead

  {

  //Move the robot forward

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. LOW);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. LOW);

  fire = true;

  }

  else if (digitalRead(Left_S) ==0) //If Fire is to the left

  {

  //Move the robot left

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. LOW);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. HIGH);

  }

  else if (digitalRead(Right_S) ==0) //If Fire is to the right

  {

  //Move the robot right

  digitalWrite(LM1. HIGH);

  digitalWrite(LM2. HIGH);

  digitalWrite(RM1. HIGH);

  digitalWrite(RM2. LOW);

  }

  delay(300); //Slow down the speed of robot

  while (fire == true)

  {

  put_off_fire();

  }

  }


標(biāo)簽: 機(jī)器人

點(diǎn)贊

分享到:

上一篇:如何使用計(jì)算機(jī)輔助設(shè)計(jì)工具...

下一篇:什么是機(jī)器視覺(jué),視覺(jué)系統(tǒng)組...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)