APP下载

基于TinyOS与嵌入式技术的智能家居控制系统※

2016-02-26李春萍陈新

单片机与嵌入式系统应用 2016年1期
关键词:智能家居

李春萍,陈新

(福州大学 物理与信息工程学院,福州 350108)



基于TinyOS与嵌入式技术的智能家居控制系统※

李春萍,陈新

(福州大学 物理与信息工程学院,福州 350108)

摘要:通过TinyOS组网技术构建无线传感网,分析智能家居控制系统的功能需求,确定基于Qt和Linux的软件设计方案,实现小型的智能家居控制系统;详细介绍了硬件平台的构建和汇聚节点程序、终端节点程序以及Qt用户界面的软件设计流程。

关键词:TinyOS;Qt;智能家居

引言

社会发展使得人们对生活质量的要求越来越高,传统家居模式已经不能满足人们对舒适生活的要求,智能家居系统应运而生。智能家居系统是指综合使用通信、传感器及控制技术实现家居系统的人性化、智能化的集成管理系统,目的在于创造一个安全、便利、环保和舒适的生活环境,使得人们在工作压力剧增的现代社会能享有更便捷舒适的生活方式[1]。

本文开发了以AM335X为核心的嵌入式智能家居控制平台,采用继电器板、亮度控制板、马达控制板和智能电表等集成模块,构建无线传感网硬件平台。用户不仅能够在嵌入式平台上实时查看传感器采集的相关温湿度信息,进行环境监控,还能通过平台对电器进行无线控制,实现对电器的管理。

1硬件设计

智能家居控制系统硬件由无线传感网模块和嵌入式控制模块组成。其中无线传感网模块由带有CC2420的无线传感器节点和相应的控制电路板智能电表、马达控制板、亮度调节板、继电器板等构成。硬件框架如图1所示。

图1 硬件框架图

1.1节点设计

图2 CC2420外围电路图

无线传感器节点由传感器、无线收发模块、微处理器组成,其中无线收发模块采用TI公司的CC2420芯片。节点的微处理器采用高性能、低功耗的AVR 8位微控制器ATmega128L,它基于RISC精简指令结构,具有片内128 KB的程序存储器和4 KB的数据储存器,可以满足系统数据处理的要求[2]。CC2420外围电路如图2所示。

图3 节点模块逻辑框图

传感器节点集成了温度、湿度、照度等多种传感器,可以采集环境参数,并通过设置环境参数来智能控制各种家电。电器控制部分以亮度控制板为例。亮度控制板利用三端双向可控硅开关元件控制电流,电流的频率为60 Hz,频率分为“+”区和“-”区,利用节点模块获得两个区之间的交叉点,根据从交叉点开始经过多长时间后驱动三端双向交流开关来控制电流。如果检测到交叉点就驱动三端双向交流开关,则灯泡上将流过最大电流;如果不驱动,则不会有电流流过,控制信号由WSN传感器节点的TinyOS程序产生。节点模块逻辑框图如图3所示。

1.2控制器设计

系统控制器采用OK335xD开发板,其核心板为FET335xD。核心板基于TI公司Sitara系列的ARM处理器AM335X,在设计上采用高集成度的系统模块形式,集成了容量为512 MB、频率为800 MHz的DDR3内存芯片、容量为256 MB的SLC NAND Flash存储芯片和TI公司专为AM335X处理器匹配设计的电源管理芯片。另外核心板模块上还添加了硬件看门狗,使系统运行更稳定[3]。开发板具有丰富的外围资源,包括3路UART、4路USB 2.0 HOST、1路千兆以太网等,同时还配置7寸TFT LCD,便于用户交互。控制器系统框图如图4所示。汇聚节点将接收的数据通过UART发送给控制器进行数据处理和存储。控制器将控制信息发送给汇聚节点,并转发给智能电器模块,进行家电控制。

2软件设计

软件设计包括汇聚节点程序设计、终端节点程序设计和控制器Qt界面设计。

2.1软件开发平台

2.1.1TinyOS技术

汇聚节点和终端节点采用TinyOS技术进行开发,它是加州大学伯克利分校的David Culler领导的研究小组为无线传感网络量身定制的嵌入式操作系统,基于NesC语言编程[4]。

TinyOS是基于组件的架构方式,能够快速实现各种应用,并且采用模块化设计,程序核心比较小,能够突破传感器存储资源少的限制,使得TinyOS能够有效地运行在无线传感器网络上并执行相应的管理工作。其层次结构如同一个网络协议,底层硬件负责接收和发送最原始的数据包,综合硬件层组件负责数据编码、解析和参数传递,上层软件组件负责数据打包、路由选择和数据传递[5],其中上层组件包括主组件和应用程序组件。

NesC语言支持组件化编程,它把组件化、模块化的思想和基于事件驱动的执行模型结合起来,通过组织、命名和连接组件形成一个嵌入式网络系统,可以很好地支持TinyOS的并发运行模式。

图4 控制器系统框图

2.1.2Qt库

控制器设计采用三层体系结构。最底层为Linux操作系统,为应用程序提供统一的系统调用接口来访问硬件设备,并且提供内存管理机制和多任务处理机制。中间层为API接口层,采用qt-extended-opensource-src-4.5.3作为GUI用户界面设计库[6]。Qt是一个完整的C++应用程序开发框架,具有丰富的API接口,而且所提供的API在所有的平台上都是相同的,可以实现“一次编写,随处编译”,有利于程序的开发调试和应用扩展。最上层为应用程序层,针对所需功能,采用Qt作为应用程序框架进行设计。

2.2汇聚节点程序设计

汇聚节点在系统中起到沟通终端节点和控制器的作用,与控制器进行串口通信,与终端节点进行RF无线通信。汇聚节点所用到的组件及其模块关联结构如图5所示。其中SerialActiveMessageC为串行通信组件,具有数据发送相关的AMSend接口和数据接收相关的Receive接口等,而ActiveMessageC为RF无线通信组件,提供AMSend、Receive、Packet、AMPacket等大多数通信接口。

图5 汇聚节点程序模块关联结构图

在TinyOS中,通过串行通信向控制器传送数据的数据包格式如下所示:

其中0x7E控制字表示串行通信的开始和结束,0x45表示其后没有ACK的数据类型(如果为0x44则表示要求回应),Payload为有效负载,有效数据之后为CRC校验字段。

控制器向TinyOS传送数据的格式需要变更串行通信格式,插入第3个字节表示数据包在传送Sequence的编号,新数据包取0。

2.3终端节点程序设计

终端节点负责采集环境信息,并控制智能电器。终端节点的程序流程如图6所示。

图6 继电器终端节点程序流程图

首先进行射频协议栈初始化主要是对射频相关寄存器进行设置。初始化步骤为:先复位CC2420,打开晶振振荡器,稳定之后写入寄存器的值和地址识别码。部分代码如下:

CC2420Reset();//复位CC2420

CC2420ExternalOscillator();//开启晶体振荡器

CC2420SetShortaddr(TOS_NODE_ID);//设置短地址

CC2420ControlSet();

//设置控制寄存器

其中设置的控制寄存器包括MDMCTRL0L和MDMCTRL0H,打开自动应答和地址识别,IOCFG0=0x7E时设置FIFOP门限至最大值127。

然后采集温湿度等传感器信息,紧接着对接收到的TinyOS数据包进行解包,分析控制信息,进行电器控制,并对传感器信息封装转发。

以继电器板为例,分析有效数据包字段信息。

终端节点接收控制信息数据包,经过拆包,核心数据为4个字段,如下所示:

typedef struct _user_header{

uint8_t id;

uint8_t cmd;

uint8_t sub;

uint8_t length;

}user_header_t;

将ID字段和终端节点的TOS_NODE_ID进行比较,来判别该终端节点是否应该响应控制信息。Cmd字段为1,表示请求接收数据;为2,表示控制电器,这时检查sub字段,根据各种sub字段进行电器控制,其中Length字段为设置的定时字段长度。

终端节点向控制器反馈的传感器信息如下:

typedef struct _sensor_packet{

user_header_t uh;

sens_data_t sd;

ch0_data_t ch0;

ch1_data_t ch1;

}sensor_packet_t;

其中传感器数据为:

typedef struct _sens_data{

uint16_t photo;//照度

uint16_t temp;//温度

uint16_t humi;//湿度

uint16_t infrared;//红外线

uint16_t battery;//电池

}sens_data_t;

控制器接收到反馈信息,进行处理并显示。

2.4Qt软件设计

2.4.1交互界面设计

Qt GUI的基类有3种,QWidget、QDialog、QMain Window,本文采用QMain Window作为基类设计登陆界面。QMain Window类提供具有菜单条、锚接窗口和状态条的主应用程序窗口,采用菜单栏的按钮切换智能家居控制窗口,智能家居控制窗口以QDialog为基类进行设计,应用到的控件包括Lable控件、PushButton控件、TextBrowser控件等。

2.4.2信号-槽机制

信号-槽机制是Qt的核心机制,通过connect()进行关联,应用于对象之间的通信。当对象改变其状态时就发射信号,无需理会谁将接收该信号。而槽用于接收信号,但其为普通的对象成员函数,这就实现了真正意义上的信息封装,确保对象被当做真正的软件组件来使用。

2.4.3串口数据通信编程

系统通过串口连接汇聚节点并控制,因此Qt设计涉及串口通信机制。在Qt类库中并没有特定串口基础类,设计中采用第三方的QextSerialPort类,它是一个跨平台的串口类,可以很方便地在Qt中对串口进行读写操作。在Linux平台下,使用QextSerialPort类时需要添加qextserialbase.h、qextserialbase.cpp、posix_qextserialport.h和posix_qextserialport.cpp四个文件,读取串口数据时采用轮询的方式,在打开串口设备的过程中需要进行相关配置。配置程序略——编者注。

通过输入文本控件手动配置参数,打开串口之后便可以通过readALL()和write()函数进行读/写数据操作。

3测试结果

首先在OK335xD上移植Linux操作系统,并挂载

NFS根文件系统,然后移植Qt库,并安装交叉编译环境,将编译成功的Qt程序烧写到开发板上,最后连接好硬件,启动应用程序,进行测试。在控制界面中,用鼠标按下按键,就可以打开智能电器并获取当前的环境参数。测试结果略——编者注。

结语

在实验室环境下,通过对人们生活需求的研究,应用TinyOS技术和Qt编程技术实现了一个小型的智能家居控制系统。利用传感器实时采集环境信息,通过汇聚节点转发给控制器进行家电控制,应用Qt编程技术进行用户界面开发,具有优良的跨平台特性和丰富的API接口,可以实现美观、人性化的交互界面设计。

参考文献

[1] 李菲.智能家居技术浅谈[J] .科技致富向导,2015(5):180.

[2] 代忠,樊晓光,万明,等.基于射频芯片CC2420的ZigBee无线通信节点设计[J] .传感器世界,2006(5):41-44.

[3] 梁永恩,万世明.基于S3C6410的智能家居控制系统的设计[J] .计算机与数字工程,2014(6):1104-1107.

[4] 王亚平,张宝华,董丽荣.基于WSN与TinyOS技术的智能温室监控系统设计[J] .江苏农业科学,2014(8):408-410,418.

[5] 刘爽,吴蒙.基于IEEE 802.15.4c TinyOS平台的移植研究[J] .计算机技术与发展,2014(11):114-117.

[6] 杨晶,黄俊,吴福海.基于Qt的智能家居管理软件设计与实现[J] .电视技术,2015(4):101-104.

李春萍(硕士研究生),主要研究方向为嵌入式应用、通信工程;陈新(教授),主要研究方向为信号与信息处理、图像处理、模式识别、生物医学工程。

陈君毅、林钦坚、宾显文(硬件研发工程师),主要从事嵌入式硬件平台研发;陈伟(中级工程师),研究方向为嵌入式系统硬件电路设计、嵌入式系统解决方案等。

Intelligent Home Control System Based on TinyOS and Embedded Technology※

Li Chunping,Chen Xin

(College of Physics and Information Engineering,Fuzhou University,Fuzhou 350108,China)

Abstract:In the paper,TinyOS network technology is used to construct wireless sensor network,and the need of intelligent home control systems is analyzed.Then a small intelligent home control system is designed using the software scheme based on Qt and Linux.The construction of hardware platform,the programs of sink node and terminal node,and the software design process of Qt user interface are introduced.

Key words:TinyOS;Qt;intelligent home

收稿日期:(责任编辑:薛士然2015-07-09) (责任编辑:薛士然2015-08-06)

中图分类号:TP27

文献标识码:A

猜你喜欢

智能家居
智能家居在室内设计中的应用研究
基于PLC的智能家居控制系统研究
智能家居数据采集及应用研究
谈谈前景美好的智能家居
智能家居中ZigBee与WiFi共存时的干扰与性能评估
基于Zigbee的无线通信技术在智能家居中的应用
智能家居发展或将实现弯道超车
基于物联网的智能家居控制系统设计
智能家居未来感初体验
关于智能家居真正需求的探讨