火灾“克星”!-Arduino中文社区 - Powered by Discuz! Archiver

喜爱 发表于 2014-9-2 09:17

火灾“克星”!

本帖最后由 喜爱 于 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]
查看完整版本: 火灾“克星”!