黄玉祥测试技术家庭组合模块防盗系统.doc

上传人:仙人指路1688 文档编号:2959881 上传时间:2023-03-05 格式:DOC 页数:26 大小:465KB
返回 下载 相关 举报
黄玉祥测试技术家庭组合模块防盗系统.doc_第1页
第1页 / 共26页
黄玉祥测试技术家庭组合模块防盗系统.doc_第2页
第2页 / 共26页
黄玉祥测试技术家庭组合模块防盗系统.doc_第3页
第3页 / 共26页
黄玉祥测试技术家庭组合模块防盗系统.doc_第4页
第4页 / 共26页
黄玉祥测试技术家庭组合模块防盗系统.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《黄玉祥测试技术家庭组合模块防盗系统.doc》由会员分享,可在线阅读,更多相关《黄玉祥测试技术家庭组合模块防盗系统.doc(26页珍藏版)》请在三一办公上搜索。

1、测控系统原理与设计大作业家庭组合模块防盗系统姓名:黄玉祥班级:110206 学号:1102061041设计背景随着社会的不断进步和科学技术、经济的不断发展,人们生活水平得到很大的提高,人们私有财产也不断地增多,因而也对防盗措施提出了新的要求。从现代人们住宅发展的趋势来看,现代人们住宅主要是向群体花园式住宅区发展,向高空中发展,一般都是一个住宅区有几栋至几十栋以上,但目前市面上所拥有的家庭电子防盗报警器,只能用于单一的住宅单元,不利于统一管理,而且也不能满足现代住宅区的发展要求,所以很有必要对家庭电子防盗报警器进一步完善和提高。本设计就是为了满足现代住宅防盗的需要而设计的家庭式电子防盗系统。它在

2、以前的防盗器基础上进行了很大的改进,不但可以用于单一的住宅区,也可以规模用于比较大规模住宅区的防盗系统,它的工作性能好,不易出现不报和误报现象,安全可靠。不仅如此,它使用了单片机做信号处理器,这样有利于与计算机相连接,利用计算机统一管理。1.1目前现状目前市面上装备主要有压力触发式防盗报警器、开关电子防盗报警器和压力遮光触发式防盗报警器等各种报警器,但这几种比较常见的报警器都存在一些缺点:(一)压力触发式防盗报警器由于压力板式安装在垫子内,当主机停止工作,主人在家走动时,都很容易失报和误报,其可靠性低。(二)开关式电子防盗报警器一般只有一个定点,有效范围小,而且各种开关也易坏,失报和误报率就高

3、,不可靠。(三)遮光式触发防盗报警器在受到太阳光照射就会引起误报,同时如果由于风吹窗帘的摆动等遮住了光也会引起误报,所以这种报警器的可靠性也不高。再者,就闭路监控电路防盗系统而言:它的安装线路复杂,而且技术要求比较高,价格也比较昂贵,不利于广泛利用。1.2目的意义与其他报警器不同,本系统采用了热释电红外传感器,它的制作简单、成本低,安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。这种防盗器安装隐蔽,不易被盗贼发现。2 总体设计:防盗报警系统一般是由入侵探测器、防盗报警控制器和接警中心(硬件加软件)组成。它的最简单形式是本地(家庭、单位)报警系统,它的组成部分是入侵探测器和

4、本地报警控制器,以及声光报警器。该系统设计方案有以下两种:方案一: 利用固定点电话联网防盗报警系统来实现家庭防盗报警,该系统由编程主机、探测器、门磁和遥控器组成,一旦发生警情,能把报警信息通过邮电通讯网络瞬间远程传输到用户设定的固定电话上,同时向接警中心报告,中心联网电脑可通过电子地图、数据库、电脑语音提示、监听现场情况,显示发生警情的单位、地址、方位、发案时间、所辖派出所(巡逻大队)经历分布,及时调动警力做出快速处理。方案二: 通过传感器检测家庭安全隐患,把检测结果送入单片机,通过单片机控制报警灯和高音报警器的启动,通过GPRS短彩信模块将警情发送至户主手机和保安室,达到预防盗窃的目的。通过

5、比较,方案二通过模块化的组合,可以很容易实现不同家庭住房面积,不同户型的防盗要求,成本低,便于大面积推广,安装方便,能很好地达到防盗的效果,所以选择方案二。3硬件电路设计3.1主机组成:主机主要由单片机最小系统,声光报警器模块,GPRS模块(手机短信提醒作用),NRF24L01短距离无线模块(信息传递作用)组成。主机原理图3.2主机工作原理概述:待机状态时,主机中的NRF24L01短距离无线模块一直处于接收状态,声光报警器不触发,GPRS模块处于待机状态,等待从机的NRF24L01短距离无线模块发送警报信息。触发状态时,主机上的NRF24L01短距离无线模块接收到从机发来的信息时,将信号传给单

6、片机,单片机处理后,通过串口通信触发GPRS模块,将警报短信发送给主人或者辖区派出所,同时触发蜂鸣器和警报灯以震慑犯罪分子,从而达到防盗的效果。主机硬件电路图3.3从机组成:从机主要由单片机最小系统,HC-SR501人体红外模块(感收人体红外线),NRF24L01短距离无线模块组成。从机原理图从机硬件电路图3.4从机工作原理概述:待机状态时,从机中的NRF24L01短距离无线模块一直处于待机状态,从机的MCU一直循环检测HC-SR501人体红外模块是否接收到警报信息。触发状态时,当有人体通过HC-SR501人体红外模块时,人体红外模块就会被触发,从机MCU检测到有人触发红外模块时,MCU随即通

7、过NRF24L01短距离无线模块向主机发送警报信息,从而达到防盗的目的4软件电路设计流程图说明:从机流程图说明: 从机流程图如下,程序先执行各个模块的初始化程序,然后检测人体红外端口是否是否被触发,如果被触发,则通过NRF20L41发送给主机警报信息,结束程序;如果没检测到,则一直执行检测程序。主机流程图说明:主机流程图如下,程序先执行各个模块的初始化程序,检测是否有主机发送来警报信息,如果接收到从机发来的警报信息,主机则触发警报灯和蜂鸣器,并通过GPRS短信模块向主人和辖区派出所发送警报信息,以便警情能很好地得到处理,达到防盗的目的。从机流程图 主机流程图 5程序编程主机程序:#includ

8、e #include #define uint unsigned int#define uchar unsigned char/*IO端口定义*/*NRF24L01端口定义*sbit MISO =P06;sbit MOSI =P03;sbit SCK =P04;sbit CE =P02;sbit CSN =P01;sbit IRQ =P05;/*按键*sbit BJ=P23;sbit ZS0=P20;sbit ZS1=P21;sbit ZS2=P22;sbit LED1=P11;sbit LED2=P12;sbit LED3=P13;/*NRF24L01*#define TX_ADR_WIDT

9、H 5 / 5 uints TX address width#define RX_ADR_WIDTH 5 / 5 uints RX address width#define TX_PLOAD_WIDTH 20 / 20 uints TX payload#define RX_PLOAD_WIDTH 20 / 20 uints TX payloaduchar TX_ADDRESSTX_ADR_WIDTH= 0x12,0x34,0x56,0x78,0x90; /本地地址uchar RX_ADDRESSRX_ADR_WIDTH= 0x12,0x34,0x56,0x78,0x90; /接收地址/*NRF

10、24L01寄存器指令*#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20 / 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令#define NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*#define CO

11、NFIG 0x00 / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 / 自动应答功能设置#define EN_RXADDR 0x02 / 可用信道设置#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送监测功能#define CD 0x09 /

12、 地址检测 #define RX_ADDR_P0 0x0A / 频道0接收数据地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x

13、12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置/*void Delay(unsigned int s);void inerDelay_us(unsigned char n);void init_NRF24L01(void);uchar SPI_RW(

14、uchar byte);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uchar SPI_RW_Reg(uchar reg, uchar value);uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar num);uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar num);unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);void nRF24L01_TxPacket(unsigned cha

15、r * tx_buf);void delayms(unsigned int count);/*长延时*void Delay(unsigned int s)unsigned int i;for(i=0; is; i+);for(i=0; is; i+);/*uchar sta; /状态标志#define RX_DR (sta & 0x40)#define TX_DS (sta & 0x20)#define MAX_RT (sta & 0x10)/*毫秒延时程序*/void delayms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)

16、for(j=0;j120;j+);/*/NRF24L01初始化void init_NRF24L01(void)delayms(1);CE=0; / chip enableCSN=1; / Spi disable SCK=0; / Spi clock line init highSPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 写接收端地址SPI_RW_Reg(WRITE_R

17、EG + EN_AA, 0x01); / 频道0自动 ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 设置信道工作为2.4GHZ,收发必须一致SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /设置接收数据长度,本次设置为32字节SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率为1MHZ,发射功率为最大值0dB/*/

18、函数:uint SPI_RW(uint uchar)/功能:NRF24L01的SPI写时序/*/uchar SPI_RW(uchar byte)uchar i;for(i=0;i8;i+) / output 8-bitMOSI = (byte & 0x80); / output uchar, MSB to MOSIbyte = (byte 1); / shift next bit into MSB.SCK = 1; / Set SCK high.byte |= MISO; / capture current MISO bitSCK = 0; / .then set SCK low againr

19、eturn(byte); / return read uchar/*/函数:uchar SPI_Read(uchar reg)/功能:NRF24L01的SPI时序/*/uchar SPI_Read(uchar reg)uchar reg_val;CSN = 0; / CSN low, initialize SPI communication.SPI_RW(reg); / Select register to read from.reg_val = SPI_RW(0); / .then read registervalueCSN = 1; / CSN high, terminate SPI co

20、mmunicationreturn(reg_val); / return register value/*/功能:NRF24L01读写寄存器函数/*/uchar SPI_RW_Reg(uchar reg, uchar value)uchar status;CSN = 0; / CSN low, init SPI transactionstatus = SPI_RW(reg); / select registerSPI_RW(value); / .and write value to it.CSN = 1; / CSN high againreturn(status); / return nRF

21、24L01 status uchar/*/函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)/功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数/*/uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar num)uchar status,i;CSN = 0; / Set CSN low, init SPI tranactionstatus = SPI_RW(reg); / Select register to write to and r

22、ead status ucharfor(i=0;inum;i+)pBufi = SPI_RW(0); / CSN = 1; return(status); / return nRF24L01 status uchar/*/函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)/功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数/*/uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar num)uchar status,i;CSN = 0; /SP

23、I使能 status = SPI_RW(reg); for(i=0; inum; i+) /SPI_RW(*pBuf+);CSN = 1; /关闭SPIreturn(status); / /*/函数:void SetRX_Mode(void)/功能:数据接收配置 /*/void SetRX_Mode(void)CE=0;SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / IRQ收发完成中断响应,16位CRC ,主接收CE = 1; delayms(1);/*/函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_b

24、uf)/功能:数据读取后放如rx_buf接收缓冲区中/*/unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)unsigned char revale=0;sta=SPI_Read(STATUS); / 读取状态寄存器来判断数据接收状况if(RX_DR) / 判断是否接收到数据CE = 0; /SPI使能SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);/ read receive payload from RX_FIFO bufferrevale =1; /读取数据完成标志SPI_RW_Re

25、g(WRITE_REG+STATUS,sta); /接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志return revale;/*/函数:void nRF24L01_TxPacket(unsigned char * tx_buf)/功能:发送 tx_buf中数据/*/void nRF24L01_TxPacket(unsigned char * tx_buf)CE=0; /StandBy I模式 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); / 装载接收端地址SPI_Write

26、_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); / 装载数据 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); / IRQ收发完成中断响应,16位CRC,主发送CE=1; /置高CE,激发数据发送delayms(1);/*主函数*void main(void)unsigned char RxBuf20=0;delayms(100);init_NRF24L01() ; /初始化函数 BJ=1; while(1) SetRX_Mode(); nRF24L01_RxPacket(RxBuf); if(RX_DR=0) /接收完毕 if(

27、RxBuf1=0x01) /一号传感器 ZS0=0; BJ=0; LED1=0; if(RxBuf1=0x02) /二号传感器 ZS1=0; BJ=0; LED2=0; if(RxBuf1=0x03) /三号传感器 ZS2=0; BJ=0; LED3=0; 从机程序:#include #include #define uint unsigned int#define uchar unsigned char/*IO端口定义*/*NRF24L01端口定义*sbit MISO =P06;sbit MOSI =P03;sbit SCK =P04;sbit CE =P02;sbit CSN =P01;s

28、bit IRQ =P05;/*按键*sbit KEY1=P34;/*NRF24L01*#define TX_ADR_WIDTH 5 / 5 uints TX address width#define RX_ADR_WIDTH 5 / 5 uints RX address width#define TX_PLOAD_WIDTH 20 / 20 uints TX payload#define RX_PLOAD_WIDTH 20 / 20 uints TX payloaduchar TX_ADDRESSTX_ADR_WIDTH= 0x12,0x34,0x56,0x78,0x90; /本地地址ucha

29、r RX_ADDRESSRX_ADR_WIDTH= 0x12,0x34,0x56,0x78,0x90; /接收地址/*NRF24L01寄存器指令*#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20 / 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 /

30、定义重复装载数据指令#define NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*#define CONFIG 0x00 / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 / 自动应答功能设置#define EN_RXADDR 0x02 / 可用信道设置#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS

31、 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送监测功能#define CD 0x09 / 地址检测 #define RX_ADDR_P0 0x0A / 频道0接收数据地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 /

32、 发送地址寄存器#define RX_PW_P0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置/*void Delay(unsigned int s);void inerDe

33、lay_us(unsigned char n);void init_NRF24L01(void);uchar SPI_RW(uchar byte);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uchar SPI_RW_Reg(uchar reg, uchar value);uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar num);uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar num);unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);void nRF24L01_TxPacket(unsigned char * tx_buf);void delayms(unsigned int count);/*长延时*void Delay(unsigned int s)unsigned int i;for(i=0; is; i+);for(i=0; is; i+);/*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号