互联网的迅速发展,实现了信息的高速传输和资源共享,极大地方便了人们的生活。嵌入式系统广泛应用于各种电器产品、智能仪表和控制设备中,它与互联网的结合是一种必然的趋势。
嵌入式系统和网络技术的快速发展,为网络远程控制的发展和完善提供了技术基础。
笔者综合运用嵌入式系统和Web技术,设计了一种可通过互联网进行远程控制的电源插座系统,实现对家用或工业电器的远程实时控制。用户通过网页浏览器访问该系统,对各插座进行打开或关闭的操作,实现对与其相连接的电器的远程控制。
1 嵌入式Web工作原理
嵌入式Web的体系结构如图1所示。客户端和嵌入式系统中Web服务器之间的通信协议采用HTTP(超文本传输协议)。嵌入式操作系统提供TCP/IP协议支持。嵌入式Web服务器提供静态网页,也可以通过CGI(Common GatewayInterface,公共网关接口)与后台程序或嵌入式数据库交互,进行数据访问或处理。
嵌入式Web的工作流程如图2所示。嵌入式Web服务器的主要任务是接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果。客户端与Web服务器交换数据之前,首先用TCP/IP建立连接,服务器端程序建立TCP类型的Socket套接字;服务器在接收到用户端的请求后,解析客户请求的HTTP协议头,分析客户的请求,根据客户的请求做相应的处理并返回结果。
2 远程可控电源插座设计
文中设计采用ARM-Linux架构。ARM处理器县有小体积、低功耗、低成本、高性能等特点。嵌入式Linux操作系统内核精悍,运行所需资源少,十分适合嵌入式系统应用。
2.1 系统硬件设计
远程可控电源插座系统硬件结构如图3所示。
嵌入式Web服务器实现对用户的身份验证、页面解析与交互,根据用户请求产生对电源插座的控制信号。存储器存放系统的程序和页面文件。
以太网接口模块可选用RTL8019AS等以太网接口芯片,实现网络通信。
控制模块实现对连接在市电AC220 V的插座各开关的“打开、关闭”操作,进而控制相连接的电器的工作。由于嵌入式系统使用的DC3.3V电源,且电流较小,控制模块须实现弱电对强电的控制。考虑到响应速度、电路功耗、使用寿命等因素,控制模块设计选用光电耦合器和可控硅。控制模块可控制电源插座的4路开关,其中一路的电路原理如图4所示。
光电耦合器选用MOC3062,它集光电隔离、过零检测和过零触发为一体,可以自动检测交流电压的过零信息。可控硅选用Q4010NH5,是大功率开关型半导体器件,具有耐压高、容量大、体积小、无噪音等优点。
ARM处理器的GPIO端口输出电平不足以使光耦元件U1(MOC3062)正常工作,需要信号放大。电阻R2和下拉电阻R3组成三极管保护电路。当GPIO端口输出为高电平时,三极管T1(9013)导通,使电阻R1和光耦U1形成通路,U1正常工作,GPIO输入信号得到放大,双向可控硅K1(Q401O NH5)的G控制端得到高电压,K1导通,插座220 V供电打开;当GPIO端口输出为低电平时,三极管T1截止,使电阻R1和光耦U1形成断路。此时U1不工作,K1断路,插座供电被关闭。
2.2 控制模块驱动设计
在嵌入式Linux操作系统下,设备驱动程序为应用程序屏蔽了硬件的细节。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。
文中使用GPIO口作为控制端口,每一位信息控制一个电源插座开关。以连接1号插座开关的GP10为例,说明其驱动程序的编写。
将GP10定义为输出状态,并预设插座开关断开时输出0,此时GP10将输出0,输出低电平,并使图4中的三极管T1截止,光耦U1不工作,K1不导通,220 V供电断开;打开供电时,将GP10置1,即输出高电平,T1导通,220 V供电打开。
驱动程序中ioctl函数代码如下:
2.3 嵌入式Web服务器设计
远程可控电源插座系统采用B/S(Browser/Server)结构,系统内嵌的嵌入式Web服务器可向合法用户提供基于浏览器的操作界面,浏览器便成了与插座相连设备的远端控制板。
由于嵌入式系统拥有的资源有限,构建嵌入式Web服务器须选择一个合适的Web服务器,在不影响整体性能的前提下,既利用自身有限的资源,又必须满足支持CGI的Web应用需求。
文中采用Boa Server作为嵌入式Web服务器。Boa是一个非常小巧的Web服务器,可执行代码只有约60 kB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会创建出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序创建进程来执行。
移植Boa的大致步骤如下:
1)从官方网站(http://www.boa.org)上下载Boa源代码,解压;
2)根据硬件对Boa进行相应的配置,并交叉编译,编译器选用arm-linux-gcc;
3)编译生成可在ARM上运行的Boa程序,将其和内核一起下载到ARM平台上运行;
4)将系统所需静态页面文件和CGI程序拷贝至相应的路径下。
当Web服务器程序收到用户以HTTP协议的GET方式发来的远程控制指令后,调用CGI程序,在CGI程序中用open(“/dev/rcpo”,O_RDWR)语句打开设备文件,若成功,则将控制参数传递给ioctl函数的cmd.控制对应的插座开关做相应动作。
3 系统测试
文中在嵌入式系统开发平台上实现,并制作了控制模块硬件,对电源插座进行了内部连线改装,使之远程可控。搭建测试环境,对一台220 V供电工作的普通电扇进行远程控制,如图5所示。
用户用浏览器软件访问本系统,经登录认证后进入控制页面,如图6所示。点击“开启”按钮后,电扇转动;点击“关闭”按钮后,电扇关闭。系统运行正常,响应及时。测试表明,本文设计是可行的、有效的。
4 结论
文中设计了一种远程可控电源插座,在ARM嵌入式系统上构建嵌入式Web服务器,用户通过网络访问Web服务器,实现对电源插座的操作,进而远程控制与其相连的电器。本文设计采用模块化设计,功能实用,操作简便,易于扩展,可广泛应用于家用或工业电器的远程控制。
随着互联网技术的发展以及与信息家电、工业控制技术的结合日益紧密,具备网络功能的嵌入式系统应用正在成为未来电器的发展趋势。