目 录
摘 要 1
Abstract 2
引 言 1
第1章 系统方案设计 2
1.1报警系统的组成及结构 2
1.2模块方案选择 2
1.2.1控制模块 2
1.2.2电源模块 3
1.2.3烟雾检测模块 3
1.2.4声控报警模块 3
第2章 系统各检测模块 4
2.1烟雾检测模块 4
2.1.1 MQ-2简介 4
2.1.2 LM339简介 6
2.1.3烟雾检测模块电路 7
2.2粉尘检测模块 8
2.2.1 GP2Y1010AU0F简介 8
2.2.2粉尘检测模块电路 9
第3章 单片机控制模块 11
3.1单片机AT89S51简介 11
3.1.1 AT89S51特点 11
3.1.2 AT89S51管脚说明 12
3.2控制模块原理 14
3.3单片机AT89S51最小系统 15
第4章 声控报警模块 17
总 结 18
参考文献 19
附录A 外文文献及翻译稿 21
附录B 总体电路仿真图 30
附录C 单片机源程序 31
附录D 元器件清单 36
附录E 实物图 37
第1章 系统方案设计
1.1报警系统的组成及结构
本设计共由烟雾检测模块,粉尘检测模块,人体检测模块,单片机程序控制部分,蜂鸣器报警部分等五部分组成。具体结构框图如图1.1所示:
图1.1 智能家居安防系统的结构框图
1.2模块方案选择
1.2.1控制模块
方案一: 采用 SPCE061A 单片机来实现,此单片机I/O接口比较多,虽然易于扩展外围电路,但不方便位寻址,且没有总线。开发板集成了语音播报的硬件,通过软件编程即可以用于语音采集和播报。 但内部开发函数不是很了然,且占用内存太大, 且模组比较贵,不经济,性价比比较高。
方法二:采用现在比较通用的 51 系列单片机。51 系列单片机的发展已经有比较长的时间,应用比较广泛,各种技术都比较成熟,虽然处理速度不是很快,但资料丰富,系列之52单片机,内部集成8kflash空间,256BRAM区,足以实现设计程序,不需要外扩,而且其最小系统板已经设计好,不需要附加太多的外围电路,可以方便可靠的使用。本设计需要网络控制,需要多块控制板,单价也要考虑在内,51系列单片机造价低,不会耗费太大开销。
综合考虑我们选用方案二。
1.2.2电源模块
由于本系统传感器比较多,需要多电平供电,我们考虑了如下几种方案为系统供电。
方案一:采用电池组供电。3节4.2V可充电式锂电池串联共12.6V给直流电机供电,经过7812的电压变换后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。锂电池的电量比较足,并且可以充电,重复利用,因此,这种方案比较可行。但锂电池的价格过于昂贵,不满足低成本的要求,因此,我们放弃了这种方案。
方案二: 采用变压器组和电池组并举的方式。从机检测部分采用市电变压供电:主机接收部分采用电池组供电,即适合从机检测部分的家居应用,也适合主机接受部分的方便携带。因此,我们选择了这种方案。
1.2.3烟雾检测模块
方案一:选用光电烟雾传感器。灵敏度高,可视范围大,具有报警锁定功能,可靠性高。但价格昂贵,不适合设计的低成本要求。
方案二:选择气敏性烟雾传感器。价格适中,可视范围大,可靠性高,体积小,电源电压小,灵敏度虽有些差,但可以满足监控无人时有无烟雾的设计要求。
故本模块选用方案二。
1.2.4声控报警模块
方案一:声音发生体采用蜂鸣器,驱动只需要一只三极管,方便直接。光电报警采用一个发光二极管。功耗低且发光效果也很好。
方案二:采用R110/120(10/20秒)语音录放模块,单片可分段录放模块,反复录放,零功耗永久保存信息,单5V供电,自动节电,接口简单,使用方便,但费用较高,所以放弃使用此方案。
综合之,我们采用方案一。
第2章 系统各检测模块
2.1烟雾检测模块
在本设计中,利用气敏性烟雾传感器MQ-2及其外围电路控制烟雾超标的检测。
2.1.1 MQ-2简介
MQ-2气体传感器是一款适合多种应用的低成本传感器。它所使用的气敏材料是在清洁空气中导电率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增大而增大。本文转载自http://www.biyezuopin.vip/onews.asp?id=6865现实应用中,可以使用简单的电路将电导率的变化转化为与该气体浓度相对应的输出信号。
MQ-2气体传感器对液化气、丙烷、氢气的灵敏度较高,也可以对天然气和其他可燃蒸气进行检测。其结构和外形图分别如图2.1和图2.2所示:
由微型AL203陶瓷管、SnO2敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内。加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4只用于信号提取,2只用于提供加热电流。
#include //包含头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
float tt; //tt为采集的粉尘值
uchar shi=0,ge=0,xiaoshu=0,c;
uchar MAX=29; //粉尘上限值
sbit DQ =P1^0; //定义通信端口
sbit buz=P2^4; //蜂鸣器
sbit yanwu=P1^2;
sbit hongwai=P1^1;
void delay(int i) //短延时函数 复位用 有参数(int i)无返回(void)函数
{ int s;
for(s=0;s<i;s++);
}
void delay1(uint z) //延时子程序 1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar Init_GP2Y1010AU0F(void) //GP2Y1010AU0F初始化函数 参数(void)有返回值(return(presence);)函数
{
uchar presence;
DQ = 0; //单片机将DQ拉低
delay(29); //精确延时 480us~960us
DQ = 1; //拉高总线
delay(3); // 15~60ms 等待ds12b80给回应(把总线拉低) 时间过长,程序进入死循环
presence=DQ; // 如果presence=0则初始化成功 x=presence初始化失败
delay(25); // 总线拉低后,再延时
return(presence);
}
uchar ReadOneChar(void) //读一个字节 带返回值
{ //单片机对B12所检测到信号的读取
uchar i=0;
uchar dat=0;
for (i=8;i>0;i--)
{
DQ=0; // 给脉冲信号 表示读的起始
dat>>=1; //右移八位
DQ=1; //
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
//写中的dat与读中的dat无关
void WriteOneChar(uchar dat) //写一个字节 dat控制写的内容
{ //写 就是单片机对B12的控制,就是78~85行代码
uchar i=0; // 控制器发送ROM指令
for (i=8;i>0;i--)
{
DQ=0; // 数据线先置低电平0
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
float ReadTemperature(void) //读取粉尘
{
uchar a=0;
uchar b=0;
uint t=0;
while(Init_GP2Y1010AU0F()); //复位
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动粉尘转换
while(Init_GP2Y1010AU0F()); //复位
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取粉尘寄存器等(共可读9个寄存器) 前两个就是粉尘
a=ReadOneChar(); //读一个字节 低八位
b=ReadOneChar(); //高八位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625; //测得的数值乘以0.0625就是实际粉尘值。
return(tt); //返回后 ReadTemperature(void)=tt
}