引言
传统方式对大型仓库、博物馆等无人环境的数据采集,费时、费力、效率低下,且实时性差,随机性大。科学技术的进步促进了自动检测系统的发展,而利用无线通信技术实现对无人环境的监测更是未来电子技术应用的发展趋势。造价低廉、使用方便的单片机在小型控制系统中得到了广泛的应用。凌阳公司推出的16位单片机SPCE061A处理速度快,独具语音识别的特色功能,是用作系统控制核心的理想选择;而传输速率高、成本低、功耗小的nRF24L01无线模块,也是实现系统无线通信的最佳选择。
1 系统设计方案
系统分为主控端与监测端,通过无线模块进行数据通信,核心部分是需要对数据进行处理的主控端。主控端以SPCE061A单片机为控制核心,通过nRF24L01模块进行数据的收集,以12864液晶模块作为数据显示的平台。监测端采用8位的AT89S52单片机作为控制核心。使用DHT11数字温湿度传感器采集温湿度数据。监测端还设有继电器电路,可以模拟在温度超过警戒值时自动打开房间空调制冷。图1为系统整体框图。
图1 系统整体框图
2 硬件电路设计
2.1 主控模块设计
主控端微处理器选用凌阳公司推出的SPCE061A单片机。SPCE061A是一款16位的微处理器,运算速度快,非常适合处理复杂的数字信号。CPU工作电压VDD 为2.4~3.6 V,CPU 时钟频率范围为0.32~49.152 MHz,内置2 K字SRAM以及32 K字Flash;具有2个16 位可编程定时器/计数器(可自动预置初始计数值),2个10位DAC(数/模转换)输出通道,32 位通用可编程输入/输出端口;具备触键唤醒的功能,7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;声音模/数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口;具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真电路ICE(InCircuit Emulator)接口;具有保密功能和看门狗功能。图2为SPCE061A内部结构框图。
图2 SPCE061A内部结构框图
监测端微处理器选用Atmel公司的AT89S52单片机。AT89S52是一种低功耗、高性能的8位CMOS微控制器,具有8K在系统可编程Flash存储器、256字节RAM、 32位I/O口线、片内晶振及时钟电路,最高工作频率可达33 MHz;内部集成看门狗定时器、全双工UART串行口、6个中断源、3个16位定时器/计数器。
2.2 温湿度模块
DHT11数字温湿度传感器,是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,具有很高的可靠性与稳定性。图3为DHT11应用电路。
图3 DHT11应用电路
DHT11采用单总线传输方式,供电电压为3~5.5 V。传感器上电后,要等待1 s 以越过不稳定状态。电源引脚(VDD,GND)之间可增加一个100 nF的电容,用以去耦滤波。
DATA引脚用于微处理器与DHT11之间的通信和同步,采用单总线数据格式,一次通信时间为4 ms左右。数据分小数部分和整数部分,当前小数部分用于以后扩展,现在读出均为零。本设计中,将DHT11的DATA引脚连接AT89S52的P1.0脚。一次完整的数据传输为40位,高位先出。数据格式:8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据+8位校验和。数据传送正确时,校验和数据等于8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据所得结果的末8位。
2.3 无线模块
nRF24L01是一款工作在2.4~2.5 GHz世界通用ISM频段的单片无线收发器芯片,采用FSK调制,内部集成自己的协议,有自动应答、自动重发、地址及CRC检验功能,可实现点对点或1对6的无线通信,无线通信速度可达2 Mbps;电流消耗极低,当工作在发射模式下发射功率为-6 dBm时,电流消耗为9 mA,接收模式下为12.3 mA。
nRF24L01有4种工作模式:收发模式、配置模式、空闲模式、关机模式。工作模式由PWR_UP register、PRIM_RX register和CE决定。本设计中,让nRF24L01工作于收发模式中的Enhanced ShockBurstTM收发模式下。这种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高。
nRF24L01的所有配置工作都是通过SPI完成的,共有30字节的配置字。虽然nRF24L01模块工作于1.9~3.6 V的低电压,但考虑到SPCE061A单片机及51单片机的I/O口输出电流均较小,nRF24L01无线模块可以直接与其连接。图4为nRF24L01芯片及其外围电路,图5为nRF24L01与AT89S52的引脚连接图,图6为nRF24L01与SPCE061A的引脚连接图。
图4 nRF24L01芯片及其外围电路
2.4 显示模块
系统显示模块采用带中文字库的12864液晶显示屏。
图5 nRF24L01与AT89S52的引脚连接图
图6 nRF24L01与SPCE061A引脚连接图
12864主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。其显示分辨率为128×64,内置8192个16×16点汉字,和128个16×8点ASCII字符集。该模块接口方式灵活,操作指令简单、方便,可以显示8×4行16×16点阵的汉字,也可完成图形显示,可构成全中文人机交互图形界面。低电压、低功耗是其又一显著特点。12864具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能,共有7条指令,单片机只需通过D/I、R/W、DB0~DB7送入数据或者指令便可显示其指定内容或显示方式。
本设计中,12864液晶屏采用并行通信方式与SPCE061A单片机进行数据通信。为了方便地操作12864液晶屏,将12864的4、5、6引脚与SPCE061A的I/OB9、IOB8、IOB10引脚连接,并编写了能够直接操作SPCE061A单个I/O口状态的函数,以方便操作12864显示屏而不影响其他I/O口的数据通信。图7为12864液晶屏与SPCE061A的引脚连接图。
图7 12864液晶屏与SPCE061A的引脚连接图
图8 继电器自动控制电路图
图9 SPCE061A开发板按键电路图
2.5 继电器模块
当检测端检测到温度高于警戒值时,AT89S52单片机P1.1引脚输出高电平,通过继电器实现弱电控制强电,打开制冷空调;当温度低于警戒值时,AT89S52单片机P1.1引脚输出低电平,控制制冷空调停止运行。实现自动控制时要先把开关S1闭合,本系统将警戒值设置为35 ℃。图8为继电器自动控制电路图。
2.6 键盘模块
SPCE061A开发板自身集成了3个按键K1、K2、K3,按键一端连接单片机的高电平,另一端分别连接SPCE061A单片机的IOA0、IOA1、IOA2口。图9为SPCE061A开发板集成的3个按键电路图。其中按K1键进入调整报警温度模式,按K2键与K3键调整报警温度的上下限值。
2.7 语音模块
凌阳的 SPCE061A是16位单片机,具有很强的信息处理能力,最高时钟频率可达到49 MHz,具备运算速度高的优势,这些无疑为语音的播放、录放、合成及辨识提供了条件。凌阳压缩算法中 SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而 DVR则用来录放音。SPCE061A单片机提供了相关API函数及程序代码范例,方便用C语言进行开发。本系统在编写软件时定义了SPCE061A相关寄存器的地址,通过调用相关定义即可方便地进行操作。
图10 S480自动播放方式流程图
软件设计时采用S480压缩算法将报警语音“有危险”的内容进行压缩,用S480自动方式播放报警语音。该压缩算法压缩比为80∶3,存储容量大,音质介于 A2000和 S240之间,适用于语音播放。
3 系统软件设计流程
系统上电后,主控端软件初始化相关I/O口,并初始化nRF24L01无线收发模块为接收模式,调用LCD字库初始化程序。希捷软件进入循环状态,读取nRF24L01无线收发模块状态寄存器,判断是否接收到数据。如果接收到数据,将数据存储到预先定义的数组中,调用语音报警子函数,判断接收到的数据是否达到报警上下限,达到后液晶屏显示危险状态,并启用语音报警。没有危险时,则只通过液晶屏显示当前温湿度数据及状态安全。
主控端软件执行完语音报警子函数后,清除nRF24L01无线收发模块状态寄存器中断标志,清看门狗。判断报警温度调整键是否被按下,如果按下则调用报警温度调整子函数。调整完毕后进入循环模式,重复执行以上步骤。
监测端软件开始初始化相关I/O口,并设置nRF24L01无线收发模块为发射模式,然后进入循环状态,开始调用温湿度采集子函数。采集完数据后,程序将数据放入nRF24L01无线收发模块的发射数据缓存器中。此时要检测温度数据是否超过设定的警戒值。如果超过警戒值,则开启继电器;否则,关闭继电器。下一步软件启动数据发射。发射完成后,读nRF24L01无线收发模块的状态寄存器并清除相关中断标志位,延时一段时间后再次进入循环采集发射状态,重复执行以上步骤。图11为主控端软件流程图,图12为监测端软件流程图。
主控端软件设计和监测端软件设计略——编者注。
结语
本系统使用处理速度快的16位单片机SPCE061A作为主控端核心,利用nRF24L01无线模块设计完成了能够监控小型无人环境温湿度的人性化系统。经过测试,系统温湿度数据采集准确,nRF24L01模块传送数据稳定;当环境温度达到警戒值时,继电器闭合,可以模拟开启制冷空调的动作。本系统达到了预期设计目的,具有较高的实用价值。
图11 主控端软件流程图
图12 监测端软件流程图