1. 引言
随着当今科学技术的不断发展,无线预警技术已经涉及到各个方面,比如说农业生产、工业生产、运输方面、人类生活、环境监控以及国家军事国防等等。在冷链物流方面,我国目前尚未形成完整的冷冻冷藏链,从起始点到消费点的流动储存效率和效益无法得到很好的控制和整合,在技术应用和系统规划上缺乏更加合理的解决方法。本文设计是通过温度数据采集,然后将采集到的数据运用无线通信进行传输,经过单片机处理、数码管显示的预警系统。选择无线传输是因为不需铺设通讯线,可以节省资源与空间。该系统测温准确,精度高、报警及时。无线温度采集预警系统可以随时监督冷链物流企业的配送业务,保证冷链运输企业的业务规范管理,当出现问题时,可以让工作人员第一时间发现并解决,避免冷链物品在运输途中质量受损,让冷链物流运输过程向可信、可控和可靠方向发展 [1] [2] 。
2. 设计方案总体思路
在方案设计前期,我们将设计分为硬件设计部分和软件设计部分,思路如下:
在硬件部分中,我们根据系统各个部分的结构和功能,设计由STC89C52主控制器单片机、DS18B20温度采集、NRF24L01无线收发一体、数码管液晶显示器、蜂鸣器这五个模块组成的电路图;软件部分我们采用keil软件进行c语言编程,如图1温度无线采集预警系统结构框图所示。
为了提高设计方案的可实施性,设想在运输当中所会遇到的问题,排除偶然性的因素。我们设计出:使用主控制器布置在冷藏车的车厢内,由温度传感器进行温度检测,进行一系列的数据采集,随时监控车厢内被冷藏的产品的温度变化。当然在运输前,由驾驶员根据产品的需要设置冷藏车车厢内的温度范围,一旦车厢内的温度变化已经超过所设置的温度范围,接收器就会立即感应并进行传输,从而蜂鸣器就会响应以及显示器会显示出冷藏车车厢内的温度,通过无线的方式将这一信息传递给驾驶员,这样驾驶员可以第一时间进行检查和解决,使产品在质量上得到了保护。
经过小组讨论,我们设计的温度无线采集预警电路设计决定采用美国DALLAS半导体公司生产的温度传感器DS18B20作为温度检测元件,其测温范围为−55℃~125℃,最高分辨率可达0.0625℃,它可以直接读出被测温度值,采用三线制与单片机相连,减少了外部的硬件电路,低成本且易使用,相对于其他温度检测元件具有更好检测效果;发射与接收电路采用的是Nordic公司生产的NRF24L01作为发射与

Figure 1. The structure diagram of wireless temperature acquisition warning system
图1. 温度无线采集预警系统结构框图
接收元件,传输距离可达100 m,其具有自动重发功能、数据包识别及CRC校验功能,大大满足冷链物流运输过程所需要的使用范围 [3] 。
3. 无线温度预警系统模块分析
3.1. 温度传感器DS18B20采集温度模块
本设计采用DS18B20作为温度采集元件,完成温度信号采集作业。该芯片具有优点如下:
① 体积小,多种封装形式。适用于各种介质工业管道和狭小空间,应用范围广泛,受环境因素约束较小,且成本较低易于使用。
② 独特的单线接口方式,以“一线总线”串行传送给CPU,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。同时可传送CRC校验码,具有极强的抗干扰纠错能力。
③ DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,可以实现组太网多点测温。
3.2. nRF24L01无线收发一体模块
该模块由挪威(Nordic)公司生产的nRF24L01及其外围电路组成的。nRF24L01作为单片射频收发芯片。具有价格低廉,占用空间小、功率低、环境适应性好、扩展性好和设备维护上更容易实现等优点正在逐步越来越受到人们的青睐和使用。
3.3. STC89C52单片机处理模块
STC89C52单片机是一个集成在一块芯片上的完整计算机系统。它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统。是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器 [4] 。
4. 硬件系统总体方案
无线温度采集报警系统硬件部分分为温度采集发送系统和接收系统两部分,两系统采用无线模块NRF24L01相互连接,传输数据,如图2系统硬件总体线路图。
4.1. 温度采集发送系统
温度采集线路图采用STC89C52单片机作为主控芯片,以三个DS18B20为温度传感器,NRF24L01
无线模块传输温度信号。
工作过程:将三个DS18B20温度传感器放置在冷藏车的三个温度段车厢内,每个DS18B20传感器将分别收集到的温度信号转化为电信号,送至单片机处理,单片机将温度信号处理后,传送给NRF24L01无线发射模块,随后,NRF24L01无线发射模块将处理后的温度信息编码发送出去。
(a)
(b)
Figure 2. (a) The global system hardware circuit diagram; (b) The global system hardware circuit diagram
图2. (a) 系统硬件总体线路图;(b) 系统硬件总体线路图
4.2. 接收系统
接收系统也采用STC89C52单片机作为主控芯片,以LCD1602字符型液晶作为显示屏显示温度数字NRF24L01无线模块接收信号。
工作过程:NRF24L01无线模块接收到采集NRF24L01无线模块发送过来的温度信号后,将温度信息传递给单片机处理,单片机处理信息温度,并通过LCD1602液晶屏将温度值显示出来,当三个温度中的某一个温度低至下限以下或高至上限以上时,单片机将信号传递到报警电路,使得铃声报警 [5] 。
5. 软件系统编程思路
软件系统编程的整个流程涉及到STC89C52单片机内部驱动EEPROM52、温度传感器DS18B20、LCD1602液晶显示屏、nRF24L01无线模块等部分的编程。
本系统采用C语言进行编程,对于单片机来说,汇编语言、C语言都可实现编程,编译器会根据写的程序翻译成单片机的机器码,不存在哪个芯片专用C语言或汇编语言;只是汇编语言和C语言有各自的优缺点。一般来说汇编语言所编写出来的程序更接近于机器码,小程序执行效率高。但是单片机种类不同,所需要的汇编语言也相差很大:比如51,pic,AVR,ARM;C语言属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。C语言编写程序结构清晰,移植性好,容易维护和修改。符合软件设计的原则。为了便于程序的调试与维护,系统全部程序采用模块化结构,由一个主程序和若干子程序组成。子程序主要包括 LED 显示子程序、键盘控制子程序等,各子程序均能很快返回主程序,不会发生子程序时间过长等问题。子程序对相关事件的处理依靠标志位和判断标志位来完成,主程序通过调用各个子程序来完成所有的温度控制器功能 [6] 。
首先,对外围芯片进行分类,属同一功能或同一芯片的程序采用模块化的形式,用固定的几个函数实现,一般不同芯片之间的函数功能尽量不重叠,也不要使用一个函数覆盖几个芯片,以便于后期的调试,如果涉及到芯片之间通讯的,可以单独列出,使用专门的函数进行处理;
其次,将单片机中需要完成的工作按轻重缓急进行分类,一般设置两个定时中断:其中一个定时时间大致在20 ms左右,用来处理一些按钮防抖处理、时间日期计算、对输入处理后产生对应标志位、器件刷新等一些实时性要求不是很高,但必须有时间要求的事物处理,另外设立一个定时中断大概在1 ms以下,主要用来实现时钟基准和做一些实时性要求很高的操作,一般需要将实时性要求较高的定时中断设置为高优先级,否则不能实现正常运行。如果还有串行中断需要处理,则需要严格控制实时中断中的代码长度,以免耽误串行中断的处理。另外如果使用软件实现串口及无线通讯软解码的场合,也要合理分配各部分的代码长度 [7] 。
最后,将普通的事件检测和处理以及响应放在主程序体中实现,该部分一般只需要几个并行的函数就可以,主程序体可以以简单的几行代码实现。
下文中,我们将软件系统分为发送部分和接收部分来分别介绍。
5.1. 发送部分
发送部分的一个循环的总体思路是:先初始化三个温度传感器DS18B20,DS18B20使用的关键在于清楚总线的读写时序。由于DS18B20外接电路极为简单,所以电路连接没有问题;但在软件编程上,就要求严格按照它的时序进行读写操作。具体操作如下:对DS18B20操作时,首先要将它复位。将DQ线拉低480至960 μs,再将数据线拉高15至60 μs,然后,DS18B20发出60至此240 μs的低电平作为应答信号,这时主机才能对它进行其它操作。通过识别三个温度传感器DS18B20从中读出温度(DS18B20采用默认的12位精度),将得到的温度值的反码转化成十进制,取温度数组的高两位(即整数部分)写入发送数据数组,然后初始化无线模块nRF24L01,将温度数据发送至主机 [7] 。
5.2. 接收部分
接收部分的总体思路是:首先初始化无线模块nRF24L01,然后进入大循环判断状态寄存器是否有接收中断。如果有就从FIFO_buffer读入二进制数据,然后将数据转换成十进制在LCD1602数码管上显示出来。
5.3. 软件抗干扰措施
本系统中,在软件方面的抗干扰措施主要从以下两个方面来考虑:
按键是一个机械开关,当键按下时,开关闭合;当键松开时,开关断开。其特点之一就是它的抖动性,这是由按键的机械特性所决定的,抖动的时间一般约为10 ms~20 ms对于按键消抖的具体措施目前有两种:一是用硬件电路来实现,即用Rc滤波电路滤除抖动;另一种是用软件延时的方法来解决,利用软件的延时避开按键的按下与抬起时都有的抖动期,从而避免检测到干扰信号,本文采用的就是软件延时消抖的方法,时程序还作为通用功能模块被其他模块调用。
6. 系统预期成果和特色
6.1. 系统预期成果
在完成上述全部软件调试步骤后,本系统成功运行,LCD1602显示屏上成功显示三个温度传感器所处的环境温度,并能实时监测温度变化,当温度达到上限值或下限值时,声光报警模块亮灯并发出声音。
6.2. 系统特色
基于nRF24L01的无线温度采集预警系统,无论是在系统性能,还是在系统成本上,相对于传统技术,都具有很强的吸引力,无线数据采集系统将在各个领域的数据采集系统发挥积极的作用。传统的温度采集系统所采用的温度是通过RS485、CAN总线通信方式传输至上位机,但这种方式维护较困难,不利于工业现场生产,因此可采用工业级内置硬件链路层协议的低成本单芯片nRF24L01型无线温度采集系统可以实现系统间的无线通信,完成无限信号的传递、接受以及预警功能。
7. 设计总结
本系统是基于NRF24L01的无线温度采集报警系统的设计。本设计为了实现无线温度采集报警系统,主要分为温度采集发送系统和接收系统两个部分。本设计具有结构简单、精度高和稳定性好等优点,具有广阔的市场前景。
通过对各部分原理的学习,和实践的不断探索,设计人员需要熟练掌握了protel99SE的使用,采用数据库管理模式,进行电路原理图的设计;对C语言的编写进行了分析,并使用KEIL软件编写了本设计系统的代码部分,使得各硬件之间进行很好的协同工作。以往的温度控制系统往往采用的是有线连接,有线连接会受到空间的局限,有些冷链车辆并不具备有线连接的条件,而无线连接不受空间的限制,可以实现较远距离的传输。在本设计中,实现了实时监控温度数据变化,在一定程度上推动了冷链运输在温度的控制和预警方面的提升,进而推动了所运输产品的质量和客户满意度等等。为冷链运输向着平台化、可视化、移动化、自动化、信息化、安全化与标准化发展的道路上又进了一步。
基金项目
2016年物流教改教研课题计划JWZ2016079,2016年北京联合大学特色亮点项目。