火灾“克星”!
本帖最后由 喜爱 于 2014-9-25 22:15 编辑一、参赛项目:消防机器人
二、参赛组员:
组长:李事坪 - 学习arduino一年,涉猎的硬件比较多,目前做出了手机遥控小车,市场用电子秤,寻线避障小车等。
组员:郭舰文 - 喜好电子和编程,曾自己焊出最小系统,并成功实现led闪烁。
共2人,均为2013级兰州理工大学本科生。
三、项目简介:
1.机器人介绍:
图示中①为3个火焰传感器,②为火焰传感器,③为红外避障传感器,④为Arduino uno控制器,⑤为灭火系统(由带桨叶的电机和继电器组成),⑥为灭火系统提供动力。
2.火场的布局:
1.场地大小为180cm*180cm;
2.四个尺寸在15cm*15cm的*15cm的东西作为障碍物,3根蜡烛作为模拟火源;
3.在出入口处放置白色线条。
3.工作原理:
3. 1寻火原理首先,机器人前方的3个火焰传感器进行如下判断,如果左边火焰强度大,则左转一点,右边火焰强度大,则右转一点,并且每次“对火”,都前进一点,最终逐步的逼近火源。
3.2灭火原理如果中间的火焰传感器检测到的火焰强度小于阈值(火源强度不够大,没接近灭火射程),关闭灭火系统,就继续寻找火源;如果火焰强度大于阈值时(火焰强度足够大,接近射程),就会打开灭火系统,执行灭火。在灭火的同时会检测火源强度,当火焰强度大于阈值,就继续会执行灭火,如此循环反复,直到火源被熄灭。
3.3寻线原理 该功能在火源全部灭完之前是被屏蔽的,当火源全部被熄灭时,启动寻线模式。寻线模式是由三个寻线传感器组成,在出口处放置一根宽约为2cm,高为5mm的白色线条,当左边的或者左边、中间的寻线传感器检测到了白线就左转;当右边的或者右边、中间的寻线传感器检测到了白线就右转,如此,引导机器人离开火场。四、视频:
http://v.youku.com/v_show/id_XNzg4MDQ2ODg4.html
http://v.youku.com/v_show/id_XNzg4MDQ1Mjgw.html
五、代码:int count = 0;
int i;
void setup()
{
for(i=4;i<=9;i++) {//控制电机
pinMode(i,OUTPUT);
}
pinMode(10,OUTPUT);//定义继电器引脚
pinMode(11,INPUT);//定义寻线传感器接口
pinMode(12,INPUT);
pinMode(13,INPUT);
pinMode(14,INPUT);//定义火焰传感器接口
pinMode(15,INPUT);
pinMode(16,INPUT);
pinMode(17,INPUT);//定义中间避障传感器接口
pinMode(18,OUTPUT);//定义蜂鸣器接口
}
void qianjin(){//前进
digitalWrite(9,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
void zuozhuan(){//左转
digitalWrite(9,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
void youzhuan(){//右转
digitalWrite(9,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
void tingzhi(){//停止
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
}
void houtui(){//后退
digitalWrite(9,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
void loop()
{
int l,m,r; //定义左、中、右寻线传感器接口
int l1,m1,r1; //定义左、中、右寻线传感器
int m11; //定义中间避障传感器接口
l1=digitalRead(11);
m1=digitalRead(12);
r1=digitalRead(13);
l=analogRead(14);
m=analogRead(15);
r=analogRead(16);
m11=digitalRead(17);
if(count < 3){//视频中用三根蜡烛演示。若是不想这样,可以多增加几个火焰传感器,全方位检测火焰。对应可以改成if(count < 3) --> if(其中一个火焰传感器检测到火焰)
if(l>200 || m>200 || r>200){
if((l>=m) || (l>=r)){ //“对火”模式
zuozhuan();delay(465);
qianjin();delay(100);
}
if((l<m) || (l<r)){
youzhuan();delay(465);
qianjin();delay(100);
}
digitalWrite(18,LOW);
}
else {
if( m11==HIGH ) qianjin();
if( m11==LOW){//寻火时遇障碍物,启动避障模式
houtui(); delay(465);
zuozhuan();delay(465);
}
digitalWrite(18,HIGH);
}
if(m>=900){//找到火源,启动灭火模式
while(m>=100){
tingzhi();
digitalWrite(10,HIGH);
m=analogRead(15);
}
houtui();delay(200);
zuozhuan();delay(465);
digitalWrite(10,LOW);
digitalWrite(18,HIGH);
count++;
}
}
else{
if(l1==LOW || m1==LOW || r1==LOW)//灭火完成,启动引导模式
{
if(l1==LOW && m1==LOW && r1==LOW) qianjin();
if(l1==HIGH && m1==LOW && r1==HIGH) qianjin();
if(l1==LOW && m1==HIGH && r1==HIGH){
youzhuan();delay(465);
}
if(l1==HIGH && m1==HIGH && r1==LOW){
zuozhuan();delay(465);
}
if(l1==LOW && m1==LOW && r1==HIGH){
youzhuan();delay(465);
}
if(l1==HIGH && m1==LOW && r1==LOW){
zuozhuan();delay(465);
}
}
if( m11==HIGH )//判断是否有障碍 有则继续
qianjin();
if( m11==LOW){
houtui();delay(465);
zuozhuan();delay(465);
}
}
}
六、预计完成时间:
项目已经完。
七、联系方式:
497419330@qq.com
八、团队合照:
页:
[1]