智能家电控制器的设计与实现论文_胡艳茹,程琳,徐志贤,周琪璋

兰州大学信息科学与工程学院 甘肃 兰州 730000

摘要:本文设计出一款智能家电控制器,内部WIFI模块与手机接入家中局域网后实现无线通讯;采用SSH框架搭建了一个WEB服务器,利用UDP打洞技术内外网穿透传输数据,实现远程控制家电。控制器可以智能学习键码并存储,因而支持多种红外、射频家电设备。控制终端是自行开发的一款基于Android平台的APP,由于智能手机的便携与普及,用户可以随时随地控制家电。此款智能家电控制器成本低廉、方便实用、生成的UI界面简洁易操作,方便推广。

关键词:智能家电控制器;WIFI模块;UDP;Android

前言:1999年首先提出“物联网”(Internet of Things(IOT))的概念,它是继计算机、互联网和移动通信网的寰球信息产业的第三波浪潮,它将互联网延伸到物物之间,企望实现“万物互联”。由此衍生的智能家居、智慧城市等新理念层出不穷。其中智能家居涉及智能控制、智能安保、智能传感等方面,而对智能家电控制则是其最基础、核心的部分。

本设计开发了一款智能家电控制器,对空调、电风扇、电视、窗帘等常用家用电器在不进行任何改动情况下进行小循环、大循环的无线控制。如图1所示,小循环是指智能手机、控制器分别和家中无线路由器连接后,控制器在无线WIFI环境下对家电产品遥控指令进行学习,通过手机APP操作控制器,而控制器发送红外或射频信号对家电进行操纵,使用户再也不用因为遥控器繁多或找不到而烦恼了;大循环指当用户离开家希望控制家电时,通过搭建一个服务器实现不在同一局域网下的控制器与手机数据交互,进而实现远程控制,因此用户不用担心出门时忘关家电、老人小孩不会使用家电等一系列安全隐患,亦或快到家时提前开启家电,享受更舒适、快节奏的生活。

1 硬件电路的设计

硬件电路设计主要包括WiFi模块、红外射频收发模块以及主控模块。STM32F103作为主控芯片,内部集成MT7681无线通讯WIFI模块、38KHz红外收发、315、433MHz射频收发模块。

1.1 WiFi模块设计

MT7681模块是联发科(MTK)公司生产的一款性能稳定、高度集成的WIFI SOC智能家居系统芯片,IEEE802.11b/g/n单数据流,提供GPIO通用输入输出接口和使用PWM脉冲宽度调制信号进行控制,低功耗、低成本、小封装,支持Smart Connection,主要针对插座、灯等小型设备。

1.2 红外模块设计

采用38KHz频率调制机制,满足了大多数红外遥控方式,工作性能稳定,市场元器件选购也方便[1]。为了保证各个方位红外信号的覆盖,本设计红外发送模块采用5个发射管,如图2(b)所示。

红外接收是滤出其他杂波,只接收特定频率的信号将其解调成脉冲码。现在大多采用红外一体化接收头,集接收、放大、滤波、比较和输出等功能于一体,将得到的TTL电平编码信号送给MCU,如图2(a)所示本设计采用HOOS38[2]接收头。

1.3 主控模块的设计

控制器主控模块采用ARM公司Cortex M3系列的STM32F103芯片,它主频率低、功耗小,可以使智能硬件产品更加成熟稳定,另外其外部接口丰富,功能扩展好。

本设计中STM32F103引脚连接如图3所示,引脚PA1对外部电路采集到的红外数据进行处理;PA3完成指令接收学习;PB0,PB1负责315M、433M射频数据发送;PB10,PB11对指令进行存储;PB14,PB15接收433M、315M射频数据;PA8实现红外输出;PA9,PA10与WIFI模块进行串行通信;PA11,PA12通过MINI USB进行硬件调试。

2 智能家电控制器的软件设计

智能家电控制器的后台软件开发是在WINDOWS XP操作系统下进行的,在手机终端进行APP开发和测试,采用结构化、组件化方法。分块化后,主要任务有无线、串口、红外射频通信及APP的编写。

2.1 无线网络通信

2.1.1 小循环的局域通信

控制连接家中路由器,手机接入同一局域网中,接着打开APP搜索网络远程控制设备,搜索到相应控制器后,就可以用手机来控制相应家电了。具体是通过TCP Server/Client的Socket通信实现的,即客户端手机和服务器端控制器先通过Socket函数各自分配一个文件描述符,然后手机端调用Connect向控制器发送连接请求。控制器端先前一直处于listen监听状态等待连接,当收到连接信号后控制器调用Accept函数进行接收,这样就Established通讯链接,接着进行数据I/O操作,即Read、Write,传输完成后Close。

2.1.2 大循环的远程通信

要远程通信,需要基于SSH(Struts+Spring+Hibernate)框架搭建一个服务器,然后将服务器挂到云端。SSH是J2EE技术的基本架构,搭建的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层[3]。基本业务流程是: 在表示层中,首先通过JSP页面实现交互,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性[3]。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果[3]。

服务器框架搭建好后接着就要解决关键问题——处于不同子网下的手机终端与智能家电控制器如何实现通信。可以采用UDP打洞技术进行内外网穿透,实现局域网与服务器通信。

本设计采用的UDP打洞过程简单介绍如图4所示,两个局域网内手机端和控制器端互不相识,首先都通过自身所在的局域网给服务器发心跳信息,表明自己存在,并建立起临时会话session。这时手机终端想连接控制器,便告诉服务器让控制器探测我一下[4]。

服务器把通知发给局域网2,于是控制器发探测包给手机端,是经过控制器->局域网2->局域网1,但此时因为局域网2和1没联系过,所以2不认识1,局域网1就不会转发此探测包给手机端,随之丢弃,但实际上局域网2已经与局域网1建立起了session,这为后面打洞成功奠定了关键一步。

接下来服务器会告诉手机端,控制器已经联系过你了。手机端收到后发数据包给控制器端,即手机端->局域网1->局域网2->控制器,当进行局域网1->局域网2传输时,因为局域网2存有当初链接局域网1的信息,所以局域网2觉得自己认识局域网1,会接受局域网1的信息,继而转发给控制器,打洞成功,这样手机终端与控制器端就可以互通了[4]。

根据SSH框架,结合UDP打洞技术将服务器开发好后,打包成WAR发布到公网上,采用TOMCAT6.0对服务器界面进行部署。这样手机APP发TCP请求给服务器,服务器转发给智能家电控制器,从而实现手机远程操纵控制器。

2. 2 串口通信 控制器主控模块与WIFI模块通过串口1中断实现数据交互,流程如图5所示,先判断接收是否有中断,有的话读取接收到的数据,接着判断接收是否已经完成,主要看是否接收到0x0d紧接着又有一个0x0a,是的话表明接收完成,否则继续接收并判断缓存器存满与否,当索引>63表明缓存器已满,索引清零重新开始接收。

3.3 红外、射频通信

红外通信是一种非接触、无线控制技术,具有抗干扰能力强、传输可靠等优点。市面上红外协议很多,但主要是NEC协议。NEC协议一般由引导码、8bit地址码、8bit地址反码、8bit命令码、8bit命令反码组成,引导码由9ms的连续脉冲和4.5ms的低电平0组成,而地址和数据码的取反是为了加强数据的可靠性,便于校验[1]。数据编码采用PWM方式,即根据传号脉冲的占空比来区别二进制的“0”和“1”,传输逻辑“1”需要2.25ms(560μs的有载波+1690μs的无载波);传输逻辑“0”需要1.12ms(560μs的有载波+560μs的无载波)[1]。

射频(Radio Frequency通常简称RF)信号具有远距离传输能力,是一种穿透性强的高频无线电磁波,属ASK调制,平时只有按下按键时才有电流消耗,所以功耗低。RF本身不带组网协议,用户可以根据设计所需自行定义通信协议。到目前为止多种RF协议被提出,其中包括HASH LOCK协议、基于杂凑的ID变化协议、LCAP协议等[5]。本设计的RF通信协议也是自己制定,只负责接收“0”“1”码,由于很简单在这里不进行详细叙述。

3.4 手机终端APP应用软件的设计

移动控制终端采用Android平台,环境为Android Studio,Java作为开发语言,开发数据库为SQLite[6]。生成的APP界面如图6所示。

系统由多个类构成,各程序模块间通过类和方法调用来建立连接[7]。程序分为三个包cfxxznjd、tcp、udp。Cfxxznjd包功能是程序运行主界面,启动搜索远程控制设备、数据发送和接收线程,并管理数据库;tcp包是以TCP/IP协议方式连接远程设备并发送数据;udp包是以UDP协议方式发送广播报文,检测搜索设备。

cfxxznjd包下有MainActivity和ValuesParser两个类。 MainActivity负责加载软件界面,初始化数据库、ValuesParser对象,为每个按钮绑定和处理点击和长按事件,启动tcp、udp发送和接收线程。数据库采用了嵌入式的SQLite,程序启动时,执行数据库初始化,当按钮长按触发学习模式,接收到数据时,会将数据写入数据库中,下次点击按钮将发出学习后的数据;ValuesParser会自动读取数据库,将发送数据缓存,每个发送的数据都是从数据缓存中取得的。

tcp包下有TcpClient类,负责启动Socket接收线程,建立Socket连接。在学习状态时,先调用IReceiverListener接收接口,再调用MainActivity写入数据程序,完成数据接收。发送数据时,启动一个发送线程,将数据发送到设备,然后接收线程。

udp包下有UdpClient和IReceiverListener类,udp类自动启动DatagramSocket连接,在线程中每隔500毫秒发送一次广播,搜索远程设备,如果设备收到广播,会返回设备信息,UdpClient收到信息并记录,在MainActivity显示找到的设备号。

4 PCB板制作

PCB板设计为电路设计最后一步,也是对原理图的再设计,PCB设计的好坏直接关系到产品抗干扰能力的大小,是理论到应用的关键一步。智能家电控制器PCB板绘制采用Altium公司protel 99 SE,实现SCH到PCB的设计,手动完成焊接以及整机装配,如图7所示为PCB印制板正面漏印层。

5 总结与展望

本文设计了一款智能家电控制器,以Andriod系统的手机APP作为控制终端易于推广。使用家庭局域网以及自搭的WEB服务器提供的广域网服务,实现随时随地手指一触轻松控制家用电器的目的,给人们日常家居生活带来了极大的便利与舒适的智能体验。

但是由于针对红外、射频家电进行控制,射频信号是可以跨越障碍物穿墙传播,而红外只能直线短距离进行传输,两点之间不能有障碍物,这使得只做一个主机可能控制不了其他房间的红外电器,下一步将考虑将系统升级采用主机和分机协作进行控制,构建一个智能网关进行家居网络通信。

其次,手机APP软件的UI也可以进一步优化,力争使界面更美观,更人性化,增加用户使用的舒适度,满意度。

此外,由于本设计中的控制只是简单的单项操作,没有将应用场景加入,下一步将进行改动进行多个电器联动控制,实现“一键享受智能”。并且考虑加入一些传感、监视等模块,感应天气、温度、湿度及光线等变化,自动存储记忆家中成员个人喜好、习惯,对比用户常设定的模式,从而实现智能感应、自动调节的目的。

参考文献:

[1]余红梅, 张涛, 陈绍勇. 红外遥控原理[C]// 教育部中南地区高等学校电子电气基础课教学研究会学术年会会议. 2010.

[2]陆平. 新一代红外遥控接收头[J]. 电子制作, 2005(4):47-47.

[3]沈镛. 软件开发中SSH框架技术研究与应用[J]. 福建电脑, 2010, 26(6):82-83.

[4]杜经纬, 王春红. 在P2P网络环境下基于UDP协议穿越NAT的研究[J]. 吉林师范大学学报(自然科学版), 2012, 33(1):93-95.

[5]张利平. 无线电射频信号的通信协议设计与研究[J]. 科学与财富, 2010(3):109-110.

[6]陈强.Android实例开发完全手册[M].北京:人民邮电出版社,2012

[7]郭锋, 刘建伟. 基于Socket的局域网络通信软件开发[J]. 电子科技, 2009, 22(5):14-16.

论文作者:胡艳茹,程琳,徐志贤,周琪璋

论文发表刊物:《科技中国》2016年9期

论文发表时间:2016/12/8

标签:;  ;  ;  ;  ;  ;  ;  ;  

智能家电控制器的设计与实现论文_胡艳茹,程琳,徐志贤,周琪璋
下载Doc文档

猜你喜欢