亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 如何使用Arduino構建一個消防機器人

如何使用Arduino構建一個消防機器人

時間:2022-11-29 09:35:41來源:circuitdigest

導語:?根據國家犯罪記錄局(NCRB)的數據,據估計,從2010年到2014年,印度因火災事故造成超過1.2萬人死亡。

  盡管對火災事故采取了很多預防措施,但這些自然/人為災難確實時不時發生。在發生火災時,為了救人和滅火,我們被迫使用不安全的人力資源。隨著技術的進步,特別是在機器人技術方面,很有可能用機器人代替人類來滅火。這將提高消防員的效率,并防止他們冒著生命危險。今天我們將使用Arduino構建一個消防機器人,它將自動感應火災并啟動水泵

  在這個項目中,我們將學習如何使用Arduino構建一個簡單的機器人,它可以向火移動并在火周圍抽水來撲滅火。這是一個非常簡單的機器人,可以教我們機器人的基本概念;一旦您了解了以下基礎知識,您就可以構建更復雜的機器人。所以讓我們開始吧...

  所需材料:

  Arduino UNO

  火災傳感器或火焰傳感器(3 個)

  伺服電機 (SG90)

  L293D電機驅動模塊

  微型直流潛水泵

  小型面包板

  帶電機(2)和輪子(2)的機器人底盤(任何類型)

  一個小罐頭

  連接線

  消防機器人工作理念:

  該項目的主要大腦是Arduino,但為了感知火災,我們使用如下所示的火災傳感器模塊(火焰傳感器)。

poYBAGN943uAKwnrAAA2B2vFaz4168.jpg

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

  因此,我們在機器人的三個方向上放置了三個這樣的傳感器,以感知火在哪個方向燃燒。

pYYBAGN9432ALCJWAAAbNj-O4F8037.png

  我們檢測火災方向,我們可以通過L293D 模塊驅動電機來使用電機在火災附近移動。當靠近火災時,我們必須用水將其撲滅。使用一個小容器我們可以攜帶水,容器中還放置了一個5V泵,整個容器放置在伺服電機的頂部,以便我們可以控制必須噴水的方向。現在讓我們繼續連接

  電路圖:

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

pYYBAGN944KAXcB3AADjRf7HLKU405.png

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

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

poYBAGN944SAJO0LAADQPAM6TjQ791.jpg

pYYBAGN944aAas7bAAAwji-PEBA061.jpg

poYBAGN944eAbRAZAAA8kDy2ZOE740.jpg

  如您所見,我已使用膠水將伺服翅片固定在容器底部,并使用螺母和螺栓將伺服電機固定在底盤上。我們可以簡單地將容器放在電機頂部,然后觸發其中的泵通過管子向外泵水。然后可以使用伺服器旋轉整個容器以控制水的方向。

  對 Arduino 進行編程:

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

  眾所周知,火災傳感器在發生火災時將輸出高電平,在發生火災時將輸出低電平。因此,我們必須繼續檢查這些傳感器是否發生火災。如果沒有火災,我們要求電機保持停止,使所有引腳高,如下所示

  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);

  }

  同樣,如果發生火災,我們可以通過旋轉相應的電機來要求機器人向該方向移動。一旦它到達火場,左右傳感器將不會檢測到火勢,因為它會直立在火場前方。現在我們使用名為“fire”的變量來執行函數來熄火。

  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;

  }

  一旦變量火災變為真,消防機器人arduino代碼將執行put_off_fire功能,直到火災被撲滅。這是使用下面的代碼完成的。

  while (fire == true)

  {

  put_off_fire();

  }

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

  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;

  }

  消防機器人工作:

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

pYYBAGN944mAGyq0AAC5yLEl5Bg463.jpg

  機器人的完整工作可以在下面的視頻中找到。可以檢測到火災的最大距離取決于火災的大小,對于小火柴棍來說,距離相對較小。您還可以使用模塊頂部的電位計來控制機器人的靈敏度。我用移動電源為機器人供電,你可以使用電池,甚至可以用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();

  }

  }


標簽: 機器人

點贊

分享到:

上一篇:如何使用計算機輔助設計工具...

下一篇:什么是機器視覺,視覺系統組...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 深州市| 雷波县| 大理市| 新巴尔虎右旗| 泰顺县| 太保市| 思南县| 新密市| 安溪县| 墨竹工卡县| 巴南区| 石首市| 东乌| 方正县| 彭泽县| 陆良县| 芜湖市| 四川省| 江永县| 孟连| 洱源县| 定日县| 丁青县| 岳池县| 南昌县| 星子县| 乌审旗| 化隆| 安顺市| 通州市| 巴青县| 克什克腾旗| 依安县| 焉耆| 都兰县| 湖州市| 东至县| 永靖县| 建昌县| 柳河县| 枣庄市|