基于单片机的无线环境监控系统设计
基于单片机的无线环境监控系统设计
推出的16位
单片机SPCE061A处理速度快,独具语音识别的特色功能,是用作系统控制核心的理想选择;而传输速率高、成本低、功耗小的nRF24L01无线模块也是实现系统无线通信的最佳选择
主控端微处理器选用凌阳公司推出的
SPCE061A单片机。SPCE061A是一款16位的微处理器,运算速度快,非常适合处理复杂的数字信号。CPU工作电压VDD为2.4~3.6V,CPU时钟频率范围为0.32~49.152MHz,内置2K字SRAM以及32K字FLASH;具有2个16位可编程定时器/计数器;2个10位DAC(数/模转换)输出通道;32位通用可编程输入/输出端口;具备触键唤醒的功能;7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;声音模/数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口;具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真电路ICE接口;具有保密功能;具有看门狗功能。图2为SPCE061A内部结构图;图3为SPCE061A引脚图。
基于单片机的无线环境监控系统设计
DATA引脚用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,当前小数部分用于以后扩展,现在读出均为零。本设计中将DHT11的DATA引脚连接AT89S52的P1.0脚。一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。数据传送正确时校验和数据等于8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据所得结果的末8位
基于单片机的无线环境监控系统设计
SPCE061A开发板自身集成了三个按键K1、K2、K3,按键一端连接单片机的高电平,另一端分别连接了SPCE061A单片机的IOA0、IOA1、IOA2口。图10为SPCE061A开发板集成的三个按键电路图。其中按K1键进入调整报警温度模式,按K2键与K3键调整报警温度的上下限值。
当检测端检测到温度高于警戒值时,AT89S52单片机P1.1引脚输出高电平,通过继电器实现弱电控制强电,打开制冷空调,当温度低于警戒值时,AT89S52单片机P1.1引脚输出低电平,控制制冷空调停止运行。实现自动控制时要先把开关S1闭合,本系统将警戒值设置为35℃。图11为继电器自动控制电路图。
SPCE061A是16位单片机,具有很强的信息处理能力,最高时钟频率可达到
49MHz,具备运算速度高的优势,这些无疑为语音的播放、录放、合成及辨识提供了条件。凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录放音。SPCE061A单片机提供了相关API函数及程序代码范例,方便用C语言进行开发。本系统在编写软件时定义了SPCE061A相关寄存器的地址,通过调用相关定义即可方便进行操作。
系统上电后,主控端软件初始化相关IO口,并初始化NRF24L01无线收发模块为接收模式,调用LCD字库初始化程序。希捷软件进入循环状态,读取RF24L01无线收发模块状态寄存器,判断是否接收到数据。如果接收到数据,将数据存储到预先定义的数组中,调用语音报警子函数,判断接收到的数据是否达到报警上下限,达到后液晶屏显示危险状态,并启用语音报警。没有危险时则只通过液晶屏显示当前温湿度数据及状态安全。
主控端软件执行完语音报警子函数后清除NRF24L01无线收发模块状态寄存器中断标志,清看门狗。判断报警温度调整键是否被按下,如果按下则调用报警温度调整子函数,调整完毕后进入循环模式,重复执行以上步骤。
监测端软件开始初始化相关IO口,并设置NRF24L01无线收发模块为发射模式,然后进入循环状态,开始调用温湿度采集子函数。采集完数据后,程序将数据放入NRF24L01无线收发模块的发射数据缓存器中。此时要检测温度数据是否超过设定的警戒值,如果超过警戒值则开启继电器,否则关闭继电器。下一步软件启动数据发射。发射完成后,读NRF24L01无线收发模块的状态寄存器并清除相关中断标志位,延时一段时间后再次进入循环采集发射状态,重复执行以上步骤。图13为主控端软件流程图,图14为监测端软件流程图。