新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于ZigBee的无线温度监控系统的设计

基于ZigBee的无线温度监控系统的设计

作者:时间:2013-01-24来源:网络收藏

完成对DS18B20的报警温度的设置和当前温度的读取。单片机与DS18B20的通讯,一般需要经过3个步骤:(1)DS18B20复位;(2)执行ROM指令,对于总线上挂接多个DS18B20的情况,通过读取ROM里的序列号来匹配某个DS18B20,否则可以直接跳过ROM指令(0XCC);(3)执行DS18B20功能指令(RAM指令)。DS18B20有2个常用的功能指令:0x44:开始转换温度,转换好的温度会储存在暂存器字节0和1;最小频率不得小于750ms。0xBE:读RAM指令,依次读取RAM的9个字节的数据。DS18B20复位可以终止此进程。

4 上位机GUI监控模块
该模块是基于WINDOWS系统开发的上位机程序,通过系统预设的API函数与主机RS232底层端口进行通讯和捕获用户输入。用户可以通过用户UI界面自行设定预设温度值,通过主机RS232端口发送至将接收来自ROUTE终端节点的温度信息,并反馈至上位机程序。用户界面的设计采用跨平台的图形用户界面应用程序QT软件,采用第三方开源qextsertalport类,对串口进行读写操作。在WINDOWS下,需要使用其中的6个文件:qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win qextserialpo rt.cpp和win qextserialport.h定义的API接口函数,具体如下。
4.1 建立串口
serialPort=new ManageSedalPort;
connect(serialPort,SIGNAL(newDataReeeived(const QByteArray)),this,SLOT(slot_new DataReceived(const QByteArray)));
基于ManageSerialPort类新建一个串口对象serialPort,包含对串口名、波特率、数据位、起始位、停止位、校验位等变量的定义以及设定这些变量的相关函数。第二条语句是一个信号连接槽的函数,将serialPort的信号SIGNAL与槽SLOT相连接,在这种情况下,每当发送这个信号的时候,就会自动调用这个槽。
4.2 打开串口
k.JPG
包括了对串口常用参数:串口名、波特率、数据位、起始位、停止位、发送接收使能等的设置。
4.3 发送数据
serialPort->scndData(temp);
调用对象sendData,将变量temp的数据通过串口RS232发送。通过返回值来指示发送状态:1表示数据发送成功;2表示未打开串口;3表示发送使能但无发送数据。主要用于发送预设温度值,UI界面接收到用户设定的预设温度后,将其保存,并在用户按下发送按钮后,将数据通过RS232串口发送给
4.4 接收数据
QString decodedStr=in.readAll();
这里rcadAll()函数是使用在槽slot_new DataReceived(const QByteArraydataReeeived)中负责对数据接收的操作函数,由于之前在串口定义时,已经将信号与槽函数关联,因此,当串口缓冲区有数据时,会自动调用此槽函数,进行读串口操作,并通过readAll()函数读取串口缓冲区数据(即来自单片机DS18B20的温度数据),给临时变量decodeStr。
4.5 串口关闭操作
serialPort->close(); -调用close()子函数关闭串口对象
设计后的用户UI界面如图5所示,左部分为通信串口的设置,串口和波特率均可调整,默认使用COM1、38400波特率;中部为系统预设温度;右部为系统数据返回,当接收到来自串口的温度数据后,欢迎界面将显示系统当前温度。

5 结语
基于ZigBee模块设计的无线系统,具有ZigBee技术的低复杂度、低功耗、低成本等优点,同时由于ZigBee模块的高集成化,用户不需要了解复杂的ZigBee协议,所有的ZigBee协议的处理部分,在ZigBee模块内部自动完成,用户只需要通过串口传输数据即可,研发周期短,满足了产品快速入市,适应市场快速变化的需求,通过分置在多个地点的ZigBee温度采集模块,可以方便的实现多点分布式温度信号的采集。

本文引用地址:http://www.eepw.com.cn/article/153600.htm

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭