基于nRF905的无线温度检测系统的设计
2018-12-15任英杰黄建清李亚军王立辉
任英杰,黄建清,李亚军,王立辉
(海南大学热带农林学院,海南儋州571737)
温度对人们的生产生活中起着生死攸关的作用,温度可以得到准确的测量对人类社会的发展也有相当大的意义。温度-顾名思义就是用来表征物体冷热程度的一种无量纲的物理量,从原子角度来说是表现分子因受热而运动的剧烈程度。以往的温度测量方法一般是采用温度计直接或间接和被测物体相接触,因而读出温度计上所显示出的信息来快速测得物体表面的温度是多少。例如可以用来测量水温、体温以及气温等等。近几年以来,随着科技技术水平的日益增强,温度的测量技术早已达到数字化、智能化的水平。一种最为常用的测温的方法就是用一些感温材料(如电阻应变片等)做成的温度传感器来测量被测量的温度,这种测量温度的方法在人们的生产生活中一直被广泛地应用着,因为它不仅测量准确方便,而且使用灵活多样。
但是,目前绝大多数的测温传感器还是仅能实现简单的温度测量,并不可以将所测量到的温度值通过无线通信传递给第三(接收)方,针对此现象,此次设计特地提出了一种基于nRF905的无线温度测试测与通信系统,此系统的突出优点就是能够准确实现温度的异地、同步、实时检测和传输,而且测量精度非常高,可以精确到小数点后一位。本次设计的无线温度检测和传输系统将会在生产生活中有着非常广泛的应用,尤其是在某些农业生产的领域,例如水池温度实时检测与控制、温室蔬菜大棚温度实时检测与控制和土壤温度、湿度检测与控制等重要的农业生产领域。此设计基于该测温控制系统,以实时高精度检测水池温度为例,在实例剖析的原理和基础上对此测量、控制系统作进一步的说明和解释。
本设计所提出的一种基于nRF905的无线温度检测与控制系统快速、有效地填充了传统方法的空白,而且还具有测量更加准确、操作步骤简便易懂、造价低廉等一系列优点,非常适合投入到池塘水池测温等场合,且适宜批量化生产,来弥补传统测量温度方法的不足和缺陷[2]。
1 硬件设计
1.1 硬件的构成
此次设计的系统硬件主要包括传感器DS18B20模块、处理器STC89C52模块、电源转换模块、无线通信nRF905模块、显示LCD1602模块、报警模块以及人机交互模块,其中的传感器模块是只分配给从机,人机交互模块、报警模块是只分配给主机。
硬件基本框图如图1所示。
图1 硬件基本框图
1.2 处理器模块
本次硬件系统所采用的中央处理器是STC公司生产的具有高性能、低功耗、抗干扰强等一系列特点的STC89C52单片机,此单片机具有可同时运用C/C++语言和汇编语言在线可调试编程的功能,处理指令的速度相对于传统的80C51单片机而言提高了8~10倍[3]。其作为此系统的中心处理器,STC89C52单片机主要功能是用来实现将获得的数据快速准确处理、配置兼容无线模块的工作模式、启动传感器模块和显示模块等功能。
1.3 无线模块
此设计的无线通信模块选用了NORDIC公司生产的无线可控制芯片nRF905,此芯片具有体积小、性能强、功耗极低、正常工作功率可调等一系列突出优点。通过控制STC89C52单片机对nRF905芯片引脚的PWR_UP、TX_EN和TRX_CE位置位或者复位来选择不同的无线通信模式,nRF905无线通信芯片的正常工作模式一共可以分为四种。nRF905芯片与微控制器(STC89C52单片机)的数据传递可以通过其SPI接口来高效、快速的进行,而且传输的速率可由处理器进行实时设定[4]。
如图图2所示,AM、DR和CD是nRF905芯片状态接口。芯片的模式接口用于实现nRF905的发射和接收等4种工作模式的配置。nRF905与STC89C52的接线图如图2所示。
图2 nRF905与STC89C52的接线图
1.4 显示模块
1)LCD1602显示器
本系统选用的显示器是LCD1602屏幕,用来显示测量到的温度数据。LCD1602模块可以实现多种字符的显示功能,并且可以同时准确方便显示16(个)x2(行)即32个有效字符,其具有功耗极低、体积小巧、易控制等独有的特点。在此系统中,主机和从机分别安装了一个LCD1602显示器,当且仅当两个显示器所显示的温度值相同的时候,才可以说明此次数据无线传输的过程是准确无误的。
1.5 报警模块和人机交互块
1)蜂鸣器报警
此次设计中,仅有主机配置了一个蜂鸣器,其作用是当出现异常的温度值时,即当温度超过用户设定的上限值或低于用户设定下限值时,通讯主机的STC89C52单片机(P3.7口)控制蜂鸣器从而产生阵阵的蜂鸣声作为报警的信号状态。在检测池塘中水的温度时,报警信号可以及时提醒池塘所有者(用户)水池内部的温度出现异常,可以快速的采取一系列的对应措施来应对。
2)人机交互模块
人机交互模块主要是针对通讯主机而言的,人机交互模块的功能是可以通过3个独立的按键,根据用户的不同需求设定温度的上限值和下限值。温度的上下限值作为主机(STC89C52单片机)判断当前的温度是否位异常的根据,此措施对于监察池塘水池的温度有突破性的进展,此外本系统还会针对不同处境和水质的池塘水池,可以灵活的来设定不同的温度上下限值,因此本系统可以运用在各种各样的池塘中来检测温度,说明此系统具有通用性。
1.6 电源模块
由于池塘的分布比较分散随意、布线供电也是相当的麻烦、成本较高而且及其危险。综合考虑后,此系统的供电方式采用可充电电池进行不间断供电。通过利用两节18650电池作为总的电源,利用ASM1117-3.3和LT1129-5分别把输出电压转换成位。3 V和5 V电压,5 V用于给主机和从机的STC89C52单片机、显示器(LCD1602)模块和温度传感器(DS18B20)模块供电,3.3 V用于给无线传输(nRF905)模块供电。
主机和从机的系统电源框图如图3所示。
图3 从机系统电源框图
2 软件设计
此系统的软件部分主要时用来完成对数据的采集、处理以及显示等基本功能,此外,该部分还负责设置对应的外设端口,如温度传感器(DS18B20)模块、显示器(LCD1602)模块和无线通讯(nRF905)模块等等。
系统的在线可调试编程是以keil uVision 4软件为主要编译下载平台,运用更加面向硬件操作的C语言编程指令。
2.1 温度采集模块
采集温度的主要流程如图4所示。
图4 温度采集流程
启动温度转换的运行主要是STC89C52单片机先给DS18B20芯片发送启动指令,读取温度是单片机从温度寄存器中读出并简单处理所读数据。
主要代码指令如下:
2.2 无线发送模块
发送数据流程如图5所示。
图5 发送数据流程
当nRF905发送数据时,从机STC89C52单片机首先把TRX_CE置为低电平,即复位、PWR_UP置为高电平(置位),即把nRF905芯片配置成Standby模式,再把待发送的温度数据写入nRF905的数据寄存器中去,把接收端的地址写入地址寄存器中,当DR自动置高时,表示数据发送完成。
数据发送程序主要代码如下:
2.3 无线接收模块
接收数据流程如图6所示。
图6 接收数据流程
数据接收程序的主要代码如下:
3 硬件调试结果分析
仔细检查电路后进行接电观察,然后接入输入量进行观察,即动态调试。在上面的指标和电路都没有错误的情况下进行记录数据等一系列措施来评价此次设计的误差等因素是否在可控的范围内。在“实战”中,一定要做到认真、仔细,对输入-输出量的关系正确把握。
测量系统的流程框图如图7所示。
图7 系统流程图
本次作品的实物的测试结果如图8所示。
图8 实物(主机)测试结果
经过模拟池塘温度的场景,在室内进行标准的温度校正来分析此系统的可靠性和准确性,其中下表中的理论值是指更加精确的测量仪器所测得的数据。来进行比对进而得出误差的大小和系统的应用温度场合。
表1 测试结果比对
图9 比较图
误差总结:从上图可以看出,相对误差均随着温度值值的增大而有减小的趋势,可以得出此测量系统适用于温度相对适中(常温)的场合。
4 结论
此次设计提出了一种基于nRF905无线传输、控制温度的检测系统的设计。本文以实践池塘水池测量温度为例,紧密结合实际分析了该系统的实用和经济价值,并且顺带简要分析了系统的工作原理。此次的设计显著地减轻了池塘劳动者的劳动强度,对提高水田养殖业的生产效率有着不同凡响的重要意义和历史性突破[8]。