毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc

上传人:仙人指路1688 文档编号:3981825 上传时间:2023-03-30 格式:DOC 页数:28 大小:1.47MB
返回 下载 相关 举报
毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc_第1页
第1页 / 共28页
毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc_第2页
第2页 / 共28页
毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc_第3页
第3页 / 共28页
毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc_第4页
第4页 / 共28页
毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)多传感器融合的小区入侵智能报警系统.doc(28页珍藏版)》请在三一办公上搜索。

1、嘉应学院物理与光信息科技学院毕业设计说明书(论文) 作 者: 学 号: 专 业:物理学师范 题 目:无线安防系统 指导老师: 目录摘要1第一章绪 论21.1课题的背景目的与意义21.2系统设计任务分析3第二章 总体方案设计与选择的论证42.1 方案设计42.1.1 方案设计框图42.1.2单片机的结构特点42.1.3单片机引脚配置42.1.4单片机控制电路82.2无线收发模块介绍82.2.1nRF24L01概述82.2.2 引脚功能及描述92.2.3工作模式92.2.5配置字112.2.6无线模块电路122.3红外发射模块介绍132.4 声光报警模块设计14第三章软件设计153.1 软件设计流

2、程153.2程序设计16参考文献23附图24致 谢26摘要 本设计是基于STC89C51单片机与NRF24L01无线通信的无线家居安防系统。本系统设计主要针对当前小区监控主要通过单一的全天候的视频拍摄,要求很大的存储空间,同时没有主动识别入侵功能,其功能仅仅是为事后提供可能的线索,功能极其单一且被动等问题作出的一个解决方案。 本文对上述问题提出一种无线解决方案,通过在小区墙上装红外传感器,当有人爬墙进入小区时,传感器信号经无线传输至保卫处,报警系统报警,同时入侵处也进行声光报警,方便保安快速锁定入侵地点。 在这次的设计中采用的单片机STC89C52RC的内核和MCS-51系列单片机一样,引脚也

3、相同。但是STC89C52RC可以通过STC_ISP软件下载进行烧录。无线数据通信收发芯片NRF24L01是一款工业级内置硬件链路层协议的低成本无线收发器,工作于2.4 GHz全球开放ISM频段。关键词:无线、STC89C52RC、NRF24L01、红外传感器 第一章 绪 论1.1课题的背景目的与意义 图1.1短距离无线通信的应用随着社会的发展和生活水平的提高,人民对社区的安全提出越来越高的要求。高档的安防设施价格昂贵,对于大部分人很难接受。目前,大部分小区的安全主要是由保卫人员巡逻与实时录像监控系统实现,而实时监控需要巨大的存储空间,并且只能为事后提供可能的线索,比较被动。小偷进入小区盗窃主

4、要方式是翻墙进入小区,假如小区墙上装有传感器,只要有人翻过围墙便触发报警系统,同时将信息传递到保卫室。而要将信息传递到保卫室如果采用传统的有线数据传输就会消耗很多通讯线,需要的数据线多,浪费资源,可操作性差,出现错误接线的可能,误报可能性较大。小区检测目标分散,测点较多,传统的方法已经不能满足当前当前安防的需要。当前的科技水平下,无线通信技术的发展使得安防精确,简便易行。1.2系统设计任务分析本系统的设计采用了Nordic公司新推出的工作于2.4GHz频段NRF24L01射频芯片,并有低功耗单片机STC89C52RC控制实现短距离无线数据通信。该接口设计具有成本低、功耗低、传输速率高、软件设计

5、简单以及通信稳定可靠等特点。整个系统有发送和接收二部分,通过NRF24L01无线数据通信收发模块来实现无线数据传输。发送部分以单片机STC89C52为核心,红外发光二极管与红外接收器组成检测系统。将信号传送给保卫处,通过蜂鸣器和发光二极管进行报警。本系统的核心控制芯片选用的是STC89C52RC。单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关: 单片机构成的应用系统有较大的可靠性。 系统构建简洁、易行,能方便的实现系统功能。 由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点和优异的性能价格比。第二章 总体方案设计与选择的论证2.1 方案设计2.

6、1.1 方案设计框图2.1.2单片机的结构特点根据任务书的要求以及系统实际的需要,本次毕业设计采用STC89C52RC作为系统的微控制器芯片。特点是,STC89C52RC的内核和AT51系列单片机一样,故引脚也相同。但是STC89C52RC可以通过STC_ISP软件下载进行烧录。2.1.3单片机引脚配置图2.1引脚配置图 鉴于STC89C52RC与MCS-51单片机类似,现介绍MCS-51单片机如下文。MCS-51单片机采用40引脚双列直插封装(DIP)形式。对于CHMOS单片机除采用DIP形式外,还采用方形封装工艺。由于受到引脚数目的限制,所以有部分引脚具有第二功能。在单片机的40条引脚中,

7、有2条用于主电源的引脚,2条外接晶体的引脚,RST、ALE/、/VPP,32条输入/输出引脚。下面就本系统用到的引脚分别说明这些引脚的名称和功能。(1)主电源引脚VCC和GNDVCC:接+5V电源GND:接电源地(2)钟电路引脚XTAL1和XTAL2XTAL1:接外部晶体的一端。在单片机内部,它是反相放大器的输入端,该放大器构成了片内振荡器。在采用外部时钟电路时,对于HMOS单片机,此引脚必须接地;对CHMOS单片机,此引脚作为驱动端。 XTAL2:接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端,振荡器的频率是晶体振荡频率。若采用外部时钟电路时,对于HMOS单片机,该引脚

8、输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬空。(3)信号引脚RST/VpdRST/Vpd:复位/备用电源输入端。单片机上电后,只要在该引脚上输入24个振荡周期(2个机器周期)宽度以上的高电平就会使单片机复位;若在RST与VCC之间接一个10F的电容,而在RST与GND之间接一个8.2K的下拉电阻,则可实现单片机上电自动复位。RST/Vpd具有复用功能,在主电源VCC掉电期间,该引脚可接上+5V备用电源。当VCC下掉到低于规定的电平,而Vpd在其规定的电压范围内时,Vpd就向片内RAM提供备用电源,以保持片内RAM中的信息不丢失,复电后能继续正常运行。(4)输入/输出(I/O)引脚P0、

9、P1、P2和P3MCS-51单片机有4个双向并行的8位I/O口P0P3,P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为4个TTL电路。P0.0-P0.7:P0口是一个8位双向I/O端口。在访问片外存储器时,它分时提供低8位地址和作8位双向数据总线。在EPROM编程时,从P0口输入指令字节;在验证程序时,则输出指令字节(验证时,要外接上拉电阻)。P0口能以吸收电流的方式驱动8个LSTTL负载。图2.2 P0口1位结构图P1.0-P1.7:P1口是8位准双向I/O端口。在EPROM编程和程序验证时,它输入低8位地

10、址。P1口能驱动4个LSTTL负载。图2.3 P1口1位结构图P2.0-P2.7:P2口是一个8位准双向I/O端口。在CPU访问外部存储器时,它输出高8位地址。在对EPROM编程和程序验证时,它输入高8位地址。P2口可驱动4个LSTTL负载。图2.4 P2口1位结构图P3.0-P3.7:P3口是8位准双向I/O端口。它是一个复用功能口。作为第一功能使用时,为普通I/O口,其功能和操作方法与P1口相同。作为第二功能使用时,各引脚的定义如表3-1所示。P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。P3口能驱动4个LSTTL负载。图2.5 P3口1位结构图表2.1:口线 第二功能P3

11、.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD (串行口输入)TXD (串行口输出)INT0 (外部中断0输入)INT1(外部中断1输入) T0 (定时器0的外部输入)T1 (定时器1的外部输入)WR (外部数据存储器“写”信号输出)RD (外部数据存储器“读”信号输出)2.1.4单片机控制电路控制电路2.2无线收发模块介绍2.2.1nRF24L01概述 nRF24L01是一款新型单片射频收发器件,工作于2.4 GHz2.5 GHz ISM频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序

12、进行配置。nRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。 nRF24L01主要特性如下: GFSK调制: 硬件集成OSI链路层; 具有自动应答和自动再发射功能; 片内自动生成报头和CRC校验码; 数据传输率为l Mb/s或2Mb/s; SPI速率为0 Mb/s10 Mb/s; 125个频道: 与其他nRF24系列射频器件相兼容; QFN20引脚4 mm4 mm封装; 供电电压为1.9 V3.6 V。 2.2.2 引脚功能及描述 nRF24L01的封装及引脚排列如图所示。各引

13、脚功能如下: 图2.6 nRF24L01封装图CE:使能发射或接收; CSN,SCK,MOSI,MISO:SPI引脚端,微处理器可通过此引脚配置nRF24L01: IRQ:中断标志位;VDD:电源输入端; VSS:电源地;XC2,XC1:晶体振荡器引脚; VDD_PA:为功率放大器供电,输出为1.8 V; ANT1,ANT2:天线接口;IREF:参考电流输入。 2.2.3工作模式 通过配置寄存器可将nRF241L01配置为发射、接收、空闲及掉电四种工作模式,如表所示。 表2.2:模式PWR_UPPRIM_RXCEFIFO寄存器状态接收模式111-发射模式101数据在TXFIFO寄存器中发射模式

14、1010停留在发送模式,直至数据发送完待机模式2101TXFIFO为空待机模式11-0无数据传输掉电0- 待机模式1主要用于降低电流损耗,在该模式下晶体振荡器仍然是工作的;待机模式2则是在当FIFO寄存器为空且CE=1时进入此模式;待机模式下,所有配置字仍然保留。 在掉电模式下电流损耗最小,同时nRF24L01也不工作,但其所有配置寄存器的值仍然保留。发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平

15、并保持至少10s,延迟130s后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TXFIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TXFIFO中数据保留以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低,则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据

16、且CE为高,则进入空闲模式2。 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RXFIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。在写寄存器之前一定要进入待机模式或掉电模式。如下图,给出SPI操作及时序图:图2.7 SPI读操作图2.8 SPI 写操作2.2.5配置字 SPI口为同步串行通信接口,最大传输速率为10 Mb/s,传输时先传送低位

17、字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。与SPI相关的指令共有8个,使用时这些控制指令由nRF24L01的MOSI输入。相应的状态和数据信息是从MISO输出给MCU。 nRF24L0l所有的配置字都由配置寄存器定义,这些配置寄存器可通过SPI口访问。nRF24L01 的配置寄存器共有25个,常用的配置寄存器如表2所示。 表2:常用配置寄存器地址(H)寄存器名称功能00CONFIG设置24L01工作模式01EN_AA设置接收通道及自动应答02EN_RXADDR使能接收通道地址03SETUP_AW设置地址宽度04SETUP_RETR设置自动重发数据时间和次数07STATUS状

18、态寄存器,用来判定工作状态0A0FRX_ADDR_P0P5设置接收通道地址10TX_ADDR设置接收接点地址1116RX_PW_P0P5设置接收通道的有效数据宽度2.2.6无线模块电路 接口电路VDD供电电路NRF24L01供电电压为3.0-3.6V,而单片机供电电压为5.0V,在本设计中采用二极管降压,每个二极管管压降为0.7V,故VDD电压为3.2V。 NRF24L01射频输出原理图2.3红外发射模块介绍红外发光二极管与发光二级管相似,常见的发光二极管如PH303管压降为1.4,工作电流小于mA,为适应不同的工作需要常在回路中串接一限流电阻。发射红外线去控制相应的电路时,其控制距离与发射功

19、率成正比。为增加红外发射控制距离,在实际应用中工作于脉冲状态,因为脉动光的有效传送距离与脉冲的峰值电流成正比,因此只学尽量提高峰值电流,就能增加红外发射距离。提高峰值电流的方法是减小脉冲占空比。用红外线控制受控装置时,受控装置均有一个红外光电转换元件红外接收管。红外线发射与接收的方式有两种,一种是直射式,另一种是反射式。直射式是指红外发射与接收管安在发射与受控物两端,中间有一定的距离,平时有光照。反射式是指红外发射与接收管并列在一起平时始终无光照,只有有物体挡住了红外光时红外接收管才开始工作。在本设计中红外发射与接收方式采用直射式。当有人爬墙时挡住红外光时,红外接收管输出低电平。根据实际需要放

20、置节点,设计模型以2个节点为代表。电路如下:2.4 声光报警模块设计 当报警电路触发时,在入侵点与保卫处进行声光报警,本设计中用红色发光二极管与蜂鸣器代替,在实际应用中应进行相应的改变。红色发光二极管点亮电压是2左右,电流是18mA,所以限流电阻理论值为166,用标称值为210,精度为5%的碳膜电阻,此时电流为14mA。第三章 软件设计3.1 软件设计流程发送部分流程图 开始单片机端口初始化NRF24L01初始化 发送 声光报警 入侵?NFlag= =1?YN 取消报警Y接收部分流程框图 开始是否取消报警 报警 Flag= =1? 单片机端口初始化 NRF24l01初始化NN 取消报警/发送取

21、消报警信号Y3.2程序设计#include #include typedef unsigned char uchar;typedef unsigned char uint;/*NRF24L01端口定义sbit MISO=P13;sbit MOSI=P14;sbit SCK =P12;sbit CE=P15;sbit CSN=P16;sbit IRQ=P17;/*led及蜂鸣器端口定义 sbit hled1 =P30;/节点1红外发射 sbit hled2 =P31 ; /节点2红外发射/*节点sbit KEY1=P30;sbit KEY2=P31;/*led*sbit led1=P27; /节

22、点1光报警sbit led2=P26; / 节点2光报警sbit FMQ1=P25; / /节点1声报警sbit FMQ2=P24; /节点2声报警/*蜂明器/*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 payloaduint const TX_ADDR

23、ESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/本地地址uint const RX_ADDRESSRX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01;/接收地址/*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

24、FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令#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 / 工作

25、频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 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接收数据地址#def

26、ine RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#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 / FI

27、FO栈入栈出状态寄存器设置/*void Delay(unsigned int s);void inerDelay_us(unsigned char n);void init_NRF24L01(void);uint SPI_RW(uint uchar);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uint SPI_RW_Reg(uchar reg, uchar value);uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);uint SPI_Write_Buf(uchar reg,

28、uchar *pBuf, uchar uchars);unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);void nRF24L01_TxPacket(unsigned char * tx_buf);/*长延时void Delay(unsigned int s) unsigned int i; for(i=0; is; i+); for(i=0; i0;n-) _nop_();/*/NRF24L01初始化void init_NRF24L01(void) inerDelay_us(100); CE=0; / chip enable CSN

29、=1; / Spi disable SCK=0; SPI_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_REG + EN_AA, 0x01); / 频道0自动ACK应答允许SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / 允许接收地址只有频道0 SPI_RW_Reg(WRITE_REG + RF_

30、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/*/*函数:uint SPI_RW(uint uchar)/*功能:NRF24L01的SPI写时序/*/uint SPI_RW(uint uchar) uint bit_ctr; for(bit_ctr=0;bit_ctr8;bit_ctr+) / output 8-bi

31、t MOSI = (uchar & 0x80); / output uchar, MSB to MOSI uchar = (uchar 1); / shift next bit into MSB.SCK = 1; / Set SCK high.uchar |= MISO; / capture current MISO bitSCK = 0; / .then set SCK low again return(uchar); / return read uchar/*/*函数:uchar SPI_Read(uchar reg)/*功能:NRF24L01的SPI时序/*/uchar SPI_Read

32、(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 communicationreturn(reg_val); / return register value/*/*功能:NRF24L01读写寄存器函数/*/uint SPI_RW_Reg(uch

33、ar reg, uchar value) uint status; CSN = 0; / CSN low, init SPI transaction status = SPI_RW(reg); / select register SPI_RW(value); / .and write value to it. CSN = 1; / CSN high again return(status); / return nRF24L01 status uchar/*/*函数:uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)/*功能: 用于读数

34、据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数/*/uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars) uint status,uchar_ctr; CSN = 0; / Set CSN low, init SPI tranaction status = SPI_RW(reg); / Select register to write to and read status uchar for(uchar_ctr=0;uchar_ctruchars;uchar_ctr+) pBufuchar_ctr =

35、 SPI_RW(0); CSN = 1; return(status); / return nRF24L01 status uchar/*/*函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)/*功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数/*/uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars) uint status,uchar_ctr; CSN = 0; /SPI使能 status = SPI_RW(reg); fo

36、r(uchar_ctr=0; uchar_ctruchars; uchar_ctr+) / SPI_RW(*pBuf+); CSN = 1; /关闭SPI return(status); /*/*函数:void SetRX_Mode(void)/*功能:数据接收配置 /*/void SetRX_Mode(void) CE=0; SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / IRQ收发完成中断响应,16位CRC,主接收 CE = 1; inerDelay_us(130);/*/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)/*功能:数据读取后放如rx_buf接收缓冲区中/*/unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) unsigned char revale=0; sta=SPI_Read(STATUS); / 读取状态寄存其来判断数据接收状况

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号