完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于gsm的红外感应报警
摘要:本设计以stc15w408as单片机为核心,实现有物体经过特定区域,手机上将会收到报警短信和电话。歹徒经过感应模块上的红外发射管发射范围,红外信号将会被弹回且被模块上的红外接收管接收,改变传入感应模块上的stc15w408as单片机的电压,stc15w408as通过ad转换将电压模拟信号转化为数字信号存储在stc15w408as上,当采集的ad值大于基准值时,将通过串口将信息发送到zigbee无线传输模块上,被发送短信机器上的zigbee模块接收并通过串口传输到发送短信机器上的stc15w408as单片机上的串口上。stc15w408as单片机接收到串口传来的信号后,通过串口发送at指令给sim800c模块(gsm),sim800c将一条短信和拨打一次电话给手机。 关键词:gsm,stc15w408as单片机,红外感应,zegbee 目录 1设计目的和功能需求 1.1设计目的 1.2功能需求 2系统方案 2.1现使用系统总方案 2.2感应物体经过方案论证与选择 2.3无线传输方案论证与选着 2.4与手机通讯方案论证与选着 3系统设计和电路设计 3.1红外感应模块电路设计 3.2与手机通讯模块设计 4软件程序设计 4.1感应模块程序程序设计 4.2与手机通讯模块程序设计 5测试方案所遇问题和解决方案 5.1制作和调试红外感应模块所遇问题和解决办法 5.2制作和调试与手机通讯模块所遇问题和解决办法 6总结 7.参考文献 8.附录 1设计目的和功能需求 1.1设计目的 当非法人员进行非法入侵的时候,相应的防盗报警器就会通过一些电话甚至是短信来告诉主人,这样主人就能够依据警报的内容来做出选择或者是应对措施,避免更大的损失出现。独居人群遭遇了入室抢劫等非法入侵,那么我们就可以利用报警主机来向外进行报警信号的发送,求助外部力量的帮助。 1.2功能需求 1.感应器要小,可以安装在角落等隐蔽的地方 2.感应器非对射感应距离要大于1.5米,可以覆盖门窗等容易进入的室内的地方 3.感应器与报警器需要分开,防止歹徒发现报警器后将其破坏中断报警 4.报警器可以独立自主发送报警信息,以防断网等情况无法发送信息 5.报警器可以与感应器超多各对接 6.私人手机可以收到报警信息 2系统方案 2.1现使用系统总方案 歹徒经过感应模块上的红外发射管发射范围,红外信号将会被弹回且被模块上的红外接收管接收,改变传入感应模块上的stc15w408as单片机的电压,stc15w408as通过ad转换将电压模拟信号转化为数字信号存储在stc15w408as上,当采集的ad值大于基准值时,将通过串口将信息发送到zigbee无线传输模块上,被发送短信机器上的zigbee模块接收并通过串口传输到发送短信机器上的stc15w408as单片机上的串口上。stc15w408as单片机接收到串口传来的信号后,通过串口发送at指令给sim800c模块(gsm),sim800c将一条短信和拨打一次电话给手机。 2.2感应物体经过方案论证与选择 方案一:用红外发射管和接收管将物体进入的信号转化为电模拟信号,再由393比较器来判断输出高低电输出给stc89c52单片机的外部中断口,单片机处理信号后转递给无线模块。此方案感应距离在50cm左右,采用的单片机较大,不利于安置与狭小角落不满足要求,需要手动调节抗红外干扰 方案二:用红外发射管和接收管将物体进入的信号转化为电模拟信号,用stc15W408as单片机采集电模拟信号进行ad转化,单片机处理判断后将信息传递给无线模块。此方案感应距离可达3米,整体模块可以做的很小,可以实现自动调节红外干扰,不需像方案一那样手动调节。 方案三:购买红外感应模块和超声波测距模块,探测物体进入转化为电模拟信号和电数字信号,传递给stc15w408as单片机处理后,单片机在传递给无线模块。此方案节省画原理图,制作电路版的时间,感应距离在50cm以下,价格高。 综合资金,时间,技术难度和需求,由于方案二感应距离出色,做出来模块小,可自动调节测量距离,自动调节抗干扰强度,故选取方案二。 2.3无线传输方案论证与选着 方案一:采用zigbee模块作为无线传输的桥梁。 此方案传输信息速率低具有最高250kbit/s、20kbit/s和40kbit/s的传输速率传输图片等信息困难, 低功耗: 由于ZigBee的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节5号电池就可以维持长达6个月到2年左右的使用时间,这是其它无线设备望尘莫及的。 成本低: ZigBee模块的初始成本在6美元左右,估计很快就能降到1.5—2.5美元, 并且ZigBee协议是免专利费的。低成本对于ZigBee也是一个关键的因素。 时延短: 通信时延和从休眠状态激活的时延都非常短,典型的搜索设备时延30ms,休眠激活的时延是15ms, 活动设备信道接入的时延为15ms。因此ZigBee技术适用于对时延要求苛刻的无线控制(如工业控制场合等)应用。 网络容量大: 一个星型结构的Zigbee网络最多可以容纳254个从设备和一个主设备, 一个区域内可以同时存在最多100个ZigBee网络, 而且网络组成灵活,可组建上万个机器之间的通讯。 可靠: 采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式, 每个发送的数据包都必须等待接收方的确认信息。如果传输过程中出现问题可以进行重发。 安全: ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证, 采用了AES-128的加密算法,各个应用可以灵活确定其安全属性。 方案二:采用蓝牙模块作为无线传输的桥梁。 此方案可容纳的设备少,最多7个。传输信息速率高,可传输图片视频等信息,安全性和抗干扰能力强,由于蓝牙技术具有跳频的功能,有效避免了ISM频带遇到干扰源。蓝牙技术的兼容性较好,目前,蓝牙技术已经能够发展成为独立于操作系统的一项技术,实现了各种操作系统中良好的兼容性能。传输距离较短:现阶段,蓝牙技术的主要工作范围在10米左右,经过增加射频功率后的蓝牙技术可以在100米的范围进行工作,只有这样才能保证蓝牙在传播时的工作质量与效率,提高蓝牙的传播速度。另外,在蓝牙技术连接过程中还可以有效的降低该技术与其他电子产品之间的干扰,从而保证蓝牙技术可以正常运行。蓝牙技术不仅有较高对传播质量与效率,同时还具有较高的传播安全性特点 方案三采用Wi-Fi 模块作为无线传输桥梁 此方案与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。传输距离在100-300M,速率可达300Mbps,功耗10-50mA。可直接与外界进行通讯。 综合各方面因素,蓝牙可容纳设备少,覆盖范围小。wi-fi需要成本贵,zigbee价格较低,可容纳设备巨大,虽然传输速率低但足以够用了。最终选取方案一zigbee作为无线传输的桥梁。 2.4与手机通讯方案论证与选着 方案一:用gsm进行发送短信和拨打电话。全球移动通信系统(Global System for Mobile Communications) ,缩写为GSM,由欧洲电信标准组织ETSI制订的一个数字移动通信标准。它的空中接口采用时分多址技术 [1] 。自90年代中期投入商用以来,被全球超过100个国家采用。GSM标准的无处不在使得在移动电话运营商之间签署"漫游协定"后用户的国际漫游变得很平常。 GSM 较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代 (2G)移动电话系统 方案二:用wi-fi沟通手机上的app。无线网络在无线局域网的范畴是指“无线相容性认证”,实质上是一种商业认证,同时也是一种无线联网技术,以前通过网线连接电脑,而Wi-Fi则是通过无线电波来连网;常见的就是一个无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用Wi-Fi连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为热点。 综合考虑,wi-fi容易被人链接入侵,gsm可以独立发送短信,难以入侵进去,所以采用gsm作为与外界通许的桥梁。 3系统设计和电路设计 3.1红外感应模块电路设计 原理:给红外发射管施加电压,使红外线发射出去,当有物体经过红外线时红外线将会反弹回来,反弹回来的红外线射在了红外接收管上,改变了红外接收管的电阻,从而改变单片机采集电压的引脚的电压,单片机经过数据处理判断当前电压是否大于初始化采集的值(红外噪音),如果大于将点亮led1灯并且通过串口传递信息出去。 红外发射管上与3个200欧的电阻并联,一个200欧电阻串联。是为了增大通过红外发射管的电流,使其发射出更强的红外信号,提高感应距离,同时减少单个电阻的发热量。 红外接收管是一个二极管,当被红外线照射到会迅速导通,本设计就是这个特性来判断是否有物体经过。红外接收管后面的电阻R5是一个下拉电阻是为了降低红外接收管本身在无红外源下反接也会对单片机1脚输送电压,经过多次实验测试当r5为200K阻值时感应距离是最佳的。 P1排针是用来让单片机与zigbee无线传输模块进行通讯的 本电路以stc15w408as单片机作为核心。单片机1脚是用来采集因红外接收管电阻发生变化而输送过来的电压;6脚是电源输入角;8脚是接地脚;9脚是单片机串口通讯接收RX脚;10脚是单片机串口通讯输出TX脚;16脚是控制提示灯。 3.2与手机通讯模块设计 原理:stc15w408as在9脚收到来自zigbee的信号后,发送存储在stc15w408as单片机内的ta指令,指令通过10脚tx发送出去给gsm模块。6脚是接vcc给单片机供电,8脚接地。 4软件程序设计 4.1感应模块程序编写设计 接通电源后程序开始初始化串口,初始化ad转化,然后控制stc15w408as单片机采集1脚电压存储起来作为基值,然后开始不断采集1脚电压与基值进行对比,当采集到的值大于基值后,给16脚输送高电平再通过串口向外发出9857的信息,当采集到的值比基值小时,给16脚输出低电平不对外通讯。 4.2与手机通讯模块程序设计 接通电源后程序开始串口传输然后不断的循环不让程序结束,等待串口传来信息,当串口传来信息后,通过串口向外发送。使gsm发送短信和拨打电话的at指令 5测试方案所遇问题和解决方案 5.1制作和调试红外感应模块所遇问题和解决办法 问题:感应距离一直无法突破1米 猜测:当时采用的是方案一,用lm393比较器为核心,其精度不够高,被硬件所限制 解决方案:更换方案,更换为方案二,用stc15w408as作为核心,重新制作一份电路。这样不仅提高了测量精度,还能缩小整个感应模块体积。 5.2制作和调试与手机通讯模块所遇问题和解决办法 问题:stc15w408a单片机9600波特率初值无法计算正确 猜测:可以使stc15w408as单片机点亮一个led灯,证明其实内部是可以跑程序的,单片机可使用串口向电脑发送稳定的乱码信息,使用官方手册上的9600波特率初值和自己手动直接计算得出的初值,都无法使stc15w408as单片机与电脑用9600波特率进行正常的串口通讯。可能是芯片内部时钟频率变了。 解决方案:给stc15w408as单片机写入一个不断更换波特率初值同时向电脑以9600波特率发送初值的串口通讯,当电脑可以看到完整信息时,所看到的发送出来的初值就是9600波特率的初值。这个方法确定的是大概范围的值,可能误差率较高,还需慢慢调节。 6.总结 本设计实现当有人经过感应区域,手机上将会收的一条“有人进入”的短信和一通时长5s的电话。感应距离稳定输出超过1米。因时间有限发送短信模块是用面包版做的,并没有制版出来。 7.参考文献 [1] 黄智伟.全国大学生电子设计竞赛系统设计[M].北京:航空航天大学出版社,2006 [2]《 电力电子技术》.廖冬初,聂汉平主编.华中科技大学出版社.2007,(09). [3]《zigbee技术与实训教程:基于cc2530的无线传感网技术》.姜仲.刘丹编.清华大学出版社.2018 附录1:红外感应模块电路原理图 附录2:与手机通讯模块电路原理图 附录3:与手机通讯模块程序 #include"reg52.h" #include"intrins.h" sfr AUXR = 0x8e; //定义AUXR寄存器名字, 控制定时器 串口 sfr T2H = 0xd6; //定义T2H寄存器名字 用来重装定时器2的高八位 sfr T2L = 0xd7; //定义T2L寄存器名字 用来重装定时器2的低八位 void UartInit(void) //9600bps@11.0592MHz { SCON = 0x5a; //设置串口为8位可变波特率 T2L = 0xE0; //设置波特率重装值T2H = 0xfE; AUXR = 0x14; //T2为1T模式, 并启动定时器2AUXR |= 0x01; //选择定时器2为串口1的波特率发生器EA=1; //打开总中断ES=1; //打开串口中断RI = 0; } void Send_Char (unsigned char UART_data) //发送单个字符 { SBUF = UART_data; while(TI == 0); TI = 0; } /***************************************************************************** 字符串发送函数 /****************************************************************************/ void Send_String(unsigned char *str) // 发送多个字符 { while(*str != ‘ ’) { Send_Char(*str); *str=*str++; } *str = 0; } void Delay_Ms (unsigned int a) //延时函数 { unsigned int i; while( a-- != 0) { for(i = 0; i < 600; i++); } } main() { UartInit(); //初始化串口 while(1) ; //锁住单片机防止程序跑掉单片机停止工作 } void uart(void) interrupt 4 // 串口 { if(RI){ //发短信Send_String("AT+CMGF=1rn");Delay_Ms(100);Send_String("AT+CSMP=17,167,2,25rn");Delay_Ms(100);Send_String("AT+CSCS="UCS2"rn");Delay_Ms(100);Send_String("AT+CMGS="00310035003800310033003200340032003300320032"rn"); //设置接收短信号码Delay_Ms(100);Send_String("67094EBA8FDB5165rn"); //设置短信内容Delay_Ms(100);Send_Char(0x1A);Delay_Ms(5000); //打电话Send_String("ATE1rn");Delay_Ms(100);Send_String("AT+COLP=1rn");Delay_Ms(100);Send_String("ATD15813242322;rn");Delay_Ms(10000);Delay_Ms(10000);Send_String("ATHrn");RI=0; } } 附录4:红外感应模块程序 #include"reg52.h" #include"intrins.h" typedef unsigned char BYTE; typedef unsigned int WORD; sfr ADC_CONTR = 0xBC; //定义ADC_CONTR寄存器的名字 控制adc电源 结束 转换 输入脚 转换速度 sfr ADC_RES = 0xBD; //定义ADC_RES寄存器的名字 adc结果高八位存储寄存器 sfr ADC_LOW2 = 0xBE; //定义寄存器ADC_LOW2的名字 adc结果低二位存储器 sfr P1ASF = 0x9D; //定义P1ASF寄存器的名字 控制那个io口为adc模拟量输入口 sfr AUXR = 0x8e; //定义AUXR寄存器名字, 控制定时器 串口 sfr T2H = 0xd6; //定义T2H寄存器名字 用来重装定时器2的高八位 sfr T2L = 0xd7; //定义T2L寄存器名字 用来重装定时器2的低八位 ***it p11=P1^1; //定义p11为P1.1引脚别名 WORD temp=0,temp1=0,a=0; void UartInit(void) //9600bps@11.0592MHz { SCON = 0x5a; //设置串口为8位可变波特率 T2L = 0xE0; //设置波特率重装值T2H = 0xfE; AUXR = 0x14; //T2为1T模式, 并启动定时器2AUXR |= 0x01; //选择定时器2为串口1的波特率发生器 } void Send_Char (unsigned char UART_data) { SBUF = UART_data; while(TI == 0); TI = 0; } /***************************************************************************** 字符串发送函数 /****************************************************************************/ void Send_String(unsigned char *str) { while(*str != ‘ ’) { Send_Char(*str); *str=*str++; } *str = 0; } void Delay_us(WORD n) { WORD x; while (n--){ x = 5000; while (x--);} } void InitADC() { P1ASF = 0x04; //设置P1.2口为AD口 ADC_RES = 0; ADC_LOW2=0; //清除结果寄存器 ADC_CONTR = 0xe2; Delay_us(2); //ADC上电并延时 } main() { InitADC(); UartInit(); ADC_CONTR = 0xea; //开始ad转换 while(!(ADC_CONTR&0X10)); //等待ad转换 ADC_CONTR&=0xef; //消除标志位 temp1=ADC_RES; temp1=temp1<<2; temp1|=ADC_LOW2; Delay_us(100); while(1) { ADC_CONTR = 0xea; //开始ad转换 while(!(ADC_CONTR&0X10)); //等待ad转换 ADC_CONTR&=0xef; //消除标志位 temp=ADC_RES; temp=temp<<2; temp|=ADC_LOW2; if(temp { p11=0; } if(temp>temp1) { p11=1; Send_String("9857rn"); Delay_us(5); } } } |
|
|
|
只有小组成员才能发言,加入小组>>
2554 浏览 0 评论
1153浏览 2评论
752浏览 1评论
505浏览 0评论
269浏览 0评论
434浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 05:02 , Processed in 1.398506 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号