基于嵌入式WinCE的温室大棚控制系统*

2014-06-07 06:00陈静
阴山学刊(自然科学版) 2014年1期
关键词:开发板调用串口

陈静

(包头师范学院信息科学与技术学院,内蒙古包头014030)

基于嵌入式WinCE的温室大棚控制系统*

陈静

(包头师范学院信息科学与技术学院,内蒙古包头014030)

本文主要介绍了嵌入式系统在温室大棚中的应用研究,提出了基于嵌入式的温室大棚控制系统的设计思想,感知层采用SHT11采集温湿度信息,传输层利用Zigbee进行数据传输及无线传感网组网,最终在嵌入式系统Tiny6410开发板上实现数据汇总及显示。本文重点研究基于嵌入式系统Wince的数据采集、串口通信及控制系统的设计部分。

嵌入式系统;WinCE;Zigbee-CC2530;串口

随着嵌入式系统技术的应用与发展,温室大棚技术不断更新,推动了我国农业由过去的粗犷性农业向精准型农业转型。温室大棚中环境信息如温度、湿度、光照度、二氧化碳浓度等环境因素对作物的生长发育有极大的影响。本文以三星S3C6410为微处理器,采用SHT11数字式温湿度传感器,通过Zigbee处理、传输各传感器采集到的温湿度信息,通过串口与嵌入式-WinCE应用系统相连,最终显示各点温度湿度信息及图表显示,完成ARM11多点温湿度检测传输系统的设计与实现[1]。

1 设计思想

本系统采用SHT11温湿度传感器采集的温度、湿度数据,通过Zigbee组网发送到协调器上,协调器通过串口发送到PC机,在PC机上通过串口读取到数据,应用程序处理读到的数据,完成显示、存储、绘制图像等功能。最后将程序下载到Tiny6410开发板上,硬件电路框图如图(1)所示。

图1:硬件电路框图

1.1 SHT11温湿度传感器

SHT11传感器是全校准数字输出相对湿度、温度;温度值分辨率为14位,湿度值分辨率为12位,可编程降至12位和8位;具有露点计算输出能力,有极高的可靠性和卓越的长期稳定性,无需外围元件,采用工业标准I2C总线接口,可靠的CRC传输校验。

1.2 Zigbee技术

Zigbee技术[2]是一种短距离无线通信技术,其主要特点是成本低、传输距离短、自组织、低数据传输速率及低功耗。本文采用Zigbee-CC2530芯片,基于TI的IAR 7.6a与Zigbee207-Zstack协议栈进行开发,Zigbee协议栈包含物理层、介质访问层、网络层、应用程序支持子层,应用层。IEEE802.15.4定义了前两层,而Zigbee联盟定义了后三层。Zigbee协议栈是将各层协议集成,以API函数供用户调用,开发者需要关心的是数据在应用层通过什么函数,应用哪些方式把数据接收或发送。

Zigbee-CC2530实现无线数据通信是一般包含三步:组网、发送和接收。通过调用协议栈组网函数、使终端节点(负责采集温湿度值)加入网络,由协调器节点负责实现网络的建立和终端加点加入;通过调用协议栈的无线收发函数,实现数据的发送与接收,协议栈实际上就是一个小的操作系统,采用任务轮询的工作方式执行命令。

网络层主要采用基于ADHOC技术的网络协议,组网方式主要包含星型网、网状网和树状网,本文对协议栈进行初始化用到的函数是basicR FInit(),用来设置模块的传输通道,短地址等;调用basicRFSendPacket()函数发送数据;以及bssicRFReceive()接收数据,同时存入buffer中,最后通过UART串口传送至嵌入式-Tiny6410硬件开发平台,通过WinCE接收显示数据。

2 WinCE下的串口通信实现

在WinCE下运行的程序,一般是在Windows环境下应用EVC平台开发,然后下载到嵌入式设备中。串口在WinCE中属于流接口设备,可以像对文件一样对串口进行打开、关闭、读写等操作。WinCE下的串口函数和Windows下的串口函数基本相同,但在以下一些方面有所不同:

(1)WinCE只支持Unicode;

(2)WinCE中有些自己特有的控件,可以方便编程。

《左传》僖公二十四年富辰谏襄王述周公封建,有云:“昔周公吊二叔之不,故封建亲戚,以蕃屏周:管、蔡、郕、霍、鲁、卫、毛、聃、郜、雍、曹、滕、毕、原、酆、郇,文之昭也;邘、晋、应、韩,武之穆也;凡、蒋、邢、茅、胙、祭,周公之胤也。”[4](第6册,P255)至少在西周时期,就已经形成了以宗族拱卫国家的观念。此后这一观念一直贯穿整个中国历史。

(3)EVC不支持重叠I/O操作。

本文是将Zigbee采集到的温湿度数据通过串口与嵌入式开发板Tiny6410相连,在WinCE下开发串口通信,包含下面一些步骤:

步骤1:打开端口并进行初始化。在EVC中把设备当文件来处理,故使用CreateFile()函数打开端口。如果打开成功,则会返回打开串口的句柄。成功打开一个端口之后,需要对端口进行初始化。调用端口通信函数SetupComm()设置串口的发送和接收缓冲区buffer的大小,调用GetCommTimeout()函数设置串口超时;然后调用GetCommState()函数获取当前串口的默认并返回一个DCB结构体地址,通过给这个DCB结构体各成员赋值来重新设定串口状态;最后调用PurgeComm()函数清空串口的发送接收缓冲区。

步骤2:对串口进行读写操作。成功配置好串口参数后即可调用函数ReadFile()和WriteFile()对串口进行读写操作。在通信的过程中应用ClearCommError()函数清除可能出现错误导致程序无法继续运行的问题。

步骤3:关闭串口。使用完串口后必须关闭串口,调用CloseHandle()函数进行关闭处理。

3 嵌入式操作系统WindowsCE下程序实现

在WinCE下的编程依然是在Windows下的编程[3],而Windows走的是消息机制,原始的SDK下编程,使用的是微软提供出来的一套由几千个API函数接口,该接口提供的风格是C语言形式的,如果使用传统的SDK风格编程,在小的程序上看不出什么问题,要是一个大的项目上,从软件架构上考虑,传统的C语言就是显得捉襟见肘了,不利于程序的维护工作。

文档类对储存数据、对数据进行处理,而视图类进行数据的显示,视图中需要显示的数据从文档类取得,而文档类来维护这套数据。本文实现的过程如下:

其次,界面控件的添加。在视图中创建一些标签和文本框,用于显示数据,界面的显示走的是WM _PAINT消息,而要定时刷新数据就是要用到定时器,WM_TIMER消息,温度的二维走势图的绘制,由于是动态的数据每次接收的数据都是在不断的细微的变化中,所以在文档类的线程函数完成对数据的处理,这样在视图中就是不用关心数据的变化的问题,直接可以用文档类中的数据画图就是可以了。

最后,数据库对数据的存储问题。嵌入式编程不同于应用程序,应用程序中使用的数据库大都是ORACLE、DB2、MySql、Sql Server等数据库[4],而嵌入式编程使用的都是轻便型的数据库,数据库的访问一个是远程访问、一个就是运行的应用程序的设备中安装数据库软件,这里采用的是WinCE自带的数据库,来完成数据的存储任务工作,这样更便利。

3.1 温度的二维走势图的绘制

在文档类中的ThreadFuncData()线程函数[5]处理中刷新数据,算法思想描述:目的是每秒定时绘制图像,数据要每秒要刷新一次,接收数据的时候就是按每秒来接收的数据,根据界面的大下绘制出22个点,这样本文定义一个数组[22],每次赋值一个值,数组满了就把后面的值赋值给前面一个,最后的一个存储新值。代码片段如下:

3.2 绘制图像代码

绘制图像代码思路:初始坐标的点是第一个点,CDC::Moveto函数完成定义坐标点,而CDC::Line-To函数的特点是坐标点的更新,这样就是能一次用CDC::LinTo函数划线了,根据温度的区间定义好坐标点。

3.3 数据库的连接及控件按钮的实现

在WinCE中,如果想把数据库存储在文件中,也就是要使用数据库卷,则必须先装配数据库卷,并且在关闭数据库后,还应卸载数据库卷。另外,此数据库系统不同于其他的数据库,没有用到sql语句。而是用其自带的数据库字段类型,和一些API函数来操作数据库系统的[5]。

存储数据的按钮和显示存储数据的按钮是在菜单项下,用户用鼠标点击菜单的消息属于WM_ COMMAND消息,可以捕获该消息,根据菜单的ID不同,去调用不同的消息处理函数。程序结构代码如图(2)所示,显示效果如图(3)所示。

图2:定义结构的代码段

图3:数据库存储数据的显示效果

4 Tiny6410定制WinCE系统

完全空白的SD卡是不能直接启动6410开发板的,必须先在PC机上使用特殊的烧写软件把BIOS(也可以称为bootloader)写入SD卡才可以,并且写入的这个BIOS是无法在电脑上直接看到的。三星公司已经提供了这样烧写程序:IROM-SD_Fusing _tool.exe,可以找到它的源代码,目前大部分6410开发板均使用这个软件,但这个烧写软件有很多的局限性和不安全性。

本系统是在Tiny6410开发板上定制WinCE系统。将开发板上自带的光盘中的images文件夹复制到SD卡文件中,双击打开“imagesFriendlyARM.ini”文件,找到”OS=Linux”,并改为”OS=CE6”保存修改,取出SD卡插到开发板上;把开发板上S2开关设置为“SDBOOT”,并插入SD卡;上电开机这时可以听到开发板上蜂鸣器”滴“的一声,同时板上的LED4开始点亮并闪烁;静听秒表跳动的声音,可以注意到LED3,2,1逐个开始闪烁亮起,直到听到蜂鸣器”滴滴“两声,所有的LED满格亮起,随后不停的跳马启动,就说明系统已经烧写完毕;把开发板S2开关设置为”NAND”启动,这时重启系统就可以看到WindowsCE已经安装好了,在WindowsCE上正常运行时的显示效果如图(4)所示,可以清晰的读取到温室大棚当前的温度值、湿度值、土壤的温度值及土壤的湿度值;通过曲线可以看出当前数据的走向,同时从数据库中可以调取到一段时间以内的所有温度湿度数据,可以对农作物的种植、浇灌、培育起指导作用。

图4:嵌入式Wince下运行界面

5 结束语

本文重点研究了在WindowsCE下的串口实现过程,二维图像绘制及WindowsCE下数据库调用的连接及控件的实现过程,对WinCE下编程应用具有实际的指导意义。通过对温室大棚温湿度控制系统的设计,解决了大棚内温湿度采集控制及显示问题,使用起来跟Windows操作系统类似很容易上手实现,节省了很大的人力、物力和财力,使得本设计具有很高的实用性和可扩展性。

[1]侯晓茜.基于嵌入式系统的温室大棚参数采集与传输[D].沈阳工业大学硕士毕业论文,2013,02.

[2]黄凤娟.基于单片机的温度测控系统在温室大棚中的设计与实现[D].武汉工程大学毕业论文.2006.10.1.

[3]李国政;张强;杨宏卫.ARM-Linux嵌入式系统在农业大棚中的应用[J].现代电子技术,2008,3.

[4]张莉莲.基于S3C2440的温室大棚多点温度检测系统的研究[J].安徽农业科学,2010,7.

[5]Jeff Prosise.MFC Windows程序设计[M].北京:清华大学出版社,2007,3.

The Greenhouse Control System Based on Embedded WinCE

CHEN Jing
(College of Information Science and Technology,Baotou Teachers College;Baotou 014030)

This paper mainly introduced the implication of embedded system on greenhouse,proposed the design idea of greenhouse control system based on Embedded system.The perceptual layer using SHT11 to gather temperature and humidity information,the transport layer using Zigbee for data transmission and wireless sensor network,and at last the paper displayed and summarized the data on the board of embedded system 6410.The paper focused on the data acquisition based on Embedded system WinCE software,serial communication and the design of control system.

Embedded system;WinCE;Zigbee-CC2530;Serial communication

TP274

A

1004-1869(2014)01-0044-04

2013-12-20

包头师范学院青年基金资助项目(BSYKJ2011-24)

陈静(1981-),女,汉族,硕士研究生,讲师,研究方向:现代信号处理、嵌入式系统及短距离无线通信技术在物联网中的应用研究。

猜你喜欢
开发板调用串口
浅谈AB PLC串口跟RFID传感器的通讯应用
基于STM32H7的FDCAN通信系统设计与实现∗
核电项目物项调用管理的应用研究
浅析单片机开发板的设计与制作
基于系统调用的恶意软件检测技术研究
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
利用RFC技术实现SAP系统接口通信