嵌入式
返回首页

Web动态服务及控制在物联网中的应用设计

2015-01-19 来源:e-works

引言

  随着网络技术的不断发展,嵌入式系统将不断地和网络相结合。嵌入式Web技术是计算机领域研究的热点,其优点是开发成本低、通用性强,能运行在8位或16 位MCU环境中,其丰富的Web用户图形界面使得嵌入式设备具有极好的交互性。因此,一旦在嵌入式设备中集成了Web服务,就能实现用户与嵌入式设备低成本、高通用性的信息交流,即客户端利用HTTP浏览器(如IE),在任何时间、任何地点都能实现与嵌入式设备的信息交互。可以说,嵌入式Web的应用必将极大地促进嵌入式设备,特别是低端控制设备、仪器、仪表的信息化,最终将促进物联网的各种应用。

  在MCU上开发Web服务器的难点在于其资源有限。相比台式机PC(几个GB的双核CPU,几个GB的内存和几百个GB的硬盘)来说,嵌入式系统的各种硬软件资源少得可怜。在嵌入式系统中实现复杂的Web动态服务及Web控制,既没有必要也不现实。因此,如何紧紧围绕嵌入式系统的具体应用要求,恰当地实现 Web动态服务及Web控制,进而实现物联网应用是一个需要解决的技术难题。

1 嵌入式Web服务的一般实现方法

  目前,嵌入式设备中通常使用的Web服务器有Apache、httpd、Boa、Thttpd和mini-httpd等。常用的实现动态Web页面的技术主要有CGI、ASP、PHP、JSP、Java、ISPI等。其中,Boa是一个运行在类Unix系统中的小型Web Server,虽然功能比较齐全,但很多功能(如virtual hos-t,内存使用量较大)对嵌入式应用而言是冗余的;Apache功能较强大,但占用空间太多(需要几MB空间,其他Web服务器只需要几百 KB);PHP 可扩展性较差,安全性不高;标准的CGI需要用到文件、进程等操作。

  为节省资源、提高效率,嵌入式环境下现应用较多的是嵌入式动态Web实现方法,一般采用“Apache+PHP”或者是“Boa+CGI”技术。然而,在低端的嵌入式设备中,特别是8位MCU的仪器、仪表中,因为受资源尤其是存储资源的限制,要用上述思路来实现嵌入式Web服务不太现实,毕竟对于低端的嵌入式设备而言,移植操作系统是一件奢侈的事情。

2 嵌入式Web动态服务的改进思路及实现

  考虑到嵌入式Web服务器的应用领域多数是专门的控制设备仪表,绝大多数控制设备仪表的工作流程都是基本固定的,所以可以考虑采用某种固定的交互模式来控制这些仪表。能否用这种思路进行设计的关键是要弄清下面两个问题:第一,嵌入式Web服务器的功能有哪些?第二,这些功能是否固定,是否需要扩展?如果这种功能既不是很复杂,又相对固定,那么就可以按照这种思路进行设计,而完全没有必要用CGI、ASP等Web动态服务技术来实现Web动态服务。遵照这一思路,本文实现如下:

  ①将显示界面不变的部分作为一个静态页面,以HTML格式存储在ROM中,以方便MCU直接操作。这样设计后,需要注意的问题是,MCU的ROM空间是否能同时存储程序代码和网页HTML代码。笔者所设计的嵌入式Web服务器的程序代码量有28 KB,而HTML代码量有2~3 KB,采用的MCU(即W78E58B)有32 KB ROM空间,因此采用这种设计思路完全可行。

  ②利用替换法提供Web动态服务。对需要动态改变的内容部分作特殊标记,例如,环境温度值为“TAG:Temperature”,网页长度为 “TAG:PageLen”。程序运行时,先将静态页面由ROM读入内存,然后将环境温度值和网页长度值传送到服务器节点,服务器读取实际值并存入内存,再用实际值代替标记,生成一个新的页面并将其送给浏览器,这样用户看到的就是一个动态的页面。

  ③经过上述设计后,网页文件的值是动态的,但不是实时的。可以采用如下思路实现实时动态服务:利用HTML语言的

来实现网页内容的自动更新,其刷新时间由文件开头语句中的 content的内容决定。该值可根据具体应用需求进行设置,例如笔者设计的刷新时间为2 s。

  按照这种设计实现后,网页文件就能在2 s范围内实时显示系统通过温度传感器采集来的环境温度。

3 嵌入式Web控制的实现

  按照上述思路可实现服务器对客户端的Web动态服务。然而在实际的嵌入式应用中,仅仅一个Web动态服务是不够的,它还应支持客户端数据上传到服务器,以达到通过客户端来控制服务器的目的。

  那么,如何实现客户端对服务器端的控制呢?遵照上述设计思路,并结合HTTP请求中的POST命令来实现简单的Web控制。实现过程如下:

  ①在网页文件中实现如下表单:

  ②在嵌入式Web服务器的HTTP接收模块中分析HTTP请求的POST数据,当LEDCtr1=0时,发送指令点亮LED灯,否则熄灭LED灯。
 

4 功能测试

  测试时可将嵌入式Web服务器与客户端主机直接相连,并利用PC机的IE浏览器实时读取服务器测量的环境温度,结果如图1所示。左图是测量的当前环境温度显示的结果,右图是当采用物理手段(如利用打火机烧烤传感器)以提高环境温度后显示的结果。由图可知,嵌入式Web服务器能完成正常的Web动态服务。经实践验证,服务器系统LED灯的亮/灭完全可由图1所示的亮/灭控件来控制,也就是说已成功实现了Web控制。

图1  客户端动态获取服务器

5 结论

  笔者分析了当前嵌入式系统实现Web动态服务的几种思路,以采集环境温度、控制LED灯的亮/灭为例,给出一种在嵌入式设备中实现Web动态服务与Web 控制的实现思路,并在给出实现结果的基础上验证了该设计思路的可行性。这为嵌入式设备,特别是低端嵌入式设备中顺利实现Web动态服务及Web控制,进而实现物联网技术打下了坚实的基础。

进入嵌入式查看更多内容>>
相关视频
  • PX4固件二次开发课程

  • RISC-V嵌入式系统开发

  • NuttX Workshop 2024

  • 自己动手写操作系统

  • SOC系统级芯片设计实验

  • 自己动手做一台计算机

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 光控电路设计与分析

  • 开关电源的基本组成及工作原理

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路