韦潜,梁京章,杨兆阳
(广西大学电气学院,广西南宁530004)
基于Arduino Web Server的红外家电控制
韦潜,梁京章,杨兆阳
(广西大学电气学院,广西南宁530004)
利用Arduino Web Server技术针对传统家电如何低成本地升级为智能家电,设计了一种通过网页界面控制红外家电的控制系统。该系统主要由Arduino Mega2560开发板、Arduino Ethernet Shield模块、万能红外模块以及继电器模块组成,实现了通过网页界面对红外家电控制和对开关电器的电源通断控制。该系统设计简单可靠且硬件成本较低,易于实现,并通过实验验证了预期的功能。
Arduino;网页控制;智能家电
【本文献信息】韦潜,梁京章,杨兆阳.基于Arduino Web Server的红外家电控制[J].电视技术,2015,39(10).
在互联网、信息技术不断发展的今天,智能家电的发展越来越成熟,各种终端(如PC、平板PC、手机等)对家电的集中控制和远程控制技术日益完善。这些技术在很大程度上满足了人们对家电便利化、信息化的需求。但是市场上的智能家电产品因系统结构复杂,硬件价格昂贵,安装入户麻烦,限制了智能家居产品的普及。其中基于嵌入式技术作为服务平台的解决方案最为流行[1-4],这种解决方案虽然功能齐全,但是硬件价格比较昂贵,不为广大消费者所接受。而控制端多采用应用程序控制,针对每一种终端系统(如Windows、Linux、IOS等)都得设计配套应用软件,安装繁琐且互不兼容。
针对解决此类问题,本文提出了一种基于使用Arduino Mega2560单片机以及周边模块设计出了一种简单廉价的采用网页控制的智能家电红外和电源开关控制系统方案。该方案简单、低成本且不需要对传统家电做任何改造处理,主要用于解决控制如电视、空调、电扇等可接受红外信号的家电,以及如灯、电热水器等单纯开关电器的电源通断。网页控制的应用也大大降低操作的复杂性,并具有很好的兼容性,可在任意终端如PC、手机、平板PC上通过使用浏览器操作。笔者在实验室搭建了实验平台,并通过了对空调和电视机顶盒的控制实验。
将硬件通过网线接入局域网后,可以访问其IP地址进入网页控制页面。通过该网页控制可将家电红外遥控器上的多个按键一一进行解码、记录存储,并发射出去控制家电。也可以通过该网页控制家电电源的通断。系统主要包括的模块:Arduino Mega2560单片机开发板、Arduino Ethernet Shield以太网模块、红外模块、继电器模块。
Arduino单片机模块通过串行外设接口(Serial Peripher-al Interface,SPI)与Arduino Ethernet Shield模块进行通信连接;并通过串口3-Serial3与星科—红外学习型模块TRD001进行通信连接。单片机模块的5 V供电输出串联一个10 kΩ电阻接到一个LED正极,编号4引脚接到LED负极。单片机模块3.3 V电压输出口接到红外学习型模块的3.3 V供电接口,且Gnd引脚与红外学习型模块G引脚连接。
5 V供电电源接到继电器模块线圈一段,另一端分别接上Arduino单片机编号为7,8的引脚。
Arduino Ethernet Shield模块的网线接口接入网线,网线另一头接入交换机或者是路由器,将整个系统接入局域网中。系统硬件结构图如图1所示。
图1 系统结构图
2.1单片机控制模块
采用搭载了主控芯片为ATmega2560的Arduino Mega2560单片机开发板,供电电压为5 V供电,可以对其他模块供电,输出电压为3.3 V和5 V,电流最大为50 mA。此芯片负责对Ethernet模块的初始化,向Ethernet模块写入HTML代码生成静态网页,并监听HTTP上的GET请求。同时根据GET请求对红外模块和继电器模块进行相应的操作。
2.2Arduino Ethernet Shield模块
Arduino Ethernet Shield模块是专门为Arduino单片机开发板定制的以太网模块,有专用的引脚对接。通过该模块可以设定IP地址、MAC物理地址以及端口号。该模块可以接收由Arduino单片机发送的HTML代码生成一个静态网页,并作为网页服务器允许同一网段的终端通过浏览器访问该网页,且可以监听GET请求来处理响应命令。
2.2.1启用网页服务器
首先将模块与Arduino单片机对应引脚相连。
然后设定网卡地址和端口,在对Arduino的编程中,调用<Ethernet.h>库文件。用byte mac[]={0x00,0xAA,0xBB,0xCC,0xDE,0x02}语句设定模块网卡的物理地址,用IPAddress ip(192,168,1,200)语句设定IP地址,用EthernetServer server(80)语句设定端口之后,调用Ethernet.begin(mac,ip)语句启动设定。
最后写入网页,对定义一个类EthernetClient(库文件已有类)的对象client,并通过调用client.print()方法来向Arduino Ethernet Shield模块写入HTML代码。如写入一个名为Leran按钮的代码为[5]:
char*buttonLabel="Leran":
client.print("<a href="/?status="):
client.print(buttonLabel):
client.print(""><input type="button"value=""):
2.2.2监听GET请求
调用server.begin()方法让其开始监听请求。当在控制网页点击对应按钮或下拉选单时,Arduino Ethernet Shield模块会接收到对应的GET请求。Arduino Mega2560单片机内编程调用server.available()方法可以判断是否有监听到命令,如果有则调用server.read()将命令复制到字符串变量readString内,通过判断该字符串的内容来判断是何种命令。如点击Learn按钮时,字符串变量readString内会存入“GET/?status=Learn”。
2.3获取网页操作指令
当在控制网页点击对应按钮或下拉选单时,Arduino Ethernet Shield模块会接收到对应的GET请求。Arduino Mega2560单片机内编程调用server.available()方法可以判断是否有监听到命令,如果有则调用server.read()将命令存入字符串变量readString内,通过判断该字符串的内容来判断是何种命令。如点击Leran按钮时,readString内会存入GET/?status=Learn字符串。
2.4红外学习、储存、发射模块
星科-红外学习型模块TRD001是一款串口型全功能红外学习控制模块,可以学习16~80 kHz载波频率的遥控器,涵盖了大部分的遥控。该模块核心为STM32F101C8,模块为驱动电压为3.3 V,采用USART2_TX、USART2_RX串口进行通信。
2.4.1学习指令
1)向模块发送{0xAA,0xHH,0xLL,0xLL,0xHH,0xAA}(HH为键值高8位,LL为键值低8位)的数据,命令模块进入学习状态。
2)模块返回数据{0xAA,0xHH,0xLL,0xLL,0xHH,0xAA},通知Arduino已经进入学习状态。
3)学习成功后返回“OK”,此时红外解码数据未存入模块内。
2.4.2测试指令
1)向模块发送{0x05,0xFF,0xFF,0xFF,0xFF,0x05}的数据,命令模块发送当前学习的红外遥控指令以用来验证学习的指令是否正确。
2)指令外发完毕后返回“OK”。
2.4.3保存指令
1)向模块发送{0x0A,0xFF,0xFF,0xFF,0xFF,0x0A}的数据,命令模块保存当前学习的红外指令。
2)指令保存完毕后返回“OK”。2.4.4控制指令
1)向模块发送{0x5A,0xHH,0xLL,0xLL,0xHH,0x5A}的数据,命令模块将已保存的对应红外指令发送出去。
2)指令发送完毕后返回“OK”。
引脚定义如表1所示。
表1 引脚定义
2.5继电器模块
继电器模块为(C3A6)2路继电器扩展板5 V版,可以控制各种家用电器开关。控制电压为5 V。受控电压电流最大负载为AC:250 V/10 A;DC:30 V/10 A。
2.6系统供电结构
电源采用5 V供电对Arduino Mega2560单片机开发板和继电器模块供电。从Arduino Mega2560单片机开发板引出的3.3 V引脚和Gnd地引脚对红外模块供电。系统各模块供电电路结构图如图2所示。
图2 系统供电结构图
Arduino单片机模块启动后,初始化Arduino串口Serial和串口Serial3波特率为9 600,对Arduino Ethernet Shield模块进行初始化,设置其网卡物理地址MAC为{0x00,0xAA,0xBB,0xCC,0xDE,0x02},IP地址为192.168.1.200。向Arduino Ethernet Shield模块写入HTML代码,生成HTML页面,该页面有选择按键的下拉选单和“Learn”、“Send”和“On/off”按钮,分别对应学习、发射红外以及控制继电器通断功能。
当同一局域网内的终端浏览器访问http://192.168.1.200的页面,并点击对应的按钮或者是下拉选单时,触发GET请求。Arduino接收到GET请求时,判断命令种类。转发相对应的命令至红外模块或者是改变相应的引脚电压控制继电器的关断。访问的初始页面如图3所示。
1)在网页中点击Select下拉选单,并点击key0选项时。系统会监听到“GET/?status=key0”请求,将对0号按键进行操作。默认操作为0号键。
2)在网页中点击Learn按钮时。系统会监听到“GET/?status=Learn”请求,判断是相应键的操作,如果是0键,则向红外模块发送{0xAA,0x00,0x01,0x01,0x00,0xAA}指令使其进入学习状态。并重写HTML网页生成“yes”按钮等待测试指令。此时使用家电遥控器对准红外模块按下按键,如果红外模块接收到外信号,系统LED会点亮,等待进入测试。等待测试页面如图4所示。
图3 初始页面(截图)
3)在网页中点击Test按钮时,系统会监听到“GET/?status=Test”请求,通过向红外模块发送命令{0x05,0xFF,0xFF,0xFF,0xFF,0x05}来将之前记录的红外信号发射到电器上,看是否起作用。并重写HTML网页生成“yes”和“no”的按钮,让用户选择是否控制家电成功。判断页面如图5所示。
4)在网页中点击No按钮时,系统会监听到“GET/?status=No”请求,写入HTML初始页面,供用户选择再学习。
5)在网页中点击Yes按钮时,系统会监听到“GET/?status=Yes”请求,通过向红外模块发送命令{0x0A,0xFF,0xFF,0xFF,0xFF,0x0A}来将之前学到的红外信号永久保存下来以供长期使用。并写入HTML初始页面,供用户选择再学习别的按键,或是使用已记录红外信号的按键。
图4 测试页面(截图)
6)在网页中点击Send按钮时,系统会监听到“GET/?status=Send”请求,判断是对哪个键的操作,如果是0键,则向红外模块发送{0x5A,0x00,0x00,0x00,0x00,0x5A}指令,来命令红外模块将0号键对应的存储器学习储存的红外指令发送出去,并重写初始HTML页面。
7)在网页中点击On/off按钮时,系统会监听到“GET/?status=On/off”请求,通过控制6,7引脚的电平来控制继电器的通断,并重写初始HTML页面。
程序流程如图6所示。
图5 判断页面(截图)
图6 系统流程图
通过实验成功实现了控制数字电视机顶盒,以及控制美的电扇的开关、调速和继电器的通断。实验中分别学习了电视的“更换下一个频道”、“更换上一个频道”、“调高音量”、“调低音量”,并发射红外对电视进行控制;学习了美的遥控风扇的“开”、“关”、“调速”等红外信号,并对电风扇进行相应控制。硬件实物如图7所示。
图7 实物图
本文设计并实验了一种基于Arduino Web Server技术的红外家电控制系统,集合了Arduino技术和Web技术,实现了红外家电的便利远程控制。经过实验,功能全部实现,符合设计要求。为传统家电过渡升级到智能家电提供了一个新的解决方案。
[1]赵津,朱三超.基于Arduino单片机的智能避障小车设计[J].自动化与仪表,2013(5):1-4.
[2]刘南君,毛培宏.基于Arduino Mega2560单片机的简易智能割草机器人的设计与实现[J].安徽农业科学,2012,40(36):17899-17901.
[3]南春辉,李博,武颖.基于Web技术的嵌入式智能家居系统设计[J].电视技术,2013,37(3):86-89.
[4]LUBBERS P,ALBERS B,SALIM F.HTML5程序设计[M].2版.刘靖,李杰,刘淼,译.北京:人民邮电出版社,2012.
[5]Tamberg.Web Controlled Arduino LED[EB/OL].[2014-07-04]. http://www.instructables.com/id/Arduino-Web-LED/.
韦潜(1989—),硕士生,主研网络化控制与信息工程;
梁京章(1964—),硕士,教授、硕士生导师,研究方向为网络化控制与信息工程;
杨兆阳(1984—),硕士生,主研综合自动化。
Infrared-control System of Household Appliances Based on Arduino Web Server
WEI Qian,LIANG Jingzhang,YANG Zhaoyang
(Electrical College,Guangxi University,Nanning 530004,China)
To improve traditional household appliances into smart household appliance at low cost,the design is presented in this thesis with the help of a web-controlled system for infrared appliances based on Arduino web server technology.The system consisting of the Arduino Mega2560 development board,Arduino Ethernet Shield module,infrared recording and transmitting module and relay module realizes the control of infrared household appliances and switching device.It shows that this design is simple,reliable,low cost,and easy to realize.The system archieves expected function through experiment.
Arduino;web-controlled;smart household appliance
TP399
A
10.16280/j.videoe.2015.10.010
时雯
2014-08-19