项目演示:arduino家庭防盗报警

分享到:

我的基本想法是通过Arduino LilyPad 实时at感器和人体红外感应模块的信号,有触发信号后驱动有源蜂鸣器模块报警。

用到的东西:
Arduino LilyPad板子 1
震动传感器 1
人体红外感应模块 1
有源蜂鸣器模块 1
白色发光管1
蓝色发光管1
按键开关1
USB转TTL板 1
充电宝 1
 

程序反复修改了几次,目前的算是定型了吧,检测到震动传感器的触发信号,延时5秒,蜂鸣器发出一种频率的报警声,同时白色发光管发光;

检测到人体红外感应模块的触发信号,延时5秒,蜂鸣器发出第二种种频率的报警声,同时蓝色发光管发光;检测到人体红外感应模块的触发信号和震动传感器的触 发信号,延时5秒,蜂鸣器发出第三种种频率的报警声,同时蓝色发光管和白色发光管发光;延时5秒是方便主人开门关闭报警;一旦声光报警触发会循环下去不会 停止,除非主人关闭电源或者充电宝电量不足。

下面是实物照片:

代码:
int bjbz1=0;
int bjbz2=0;
int bjbz3=0;
unsigned char state = 0;
unsigned char i,j,m;
void setup()
{
  pinMode(7,INPUT);//7脚接SR501人体红外热释电传感器输出
  pinMode(10,OUTPUT);//10脚接发光管蓝色输入
  pinMode(2,INPUT);//2脚接震动传感器输出
  pinMode(11,OUTPUT);//11脚接发光管白色输入
  attachInterrupt(0, blink, FALLING);//D2口为外部中断0,当有下降沿触发的时候调用blink函数
  pinMode(9,OUTPUT);//9脚接有源蜂鸣器模块输入
  Serial.begin(9600);
  
}
void loop()
{
   
   if ((state!=0) && (bjbz1==0)&&(digitalRead(7)==0))  
      { Serial.println("zheng dong ok");
        state = 0;
        delay(5000);
        digitalWrite(11,HIGH);
         Alarm1();
         delay(3000);
        noTone(9);
        bjbz1=1;
      }
      else
      {  noTone(9);
       digitalWrite(11,LOW);
          bjbz1=0;
   }
   
   
  if ((digitalRead(7)==1)&& (bjbz2==0)  )
   {
     Serial.println("hongwai  ok");
    if (bjbz2==0)
      delay(5000);
       digitalWrite(10,HIGH);
        Alarm2()   ;
       delay(3000);
       noTone(9);
    bjbz2=1;
  }  else
  {
       noTone(9);
   digitalWrite(10,LOW);
   bjbz2=0;
  }
  
  
   if ((state!=0) && (bjbz3==0)&&(digitalRead(7)==1))
      {
        Serial.println("zheng dong and hongwai ok");
          if (bjbz3==0)
        delay(5000);
         digitalWrite(11,HIGH);
           digitalWrite(10,HIGH);
         Alarm3()  ;
        delay(3000);
        noTone(9);
        bjbz3=1;
      }
      else
      {  noTone(9);
         digitalWrite(10,LOW);
           digitalWrite(11,LOW);
          bjbz3=0;
   }
   
}

void blink()//数字输入传感器下降沿触发中断服务函数
{
  state++;
}

void Alarm1()
{
  while(bjbz1==0)
  {
for(int i=100;i<800;i++)
{
tone(9,i);
delay(5);
}
delay(5000);      
for(int i=800;i>=200;i--)
{tone(9,i);
delay(5);
}
delay(2000);   
}
}


   
void Alarm2()
    {
       while(bjbz2==0)
  {
    for(int j=700;j<=1500;j++)      
    {
      tone(9,j);                          
     delay(5);                           
    }
    delay(4000);                          
    for(int j=1500;j>=700;j--)
    {
      tone(9,j);
     delay(5);
    }
    delay(2000);  
    }
    }
   
   void Alarm3()
    {
       while(bjbz3==0)
  {
    for(int m=400;m<=1400;m++)                    
    {
      tone(9,m);                          
     delay(5);                             
    }
    delay(5000);                           
    for(int m=1400;m>=400;m--)
    {
      tone(9,m);
     delay(5);
    }
    delay(2000);  
    }
    }
 

完整代码及演示视频下载地址:https://atmel.eefocus.com/module/forum/thread-6530-1-1.html

 

更多Atmel及科技资讯请关注:  
Atmel中文官网:https://www.atmel.com/zh/cn/
Atmel技术论坛:https://atmel.eefocus.com/
Atmel中文博客:https://blog.sina.com.cn/u/2253031744
Atmel新浪微博:https://www.weibo.com/atmelcn

继续阅读
Arduino驱动安装教程

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括MassimoBanzi、DavidCuarTIelles、TomIgoe、GianlucaMarTIno、DavidMellis和NicholasZambetTI等。

超详细图文教程:如何制作一辆Arduino小车(含源码)

你想要学习如何制作你自己的机器人吗?制作机器人是自学电子学和计算机编程的一种非常好的方式。wikihow这个教程详细介绍了制作一个机器人的步骤:组装机器人;给机器人接线;连接电源 ;安装Arduino软件;给机器人编程。

Arduino厨房定时器教程,原理图+源码

一个基于Arduino UNO的经典厨房定时器,带LCD显示屏和蜂鸣器

Arduino,你为什么这么红?

如果浏览5—10年前的电子制作资料,你一定可以看到五花八门的单片机选型、各种手工焊制的电路板、纷繁复杂的飞线……而近几年的各种基于单片机的电子制作,则统一了许多,各种不同领域、不同功能的电子DIY作品,大都采用了同一种控制模块为核心——Arduino。

一篇帖子让你学会Arduino!从基础到实战

论坛里有很多不错的Arduino教程,为了能让大家更加方便的找到这些资料,增加一个帖子来存放链接。 大家可以通过这个帖子,从而找到社区内Arduino的分类资源,不必再东翻西找。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss