一种基于物联网的远程监控系统设计
扫描二维码
随时随地手机看文章
摘要:为了实现工厂、交通等远程监控管理,系统设计采用DM900芯片和CC24300为主实现通信,核心部分主要包括ARM中央控制平台及嵌入式Linux操作系统移植,创新之处在于融入了物联网技术并巧妙地移植移植U-Boot和嵌入式Linux操作系统的编译内核配置。按照系统的整个工作软件流程图进行了试验和联调,符合原设计目标,系统具有扩展性,通用性和能与其他监控设备无缝连接等性能,以满足不同工作环境的需要,可为其他基于物联网的远程监控系统所借鉴和参考。
关键词:ARM;物联网;嵌入式Linux操作系统;远程监控
远程监控系统现已成为现代化生产、生活中不可缺少的重要组成部分。目前,监控系列产品种类繁多,大部分广泛应用于交通、医院、银行、家居、学校等安防领域。伴随着对物联网(Internet of Things)应用研究的不断深入,使得远程监控系统的应用领域更为广泛。本
文创新点在于是基于物联网、以ARM内核芯片的嵌入式系统为核心技术的远程监控系统设计,其中巧妙地移植移植U-Boot和嵌入式Linux操作系统的编译内核配置。虽然主要是关于某市几个重要路口的交通远程监控管理系统的核心设计内容,但亦可为其他基于物联网的远程监控系统所借鉴。
1 系统体系结构及功能
本设计系统主要由控制模块、ARM中央控制平台、ZigBee无线传输、以太网通信和多个扩展接口等部分组成,实际中可根据需求和使用环境灵活地选用适合的接口进行操作,其体系结构如图1所示。
该系统主要是利用RS 232接口实现ARM嵌入式系统与Zigbee无线系统的连接进而实现网关设备的功能。通过ARM中央控制平台和Zigbee芯片的RS 232线路驱动器/接收器MAX3221芯片来实现串行数据的通信。由于采用了常见的串口作为通信媒介,简化了硬件设计。作为接收命令端的Zigbee芯片由于采用的是8051为内核的CPU,时刻处于等待命令状态。ARM中央控制平台植入了Linux操作系统,当运行了串口实现程序后,就可向Zigbee芯片发出采集信息的命令。因此系统主要的软件实现就是Linux系统下的串口实现程序的设计。
其中检测控制模块可以是温度控制模块、压力了控制模块、流量控制模块等等实际监控需检测的参量模块。各检测控制模块通过ZigBee模块与ARM中央控制平台实现无线连接,组成了一个星型无线智能控制网络。同时ARM中央控制平台通过以太网实现与外部远程连接。从而实现远程监控。
1.1 ARM中央控制平台
在本设计中,ARM中央控制平台是系统的核心,主要负责数据采集判断处理。为了提高系统工作效率,设计中采用了ATMEL公司生产的ARM9芯片AT91RM9200。由于AT91RM9200处理器具有丰富的系统与应用外设及标准的接口,因此根据应用的需要很容易就可实现功能模块的扩展。该芯片融合了ARM920T ARM Thumb处理器特性:工作于180 MHz时性能高达200 MIPS,存储器管理单元,16 KB的数据缓存,16 KB的指令缓存,写缓冲器,含有调试信道的内部仿真器,中等规模的嵌入式宏单元结构(仅针对256 BGA封装);低功耗:VDDCORE电流为30.4 mA,待机模式电流为3.1 mA;附加的嵌入式存储器:SRAM为16 KB;ROM为128 KB;外部总线接口(EBI):支持SDRAM,静态存储器,Burst FLASH,无缝连接的CompactFlash Smart Media及NAND FLASH;提高性能而使用的系统外设:2个有双PLL的片上振荡器,低速的时钟操作模式与软件功耗优化能力,4个可编程的外部时钟信号,调试单元、两线UART并支持调试信道,有8个优先级的高级中断控制器,独立的可屏蔽中断源,伪中断保护,7个外部中断源及1个快速中断源,有122个可编程I/O口线的4个32位PIO控制器,各线均有输入变化中断及开漏能,20通道的外设数据控制器(DMA);10/100 Base-T型以太网卡接口:独立的媒体接口(MII)或简化的独立媒体接口(RMII),对于接收与发送有集成的28 B FIFO及专用的DMA通道;USB 2.0全速(12 Mb/s)主机双端口:双片上收发器(208引脚PQFP封装中仅为一个):集成的FIFO及专用的DMA通道;USB 2.0全速(12 Mb/s)器件端口:片上收发器,2 KB可配置的集成FIFO;多媒体卡接口(MCI):自动协议控制及快速自动数据传输,与MMC及SD存储器卡兼容,支持2个SD存储器;主机/从机串行外设接口(SPI):8~16位可编程数据长度,可连接4个外设;两线接口(TWI):主机模式支持,所有两线Atmel EEPRoM支持;所有数字引脚的IEEE 1149.1JTAG边界扫描。
正是由于AT91RM9200芯片具有以上特性,所以它完全满足了本设计系统必须具备的3个条件:高速处理能力、高速数据通道、网络接口。
1.2 ZigBee芯片
本设计中ZigBee芯片选用Chipcon公司的无线收发芯片CC2430。CC2430是一个真正片上系统芯片,内部集成一个高性能2.4 GHz直接序列扩频(DSSS)射频收发器核心和一个工业级加强型8051内核,无需再选另外的处理器,使设计简化。
1.3 以太网控制器
本设计中以太网控制器采用是DAVICOM公司的DM9000,这是具有10/100 M自适应以太网芯片。其特点是:支持8位、16位、32位数据总线宽度;寄存器操作简单有效,有成熟的Linux驱动程序支持;3.3 V接口电平;成本相当低廉;还可以使用MII接口和PHY芯片连接。DM9000还提供了介质无关的接口,以连接所有提供支持介质无关接口功能的家用电话线网络设10 Mb/s下3类、4类、5类非屏蔽双绞线和100Mb/s下5类非屏蔽双绞线。这是完全符合IEEE 802.3u规格。它的自动协调功能将自动完成配置以最大限度地适合其线路带宽,还支持IEEE 802.3x全双工流量控制。
2 软件设计
2.1 移植U-Boot
通用Bootloader(UniversaI Boot Loader,U-Boot)遵循GPL条款的开放源代码项目。U-Boot支持大多CPU。U-Boot可以烧写EXT2,JFFS2文件系统映象,支持串口下载、网络下载,并提供了大量的命令。系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载,从FLASH中引导压缩或非压缩系统内核。
2.1.1 U-Boot的下载
可以从http://sourceforge.net/projects/U-Boot获得U-Boot的最新版本,如果使用过程中碰到问题或是发现Bug,可以通过邮件列表网站http://lists.sourcef orge.net/lists/listinfo/U-Bootusers/获得帮助。选择1.1.2,文件名称u-boot-1.1.2.tar.bz2。
2.1.2 修改U-Boot配置文件
进入存放u-boot-1.1.2.tar.bz的目录,运行tar-jxvfu-boot-1.1.2.tar.bz进行解压,进入解压后生成的文件夹u-boot-1.1. 2,它是按Atmel推荐的标准系统的配置SDRAM:32Mbytes NCS1;FLASH:8 MB NCS0来配置的,若系统的配置和推荐的不同,则需要修改。需要修改文件主要是下面几个:./board/at91rm9200dk/config.mk,include/configs/+ at91rm9200dk.h,./board/at91rm9200dk /flash.c,flash.h在修改好U-Boot配置后,编译运行即可。
2.2 嵌入式Linux操作系统移植
AT91R1M9200芯片支持多种嵌入式操作系统,但考虑到AT91RM9200支持从内部的BOOTROM启动或从外部的DATAFLASH、二线EEPROM或8位并行存储器引导启动,因此,本设计中,主要将Linux在AT91RM9200上进行移植。
2.2.1 嵌入式Linux操作系统
嵌入式Linux操作系统由一个Kernel(内核)及一些根据需要进行定制的系统模块组成。其Kernel很小,一般只有几百KB左右,即使加上其他必要的模块和应用程序,所需的存储空间也很小。它具有多任务、多进程的系统特征,有些还有具有实时性。一个小型的嵌入式Linux系统只需要引导程序、Linux微内核(由内存管理、进程管理和事务处理构成)、初始化进程3个基本元素组成。当然,实际应用中还需要让它有更多的功能且继续保持小型化,如加上文件系统(可以在ROM,RAM,FLASH或Disk Onchip中)、TCP/IP网络支持、存储更多数据用的磁盘、提供设计精简的应用程序等。
2.2.2 内核下载及编译工具获取
2.2.3 编译内核的配置
编译内核最好使用root权限,参考linux-2.6.20/Documentation下相关说明即可。
由于2.6.15-at91.patch.gz是标准的文本文件,所以这里直接用cat,这个命令后会出现一些patch文件信息,若出错,则需要考虑patch版本是否匹配和linux源码是否完整。然后修改Makefile将以下2行:
于是会出现一些配置信息,由于是AT91RM9200系统,所以用make at91rm9200dk-defconfig,用makehelp可以查看其他的make选项。
make menuconfig
在选择System type->Atmel AT91 System-On-Chip后,检查配置是否成功。
如果确认上述配置成功,就可在menuconfig里面修改CONFIG_CMDLINE中的启动参数,把RAM盘大小从缺省值3 145 728 B(3 MB)修改成4 194 304 B(4 MB),注意这些参数是在启动加载时用的,尤其是整合成的内核时启动要用到,不可以随便修改,本统最后的参数为:
经过编译,可在linux-2.6.20/arch/arm/boot下面获得zlmage。
2.3 BusyBox的交叉编译
BusyBox最初是由Bruce Perens在1996年为Debian GNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘,是很多标准Linux?工具的一个单个可执行实现。BusyBox包含了一些简单的工具,例如cat和echo等。由于很多标准Linux工具都可以共享很多共同的元素,当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序,这就为可引导的磁盘和使用Linux的嵌入式设备提供了更多功能。
2.3.1 下载BusyBox
BusyBox是按照GNU General Public License(GPL)许可证发行的。目前可使用的、稳定的版本BusyBox-1.3.0.bz2可以从网站http://www.husybox.net/下载。
2.3.2 配置编译BusyBox
如果这里不选择成静态的二进制文件,那么在以后面做ramdisk时就需要把arm-linux下的一些动态库复制到ramdisk的/lib里面去;不选择Don’t use/usr,make install时busybox就不会安装到本目录的_install下,会覆盖原来的usr/bin中内容。由于Linux是开放源代码(Open Source)的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持,所以其他需要程序的读者按照自己的需要选择下载后编译整合Linux内核和initrd成bootplmage,再下载bootpImage启动Linux就可以了。
2.4 串口设计
因为Zigbee CC2430为本设计的下位机,因此软件设计主要集中在对ARM中央控制平台的实现和Linux操作系统串口程序的实现上。因为目前Linux2.6x系列内核对串口有很好的支持性,所以在Linux对串口驱动上的实现就很简单,也可极大的简化后期的维护,有利于推广。Li nux串口实现程序主要是对串口包括波特率和停止位设置。串口的设置主要是设置struct termios结构体的各成员值。在Linux下串口文件位于/dev下,一般在内核中串口1为/dev/ttySO,串口二为/dev/ttyS1,打开串口是通过标准的文件打开函数来实现的。当设置好后即可发送初始化的命令和等待接收命令。串口流程如图2所示。
在应用层面的设计中还包括WEB的设计实现,远程监控系统的实现,这里就不一一赘述。
3 结语
本文论述的远程监控系统设计与以往的监控系统不同,不仅采用了高性能的处理器芯片大大提高了系统的性能、还融入了物联网技术。使这种远程监控能够领域更加广泛。并且在设计上充分考虑到了系统的可扩展性和兼容性问题,实现了本系统与其他系统的无缝连接,以满足不同工作环境的需要。