第一篇:基于ARMlinux的嵌入式远程测控系统设计.
基于ARM linux的嵌入式远程测控系统
设计
基于ARM linux的嵌入式远程测控系统设计
类别:嵌入式系统
前言 目前,大多数远程测控系统中,系统的硬件采用8/16位的单片机,软件多采用汇编语言编程,该编程仅包含一个简单的循环处理的控制流程;单片机与单片机(或上位机)之间的通信通过RS232、RS485或CAN总线来组成局域网,再用Pc机作为 Web服务器,与Internet进行通讯。这样的远程测控设备成本高、体积大、速度慢、功耗大。现在,32位嵌入式CPU价格已下降,性能指标也有提高,为嵌入式系统的广泛应用提供了可能性。基于上述情况,我们将嵌入式系统应用于远程测控系统,大大提高了测控系统的性能,同时降低了成本和功耗,体积也大大减小。
嵌入式系统一般应用嵌入式操作系统来开发。在嵌入式操作系统的选择上,由于Linux有完整开放的源代码,因而它具有修改和优化系统、内核稳定、适用于多种CPU和多种硬件平台、支持网络等特点,所以选择Linux作为嵌入式操作系统较好。本文提出的基于 ARMlinux的嵌入式远程测控系统不仅能够实现本地数据采集与控制,还能实现远程测控任务。
1、硬件系统
硬件系统如图1。S3C2410包含一个16/32-bit的Risc(ARM920T)的CPU内核,主频200Hz,内部含有8通道1O位AD转换器和大量的I/O口、LCD控制器等丰富接口,能运行Ucosll、ARMlinux和Wince嵌入式操作系统,DM 9OOO是10M/100M以太网接口控制芯片。本硬件系统结构简单,成本低,不需要Pc机就可直接接入Internet。
2、软件系统
嵌入式操作系统是整个嵌入式系统的核心。本系统选择ARMlinux系统。由于嵌入式系统的存储容量很小,因此要把ARMLinux操作系统装入有限的存储器内,就要对它进行裁剪。很多资料对此都有论述,这里就不再累述。下面主要介绍基于操作系统上的远程测控软件设计。其体系结构如图2。
2.1 基于Boa的Web服务器
嵌入式linux主要有三个web Server:Hapd、Thttpd和Boa。Httpd是最简单的一个web Server。它的功能最弱,不支持认证,不支持CG1。Thttpd和Boa都支持认证、CGI等,功能都比较全。Boa是一个单任务的小型Httpd 服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。下面介绍Boa的移植与编译。
对于有MMU嵌入式linux,把Boa下载到Redhat宿主机上后,解压到任意目录,再修改Boa/src/Makefde里面的编译器。例如:
CC=/opfhosfarmv41/bin/armv41—unkllown—linux—gcc CPP=/opt/host/army41/bin/armv41—unknown—linux—g++ 此后直接在Boa/src目录下执行make即可生成Boa可执行文件。将其复制到ramdisk加载mount的目录的bin里面后,等一同加入配置文件和HTML/CGI文件后,重做ramdisk即可。
配置文件Boa.conf的编制见下。
需要说明的是,Linux下的应用程序的配置都是以配置文件的形式提供的,~般都是放在目标板/ete/目录下或者/ctc/config目录下,但Boa 的配置文件Boa.conf一般都放置在目标板/home/httpd/目录下。本系统Boa.conf文件的编写程序为:
Servername S A M S U N G—A R M DocumentRoot/home/httpd/cgi—bin/
ScfiptAlias/index.html/home/httpd/html/index.html 它指定了HTML页面index.html必须放/home/httpd/html目录下,CGI可执行文件必须放到/home/httpd/cgi~bin目录下。
2.2 CGI程序技术原理
CGI(Common Gateway Interface)是外部扩展应用程序与WWW服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而CGI规范定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。通过 CGI可以提供许多静态的Html网页无法实现的功能。其www与CGI的工作原理如下。
HTTP协议是WWW的基础,它基于客户/服务器模型。一个服务器可以为分布在网络各处的客户提供服务。它是建立在TCP/IP协议之上的“无连接”协议。每次连接只处理一个请求。当一个请求到来时,便创建一个子进程为用户的连接服务。根据请求的不同,服务器会返回HTML文件或通过CGI凋用外部应用程序,返回处理结果。服务器通过CGI与外部程序和脚本之问进行交互,根据客户端在进行请求时所采取的方法,服务器会收集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序。CGI扩展程序对信息进行处理并将结果返回服务器。服务器对信息进行分析后,将结果发送网客户端。
外部CGI程序与www服务器进行通信、传递有关参数和处理结果是通过环境变量、命令行参数和标准输入来进行的。服务器提供了客户端(浏览器)与CGI扩展程序之问的信息交换的通道。客户的请求通过服务器的标准输出传送给CGI的标准输入。CGI对信息进行处理后,会将结果发回到它的标准输入,然后由眼务器将处理结果发送给客户端。
2.3 CGI外部扩展程序的编制
服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由标签的Method属性来决定。在“Method=GET”时,向CGI程序传递表单编码信息的正常做法是通过命令来进行的。
大多数表单编码信息都是通过Qucry-String的环境变量来传递的。如果“Method=POST”,表单信息将通过标准输入来读取。还有一种不使用表单就可以向CGI传送信息的方法。那就是把信息直接追回在URL地址后面,信息和URL之间用问号(?)来分隔。本测控系统采用的是GET方法。下面是远程控制LED闪烁快慢的程序。其网页如下页图3,其程序如下。
;LED测试
<input type=“radio”name=“speed”value=“show”checked>慢速
<input type=“radio”name=“speed”value=“normal”>中速 <input type=“radio”name=“speed”value=“rast”>高速
<input type=“submit”value=确定“name=”submit>
其中leds.cgi程序如下:
#!/bin/sh Period=1+case $QUERY-STRING in slow)
period=0.25 ;;
normal)period = 0.125 ;;
fast period=0.0625+;;
fast)+ period =0.0626 ;;
esac /bin/echo $ period ? /tmp/led-control//通过Query_String的环境变量传递给应用程序。
echo “Content-type:texe/html;charset=gb2312”
echo /bin/cat led =result.template exit 0 led—control是编译好的可执行的应用程序,通过led驱动来实现对LED的控制。因为S3C2410有MMU,所以通过操作系统来对硬件控制需要驱动程序来实现。其数据采集部分也类似,不再单独说明。
图3 实验结果
3、测试结果
首先建立好基于S3C2410嵌入式开发环境,把编译好的booloader、嵌入式linux内核和ramdisk烧人Flash中,然后起动Boa服务器,在PC机的浏览器上输人嵌入式系统的IP地址,即显示出如图3的网页。通过点击慢速、中速和高速,再点击确定,测控板上LED的闪烁由慢变快,圆满实现了设计目标。
4、结论
找们开发的基于ARMLinux的远程测控系统,在真正意义上实现了通过互联网进行远程测控。它具有一般通用平台性能,特别适合实时性要求不很强的家电网络监控和远程工业控制。当然随着硬件和网络速度提高及操作系统实时性的改善,将会大大提高此测控系统的性能,因此有很好的应用前景。
第二篇:基于ARM嵌入式的远程监控系统设计
基于ARM嵌入式的远程监控系统设计
摘要:基于ARM 内核的嵌入式系统在远程监控报警系统中的设计实现与应用。核心部分主要包 括 ARM 嵌入式平台设计及 μC-OS 嵌入式实时操作系统移植;人机交互界面 μCGUI 的设计与实现;远程通讯及自动报警等;系统的设计还考虑到了扩展性和通用性以及与其他监控设备无缝连接等问题。
关键词: ARM;μC/OS-II;μCGUI;远程监控 引言
监控系统现已成为现代化生产、生活中不可缺少的重要组成部分。目前,监控系列产品 种类繁多,大部分广泛应用于交通、医院、银行、家居、学校等安防领域。
随着嵌入式系统的出现,尤其是基于 ARM 内核芯片的嵌入式系统的出现,使得监控系统的应用领域更为广泛。本文设计的远程监控报警系统除了作为安防功能外,还可以应用于以下领域:通讯领域:远程通讯、视频会议和视频点播、证券、远程教育等。医疗领域:病房监护、远程诊断等。工业领域:远程设备诊断、维护、维修,远程生产监控等。家用领域:家用电器远程维护;电、气、火等重大事故自动报警等。
系统设计
2.1系统组成
本文设计的远程监控系统主要由中心控制器、数据终端、传感器模块、通讯模块、接口模块等几部分组成。系统组成图(如图 1)。
2.2中心控制器 系统核心负责数据采集判断处理。为了提高系统工作效率,这里使用的是三星公司的 S3C2410芯片作为处理器。S3C2410 芯片是一款高性价比的 ARM 芯片,非常适合作手机、PDA 等手持设备。主要特性包括: ARM920T 内核,最高工作频率 203MHz,LCD 控制器:可直接驱动真彩液晶屏,最高支持 2048×1024 真彩液晶屏,2 个 USB Host端口,1 个USB Device端口,支持 Nand flash 启动模式,SD 卡接口,UART、IIC、SPI、IIS 等多种类 型串行接口,4 通道DMA。
本文的监控系统的 CPU 核心部分使用的是标准的 SO-DIMM200 金手指接口,便于后期维护和升级。如果该监控系统的使用环境较为苛刻,可以将 CPU替换为S3C2440芯片。S3C2440完全兼容S3C2410全部特性(注意:芯片引脚不完全兼容)。与S3C2410芯片相比,S3C2440的性能更为优越:最高工作频率可达500MHz,内部集成CMOS摄像头接口,但价格较昂贵。
图1 监控系统组成框图
2.3数据终端 数据终端的主要功能是对监控数据进行分析、处理,及时将数据汇报给监控人员。同时,监控人员可以根据现场情况,使用数据终端对监控的设备进行远程控制。数据终端最大优势 就是安全、可靠、便于携带。一般情况下为了节约成本,可以将手机、PDA 等移动通讯设备作为数据终端使用。但是如果作为对高危环境或精密仪器的监控系统,数据终端需要专业定制。这里使用的是中心控制器的作为数据终端,即中心控制器既作为数据采集发送中心,也可数据接收处理中心使用。
2.4通讯模块
通讯模块主要负责远程数据通讯。带有 RS232/485、GPRS、CDMA 等一种或多种通讯 方式。需要根据现场环境和用户需要进行定制。通讯模块与控制器通过接口总线连接,连接 方式为 TTL/RS232/RS485 等。
2.5传感器模块
传感器模块的主要功能是感知外部环境,对外部环境进行实时监测。由人体红外传感器、振动传感器、超声波传感器、可燃气体传感器、温度传感器、湿度传感器等一种或多种传感 器组成。可根据现场监测环境不同进行定制。
2.6接口模块
接口模块主要作为系统扩展功能使用,将控制器的 A/D 转换、I2C、SPI 等多种接口进行 外部扩展。接口模块没有特定的功能,但可以根据需要与其他设备连接,例如可以与工业仪 器仪表或设备连接,实时对仪器或设备进行监控。
接口模块虽然不是监控系统的主要部分,但是对于整个系统来说却是不可缺少。因为本文的监控系统主要考虑到了系统的可扩展性和与其它系统无缝连接。通过接口模块可以很方 便的对监控系统进行升级,并且可以实现与其他系统或设备的无缝连接。这也是本系统区优 于其他监控系统的主要功能。软件设计
3.1工作软件
系统的软件设计较为复杂,这里只给出了整个工作软件流程(如图 2)。
图2 软件流程图
3.2操作系统移植
S3C2410 芯片支持多种嵌入式操作系统,如 WINCE、uCLinux 等。但考虑到监控系统 的实时性要求,这里使用的是 μC/OS-II 嵌入式实时操作系统。μC/OS-II 是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用 ANSI C 写的。整个嵌入式系统分为两大层:硬件层和软件层。这里主要研究软件层的架构。软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用程序相关部分,用户的应用程序。移植 μC/OS-II 系统需要修改的文件有:应用程序相关文件: OS_CFG.H INCLUDE.H; 处理器相关文件: OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。
3.2.1 与处理器相关的代码
这是移植中最关键的部分。内核将应用系统和底层硬件有机的结合成一个实时系统,要 使同一个内核能适用于不同的硬件体系,就需要在内核和硬件之间有一个中间层,这就是与 处理器相关的代码。处理器不同。这部分代码也不同。我们在移植时需要自己移植这部分代 码。
a)OS_CPU.H
包括了用#define 定义的与处理器相关的常量,宏和类型定义,有系统数据类型定义,栈 增长方向定义,关中断和开中断定义,系统软中断的定义等等。
b)OS_CPU_A.ASM
这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写。包括四个子函数: OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任务系统启动函数 OSStart()中调用。完成的功能是:设置系统运行标志位 OSRunning = TRUE;将就绪表中最高优先级任务的栈指针 Load 到 SP 中,并强制中断返回。这样就绪的最高优先级任务就如同从中断里返回到运行态一样,使得整个系统得以运转。OSCtxSw()在任务级任 务切换函数中调用的。任务级切换是通过 SWI 或者 TRAP 人为制造的中断来实现的。ISR 的向 量地址必须指向 OSCtxSw()。这一中断完成的功能:保存任务的环境变量(主要是寄存器的值, 通过入栈来实现),将当前 SP 存入任务 TCB 中,载入就绪最高优先级任务的 SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了任务级的切换。OSIntCtxSw()在退出中断 服务函数 OSIntExit()中调用,实现中断级任务切换.由于是在中断里调用,所以处理器的寄存器入栈工作已经做完,就不用作这部分工作了。具体完成的任务;调整栈指针(因为调用函数会使任务栈结构与系统任务切换时堆栈标准结构不一致),保存当前任务 SP,载入就绪 最高优先级任务的 SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了中断级任务切换。OSTickISR()系统时钟节拍中断服务函数,这是一个周期性中断,为内核提供
时钟节拍。频率越高系统负荷越重。其周期的大小决定了内核所能给应用系统提供的最小时 间间隔服务。一般只限于 ms 级(跟 MCU 有关),对于要求更加苛刻的任务需要用户自己建立中断来解决.该函数具体内容:保存寄存器(如果硬件自动完成就可以省略),调 OSIntEnter(),调用 OSTimeTick(),调用 OSIntExit(),恢复寄存器,中断返回。
c)OS_CPU_C.C
该文件中共定义了 6 个函数,但是最重要的是 OSTaskStkInit().其他都是对系统内核的扩展 时用的.OSTaskStkInit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并且将环境变量保存完毕时 的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。
3.2.2与应用相关的代码
这部分包括两个文件:OS_CFG.H, INCLUDES.H。用户根据自己的应用系统来定制合适 的内核服务功能。OS_CFG.H 来配置内核,用户根据需要对内核进行定制,留下需要的部分,去掉不需要的部分,设置系统的基本情况。比如系统可提供的最大任务数量,是否定制邮箱服务,是否需要系统提供任务挂起功能,是否提供任务优先级动态改变功能等等。INCLUDES.H 系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件。
3.3用户图形接口
虽然 μC/OS-II 操作系统具有很高的实时性,但不像 WINCE、uCLinux 等操作系统那样 有良好的图形界面支持。所以,在使用液晶和触摸屏的情况下需要移植用户图形接口程序。这里使用的是 μC/GUI。μC/GUI 是一个软件模块集合,通过该模块可以在我们的嵌入式产品 中加入用户图形接口(GUI)。μC/GUI 具有很高的执行效率,并且与处理器和 LCD 控制器相 独立。该模块可以工作在单任务或者多任务环境,可以支持不同大小的显示方式。
通过 μC/GUI 我们可以很方便的在液晶屏绘制图形和界面。如果需要多种字体支持,必 须自己将相应的字体字库加入到 μC/GUI 中。为了避免出现乱码,尽量使用 GB2312 国标字库。
3.4关于字库的兼容性问题
我们国内通常使用的汉字字库是 GB 码,但国际上使用的是 UNICODE 码,所以如果数据终端使用的是手机、PDA 等移动通信设备,那么在数据发送前必须进行字码转换,即 GB 码 转换为 UNICODE 码或者 UNICODE 码转换为 GB 码。由于 GB 码与 UNICODE 码在排列组合上没有任何规律,所以通常字码转换的方法就是 查表法。
4结束语
基于 ARM9 嵌入式系统的远程监控系统与以往的监控系统不同,高性能的处理器芯片大大提高了系统的性能。使监控系统能够工作在比较恶劣的环境中。并且在设计上充分考虑到了系统的可扩展性和兼容性问题,实现了本系统与其他系统的无缝连接。以满足不同工作环 境的需要。
作者创新观点:本文设计的远程监控系统应用范围更广,更灵活、方便。通过各个功能模块 的不同组合,可以十分方便快速的应用于各个领系域,真正实现智能化、自动化且具有较高 的性价比。
第三篇:嵌入式远程医疗监护系统(范文模版)
嵌入式远程医疗监护系统
嵌入式医疗监护系统设计
一、整体设计
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低耗(具有精简指令集的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中。MSP430特点
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如 FFT 等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM 保持模式下的最低功耗只有0.1μA。
其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32768Hz),也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。
由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)。在实时时钟模式下,可达2.5μA,在RAM 保持模式下,最低可达0.1μA。
MSP430 系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-Δ ADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出 A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM 等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的 I/O 端口,P0、P1、P2 端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件 A/D 转换器有较高的转换速率,嵌入式远程医疗监护系统
最高可达200kbps,能够满足大多数数据采集应用;能直接驱动液晶多达 160 段;实现两路的 12 位 D/A 转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。
另外,MSP430 系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的低功耗状态时,中断唤醒只需5μs。
MSP430 系列有 OPT 型、FLASH 型和 ROM 型三种类型的器件,这些器件的开发手段不同。对于 OPT 型和 ROM 型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有 JTAG 调试接口,还有可电擦写的 FLASH 存储器,因此采用先下载程序到 FLASH 内,再在器件内通过软件控制程序的运行,由 JTAG 接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台 PC 机和一个 JTAG 调试器,而不需要仿真器和编程器。开发语言有汇编语言和 C 语言。
考虑以上原因,我们决定采用该型号单片机为本系统的微处理器。
二、温度采集芯片 18B20 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
1、DS18B20产品的特点
(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。C到+125。C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。2. DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
嵌入式远程医疗监护系统
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
综合各方原因我们采用该芯片模拟所有医用传感器,来完成整个系统设计。
三、无线模块 NRF2401 nRF2401是单片射频收发芯片,工作于2.4~2.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。QFN24引脚封装,外形尺寸只有5×5mm。
nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。
ShockBurstTM收发模式
ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401的ShockBurstTM技术同时也减小了整个系统的平均工作电流。
在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。
ShockBurstTM发射流程
接口引脚为CE,CLK1,DATA
A.当微控制器有数据要发送时,其把CE置高,使nRF2401工作;
B.把接收机的地址和要发送的数据按时序送入nRF2401;
C.微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;
D.nRF2401的ShockBurstTM发射
给射频前端供电;
射频数据打包(加字头、CRC校验码);
高速发射数据包;
发射完成,nRF2401进入空闲状态。
嵌入式远程医疗监护系统
ShockBurstTM接收流程
接口引脚CE、DR1、CLK1和DATA(接收通道1)
A.配置本机地址和要接收的数据包大小;
B.进入接收状态,把CE置高;
C.200us后,nRF2401进入监视状态,等待数据包的到来;
D.当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;
E.nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;
F.微控制器把数据从nRF2401移出;
G.所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。
直接收发模式
在直接收发模式下,nRF2401如传统的射频收发器一样工作。
直接发送模式
接口引脚为CE、DATA
A.当微控制器有数据要发送时,把CE置高;
B.nRF2401射频前端被激活;
C.所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC校验码)。
直接接收模式
接口引脚为CE、CLK1和DATA
A.一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在);
B.CLK1引脚也开始工作;
C.一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;
D.这头必须是8位;
E.DR引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。
配置模式
在配置模式,15字节的配置字被送到nRF2401,这通过CS、CLK1和DATA三个引脚完成,具体的配置方法请参考本文的器件配置部分。
空闲模式
nRF2401的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工
嵌入式远程医疗监护系统
作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12uA,外部晶振为16MHz时工作电流为32uA。在空闲模式下,配置字的内容保持在nRF2401片内。
关机模式
在关机模式下,为了得到最小的工作电流,一般此时的工作电流小于1uA。关机模式下,配置字的内容也会被保持在nRF2401片内,这是该模式与断电状态最大的区别。
nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。由上文对nRF2401工作模式的介绍,我们可以知道,nRF2401一般工作于ShockBurstTM收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分:
数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;
地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;
地址:接收数据的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能够生成CRC校验码和解码。
当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。
在配置模式下,注意保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。PCB设计
PCB设计对nRF2401的整体性能影响很大,所以PCB设计在nRF2401收发系统的开发过程中主要的工作之一,在PCB设计时,必须考虑到各种电磁干扰,注意调整电阻、电容和电感的位置,特别要注意电容的位置。
nRF2401的PCB一般都是双层板,底层一般不放置元件,为地层,顶层的空余地方一般都敷上铜,这些敷铜通过过孔与底层的地相连。直流电源及电源滤波电容尽量靠近VDD引脚。nRF2401的供电电源应通过电容隔开,这样有利于给nRF2401提供稳定的电源。在PCB中,尽量多打一些通孔,使顶层和底层的地能够充分接触。
nRF2401通过ShockBurstTM收发模式进行无线数据发送,收发可靠,其外形尺寸小,需要的外围元器件也少,因此,使用方便,在工业控制、消费电子等各个领域都具有广阔的应用前景。
由于2401的诸多优点,我们决定选用此芯片完成无线部分。至此我们已经完成整体设计。
嵌入式远程医疗监护系统
二、软件部分
接收程序:
#include “msp430.h” #include “cry1602.h” typedef unsigned char uchar;typedef unsigned intuint;
/**************宏定义***************/ #define DataDir P4DIR #define DataPort P4OUT
#define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0;//RS = P3.0 #define SET_RS P3OUT|=BIT0;
#define CLR_RW P3OUT&=~BIT1;//RW = P3.1 #define SET_RW P3OUT|=BIT1;
#define CLR_EN P3OUT&=~BIT2;//EN = P3.2 #define SET_EN P3OUT|=BIT2;
/*********************************************** 函数名称:DispStr 功 能:让液晶从某个位置起连续显示一个字符串 参 数:x--位置的列坐标 y--位置的行坐标 ptr--指向字符串存放位置的指针 返回值 :无
***********************************************/ voidDispStr(ucharx,uchary,uchar *ptr){ uchar *temp;uchari,n = 0;
temp = ptr;while(*ptr++!= ' ')n++;//计算字符串有效字符的个数
for(i=0;i 嵌入式远程医疗监护系统 } /******************************************* 函数名称:DispNchar 功 能:让液晶从某个位置起连续显示N个字符 参 数:x--位置的列坐标 y--位置的行坐标 n--字符个数 ptr--指向字符存放位置的指针 返回值 :无 ********************************************/ voidDispNChar(ucharx,uchar y, ucharn,uchar *ptr){ uchari; for(i=0;i ********************************************/ voidLocateXY(ucharx,uchar y){ uchar temp; temp = x&0x0f;y&= 0x01;if(y)temp |= 0x40;//如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1);} /******************************************* 函数名称:Disp1Char 嵌入式远程医疗监护系统 功 能:在某个位置显示一个字符 参 数:x--位置的列坐标 y--位置的行坐标 data--显示的字符数据 返回值 :无 ********************************************/ void Disp1Char(ucharx,uchary,uchar data){ LocateXY(x, y); LcdWriteData(data); } /******************************************* 函数名称:LcdReset 功 能:对1602液晶模块进行复位操作 参 数:无 返回值 :无 ********************************************/ voidLcdReset(void){ CtrlDir |= 0x07;//控制线端口设为输出状态 DataDir = 0xFF;//数据端口设为输出状态 LcdWriteCommand(0x38, 0);//规定的复位操作 Delay5ms();LcdWriteCommand(0x38, 0); Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms(); LcdWriteCommand(0x38, 1);//显示模式设置 LcdWriteCommand(0x08, 1);//显示关闭 LcdWriteCommand(0x01, 1);//显示清屏 LcdWriteCommand(0x06, 1);//写字符时整体不移动 LcdWriteCommand(0x0c, 1);//显示开,不开游标,不闪烁 } /******************************************* 函数名称:LcdWriteCommand 功 能:向液晶模块写入命令 参 数:cmd--命令,chk--是否判忙的标志,1:判忙,0:不判 返回值 :无 ********************************************/ voidLcdWriteCommand(ucharcmd,ucharchk){ 嵌入式远程医疗监护系统 if(chk)WaitForEnable();// 检测忙信号? CLR_RS;CLR_RW;_NOP(); DataPort = cmd;//将命令字写入数据端口 _NOP(); SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN; } /******************************************* 函数名称:LcdWriteData 功 能:向液晶显示的当前地址写入显示数据 参 数:data--显示字符数据 返回值 :无 ********************************************/ voidLcdWriteData(uchar data){ WaitForEnable();//等待液晶不忙 SET_RS;CLR_RW;_NOP(); DataPort = data;//将显示数据写入数据端口 _NOP(); SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN; } /******************************************* 函数名称:WaitForEnable 功 能:等待1602液晶完成内部操作 参 数:无 返回值 :无 ********************************************/ 嵌入式远程医疗监护系统 voidWaitForEnable(void){ P4DIR &= 0x00;//将P4口切换为输入状态 CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP(); while((P4IN & Busy)!=0);//检测忙标志 CLR_EN; P4DIR |= 0xFF;//将P4口切换为输出状态 } /******************************************* 函数名称:Delay5ms 功 能:延时约5ms 参 数:无 返回值 :无 ********************************************/ void Delay5ms(void){ uinti=40000;while(i!= 0){ i--;} } 发送程序: #include #define DQ1 P2OUT |= BIT4 #define DQ0 P2OUT &= ~BIT4 #define DQ_in P2DIR &= ~BIT4 #define DQ_out P2DIR |= BIT4 #define DQ_val(P2IN & BIT4) /******************************************* 嵌入式远程医疗监护系统 函数名称:DelayNus 功 能:实现N个微秒的延时 参 数:n--延时长度 返回值 :无 说明 :定时器A的计数时钟是1MHz,CPU主频8MHz 所以通过定时器延时能够得到极为精确的 us级延时 ********************************************/ voidDelayNus(uint n){ CCR0 = n;TACTL |= MC_1;//增计数到CCR0 while(!(TACTL & BIT0));//等待 TACTL &= ~MC_1;//停止计数 TACTL &= ~BIT0;//清除中断标志 } /******************************************* 函数名称:Init_18B20 功 能:对DS18B20进行复位操作 参 数:无 返回值 :初始化状态标志:1--失败,0--成功 ********************************************/ uchar Init_18B20(void){ uchar Error; DQ_out;_DINT();DQ0;DelayNus(500);DQ1;DelayNus(55);DQ_in;_NOP();if(DQ_val){ Error = 1;//初始化失败 } else { Error = 0;//初始化成功 } DQ_out;DQ1; 嵌入式远程医疗监护系统 _EINT(); DelayNus(400); return Error;} /******************************************* 函数名称:Write_18B20 功 能:向DS18B20写入一个字节的数据 参 数:wdata--写入的数据 返回值 :无 ********************************************/ void Write_18B20(ucharwdata){ uchari; _DINT();for(i = 0;i< 8;i++){ DQ0;DelayNus(6);//延时6us if(wdata& 0X01)DQ1;else DQ0;wdata>>= 1;DelayNus(50);//延时50us DQ1;DelayNus(10);//延时10us } _EINT();} /******************************************* 函数名称:Read_18B20 功 能:从DS18B20读取一个字节的数据 参 数:无 返回值 :读出的一个字节数据 ********************************************/ uchar Read_18B20(void){ uchari;uchar temp = 0; _DINT();for(i = 0;i < 8;i++){ 嵌入式远程医疗监护系统 temp>>= 1;DQ0;DelayNus(6);//延时6us DQ1;DelayNus(8);//延时9us DQ_in;_NOP();if(DQ_val)temp |= 0x80;DelayNus(45);//延时45us DQ_out;DQ1;DelayNus(10);//延时10us } _EINT(); return temp;} /******************************************* 函数名称:Skip 功 能:发送跳过读取产品ID号命令 参 数:无 返回值 :无 ********************************************/ void Skip(void){ Write_18B20(0xcc);} /******************************************* 函数名称:Convert 功 能:发送温度转换命令 参 数:无 返回值 :无 ********************************************/ void Convert(void){ Write_18B20(0x44);} /******************************************* 函数名称:Read_SP 功 能:发送读ScratchPad命令 参 数:无 返回值 :无 ********************************************/ 嵌入式远程医疗监护系统 voidRead_SP(void){ Write_18B20(0xbe);} /******************************************* 函数名称:ReadTemp 功 能:从DS18B20的ScratchPad读取温度转换结果 参 数:无 返回值 :读取的温度数值 ********************************************/ uintReadTemp(void){ uchartemp_low;uint temp; temp_low = Read_18B20();//读低位 temp = Read_18B20();//读高位 temp =(temp<<8)| temp_low; return temp;} /******************************************* 函数名称:ReadTemp 功 能:控制DS18B20完成一次温度转换 参 数:无 返回值 :测量的温度数值 ********************************************/ uint Do1Convert(void){ uchari;do { i = Init_18B20();} while(i);Skip();Convert();for(i = 20;i > 0;i--)DelayNus(60000);//延时800ms以上 do { i = Init_18B20();} 嵌入式远程医疗监护系统 while(i);Skip();Read_SP();returnReadTemp();} 附:为方便排版,故将硬件连接以照片形式上交。故此处略去该部分图片。 基于嵌入式Web的远程监控系统设计 摘 要:本文结合机房环境设备的管理需要,分析了远程监控系统的特点,提出基于嵌入式Web服务器的远程监控系统设计思路、体系架构方法,并对基于OPC技术的互联与基于嵌入式Web服务器的互联作了简要对比。文章结合CGI程序的设计,着重探讨了嵌入式Web服务器的实现方法。关键词:嵌入式平台,Web服务器,远程监控,CGI程序 ⒈引言 随着计算机和网络技术的普及,计算机系统的数量与日俱增,计算机机房已成为各大型单位的信息枢纽。机房中的环境设备(如空调、UPS电源、配电柜、消防设备等)为网络系统的安全运行提供了环境保障。同时,环境设备自身的安全运行,也成为机房管理的重要内容之一。一旦机房的环境设备出现故障,就会直接影响计算机系统的正常运行,严重的还会造成机房内的相关设备损坏,甚至导致网络系统瘫痪[1]。因此,对机房环境设备的运行状态进行实时监控,是保证机房设备安全运行的关键措施。 ⒉远程监控系统的需求分析 对机房环境设备的监控主要涉及以下几个方面的内容:对配电系统、UPS系统、空调系统工作状态的监视;对机房的温湿度、生活用水和供暖制冷系统漏水情况等进行监测、报警,以及对门禁系统、消防系统、保安系统等的管理。由于这些环境设备是连续工作的,因此要求监控系统也必须是长时间连续工作的。这样就对系统设计的可靠性、安全性、可维护性等方面提出了更高的要求[1],具体表现在以下几个方面: ⑴高可靠性。要求监控系统可长时间不间断运行,无故障运行时间要长,且系统的维护快速简便。 ⑵高安全性。系统应能够提供多种安全保护措施,对异常状态进行分析、记录、及时报警,以便让管理人员能够尽快了解所发生的情况并及时处理。 ⑶较强的实时性。监控系统对信息的传输要及时,不能有过大的延时,否则难以及时跟踪被监控对象的当前状况。 ⑷易用性和易维护性。机房环境设备监控系统,应以GUI的方式提供良好的人机界面,便于人机交互。同时,监控系统要有通用性和灵活性,即可以在对系统进行少量修改或扩充就可增加新的监控项目,扩充监测点数,以满足新的监控要求。 ⑸丰富的系统功能。要求监控系统不仅能够提供一般的报警功能,对采集的当前数据进行记录且保存 历史数据,并以图形方式对环境设备运行状态和参数进行直观显示。 实施监控的主要方法,即是在现场控制器的控制之下,实时地采集数据并与预设的值进行比较,如果超出相应的阀值则给出报警,以提示有关人员进行相应处理。根据对环境设备监控的位置不同,可把监控系统分为本地监控和远程监控两大类。本地监控方式往往需要派人长期现场值守,管理成本较高;而借助于公共的Internet或企业内部的Intranet网络实施远程监控则可做到无人值守,从而大幅度地节约管理成本、提高机房管理水平和效率,因此成为监控系统发展的主流方向。 ⒊远程监控系统的设计 基于对远程监控系统的需求分析,进行系统设计时应重点考虑如下几种因素:首先,要考虑现场总线与数据网的互联问题。由于被监控对象的信号种类较多,所采用的现场总线标准各异,因此不同总线标准之间的转换以及现场总线与数据网之间的互联是系统设计时需要重点考虑的问题[2]。其次,实时性要求是远程监控网络系统区别于普通网络系统的基本特征。如果监控系统的实时性得不到保障,现场监控就失去了实用价值。第三,为满足监控系统的高可靠性要求,应分别对硬件系统和软件系统进行抗干扰设计。第四,根据远程连接方式不同,应采用不同的安全措施以保证信息的安全传输。3.1监控系统的功能设计 监控系统的基本功能主要包括:现场数据的实时采集、发送和显示;对采集到的数据进行处理和存储;对数据处理的结果进行分析、判断和报警;提供多种业务支持功能。3.1.1实时数据采集 实时数据采集是实施系统监控的基础。在环境设备的监控系统中,需要实时采集的数据主要包括高低压配电系统及UPS电源的电压、电流、电源开关状态等参数,空调机的冷热水温度、流量、送风量、送风温度、新风量等状态参数,以及机房内部的环境参数(如温度、湿度、水浸、烟感、门禁等)。不同的参数采用的总线标准不同(如RS232/485总线、Lonworks总线),只有把它们统一到TCP/IP协议上,才能实现真正意义上的远程监控。 3.1.2报警功能 报警是监控系统的基本功能之一。监控系统对采集到的数据进行分析、处理,如果发现相关数据超限、数据异常,则说明环境设备出现异常情况,此时应发出相应报警。设计报警功能时,需要考虑被监控对象的自身特性、优先级别等因素,对多个报警信号进行加权处理,以保证系统的所有重要报警都能被及时处理。 3.1.3多种业务支持功能 灵活的查询和丰富的报表功能是对监控系统基本功能的扩展。通过对设备运行状态的实时数据、历史数据进行对比分析,从不同角度向管理者提供设备运行和维护信息,为设备的维护、大修、更新、改造等质量管理提供可靠依据。3.2监控系统的结构设计 远程监控系统由现场数据采集设备(可以为多个设备)、本地Web服务器和远端监控主机三部分构成[3]。Web服务器通过现场总线与本地数据采集设备直接相连,并负责把本地传感器采集到的数据进行简单处理,通过网络发送到远端的监控主机上,从而为实现无人值守的管理方式创造条件。 远程监控系统在设计时需要解决的关键问题,就是将不同类型的现场总线或控制网络与以太网进行互联互通,从而实现监控信息的远程实时传输。目前,实施远程监控主要有如下几种方法:①基于PSTN的传统方法,即通过Modem连接异地的现场设备;②基于OPC技术。采用支持多种现场总线规范的OPC Server,通过OPC 接口实现现场总线到Internet或Intranet网络的无缝连接;③基于嵌入式平台实现远程监控。在嵌入式平台上完成对现场数据的实时采集,通过现场总线与数据网的互连,将Server端的数据通过TCP/IP协议提供给远端的监控主机(即Client端);④采用其它自定义方法实施远程监控。3.2.1基于OPC的监控系统 OPC 是以OLE/COM/DCOM机制作为应用程序级的通信标准,采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式向用户提供通用的接口,解决了软、硬件厂商之间的矛盾,提高了系统的开放性和互操作性[4]。基于OPC架构的监控系统结构如图1所示。其中,OPC DA Server为数据采集服务器,OPC AE Server为报警服务器。OPC Server 提供多种接口规范,应用程序和Web浏览器(即OPC Client)可以通过这些接口取得与OPC Server相连的硬件设备信息,从而实现OPC Client通过以太网对OPC Server的访问。同时OPC Server也可以将采集到的数据或报警信息通过网络发送到客户端或Web浏览器端。 在基于OPC的体系架构中,由于 COM/DCOM 已被视为网络功能的具体实现方法,使得Client对OPC Server的远程访问成为标准的网络访问方式。但是OPC技术的缺点也是非常明显的,由于LE/COM/DCOM机制是一个纯软件的架构,对系统资源配置的要求高。当系统规模较大或监控点数较多时,系统的实时性将会明显下降。 3.2.2基于嵌入式平台的监控系统 实时监控系统需要长时间不间断地工作,对系统的可靠性和实时性均有较高要求。为此必须从系统功能、体系架构、软硬件系统的稳定性、设备功耗等方面进行综合考虑(例如选用工控级的产品),设计小型化的智能型监控系统。而建立在RTOS之上的嵌入式系统为控制系统的网络化、小型化提供了有效途 径,嵌入式网络控制已成为监控系统未来发展的重点方向之一。 基于嵌入式平台的远程监控系统结构如图2所示。其中,嵌入式Web服务器既是远程监控系统的中心节点,也是控制网络与数据网络进行互联的网关,通过TCP/IP协议将其连接到以太网上,监控主机则通过以太网(或Internet)在远程实时地监视现场信号的动态变化,从而实现远程监控的目标。对于能够直接支持TCP/IP协议的现场检测设备,则可以将其直接连接到以太网上,图中的液体泄漏检测仪即是如此;对于采用其他总线标准的现场设备,则需要通过嵌入式Web服务器进行信号转换之后把现场总线连接到以太网上。 图2 远程监控系统结构图 ⒋嵌入式Web服务器的设计 在基于嵌入式平台的远程监控系统中,监控系统的中心节点主要承担两方面的任务:一方面负责对现场数据的采集,即Web服务器以定时巡检的方式通过现场总线对传感器的信号进行采集;另一方面负责协议转换,把现场总线来的数据转换成TCP/IP协议的格式,通过以太网将其发送到远端的监控主机上。在本设计中实现了从RS232、RS485到TCP/IP协议之间的相互转换。4.1开发环境简介 考虑到系统开发的简便性,本方案选用uCLinux操作系统平台作为系统的OS环境,辅助开发工具选用MiceTek公司的HiTool。嵌入式Web服务器的硬件环境选用MiceTek公司的Samsung44B0X开发板,利用其丰富的接口功能,可实现嵌入式Web服务器与传感器的直接连接。4.2 嵌入式Web服务器的硬件设计 嵌入式Web服务器硬件环境的自定义,是根据监控系统的需要,重新制作嵌入式系统的主板。该主板的CPU仍选用Samsung的S3C44B0X,1M的BootFlash,8M的SDRAM,并提供10M/100M的以太网端口,2个RS232接口和6个RS485接口。如果待检测的参数较少,则选用一块嵌入式Web服务器主板即可;如果待检测的参数较多,则可选用多个同样的Web服务器主板,并对每个Web服务器进行参数配置(设置不同的IP地址),构成分布式的Web服务器。如果监控系统要求存储的数据量很大,则可以采取以下两种方法加以解决:一是嵌入式Web服务器外接硬盘;另一种方法是外加一台由工业控制级的服务器,对多台嵌入式Web服务器进行统一管理。4.3 嵌入式Web服务器的软件实现 嵌入式Web服务器的软件开发主要包括以下几项内容:首先,完成嵌入式操作系统的移植和TCP/IP协议的剪裁;第二,编写数据采集、数据处理应用子程序;第三,编写远程通信子程序;第四,报警处理子程序;第五,数据查询和报表生成子程序。这些功能应先在上述的开发环境中进行初步实现之后,再移植到自定义的环境中。 由于嵌入式系统的资源有限,因此对上述功能的实现应尽量简洁,例如对HTTP协议的移植,只需要保留基本的Get和Post方法即可,而Options、Head、Put、Delete和Trace方法在此可不考虑实现,因为对RAM(或EEPROM)中的数据存储可以采用循环覆盖的方式。 在此方案中,嵌入式Web服务器与Web浏览器及其他应用程序之间的交互,可以通过调用CGI(Common Gateway Interface)程序来实现。CGI规定了Web服务器与浏览器及其他可执行程序的接口协议标准。当Web浏览器将请求信息发送给Web服务器时,Web服务器触发一个可执行的CGI程序,该程序根据用户请求的内容做出相应的处理,并将处理结果以Web服务器可识别的方式输出,Web服务器再将该结果回送给Web浏览器[5]。 CGI程序中的信息传递是通过标准输入设备stdin和标准输出设备stdout来完成的。Web服务器在调用CGI程序之前,需要预先设置好所有的环境变量,以便把客户的请求转化为参数后存入环境变量,然后就可以调用CGI程序了。CGI程序根据不同的请求方法确定如何获取客户的请求内容,而Web服务器则通过标准输入设备stdin获得客户请求;对于CGI程序的输出结果,Web服务器则是通过标准输出设备stdout来获得,Web服务器对其进行语法分析之后,再传送给客户浏览器。至于CGI程序的实现,本方案选用C语言,以保证CGI程序的快速、高效和安全。 ⒌结语 基于嵌入式平台的监控系统,以其体积小、可连续工作时间长、性能稳定等特点,得到人们的广泛认可,成为网络化远程监控系统的主流方向。在本设计中,借助于相对稳定和成熟的软硬件开发环境,设计了一套较为完整和实用化的远程监控方案并加以实现。经使用证明,该设计方案是成功的并取得了较为理想的效果。 参考文献 [1]关光富,计算机机房环境设备监控系统与设计分析,电工技术杂志,2004.2 [2]周祖德编著,基于网络环境的智能控制,国防工业出版社,2004.1,第1版 [3]宋广军,张敬,王睿,基于web的温湿度远程监控系统,微计算机信息,2004.1 [4]孙敏,顾德英,汪晋宽,基于OPC技术的监控组态程序的开发,仪器仪表学报(增刊),2003.8 [5]汤碧玉,曾楠,郑灵翔等,嵌入式系统中基于Web的远程监控设计与实现,厦门大学学报(自然科学版),vol.43(5),2004.9 本文由wangyong1179贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。2010年第 11期 文章编号: 1006 2475(2010)11 0031 04 计 算 机 与 现 代 化 JISUAN JI YU X IAN DA I UA H 总第 183期 基于嵌入式 L inux远程图像监控系统的设计 唐人财, 刘连浩 (中南大学信息科学与工程学院, 湖南 长沙 410083)摘要: 系统以嵌入式微处理器 S3C2440和 L inux为核心平台, 采用 U SB摄像头作为图像采集设 备, 利用 L inux 下视频设备 应用编程接口 V 4L2和 Q t/Em bedded实现图像的采集, 实时 显示和 JPEG 格式 图片保 存, 利 用 libjpeg 库来实 现视频 数据 的编解码以及通过以太网进行远程传输, 实现一种功耗低、可靠性高和低成 本的网络图像采集与传输系统设计方案。关键词: L inux 图像采集;Q t/Em bedded V 4L2;S3C2440;;中图分类号: T P391 41.文献标识码: A do: 10 3969 /.j issn.1006 2475.2010.11.009 i.D esign of R emote I age M on itoring System Based on Em bedded L inux m TANG R en ca, L IU L ian hao i(Institu te of Infor ation Science and Eng ineer ing, C entra l South U niversity Changsha 410083, China)m , Ab stract T he syste uses e : m mbedded m icroprocesso r S3C2440 and L inux as the core platfo r T he applica tion prog ramm ing in m.te rface V 4L2 and Q t /Embedded library are tw o key techno log ies to realize i age acqu isition, rea l ti e display and JPEG p icture m m sav ing by using U SB ca era T his design of i age acqu isition and trans ission is a low powe r consumption, h igh reliab ility and m.m m inexpensive syste m, wh ich ach ieves encod ing o r decod ing of i ages by lib jpeg library and remo te transm ission o f E therne t m.K ey w ords L inux;i age acquisition;Q t/Em bedded V4L 2;S3C2440 : m;0 引 言 友好图形操作界面, 实现现场图像在终端上的实时显 示和 JPEG图片的保存。利用 L inux 下 lib jp eg库编码 压缩图像, 通过以太网接口实时传输到视频监控中心 PC机上, 通过接收解码显示现场图像, 实现远程视频 图像监控功能。系统总体设计结构如图 1所示。 随着嵌入式技术、多媒体技 术及网络技术 的发 展, 基于嵌入式技术、视频压缩编码技术和网络传输 控制技术的综合应用, 已成为数字化网络视频采集监 控领域的核心 技术。系统是基于 ARM 9和 L inux平台的远程视频图像监控设计方案, 整个系统建立在嵌 入式结构上, 实现了高质量的视频图像采集和实时处 理功能。 系统总体设计 远程视频图像监控系统分为嵌入式视频监控终 端和监控中心 PC 机两部分。嵌入 式视频监控终端 基于嵌入式微处理器 S3C2440和 L inux 核心平台, 采 用通用 USB 摄像头捕捉现场图像, 通过 USB 接口将 数据传输到 ARM 开发板上, 由开发板上的图像采集 处理模块进行图像数据处理, 通过 LCD 触摸屏显示 图 1 系统总体设计框图 2 系统硬件设计 系统选取 m in i2440开发板作为系统设计的硬件 收稿日期: 2010 06 28 作者简介: 唐人财(1978), 男, 海南海口人, 中南大学信息科学与工程 学院硕 士研究 生, 研 究方向: 嵌入 式系统 及应用;刘连 浩(1959), 男, 湖南 澧县人, 教授, 博士, 研究方向: 单片机及嵌入式系统。32 计 算 机 与 现 代 化 2010年第 11期 平台, 监控终端硬件由主控模块和扩展模块两部分组 成。主控模块采用嵌入式微处理器 S3C2440 它是一 , 款基于 ARM 920T 核的 16/ 32位 RS I 结构的嵌入式微 C 处理器, 主频 400 z 最高可达 533 MH , MH z 片内外资源 , 丰富, 具有强大的处理能力, 从硬件上保证了系统快速 的响 应 速 度。系 统 存 储 扩 展 了 128 B 的 NAND M FLAS 64 B的 SDRAM。扩展模块包括通用 USB摄 H, M 像头、9000以太网控制器和带触摸屏的 NEC3 5英 DM.寸 TFT 真彩液晶屏。主控模块通过 USB 接口电路、LCD接口电路、以太网接口电路与扩展模块相连接构 成整个硬件系统。系统硬件结构如图 2所示。 配置内核编译选项时把 UVC 驱动编译进内核。UVC 不是摄像头的品牌或型号, 它是一种视频设备的技术 规范, 全称为 U SB V ideo C lass 这是一个为 USB 视频 , 设备提供驱动的开源项目。UVC 驱动支持 V 4L 2应 用编程接口, 系统设计中使用的 USB 摄像头为 T op Speed U SB 2 0 C a era UVC 驱动提供支持。.m , 3 3 V4L2图像采集程序的实现.V4L2 是 V id eo For L inux Two 的 简称, 是 V id eo Fo r L in ux AP I的第二版本, 是 L inux 下开发视频设备 程序的接口标准, 使用分层方法对所有视频设备的驱 动和应用编 程提 供一 套完备 的接 口规 范。基于 V4L 2标准, 视频图像采集处理流程如图 3所示。[ 3] 图 2 系统硬件结构框图 3 系统软件设计 1 系统软件平台.系统软件平台以嵌 入式 L inux 和 Q t/Em bedded 为基础, 具体构建步骤为: 在宿主机上建立交叉编译 环境, 完成引导加载程序 v ivi的编译移植, 编译移植 linux 2 6 29 内核, 包括 DM 9000 网卡、..通用 USB 摄 像头和 LCD 触摸 屏等驱动 的移植, 基于 busybox 1.13.3构建文件系统。基于系统设计的需求, 还要完 成 QTE 4 5 3图形库与 tslib 1 4触摸屏支持库以及...lib jp eg库向开发板的移植。lib jp eg 库主要用于实现 内存中图像数据的编解码, QTE 4 5 3是面向嵌入式..系统的 Q t版本, 采用了 fram ebuffer作为底层图形接 口, 采用 C ++ 封装, 具有丰富的控件资源和良好的可 移植性, 系 统中的应 用程序 以及环 境都是 基于 Q t / Em bedded来开发的。最终形成基于 ARM 的嵌入式 [ 1 2] L inux 操作系统平台 , 在系统软件平台上可进行嵌 入式应用程序的开发。限于篇幅, 系统软件平台的构 建在此只作简单介绍。3 2 嵌入式 L inux下 USB 摄像头驱动.为了使用 L in ux下 V4L2应用编程接口编写图像 采集应用程序, 在开发板上移植版本为 linux 2 6 29..的内核, 此内核版本支持 UVC 驱动 USB 摄像头, 在图 3 视频图像采集处理流程图 3 1 视频设备结构体初始化..程序中定义一个视频设备的数据结构 struct vde vice 结构体的成员变量是对视频设备和图像属性的 , 描述。 init_ vdata(struct vdevice * vdev , char * dev _na e un m , signed int w idth unsigned int he ight int fo r at);, , m 通过参数完成对视频设备结构体变量 vdev的赋 值初始化。视频设备名称 dev_na e 视频图像宽度 m , w idth 视频图像高度 heigh, 视频图像格式 for a, 以 , t m t 及申请分配两个内存缓冲区 fram ebuffer和 rgbbu ffer , 分别为采集到的一帧图像 数据缓冲区和 24位 RGB 图像数据缓冲区。3 3 2 视频设备初始化..函数 in it_vdev(struct vdev ice * vdev)根据参数 2010年第 11期 唐人财等: 基于嵌入式 L inux远程图像监控系统的 设计 vdev传递的值对视频设备进行初始化, 这是进行视频 图像采集前必须完成的工作。视频设备结构体 vdev 包含了要设置的设备信息, 初始化视频设备到适合的 图像采集工作方式。视频设备初始化具体实现如下:(1)打开摄像头设备文件。利用系统调用 函数 vdev > fd = open(vdev > dev_nam e O_RDWR)实现, 该函数的功能是打开参 , 数 vdev > dev_nam e指定的设备, 对于摄像头用设备 文件名 /dev /v ideo0 表示, vdev > fd 是设备打开后 返回的文件描述符, 在程序中可使用它来对设备文件 进行操作。(2)查询设备信息和设置采集属性。在 L inux 编程中, io ct l函数是设备驱动程序中对 设备的 I /O 进行管理的函数, 用户程序一般使用 ioctl 函数来对设备的一些特性进行控制。调用带 V ID I C _ O QUERYCAP命令参数的 io ct l函 数来取得设备文件的属性参数, 并存储于 struct v4l2_ capab ility 结构体变量 vdev > cap 中, 然后可 逐项验 证 vdev > cap的属性, 看设备是否符合采集的要求。 ioctl(vdev > fd V ID I _QU ERYCAP, & vdev > cap);, OC m em 间建立映射, 调用带 V I I C _QBUF 命令参数的 DO ioct l函数将所申请的设备缓存加入等待输入缓存队 列, 内存映射初始化完成。3 3 3 采集图像数据..函数 capture(struct vdevice * vdev)完成一帧视 频图像数据采集, 采集到的视频图像数据存放到设备 缓存 vdev > bu f中, 通过映射的程序内存空间可处理 视频图像, 函数调用成功返回视频设备采集的图像数 据大小。在设备缓存加入等待输入队列后, 调用带 VIDI C_ O STREAMON命令参数的 ioctl函数使能视频设备。 type= V 4L2_BU F _TYPE_V IDEO _CA PTURE;ioctl(vdev > fd V ID I _STREAM ON, & type);, OC 图像数据缓存采用 F IFO 的方式, 缓存队列将已 采集到视频图像数据的设备缓存出队列, 此时与之映 射的内存空间就存储了采集到的视频图像数据, 处理 完毕重新使设备缓存加入队列。这个过程需要调用 两次 io ctl函数。 ioctl(vdev > fd V ID I _DQBUF, & vdev > buf);, OC ioctl(vdev > fd V ID I _QBUF, & vdev > buf);, OC 接着设置视频图像采集格式, 可根据需求修改摄 像头缓冲区中图像参数如分辨率、格式等。具体方法 为先给 struct v4 l2 _for at结构体变量 vdev > f t分量 m m 赋新值, 再调用 带 V ID I C _S _FMT 命令参数 的 ioctl O 函数完成采集属性的设置。ioctl(vdev > fd V ID I _S_FM T, & vdev > fm t);, OC 调用带 VIDIOC_DQBUF 命令参数的 ioct l函数使 设备缓存出队列, 利用系统函数 m em cpy 将所采集的 一帧视频图像数据拷贝的所分配的内存空间 vdev > fram ebuffer以 方 便 后 续 图 像 处 理。然 后 调 用 带 V IDI C _ O QBUF 命令参数的 io ctl函数把设备缓存重新 加入输入缓存队列, 至此完成一帧视频图像数据采集。系统采用的摄像头初始化为 YUV422图像格式, 图像要在 LCD 上显示, 必须进行图像数据格式转换 处理, 将 YUV422格式转换为 RGB24格式。 yuv2 rgb24(vdev > fra ebuffer vdev > rgbbuffer vdev > m , , w idth vdev > he ight);,(3)实现内存映射。V4L2捕获的数据是存放在内核空间的, 用户不 能直接访问该 段内存, 必须通 过某些手段来 转换地 址。系统采用 mm ap内存映射方式, 把设备内存映射 到用户程序内存空间, 直接处理设备内存, 加速了 I/ O 访问。主要函数调用如下: ioctl(vdev > fd V ID I _REQBUF S & vdev > rbuf);, OC , ioctl(vdev > fd V ID I _QU ERYBUF, & vdev > buf);, OC vdev > m e [ i] = mm ap(0, vdev > bu.length, PROT _ m f READ, M AP _SHARED, vdev > fd vdev > bu.f m.offset);, ioctl(vdev > fd V ID I _QBUF, & vdev > buf);, OC 函数 yuv2rgb24 将 vdev > fram ebuffer指定 内存 中的 YUV 422图像格式转换为 RGB24格式, 并存放 到 vdev > rgbbuffer指定内存中, 函数实现在 此不作 详细阐述。3 4 图像数据的 JPEG 编解码.网络传输前对原始图像数据进行压缩处理, 利用 IJG(Independent JPEG G roup)提供的 lib jp eg 库进行 [ 4 6] 图像编解码。在开源的 libjpeg 库中, 函数必须从 文件或其他 设备流中读取数据, 再将压缩数 据存成 JPEG 文件, 增加了不必要的文件 I/O 操作, 不利于网 络实时传输图像。为解决 该问题, 改写 了 lib jp eg 库 内 jdatasrc c和 jd atads.c两个源代码文件, 设计自定.t 义的结构体 struct m y_dest_ gr和 struct m y_src_ g r m m , 增加自定义图像数据缓存地址变量、已处理图像数据 具体实现: 首先, 对 struct v4 l2 _ requestbuffers结 构体变 量 vdev > rbuf 分 量 赋 值, 调 用 带 V I I C _ DO REQBUFS命令参数的 io ctl函 数分配自定义 数量的 设备缓存;然后, 在循环程序结构中对申请分配的设 备缓存 进行映射, 调用带 V IDIOC _QUERYBUF 命令 参数的 ioct l函数获得设备缓存偏移量和缓存大小并 存于 struct v4l2_buffer结构体变量 vdev > bu f中, 调 用 mm ap在设备 缓存 和程序 内存 空间 变量 vdev > 34 计 算 机 与 现 代 化 2010年第 11期 的偏移量变量和图像大小变量, 并改写 lib jp eg库相关 操作函数, 封装相关的数据结构和成员函数为自定义 的图像编解码类 MY JPEG。实现输入数据和输出数据 的重定向到内存, 利用开源的 libjpeg 库在内存中实现 图像的压缩和解压缩。参照 lib jpeg 库中编解码过程, 实现了类 MYJPEG中压缩与解压缩成员函数。 w r ite e(unsigned cha r * m m char* m quality);/ /图像数据压缩处理 readm e(uns igned char indata int pSize unsigned char m * , , * outdata);/ /图像 数据解压缩处理 outdata int * pS ize unsigned , , indata unsigned int mw idth, unsigned int mhe ight int , , 压缩函数中参数可以灵活对压缩图像分辨率大 小和质量属性进行设置, 参数 pS ize 返回压缩后图像 的大小。而解压缩图像时, 压缩图像的大小则通过参 数 pSize传入。3 5 网络传输视频图像数据.UDP是非连接的、不可靠的、传递数据报的传输 协议, 提供了一种高效无连接的服务。由于 UDP 不 提供数据的可靠性保证, 使其具有较少的传输时延, 很适合实时性高而不要求数据绝对可靠的场合。视 频图像数据实时性强, 数据量大, 所以系统设计采用 此协议传输数据。通过 L inux 下的 socket套 接字编 [ 7] [ 8 11] 程 , 实现视频图像的网络传输。利用 C语言中 的多线程编程, 将网络通信置于一个工作线程, 避免 了 GU I应用程序因网络阻塞等待操作而使图形用户 界面冻结无法响应的问题。系统设计时结合使用互 [ 12] 斥锁和条件变量对各个工作线程进行同步。嵌入式视频监控终端上采集显示程序作为主线 程, 同时创建一个视频图像发送工作 线程 deal_send(), 用来处理与视频监控中心 PC间的网络通信。具 体过程描述如 下: 调用 socket()函数创建一个 UDP 数据报类型的套接字, 接着调用 bind()函数, 给套接 字绑定一个端口。视频图像发送工作线程调用 recv from()函数在指定的端口上阻塞等待客户端发送来 的 UDP数据报, 接收到服务请求, 处理该服务请求并 通过 sendto()函数将处理结果返回给 PC 端。在监控中心 PC 端创建解码显示视频图像工作 线程, 并创 建一个视 频图像接 收工 作线程 deal _re ce ive(), 用来处理与视频监控终端的网络通 信。具 体过程描述如 下: 调用 socket()函数创建一个 UDP 数据报类型的套接字, 接着调用 bind()函数, 给套接 字绑定一个端口。调用 sendto()函数向监控终端发 送服务请求报文, 调用 recv from()函数等待并接收服 务应答报文。继续定时发送服务请求直至通信终止。具体网络传输的通信过程如图 4所示。 图 4 网络传输通信流程 4 视频图像实时显示 系统是一个实时视频图像采集与传输系统, 采集 的现场视频图像在嵌入式视频监控终端和监控中心 PC上实时显示与保存。只要以较快速度显示变化的 图片就可以实时显示现场情况, 系统中利用定时器每 40m s采集一帧视频图像。该远程图像监控系统界面 是通过 QT 来实现的, 在强大的 QT 图形库的支持下, [ 13 14 ] 可快速开发出友好的图形用户界面。利用几个 相关 Q t图形类 Q I age QP ixm ap和 QL abe,l 实现视频 m、图像的显示和 JPEG格式图片保存。5 结束语 系统设计方案 是一种基于嵌入式 L inux 的图像 采集和传输系统, 本文详细介绍了 V4L 2应用编程接 口进行 USB 摄像头视频图像采集, 基于 QTE 图形库 实时显示视频图像, 利用开源的 lib jp eg 库实现图像 的 JPEG 编解码, 通过网络实时传输进行远程监控。整个系统数字化、网络化程度高, 实时性好、稳定可靠 且图像质量较好。经实验测试, 系统很好地实现对现 场视频图像的监控。在该系统的基础上, 可进一步进 行二次扩展开发, 以便应用在工业现场控制、远程指 挥监控系统、可视电话等诸多领域。 参考文献: [ 1] [ 2] [ 3] 赵敏, 杨恢先, 汤安平.基于 S3C2440的嵌入式 L inux 系统 移植的研究与实现 [ J].电子器件, 2008 31(6): 1947 1950 ,.郑灵翔.嵌入式 L inux 系统设计 [M ].北京: 北京 航空航 天大学出 版社, 2008.M ichae lH Schi ek V ideo for L inux Tw o AP I Specifica tion m.[ EB /OL ].http: / /v4l2spec bytesex org /v4l2spec / v4 l2...pd, 2008 03 04.f(下转第 38页)38 计 算 机 与 现 代 化 2010年第 11期 目标图像中变成 A!B!因为向前移动了, 所以物体显 , 得比原来要大些。放大的过程应 该是: 逐步 放大左 图, 并适当地截取放大图中跟原来一样大小的一块矩 形区域, 作为一张新的过渡图。至于放大的倍数, 作 [ 8] 如下考虑 : 假设 A!的长度是 AB的 L 倍, 两幅图像之间插入 B!n张过渡图, 则每一张过渡图之间的放大的倍数是(L 1)/(n+ 1)。 速度, 内存优化后系统占用资源更少, 由于不用频繁 申请内存和 释放内存, 减少 了漏洞和错误发 生的几 率;采用缩放的方法改进了行进间的浏览效果, 提高 了虚拟漫游的沉浸感, 具有一定的实用意义。 参考文献: [ 1] 石云飞, 王永平, 李龙 济, 等.基于 模板匹配 的柱面全景 图拼接优化算法 [ J].工程图学学报, 2005(1): 96 99.[ 2] [ 3] [ 4] 华顺刚, 曾令宜, 欧宗瑛.一种快速的柱面全景拼接算法 [ J].数据采集与处理, 2006, 21(4): 435 436.潘华伟, 邹北骥.一种圆 柱形全 景图生 成新算法 及其实 现 [ J].计算机工程与科学, 2003, 25(6): 13 16.吴宪祥, 郭宝龙, 王娟.基于相位相关的柱面全景图像自 动拼接算法 [ J].光学学报, 2009, 29(7): 1824 1829.[ 5] 钟力, 张茂 军, 孙立 峰, 等.360度柱 面全 景图 像生 成算 法及其实现 [ J].小型 微型 计算 机系 统, 1999 20(12): , 899 900.[ 6] [ 7] [ 8] [ 9] 赵 辉, 陈 辉, 于 泓.一 种 改 进 的 全 景 图 自 动拼 接 算 法 [ J].中国图象图形学报, 2007, 12(2): 336 342.阮 秋 琦.数 字 图 像 处 理 [ M ].北 京: 电 子 工 业 出 版 社, 2001.董 士 海.虚 拟 现 实 的 未 来应 用 [ N ].中 国 计 算 机 报, 2001 02 21.崔汉国, 曹茂春, 欧阳清.柱面全景图像拼合算法研究数 字图像处理 [ J].计算机工程, 2004, 30(6): 158 159.[ 10] 赵万金, 龚声蓉, 刘全, 等.一种用于 图像拼 接的 图像序 列自 动 排 序 算 法 [ J].中 国 图 象 图 形 学 报, 2007, 12(10): 1861 1864.[ 11] 张茂春.虚拟现实系统 [M ].北京: 科学出版社, 2001.[ 12] 明德烈, 柳健, 田金文.二维平面内的增强现实虚实配准 问题研究 [ J].红外与激光工程, 2001, 30(6): 410 413.[ 13] 蔡勇, 刘学惠, 吴恩华.基于图像绘制的虚拟现实系统环 境 [ J].软件学报, 1997.8(10): 721 728.[ 14] 喻罡.基于图像的虚 拟场景 构造 和漫 游系统 研究 [ D ].西安: 西安理工大学, 2002.图 6 放大前后的线段 在放大后的图像中央截取一块跟原图像大小相 同的区域, 然而由于拍摄的过程中, 一系列的过渡场 景不可能严格地在一条直线上, 也就是说相邻的中间 图像的中心位置并不重合。如果不加任何处理, 在过 渡的时候实际效果并不平滑, 在到达下一张中间图像 的时候仍然会有跳跃的感觉。解决的方法是, 预先计 算 AB的中点在经过放大和截取后, 在最终目标图中 的位置 p(x y), 对比 A!B!的中点 p!(x!y!), 得出 ,!, ? x = x!-x ? y = y!-y 每次 放大后截 取时, 补偿 , , ? x /(n+ 1)和 ? y /(n+ 1), 使图像中心逐步向目标 图像的中心靠拢。 结束语 本文首先研究了鱼眼图像的拼接算法, 在提出基 于亮度差的鱼眼图像重叠区域的确定方法和采用线性 补偿光强的方法进行图像的融合处理的基础上, 实现 了利用两幅鱼眼图像生成空战环境球面虚拟空间, 然 后探讨了基于球面虚拟图的多视点漫游问题。分析 可知: 利用反投影模板技术有效地提高全景图浏览的 (上接第 34页)[ 4] 汪庆年, 孙丽兵, 李桂 勇.一种基于 ARM 的视 频监控 系 统的设计 [ J].微计算机信息, 2009 25(11): 158 160., [ 5] [ 6] [ 7] [ 8] [ 9] 汪庆年, 张广栋.嵌入 式网络 视频 监控系 统的 设计与 实 现 [ J].电力电子, 2008(5): 47 49.赵文敏, 余文芳, 邢建国.一种嵌入式网 络视频监控 系统 的设计 [ J].计算机应用与软件, 2009 26(8): 67 68 81., , 郭 东升, 田秀 华.L inux 环境 下基 于 Socke t的网 络通 信 [ J].软件导刊, 2009, 18(1): 116 118.杨晖, 胡永健, 林志泉.基于 L inux和 S3C2410嵌入式图像传 输系统设计 [ J].微计算机信息, 2007 23(8): 20 24., 孟超, 张曦煌.基于嵌 入式系 统的 图像采 集与 传输设 计 [ J].计算机工程与设计, 2008 29(17): 4414 4416 ,.[ 10] 童 永 清.L inuxC 编 程 实 战 [ M ].北 京: 人 民 邮 电 出 版 社, 2008.[ 11] 王远洋, 周渊平, 郭 焕丽.L inux 下基 于 Socket多线 程并 发通信的实现 [ J].微计算机信息, 2009, 25(15): 70 72.[ 12] 杨水 清, 张 剑, 施云飞, 等.ARM 嵌 入式 L inux系 统开发 技术详解 [M ].北京: 电子工业出版社, 2008.[ 13] 蔡志明, 卢传富, 李立夏.精通 Q t4 编程 [ M ].北京: 电子 工业出版社, 2008.[ 14] 陈 鲲, 陈 云 秋, 刘 信 新.基 于 Q t/Embedded 的 嵌 入 式 L inux应用程序的 设计 [ J].计算机与 数字工程, 2009, 37(1): 156 161.1第四篇:基于嵌入式Web的远程监控系统设计
第五篇:基于嵌入式Linux远程图像监控系统的设计