范明民
(北海职业学院,广西 北海 536000)
高校实训室有众多昂贵的电子设备,而这些电子设备对放置环境要求极其苛刻,否则会损害其精度,造成不可逆转的危害。如果按照以往效率低下的人工巡视方式,需要消耗巨大的时间和精力,测量数据不一定精确。智能环境控制工程是我国迈向控制现代化的重要组成节点,对我国温室控制发展有重要意义,是我国科技人员研究的重要方向[1]。为进一步提高校园实训室环境设备使用寿命,提高管理效率,对实训室环境24 h 全方位实时、高效、可靠监测和控制,对于增加经济效益和社会效益刻不容缓[2]。所以,监控工作稳定可靠、操作简单的无线实时监测环境温湿度检测系统对维护机房环境有重要的现实意义。
系统采用模块化设计,主要由STM32 主控板、ZigBee无线传输模块、温湿度采集模块、直流电机模块、电源模块和报警模块组成。
本系统以STM32F103ZET6 处理器为核心,由主控制器和从控制器2 块ARM 芯片分别处理不同的任务。从控制器主要功能是负责接收处理传感器的温湿度参数,通过控制显示电路实时显示温度和湿度参数。当测量出的参数超过或者低于预定值,触发蜂鸣器报警和二极管闪烁进行提示,输出一个不间断的驱动信号,控制电机进行散热和降温,通过ZigBee 模块将警报传达至监控中心提醒管理员及时处理,从而将湿度和温度控制在科学的阈值范围内。同时,利用无线信道把传感器参数发给主控制器,主控制器通过串口线连接PC 上位机,便于管理员实时查看,自动将数据存入MySQL 数据库,后续统计分析的时候可以将其作为统计分析依据。系统方案设计图如图1 所示。
图1 系统方案设计图
ZigBee 协议是一种短途、能耗小和传输数据速率小的无线半双工通信技术,广泛用于自动控制领域。本系统采用星型组网方式,降低传感器终端节点的复杂度,提高系统之间的可靠性。系统网络结构图如图2 所示。
图2 系统网络结构图
温湿度采集终端节点是指利用DHT11 采集现场温湿度转换成数字信号,路由器节点既接收终端节点的数字信号,又汇总数据发送到ZigBee 协调器节点,协调器把数据通过RS232 串口线连接到计算机,实现监控中心到现场的数据采集。
本次芯片设计方案采用ARM 内核的32 位单片机,优点是集成了丰富的外设功能,将数字信号处理、响应迅速、低延迟、能耗小和高可靠性等优势汇总在一起[3]。功能较STC89C51 强大得多,便于后续功能完善和拓展。我们选用目前主流的STM32F103ZET6 高性能高容量主控制芯片,内含512 KB Flash,高达144 引脚,能够通过串口芯片CH340 连接到电脑,兼容目前Keil ARM 软件,能很好实现代码编写。
本系统对采集温度和湿度的传感器要求苛刻,因为采集的数据需要考虑到与ZigBee 结合无线传输产生的延迟。所以,对传感器的潜在要求是快速响应、测量精准、传输距离远。本研究采用DHT11 温湿度传感器采集温度和湿度,它的湿度测量范围是20%~95%RH,湿度误差不超过5%;温度范围在-20℃~+60℃,湿度±5%RH,温度误差不超过2℃,温湿度的分辨率分别为1%RH 和0.1℃。把测量到的数据连接到ZigBee,ZigBee 把接收到的数据以无线的方式分别发送到主STM32 和从STM32 处理器,最大程度上减少有线线路的铺设成本,简化了安装步骤。在实际电路中,由于DHT11 在一定的温湿度范围内性能比较稳定,但是超过了某一个范围,检测的精度会严重恶化,所以在电路设计需要考虑对DHT11 的线性补偿[4]。本次湿度上限阈值设置在70%,温度上限是40℃。
系统采用17 000-18 000 r·min-1的直流电机,它的特点是带负载能力强、高耐压,主要驱动ULN2003D 芯片进行通风散热。从控制器接收告警信号会给直流电机一个驱动信号,当告警信号消失或者人为干预后才会停止风机旋转,使得温湿度保持在恒温恒湿的参数值内。本次设计采用五线四相电机驱动电路来驱动电机。
采用发光二极管和蜂鸣器的预警电路,当温度或者湿度某一项指标过高或者过低时,触发报警,发光二极管以间隔时间为0.5 s 持续闪烁,蜂鸣器响起,输出风机的驱动信号自动调整温湿度。
区别于OSI 的7 层架构,ZigBee 技术的协议层只有四层,分别是物理层、MAC 层、网络安全层和应用层,最底层的物理层可以通过无线物理信道发送和接收协议数据单元[5]。ZigBee 包含2 种实体设备,分别是全功能新设备(FFD,Full Function Device)和精简功能设备(RFD,Reduced Function Device)。这里特别需要注意,FFD 可以通过FFD 和RFD 相互透传,但是RFD 只能和FFD 通信,RFD 之间是不能相互通信的,在ZigBee 组网中,最少也要有一个FFD 作为整个无线网的ZigBee 协调器,一个ZigBee 网络一般只有一个ZigBee 协调器[6]。我们采用CC2530 芯片,发射功率增加20 dBm,接收灵敏度增益改善6 dB,串口每秒85 个80 字节的数据包。30 s 一次采集温湿度数据上传,极大降低功耗。本研究针对实验室环境,每个实验室放置2~4 个温度传感器连接到ZigBee 模块,监控中心放置1 个协调器负责接收本栋大楼的无线信号,协调器连接到主STM32 控制器,STM32 与上位机软件连接,上位机监控获取的信号是封闭实验室几个监控点的温湿度平均值,以此提高测量数值的可靠性。
系统将终端节点采集的温湿度通过无线信道传送到ZigBee 协调器,ZigBee 协调器通过串口线将数据发送至从STM32 控制器从机,主控制器也连接到协调器,最终将通过串口线显示在PC 机上。
软件的主程序流程图如图3 所示。Keil 是一款专门为嵌入式系统设计的基于C 语言编程的开发工具,具备便捷的集成环境和强大的仿真能力,本系统采用模块化程序设计,主要包括主程序、温度和湿度检测子程序、LCD1602 显示程序、报警子程序、键盘扫描子程序和ZigBee 无线数据传输子程序6 个程序。
图3 系统主程序图
3.1.1 温度和湿度检测子程序
使用传感器,我们先要检测系统是否有这个硬件,如果有返回1,否则为0,可以通过手动设置温湿度上下限,便于不同时间段的灵活调整。Temp_DataPros()函数用于温度的检测、读取和显示在液晶屏上;LCD_Dispstring(2+6,0,temp_buf) 用于显示检测温度的格式为XX.X;LCD_Dispstring(5,1,temp_buf)和LCD_Dispstring(14,1,temp_buf)函数用于设定温度上限值和下限值。
3.1.2 键盘扫描子程序
按键功能在本系统使用较为频繁,本次使用KEY_Scan(u8 mode)函数进行扫描,由于按键存在抖动,不利于读取,故先需要消除抖动,即给一个延迟delay(1 000)。KEY_Pros()函数可以实现按键加减功能。
3.1.3 报警子程序
本次使用sound()函数进行报警,实际环境温湿度高于上限值就会开启报警和散热;实际环境温湿度低于下限值也会开启报警和加热。正常情况下,实际温湿度在上下限之间,取消报警,取消加热和散热。报警时,指示灯会亮,同时反馈给监控中心一个信号提醒。
在实验室环境下测试,测试的指标分别为系统运行可靠性测试、供电系统测试、温湿度无线数据传输测试、自动控制测试和告警系统测试等。在Eclipse 集成环境下,编写Java 程序,读取主STM32 控制器的数据,连接到MySQL 数据库存储。系统测试结果见表1。经过实验测试,该系统的可靠性和有效性均满足使用要求。
表1 系统测试结果
本文以机房实训室等封闭环境为出发点,通过嵌入式开发技术,结合ZigBee 的多点无线通信技术对系统软硬件综合设计,系统具备采样点灵活,容量大的特点,实现了无线温湿度监测系统,该方案能够很好地解决当前人力检测的低效局面,具备低成本、效率高和高稳定性等优点,在现实中具有较高的应用价值。