APP下载

基于无线射频的智能家居控制系统设计与实现

2013-05-11余小华郑魏平

微型电脑应用 2013年10期
关键词:路由器智能家居短信

余小华 郑魏平

0 引言

智能家居是一门新兴的综合性交叉学科。智能家居可以定义为一个过程或一个系统,利用先进的计算机技术、网络通讯技术、综合布线技术,将与家庭生活有关的各种子系统,有机地结合在一起。智能家居的目标是用各种方法或设备使家居生活实现自动化、智能化,使家居变得更加舒适、安全和有效,从而提高人们的生活质量。

随着移动互联网络的迅猛发展,目前3G网络基本覆盖全国,人们通过平板电脑和智能手机随时随地接入网络,感受到网络带给我们的便捷。因此利用移动网络或者GSM短信功能实现远程监视和控制功能的优势非常明显[1]。智能家居已成为现代家庭装修的大势所趋。

1 智能家居控制系统方案的设计

本系统包含三大模块:智能家电控制模块,温湿度监控模块,远程监控模块。针对智能家居系统的需求分析,系统的总体设计,如图1所示:

图1 系统设计原理图

利用SIM300 GSM模块、nRF24l01射频芯片与STC12C5A60S2单片机以及路由器组建基于微型Linux系统的核心控制器,同时利用nRF24l01射频芯片、单片机和继电器模块组成控制终端,通过nRF24l01芯片以2.4G频率将各从机与控制器进行无线组网。

用户可通过网络可视化软件下发指令或者手机发送短信指令到核心控制器,核心控制器解析短信或控制指令并通过无线射频模块发送指令到指定的终端,终端收到指令后将根据指令控制继电器的耦合和分离实现用电器的开启与关闭,并将控制后的状态反馈给核心控制器,控制器将实时状态通过网络或者短信告知用户控制成功与否,从而实现对智能家居的远程控制。

2 系统硬件的设计

前面通过对家居系统进行需求分析确定了本设计的总体方案。本节将在总体方案设计的基础上实现系统的硬件电路。系统由五大模块电路组成:GSM模块与单片机STC12C5A60S2的串口2通信构成的GSM收发控制终端电路、路由器的模拟串口与单片机STC12C5A60S2的串口1通信构成的网络控制终端电路、无线射频芯片与单片机STC12C5A60S2的模拟SPI接口通信构成无线射频数据传输控制电路、继电器模块与单片机STC89C52RC和无线射频芯片构成家电控制电路、温湿度传感模块与单片机STC12C5A60S2的I/O通信构成环境监测电路[2]。

(1)单片机。本系统核心控制主机采用STC12C5A60S2单片机,STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,具有60K在系统可编程Flash存储器。满足核心主机程序量大,通信接口多的要求。在本系统中,串口1连接路由器,串口2连接GSM模块,实现同步控制。从机节点采用STC89C52RC单片机,该单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案[3]。

(2)GSM模块。GSM模块采用SIM300模块,SIM300是小体积即插即用模组中完善的三频/四频*GSM/GPRS解决方案。使用工业标准界面,使得具备GSM/GPRS 900/1800/1900MHz功能的SIM300以小尺寸和低功耗实现语音、SMS、数据和传真信息的高速传输。SIM300使用串口通讯的方式和外部连接,通过串口数据的交换我们就可以使得SIM300模块去执行命令了。以下是与本设计短信收发有关的AT指令,如表1所示:

表1 短消息AT指令

(3)无线射频芯片。无线射频传输模块主要采用nRF24L01芯片,nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。具有极低的电流消耗:当工作在发射模式下发射功率为0dBm时,电流消耗为11.3mA,接收模式时为12.3mA,掉电模式和待机模式下,电流消耗更低[4-6]。

(4)温湿度传感器。本系统采用的DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性[7-9]。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。产品为4针单排引脚封装,连接方便。

3 系统软件的设计

本设计采用顺序执行的方式将各个软件子模块置于主程序的大循环中。当有外部触发时能进入相应的子程序执行相应的功能。系统软件总设计流程,如图2所示:

图2 系统软件设计流程图

3.1 短消息收发程序的设计

单片机对SIM300模块的控制采用AT指令。单片机可以通过正确的AT指令对SIM300模块进行初始化和短消息的接收发送。对短消息的控制共有两种模式:PDU模式和Text模式。Text模式不支持中文,因此,本系统使用PDU模式进行短消息的接收和发送。单片机通过以下系列AT指令对短消息进行控制。

3.1.1 接收短信息

SIM300初始化:首先设置PDU格式读出短信AT+CMGF=0,设置0代表PDU模式,是回车符号,也就是0x0d。指令正确则模块返回OK,是回车换行符号。然后读取第一条短信AT+CMGR=1,我们将得出字符串分解如下:

0891683108200075F12410A8➔短信中心号码(固定不变);2125105308558353➔发送方源号码;0008➔表示使用Unicode编码;31508061441323➔发送时间13年5月8日16时44分31秒;0E➔信息长度;4E3B4EBA003A➔飞信特有的昵称名;5F00542F706F0031➔短信内容(开启灯1)Unicode编码。

3.1.2 发送短消息

用PDU模式发送短消息,则首先发送短消息数据长度。AT+CMGS=。等待SIM300模块返回ASCII字符'>',则可以将PDU数据输入,PDU数据以(也就是0x1a)作为结束符。短消息发送成功,模块返回OK。发送数据格式例如,需要发送汉字“灯1已开启!”到手机13580553835,则首先发送数据串AT+CMGS=27,然后等待ASCII字符'>',然后输入PDU数据。

发送短信关键代码:

Uart2Sends("AT+CMGF=0 ");//发送指令指定发送的是中文短信;

NRFDelay(1000);//延时1秒;Uart2Sends("AT+CMGS=27 ");//发送长度;

Uart2Sends("0011000D91");//短信包头;Uart2Sends(pt);//源发送指令号码;

Uart2Sends("0008A00C706F00315DF2517395EDFF01");//灯1已关闭!

R_S_Byte(0x1a);//回车符

3.2 无线射频数据传输程序的设计

本系统中,各控制器均没有硬件的SPI接口,所以只有通过通用的I/O口来模拟,由于硬件上已经把nRF24L01的SPI连接到了P0.1~P0.6口,当MCU欲与nRF24L01进行通信时,通过P0口模拟nRF24L01的SPI总线时序来完成。本系统中nRF24L01工作模式为增强型ShockBurstTM,这种模式可以使得双向链接协议执行起来更为容易、有效。典型的双向链接为发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失一旦数据丢失则通过重新发送功能将丢失的数据恢复。同时也使得系统的程序编制会更简单,并且稳定性也会更高。增强型的ShockBurstTM模式可以同时控制应答及重发功能而无需增加MCU工作量。

3.2.1 nRF24L01数据发送程序的设计

数据发送前对SPI通信接口初始化,然后,将NRF24L01寄存器配置为发送状态,接着写入接收端地址、要发送内容、启动NRF24L01发送,根据应答信号判断是否发送成功,不成功则重复地址和内容写入并发送的步骤。

发送数据通过SPI通信送入NRF24L01的数据寄存器。

CE=0;

NRFWriteTxDate(W_REGISTER+TX_ADDR,RxAddr0,TX_ADDR_WITDH);//写寄存器指令+接收地址使能指令,接收地址,地址宽度

NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,RxAddr0,TX_ADDR_WITDH);//为了应答接收设备,接收通道0地址和发送地址相同

NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_WITDH);//写入数据

CE=1;NRFDelay(5);//保持10us秒以上

3.2.2 nRF24L01数据接收程序的设计

数据发送前对SPI通信接口初始化,然后将NRF24L01寄存器配置为接收状态,接着写入接收地址、储存数组首地址,判断是否收到数据(RX_DR为1时表示接收到数据),收到则读出数据并处理。

接收数据通过SPI通信从NRF24L01中读取出来:

if(RX_DR)//判断是否接收到数据

{RX_P_NO=sta&0x0e;//获取通道号CE=0;//待机NRFReadRxDate(R_RX_PAYLOAD,RevTempDate0,RX_DAT A_WITDH);

//从RXFIFO读取数据通道0

NRFWriteReg(W_REGISTER+STATUS,0xff);//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标

CSN=0;NRFSPI(FLUSH_RX);//用于清空FIFO!CSN=1;}

3.3 路由器的设置

因为路由器在本系统担任网络数据传输的重要角色,因此独立出来说明。路由器自带的系统为原厂固件,并不满足系统设计的功能需要,所以需要把系统刷为OpenWrt,然后将路由器电路板中的TTL电平设置为虚拟串口与单片机进行通信,同同时在路由器配置TCPServer服务,为客户端提供接口。

路由器固件更新后,连上外网,通过在线更新安装插件:ser2net.ipk。这是一个可以通过个人PC向路由的指定端口发送数据,然后路由原封不动的将数据发送到路由的TTL接口的程序。

3.4 上位机程序的设计

为了使系统具有较好的用户体验,本系统给用户提供一个具有良好人机交互界面的PC端软件,软件采用C/S架构设计,采用Visual Studio 2010作为开发工具,开发语言为C#,使用.NET Framework3.5类库。运用socket技术、多线程技术保证与核心控制器的稳定通信。

3.4.1 Socket连接

所谓Socket通常也称作“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为3个步骤:服务器监听、客户端请求、连接确认。

与核心控制器建立socket连接代码:

Socket c=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//创建一个Socket对象

void tcpconnet()

{try{IPAddress ips=IPAddress.Parse(ControlIp.ToString());

//("192.168.1.1");

IPEndPoint ipe=new IPEndPoint(ips,Convert.ToInt32(Port.ToString()));

//把ip和端口转化为aIPEndPoint实例

c.Connect(ipe);//连接到服务器

}

3.4.2 多线程的运用

每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

本系统软件是实时接收来自核心控制器的数据,所以需要新建一条后台线程专门负责接收数据。新建线程及方法委托关键代码如下:

System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(ReceiveDataThread));

t.IsBackground=true;//后台运行

t.Start();//启动进程ReceiveDataThread;

3.4.3 摄像头控件的调用

系统中采用的摄像头具有云台控制功能,厂家也提供了可进行二次开发的ocx控件,要调用该控件,需先向系统注册控件,将控件放到工程目录下,在运行中输入命令:c:windowssystem egsvr32.exe+控件的绝对路径,系统提示注册成功后,则可在VS中的工具箱COM组件中找到该控件,再将其拉到程序界面中即可实现调用[10-11]。

连接监控代码:

axS151_emu1.ConnectSvr("admin","admin","000697100364",CameraIp,yuntai,1,1,2);

axS151_emu1.SetPTSpeed(80,30);

云台控制代码:

axS151_emu1.PTZRControl("L1");//向左转;

axS151_emu1.PTZRControl("R1");//向右转;

axS151_emu1.PTZRControl("U1");//向上转;

axS151_emu1.PTZRControl("D1");//向下转;

axS151_emu1.SetPTRange(range);//设置云台速度;

4 测试

本课题智能家居系统的测试首先以单元测试为主,在完成了各个功能模块后对整个系统进行综合测试,确定个模块间的兼容性,以保证整个系统的性能和稳定性。在本章节中将对灯光/家电控制系统测试,温湿度监测模块测试,视频监控测试,短信收发测试,PC端软件测试。测试环境为室内常温,电磁环境为城市密集居民区。

(1)移动电话向智能家居GSM模块的电话号码“1521****590”发送短信进行家电控制,短信指令主要有以下四个:开启灯1,关闭灯1,开启灯2,关闭灯2。

(2)利用PC端软件,打开后能否连接上核心控制器,是否有报错,能否连上视频监控,能否获取到温湿度,能否对家电进行控制并显示实时状态。

测试前准备工作:首先把GSM模块、单片机、路由器以及各个功能子模块连接好,并确定各信号线连接正确且稳定;在SIM300模块里装SIM卡,手机号码为1521****590。测试实验环境,如图3所示.

图3 测试实验环境图

4.1 家电灯光控制系统的测试

测试条件:首先用手机编写短信内容“开启灯1”发送至1521****590,观察家电控制模块1上的继电器旁边的红灯是否亮起。

测试结果:GSM接受模块接收到“开启灯1”指令后,从机1上继电器旁边的红灯亮起,说明控制成功,同时手机收到反馈短信“灯1已开启!”效果,如图4所示:

图4 短信控制家电效果图

4.2 PC端控制软件测试

测试条件:首先打开软件看能否连接上核心控制器,获取到当前的温湿度。然后连接监控看能否连接成功,再而控制云台,观察云台是否移动,最后点击灯1,灯2的开关控制,观察控制模块是否控制成功。

测试结果:软件打开后自动连接上核心控制器,并获取到实时温湿度,监控连接成功,云台控制灵敏,灯光控制成功并准确收到反馈信息,效果,如图5所示:

图5 PC端控制软件效果图

4.3 PC端控制软件与短信控制联动测试

测试条件:首先打开PC端控制软件开启灯1,观察控制模块是否控制成功。然后用手机发送“关闭灯1”到GSM模块,观察灯1的状态,是否关闭成功,在收到“灯1已关闭!”同时,看PC控制端灯1状态是否已变为关闭。

测试结果:软件打开后对灯1控制成功并准确显示状态信息,同时短信控制成功后,在收到反馈短信的同时,PC端灯1状态实时更新。

5 总结

本设计以实用为理念,以节约成本为前提,以实际工作需要为目的,更多地从实际应用的角度考虑。本文在以下3方面做了一些尝试性的工作并获得了实用型专利号:利用nRF24l01射频芯片进行组网,具有低功耗,低成本的优势,符合当前社会节能减排的要求;利用使用OpenWrt系统的无线路由器作为主机,既可以实现控制系统的功能,还可以继续当无线路由器使用,节省了成本的同时也使无线路由器得到高效利用;从节点体积较小,可以将其放置到86电盒中,在低成本的前提下,便于普通家庭进行改造变成智能家居,无需另外铺设线路以及更换无线插座。旧物改造,符合绿色环保的主流;多种方式进行远程监控,可以利用应用软件、短信和访问网页多种方式进行远程控制,满足各种用户的需求,保障系统不受时间和空间的限制。随着科技的进步、时代的发展,相信智能家居系统发展会越来越迅速,实现的功能也越来越强大,期待着智能家居系统像手机一样走进千家万户,让每个人都能感受到科技给我们带来的舒适,便捷的家庭生活。

[1]沈兆军,毛敏.利用GSM短信息业务实现智能家居[J].微计算机信息,2006,01X:211-213.

[2]王琴放.单片机原理及应用[M].北京:电子工业出版社:1997:129-136.

[3]贾瑞生,郑永果,孙红梅.基于嵌入式系统的智能住宅网络模型[J].微型机与应用,2003,22(8):205-225.

[4]于敬芝,侯义斌,黄樟钦,等.AmI环境下智能家居控制系统的设计与实现[J].计算机应用研究,2008,25(2):613-615.

[5]史佳佳,刘宴兵.多射频无线网络中多信道分配方法的研究[J].计算机应用研究,2012,29(6):2290-2292.

[6]刘余,孟小华.嵌入式智能家居终端通信模块的设计与实现[J].计算机工程与设计,2010,31(8):1689-1692.

[7]FOSTER,K.R..A world awash with wireless devices:Radio-frequency exposure issues[J].IEEE Microwave Magazine,2013,14(2):73-84.

[8]ZHANG XING,FU YAOXIAN,WANG YINGGUAN,et al.Design and implementation of smart home monitoring system based on msp430[C]// 2012 IEEE Symposium on Electrical &Electronics Engineering(EEESYM):102-105.

[9]沙占友.集成化智能传感器原理与应用[M].北京:电子工业出版社.2004.

[10]刘松,赵忠,孙学磊,等.远程家庭智能监控系统设计[M].北京:高等教育出版社,2009,98-106.

[11]吴佳兴,李爱国.基于ARM和ZigBee的智能家居系统[J].计算机工程与设计,2011,32(6):1987-1990

[12]刘从平,何雨箐,餐饮业油烟测试中需注意的问题,[J]《环境监测管理与技术》,2003年4月

猜你喜欢

路由器智能家居短信
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
基于PLC的智能家居控制系统研究
道歉短信
基于Zigbee的无线通信技术在智能家居中的应用
代发短信
关于智能家居真正需求的探讨
智能家居更贴心