根据国家犯罪记录局(NCRB)的估计,从2010年至2014年,印度发生的火灾事故已造成超过120万死亡。即使为火灾事故采取了许多预防措施,但这些自然/人为灾难确实时有发生。发生火灾时,为了营救人员和灭火,我们被迫使用不安全的人力资源。随着技术的进步,尤其是机器人技术的发展,很有可能用机器人代替人来灭火。这将提高消防员的效率,也将防止他们冒着生命危险。今天,我们将使用Arduino构建消防机器人,该机器人将自动感应火势并启动水泵
在这个项目中,我们将学习如何使用Arduino构建一个简单的机器人,该机器人可以朝着火势前进并在其周围抽水以扑灭大火。这是一个非常简单的机器人,可以教会我们机器人的基本概念。了解以下基本知识后,您就可以构建更复杂的机器人。所以我们开始吧…
所需材料:
- Arduino UNO
- 火灾传感器或火焰传感器(3个)
- 伺服马达(SG90)
- L293D电机驱动器模块
- 微型直流潜水泵
- 小面包板
- 具有电机(2)和车轮(2)的机器人底盘(任何类型)
- 一小罐
- 连接线
购买上述所有所需的Arduino消防机器人组件。
消防机器人的工作理念:
该项目的主要大脑是Arduino,但是为了感应火,我们使用了如下所示的火传感器模块(火传感器)。
如您所见,这些传感器具有用于检测火情的红外接收器(光电二极管)。这怎么可能?当火燃烧时,它会发出少量的红外光,该光将被传感器模块上的IR接收器接收。然后,我们使用运算放大器检查IR接收器两端的电压变化,以便如果检测到火灾,则输出引脚(DO)会提供0V(LOW),如果没有火灾,则输出引脚将为5V(高)。
因此,我们在机器人的三个方向上放置了三个这样的传感器,以感应火在哪个方向上燃烧。
我们可以通过通过L293D模块驱动我们的电动机来检测起火的方向,从而可以使电动机在起火附近移动。靠近火源时,我们必须用水灭火。使用一个小容器可以盛水,还可以在容器中放置一个5V泵,并将整个容器放置在伺服电机的顶部,以便我们可以控制喷水的方向。现在让我们继续进行连接
电路原理图:
该消防机器人的完整电路图如下所示
您可以连接所有显示的连接以上传程序以检查程序是否正常运行,也可以完全组装机器人并继续进行连接。两种连接方式都非常简单,您应该能够正确连接。
根据您使用的机械手机箱,您可能无法使用与我使用的相同类型的容器。在这种情况下,请使用您自己的创造力来设置泵系统。但是,代码将保持不变。我用一个小的铝罐(凉饮料罐)将泵放入其中,并在其中倒水。然后,我将整个罐子组装在伺服电机的顶部,以控制水的方向。组装后,我的机器人看起来像这样。
如您所见,我已使用胶水将伺服散热片固定在容器的底部,并使用螺母和螺栓将伺服电机与底盘固定在一起。我们可以简单地将容器放置在电动机的顶部,并触发其中的泵将水通过管子泵出。然后可以使用伺服器旋转整个容器,以控制水的方向。
编程Arduino:
准备好硬件后,您可以上传Arduino代码以执行某些操作。该完整的程序是在本页面末尾。但是,我在这里进一步解释了一些重要的细节。
众所周知,火灾传感器在发生火灾时将输出高电平,在发生火灾时将输出低电平。因此,如果发生任何火灾,我们必须继续检查这些传感器。如果没有火灾,请通过使所有销高的方式使电动机保持停止,如下所示
if(digitalRead(Left_S)== 1 && digitalRead(Right_S)== 1 && digitalRead(Forward_S)== 1)//如果未检测到火灾,则所有传感器均为零{//不要移动机器人digitalWrite(LM1,HIGH); digitalWrite(LM2,HIGH); digitalWrite(RM1,HIGH); digitalWrite(RM2,HIGH); }
同样,如果发生火灾,我们可以通过旋转相应的电动机来要求机器人朝该方向移动。一旦着火,左右传感器将不会检测到火,因为它将直接站在火的前方。现在,我们使用名为“ fire ”的变量,该变量将执行阻止火灾的功能。
否则if(digitalRead(Forward_S)== 0)//如果Fire正前方{//将机器人向前移动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); 延迟(500); 对于(pos = 50; pos <= 130; pos + = 1){myservo.write(pos); 延迟(10); } for(pos = 130; pos> = 50; pos-= 1){myservo.write(pos); 延迟(10); } digitalWrite(pump,LOW); myservo.write(90); 火=假; }
消防机器人的工作:
建议分步检查机器人的输出,而不是第一次一起运行。您可以将机器人安装到伺服电机上,并检查其是否能够成功跟随火势。然后,您可以检查泵和伺服电机是否正常工作。一旦一切正常运行,您就可以运行下面的程序,享受消防机器人的全部工作。
可以在下面的视频中找到机器人的完整工作信息。可以检测到火的最大距离取决于火的大小,对于小的火柴杆,距离相对较小。您还可以使用模块顶部的电位器来控制机器人的灵敏度。我已经使用移动电源为机器人供电,您可以使用电池甚至可以使用12V电池为其供电。
希望您理解该项目,并喜欢构建类似的东西。如果您在构建此版本时遇到任何问题,请使用下面的评论部分来发布您的需求或使用论坛获取技术帮助。
查看我们的机器人技术部分,以找到更多很棒的DIY机器人。