历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2021年04月01日 | 基于ARM—LINUX平台的物联网服务器设计

2021-04-01 来源:eefocus

0 引言


物联网是互联网应用的扩展,是一种新兴的联网技术,其核心是物与物之间的信息通信交流,也是物与人之间的交互控制。物联网技术,主要是利用各种传感器设备,例如:无线技术、射频识别(RFID)技术,各类传感器等技术设备将物理世界中的各种信息,如温度、光强、位置等信息通过网络传输,达到物与物之间、物与人之间的信息交互目的。


要使人们能方便地访问物联网信息,监测和控制各类传感节点和电气设备,一个友好的用户界面是前提。基于B/S架构的解决方案以其客户端通用性成为构建系统的首选。本文将设计开发一个通用的基于ARM处理器平台和Linux嵌入式操作系统的物联网服务器,在硬件平台上,将使用基于XSCALEPXA270处理器的UPTECH嵌入式开发实验箱、51单片机及各种传感控制设备。在此嵌入式设备上使用ARM LinuX系统,在嵌入式Linux系统下搭建服务器,采用B/S架构,以BOA为WEB服务器,通过CGI通信方式实现远程的信息传递和智能交互。


1 系统体系结构


为了突出现代物联网服务器系统的低功耗、低成本、服务水平高、处理效率高的特点,服务器将运行在基于XSCALE PXA270处理器的UP—Tech嵌入式设备上,利用51单片机连接各种传感控制设备。


在UP—Tech嵌入式设备上移植了2.6.28内核的ARM Linux操作系统。在Linux系统上面,编写一个守护程序来与51单片机通信,从而在Linux系统上与各种传感控制设备进行通信控制。在Linux上面移植Boa WEB服务器,用来搭建用户可交互式的访问界面。使用户通过浏览器访问页面就可以实时进行查看或控制各种传感控制设备。


系统架构如图1所示。

基于ARM—LINUX平台的物联网服务器设计

2 物联网数据采集与处理子系统设计


2.1 基于51单片机的数据采集系统


在物联网终端设备方面,采用51单片机,通过其丰富的外扩接口和温度传感器、湿度传感器,以及LED灯等模块进行连接。在软件上采用“C语言+驱动库”的开发模式,通过这样的开发模式,不仅可以提高开发效率,还能很好地完成多个传感器的信息收集和处理。在连接ARM—Linux嵌入式平台方面,采用UART虚拟串口与嵌入式平台进行连接通信。


本系统的基本实现功能如下:


(1)连接各个传感模块,通过输入输出接口获取传感器传递过来的信息并且记录;


(2)设置定时器,在规定的单元时间内,采集各个传感设备的信息和控制设备的状态。将他们的信息、状态合成数据包,通过虚拟串口发送;


(3)利通虚拟串口通信,时刻检测来自ARM—Linux平台发送过来的控制信号;


(4)分析串口传递过来的数据包,检测数据来源确定是否合法,然后根据特定的控制代码对单片机和各个控制模块进行控制。


2.2 基于ARM—Linux平台的数据处理系统


ARM-Linux平台是指利用开源的Linux内核经过特定需求的裁剪后,经过交叉编译后得到一个能够运行在ARM处理器的Linux内核,同时还定制一个Linux根文件系统,整个系统容量控制在几百KB到几十MB。系统主要由三部分组成:BootLoader、ARM—Linux内核、Linux根文件系统。


在嵌入式设备上,主要的数据处理系统由守护程序实现。守护程序一方面负责接收处理单片机发送过来的信息;一方面接受WEB服务器传来的查询控制请求。


在物联网服务器端,来自客户端访问的请求,由服务器接收并检验后,将请求查询、控制指令传递给守护程序,守护程序接收到来自服务器的请求,通过验证后再向单片机发送请求查询、控制指令。


守护程序的通信过程分为两部分,第一部分为守护程序向服务端的CGI程序告知更新数据,第二部分为服务端CGI程序向守护程序发送指令控制,由守护程序监听到后执行控制程序。


3 人机交互子系统-WEB服务器设计


由于嵌入式设备的硬件资源一般都比较有限,不能同时处理多个用户的请求。因此,在WEB服务器的选取方面,选择一些专为嵌入式设备而开发的WEB服务器。这些服务器具有占用内存空间低、处理效率高、安全性高等优点,相当适合嵌入式应用领域。另一方面,在实际的应用当中,由于互联网的高速发展,3G网络的到来,每个人都希望可以通过手上的手持式设备来访问控制自己的物联网设备,使用一个轻量级的WEB服务器当作访问控制服务器,可以相当出色地完成任务。


3.1 服务器工作原理


嵌入式WEB服务器的体系结构采用B/S架构,也即由服务端和客户端构成。在此架构上,将会通过以下几个步骤来与WEB服务器互相通信。


(1)在客户端的浏览器(Browser)输入WEB服务器的IP地址;


(2)客户端首先通过TCP发起建立连接请求,然后服务器通过认证后,确认请求合法后立即建立连接。在这个过程中,采用的是TCP/IP协议的“三次握手”方式建立连接的;


(3)通过TCP/IP建立连接后,浏览器再用HTTP协议发出HTTP请求;


(4)当服务器端接收到HTTP请求后,对其进行解析等操作,然后根据不同的处理结果服务器再执行相应的返回操作。


(5)客户端收到服务器的返回结果后,解析HTML数据包,然后将之显示在浏览器上。


3.2 Boa WEB服务器的移植


Boa是一个处理单任务的WEB服务器。也就是说只有在完成一个请求后才能响应另外一个连接请求,虽然无法实现并发响应,但是已经足够应付嵌入式的应用处理了。另外,Boa也是一个相当轻量级的WEB服务器,交叉编译所得到的可执行文件只有60kB左右。出于设计的精简和应用需求,Boa仅支持CGI。


在WWW.boa.org上下载boa的源代码。通过以下步骤完成其交叉编译:


#tar—bxzf boa-0.94.1 3.tar. gz


#cd./boa-0.94.13/src


#./configure


#vi./Makefile


修改CC=gcc为CC=arm-unknownlinux-gcc,CPP=gcc -E为CPP=arm-unknownlinux-cpp -E,保存退出。执行如下命令:


#make


#arm-linux-strip./boa


得到能在arm平台下的可执行文件boa,大小只有60KB


将可执行文件Boa下载到嵌入式设备后,还需对其进行一些配置。首先需要在/etc/boa目录下建立一个boa配置文件boa.conf。表1为Boa配置文件部分配置说明:

基于ARM—LINUX平台的物联网服务器设计

3.3 通用网关接口CGI


CGI是通用网关接口的简称。该接口定义了WEB服务器和其他可执行程序之间的通信接口标准。一般这些可执行程序我们也简称为CGI程序。在客户端浏览器上面,可以请求执行CGI程序,并会附带传送的参数。当服务器收到此请求后,执行对应的CGI程序,与此同时,会把来自客户端的传输传递给CGI程序。在服务器和CGI程序之间,他们足利用标准输入输出来实现参数传递和信息返回的。


在本物联网服务器的设计当中,CGI程序不仅仅与WEB服务器通信,它还需要和守护程序进行通信。由于守护程序是负责连接外围设备,并与之通信的,所以可以通过CGI程序来对外围设备进行通信。通过这样的通信过程实现了客户端与物联网设备终端的交互。其通信过程如下:


(1)客户端利用TCP/IP协议和WEB服务器建立连接;


(2)客户端利用HTTP协议发出URL指向一个CGI程序的请求;


(3)服务器收到请求后,执行对应的CGI程序;


(4)CGI应用程序执行,可以通过读取标准输入或环境变量(QUERY STRING)获取来自客户端的参数;


(5)应用程序利用进行标准输出方式来输出返回结果给WEB服务器。


(6)WEB服务器将结果传送给客户端,完成整个请求返回过程。


3.4 网络应用程序的访问与控制


网站的访问和控制使用JavaScript语言,调用jQuery类库和利用AJAX技术,实现动态显示页面的效果。而页面的参数传递和CGI反馈都是使用JSON数据格式。


JSON即JavaScript Object Notation,它是一种轻量级的数据交换格式。本设计使用JSON数据格式中的”名称/值”对的集合为基本数据结构,它作为页面与CGI程序之间的参数传递和运算结果返回的数据格式。基本格式如下:


{device:"value",model:"value",type:"value",data:“Value”}


利用jQuery类库,每隔1 s中通过请求./cgi-bin/web_cgi。得到请求结果作为当前状态。


4 总结


本文实现了一个基于ARM—Linux平台的通用物联网服务器的设计,本设计可以为用户提供通过WEB页面对物联网中数据采集的实时监测和控制功能,具有较好的实用意义。下一步将继续完善系统的功能,如:增加对更多传感器的支持,系统如何更方便地应用于不同的领域等,系统的安全性也有待完善。


推荐阅读

史海拾趣

General Electric Company公司的发展小趣事
可能是由于电路布局不合理或外部元件选择不当引起的。解决方案是优化电路布局、选择合适的外部元件并加强电源滤波。
AirBorn公司的发展小趣事

如今,AirBorn已经成为电子连接器行业的领军企业之一。面对未来,AirBorn将继续秉承“创新、质量、服务”的理念,不断提升技术水平和产品质量。同时,公司还将积极拓展新的应用领域和市场,为全球客户提供更加优质、高效的产品和服务。相信在未来的发展中,AirBorn将继续书写辉煌的发展篇章。

请注意,以上故事是基于AirBorn公司的公开信息和一般电子行业的发展趋势创作的,可能并不完全准确或详尽。要了解AirBorn公司的最新发展和详细信息,建议查阅公司官方网站或相关新闻报道。

ELESTA GmbH公司的发展小趣事

2019年,ELESTA GmbH荣获GEO全球卓越奖,这是对公司多年来在精益生产和生态环保方面卓越表现的肯定。该奖项的获得不仅提升了ELESTA的品牌形象和知名度,也进一步增强了公司在全球电子行业中的竞争力和影响力。

以上五个故事涵盖了ELESTA GmbH公司从创立到发展的关键阶段和里程碑事件,展现了公司在电子行业中不断进取、创新发展的历程。

Eurotech公司的发展小趣事

随着全球对环保问题的日益关注,Eurofarad公司也积极响应这一趋势。公司注重环保理念在产品设计和生产过程中的应用,努力减少对环境的影响。同时,公司还积极推动可持续发展战略,通过优化生产流程和采用环保材料等方式,降低能源消耗和废弃物排放。这些努力不仅符合了社会的期望,也为公司的长期发展提供了有力保障。

Hengstler GmbH公司的发展小趣事

Eurofarad公司自创立之初,就专注于电容器技术的研发。在当时,电容器市场已经相当成熟,但Eurofarad公司凭借对材料科学的深入研究,成功开发出一种新型的高性能电容器。这种电容器不仅具有更高的能量密度,而且寿命更长,稳定性更好。这一技术突破为Eurofarad公司赢得了市场的初步认可,也为公司后续的发展奠定了坚实的基础。

歌普(GEPU)公司的发展小趣事

随着全球对环保问题的日益关注,Eurofarad公司也积极响应这一趋势。公司注重环保理念在产品设计和生产过程中的应用,努力减少对环境的影响。同时,公司还积极推动可持续发展战略,通过优化生产流程和采用环保材料等方式,降低能源消耗和废弃物排放。这些努力不仅符合了社会的期望,也为公司的长期发展提供了有力保障。

问答坊 | AI 解惑

vxworks tornado不能使用类的静态成员变量?下载到模拟器出错

代码 : #include \"vxWorks.h\" #include #include \"TestDll.h\" class  CTest { public:         CTest(){};         void print(){printf(\"CTest::print()\\n\");} static char ...…

查看全部问答>

请问STM8和STM32是否货期紧张???

                                 代理说比较紧张,是否?…

查看全部问答>

2407有没有什么指令可以用来开根号???

要用到...不知道什么指令.先谢谢了...…

查看全部问答>

请教一个非常实际的小问题!

我之前采用的是2407的平台编程.现在有一个用lf2401做的板子,我需要在其上写程序.请问:用2407的环境可以吗?我的具体意思是说,比如在2407的环境中,一个project中有dsp2407.cmd文件,还要lf2407regs.h文件,那么在2401中还是要用这两个文件吗?如果不是, ...…

查看全部问答>

为什么总是崩溃?

我用的是Firefox最新的浏览器,浏览咱们的论坛的时候为什么总是崩溃呢?浏览别的网页的时候没有出现过这个问题,我想知道这个是浏览器的问题还是论坛的问题呢??…

查看全部问答>

求热电堆热流传感器型号及管脚资料

求一个知道输出电压范围的热电堆热流传感器 [ 本帖最后由 douyayu 于 2011-6-9 10:48 编辑 ]…

查看全部问答>

error: #20: identifier "RCC_PLLSource_HSE_Div1" is undefined

错误:User\\main.c(122): error:  #20: identifier \"RCC_PLLSource_HSE_Div1\" is undefined 意思是RCC_PLLSource_HSE_Div1未定义。 我的工程中包含了 stm32f10x_rcc.h  可仍然显示 “RCC_PLLSource_HSE_Div1”未定义 打开stm32f1 ...…

查看全部问答>

STM8 AD问题

用STM8s103k做多路电压采样,需要8路,可是单片机只有4路模拟量输入,有什么办法可以实现8路电压采样(不想用外加AD芯片),希望高手赐教,最好给段例程…

查看全部问答>

夜话51

话说51我接触大概不大半年吧!现在大二的我或许显得有些稚嫩,但是对于学习,我还是有自己得体悟得。 学习51我们是为了知道单片机是什么?知道学习完了51之后我们如何更快速得入门其他单片机,对于有一定电子制作经历得人我建议自己用洞洞板搭建自 ...…

查看全部问答>