DIY 家庭防盗报警装置设计制作(图文/代码)

电子说

1.3w人已加入

描述

我的基本想法是通过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);

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分