基于PIC16F616的无线远离报警系统设计
2020-04-17杨家桂聂德品陈劲松
杨家桂,聂德品,陈劲松,武 岳
(1.安徽财经大学,安徽 蚌埠 233030;2.中盐昆山有限公司,江苏 昆山 215321)
0 引言
如果物品与其主人或无自理能力的老人、小孩与看护人的距离超过一定值时,能及时提醒物品主人或看护人,会减少很多麻烦。本设计应用PIC16F616 单片机控制无线数字传输芯片nRF24L01,以无线方式在客户和被保护对象之间进行数据双向传输,保证被保护对象在控制范围内,实现防护功能。
1 系统硬件设计
本系统主要是由发射和接收两大模块组成,系统基本构成如图1 所示。采用锂离子电池供电,利用单片机来控制无线模块之间的通信。系统启动后,单片机向发射器里写入地址和数据,发射器开始工作并不断发出无线信号;当接收器接收到信号,LED 灯亮,同时通知单片机读取数据。当接收器和发射器间的距离大于设定值时,接收器无法收到信号,将会进行声光报警,提示客户其被保护对象已离开设定的距离。
图1 系统组成框图
1.1 发射模块
发射系统主要由处理器、nRF24L01无线通信模块、人机接口等部分组成,如图2所示。处理器采用国外某公司研发的14 脚的8 位CMOS 单片机PIC16F616,其中11 个I/O 引脚是多功能,使用时根据需要进行配置,工作电压范围为2.0V~5.5V,功耗低,片内含有2048个字的可反复擦写的程序存储器和128 字节的SRAM[1]。设计时采用4MHz 的石英晶体和2 个22PF 电容组成外部振荡器;在电源和地附近也需连接不同的电容进行去耦和滤波,使得系统具有更好的稳定性和时序精度。
图2 发射模块原理图
nRF24L01 是无线单片收发一体芯片,工作频段为2.4GHz~2.5GHz,世界通用。内部集成了频率发生器、功率放大器、晶体振荡器、增强型Shock⁃BurstTM模式控制器等,支持一对多通信,输出功率、频道、发送或接收模式可以通过程序进行设置[2]。有多种低功率工作模式,能实现自动应答、自动重发、地址码检测、循环冗余校验码检测等功能。无线速率可达到2Mbps,SPI接口速率可达8Mbps,工作电压1.9~3.6V,体积小、功耗低,而且所需外围元件较少,应用方便[3]。
人机接口包括按键和LED 灯。按键具有多功能,第一次按下,启动发射模块,第二次按下即为关闭发射,系统停止工作。LED 灯亮表示系统工作正常,工作过程中LED等灭表示接收端没接收到数据。
1.2 接收模块
图3 接收模块原理图
接收模块如图3所示,主要包含处理器、声光报警、nRF24L01 无线通信电路等。一旦系统开始工作,根据配置此模块中nRF2401 就处于接收状态,接收发射端送过来的数据,当系统正常工作时LED灯亮;若系统工作不正常或接收不到发送端发送的信号,则LED 灯灭;若被保护对象远离设定的距离,则LED灯灭同时蜂鸣器发出报警信号。
2 通信软件设计
本设计采用单片机PIC16F616I/O 口模拟SPI的工作时序,与nRF24L01 进行数据通信和通信控制[4-5]。系统总体工作流程如图4 所示。系统运行之前在配置模式下对发送端和接收端的nRF24L01 进行相互匹配的初始化配置,接着就可以进行正常的数据通信。数据包为固定的格式:前缀、地址、有效数据和校验位(CRC),发送时单片机只向nRF24L01 传送地址和数据, 前缀和CRC 会在nRF24L01 芯片内部自动加进去;接收时,接收端检测到本机地址的数据包,检验正确后会自动移去前缀、地址和CRC,将有效数据传送给单片机[6-7]。
图4 系统工作流程图
nRF24L01 收发模式分直接收发、ShockBurstTM收发和Enhanced ShockBurstTM收发三种模式。本设计采用最后一种收发模式,因为Enhanced Shock⁃BurstTM模式可以与低速MCU 配合工作[3],并要求接收方在收到数据后进行应答,数据丢失后会自动重发,发送或接收完毕产生中断信号通知MCU。此模式下发送时数据从微控制器送入到nRF24L01 片内的堆栈区,数据打包后即高速(1Mbit/s)发射,与射频协议相关的所有高速信号处理都在nRF24L01 片内进行,这样不仅节能、降低成本,而且数据在空中停留时间短、增强抗干扰性[6]。
nRF24L01 发射模块开始工作时,先初始化,中断复位,SPI时钟禁止,让CE=0,CSN=0(CSN是芯片使能端);再进行芯片参数的配置:选择发射频道,发射功率,数据传输速率以及低噪声放大器增益、接收端地址等,然后拉高CE 时间持续100μs,启动发射模块。MCU 将接收节点的地址和有效数据写入nRF24L01 中的TX_FIFO。当SCK 出现一个下降沿,nRF24L01 会 从MOSI 读 入1 位 数 据,同 时 从MISO 输出1 位数据。数据发送结束,会自动进入接收模式,可配置通道0 接收应答信号。若在一定时间内收到应答,IRQ置低,产生中断,同时TX_DS=0,通知MCU数据已发送完,此时清除TXFIFO中数据,进行下一个数据的发送。如果超过等待则会自动重发。直到收到应答或者达到最大重发次数(由SETUP_RETP_ARC 寄存器设置)。如果重发次数超过了这个最大值,会出现MAX_RT 中断,此时不会清除TXFIFO 中数据。MAX_RT 中断被清除,才会重发数据包。如果达到自动重发的次数,可以选择重新发送这个数据或者发送下一个数据。无线发送流程如图5所示。
图5 无线发送流程图
接收器配置的过程与发射类似,初始化,配置相关参数。为了与发射区别,CE 需置高。进入接收模式后,若接收到有效的数据和地址,会产生中断同时RX_DR=0,接收完毕后会进入发送模式,向发送端发送应答信号。本设计通过改变发射功率调节两个模块通信的距离,一般情况下,发射功率每减少6db,通信距离会缩短1 倍。当接收器启动后接收不到数据,会进入声光报警,蜂鸣器发声提示保护对象已离开设定的范围。无线接收流程如图6所示。
图6 无线接收流程图
3 结语
本系统硬件结构比较简单、操作方便、体积小、功耗低、便于携带和使用。还可通过增加按键和相应的软件来调整安全距离,进一步完善系统性能。NRF24L01 支持多点通信,所以本设计可也适用于外出时贵重物品防丢失、老人或小孩防丢失等。