一种基于ARM和Boa的智能车库网关设计
2019-08-06陈玮
陈玮
摘 要:文章提出并实现了一种用于车位检测无线传感网络的智能车库网关。网关硬件由CC2530模块和ARM系统构成,软件系统移植Linux系统和Boa服务器,通过串口接收车位采集节点的数据。Boa服务器通过调用CGI脚本获取串口数据,最后通过网页发布。
关键词:智能网关;ARM; ZigBee;智能车库;Boa
2018年,我国小汽车保有量已经突破2亿辆,城市车位管理的智能化已成为需要迫切解决的问题[1]。随着各种传感技术及网络技术的发展,车库开始采用Zigbee等无线传感网实时采集车位信息,该类系统布线简单、易扩容,适用性强。但ZigBee网络中协调器一般不进行数据的再处理和发布[2],需要设计一种智能网关完成协调器的接收处理并由服务器将车位信息发布到Internet,4G网络,方便人们获得车位信息、合理使用车位。
1 系统总体结构
智能车库网关有3个功能:(1)车库内部网络连接到外部网络的物理接口。(2)检测模块、无线传输设备、数据协调器等设备控制和管理的平台。(3)车库数据处理及发布终端。结合功能需求,网关总体结构设计如图1所示。车位检测由ZigBee网络节点完成,一般由ZigBee传输模块和前端传感器组成。网关中设计ZigBee协调器与检测节点组成完整的无线网络,用来汇总各节点的车位信息。接收的所有车位节点信息以一定的帧格式通过串口发送给ARM平台进行处理和发布[3]。
2 系统硬件结构及组成
智能网关硬件主要由ZigBee协调器和ARM开发平台组成。前者主要采用CC2530F256主控芯片,它是用于IEEE 802.15.4,ZigBee等应用的片上系统解决方案,体积小、功耗低[4],可以设置为ZigBee网络协调器。网关中通过它集成的RF收发器来接收车位检测节点的数据。CC2530F256串行通信接口有两个,分别是USART0和USART1,设计中USART0通过串口转USB芯片PL2303与PC机连接用于调试,USART1直接与ARM开发平台主控串口连接。
ARM开发平台采用TX-2440A,其由主控制模块、串口通信模块、以太网接口模块等组成。主控制器模块采用S3C2440A,可稳定地运行嵌入式Linux系统,同时,提供最多3个串口,设计采用UART1与ZigBee协调器连接,而UART0与PC机连接用于调试。以太网接口模块采用DM9000芯片,它的驱动可以比较方便地移植到Linux系统。
3 系统软件设计
软件设计中,ZigBee协调器采用Z-Stack协议栈,应用层设计两个事件:(1)ZigBee网络数据接收事件,处理ZigBee节点反馈的信息,取出车位信息。(2)串口转发事件,将所有车位信息按一定帧格式打包定时发送给ARM系统[5]。ARM平台软件设计包括系统移植、串口数据获取及处理和网关终端网页设计。
3.1 Linux系统及Boa服务器移植
选择Linux系统为ARM平台上的操作系统,它主要由BootLoader,Kernel,File System组成,根据系统的硬件进行相应的移植工作。
Bootloader主要移植工作有:(1)建立网关开发板项目,修改时钟频率和中断配置。(2)修改和添加网卡相关代码,使U-boot支持DM9000,添加ping命令宏定义,方便测试网络。修改网卡MAC地址并给开发板添加IP地址。
Kernel中主要移植工作有:(1)LCD驱动移植,根据网关的LCD类型,修改内核源码中已有的LCD驱动,设置LCD的时钟频率。配置LCD参数,如.width,.height等。(2)移植DM9000驱动,修改mach-smdk2440.c文件,增加网卡选项。在主板devs.c文件中加入DM9000驱动文件和相关数据结构体。修改驱动dm9000.c源码,添加头文件、指定中断触发方式,设置MAC地址。
Boa服务器是小巧、高效的Web服务器,是适合嵌入式Linux的HTTP服务器,源代码开放、性能高。具体的移植步骤如图2所示。
安装Boa源码包后在源码根目录下执行命令.configure,配置Boa服务器;修改源码根目录下的Makefile文件,設置CC=arm-linux-gcc和CPP= arm-linux-gcc;在根文件系统中配置Boa服务器相关目录,将编写好的网页HTML文件存放到/etc/boa/www/目录;CGI脚本存放到/etc/boa/cgi-bin/目录。
3.2 串口数据与Boa服务器的交互
ZigBee协调器接收的车位信息需要网关在Linux下通过ARM平台的串口读取,再通过CGI方式与Boa服务器进行交互。
网关设计中,串口1设备位于/dev/目录下的s3c2410_serial1文件,打开串口是通过使用标准的文件打开函数open函数打开,同时,设定串口的工作模式为读写方式、无延时模式。串口的波特率设置为57600,8位数据位,无校验位,1位停止位。
串口接收到的车位信息用文档保存通过CGI与Boa服务器进行交互,CGI是外部应用程序与Web服务器之间的接口标准,CGI允许Web服务器运行外部程序,并将输出到Web浏览器,简单来说CGI程序使Boa服务器网页具有交互功能。
本系统CGI程序主要进行了以下设置:(1)在Web服务器中,打开HTML文件,以进行内容修改。(2)通过文件方式读取从串口中得到的车位数据。(3)根据串口数据对网页的表格内容进行选择,标记网页中要修改的地方。
网关运行后,可在计算机或者任意移动终端的浏览器中输入设置好的IP地址,看到车库网关网页。每一个车位用数据中的一个位来表示,1代表有车,0表示没车。经测试,停车后网页对应位置显示小车图片。
4 结语
该智能车库网关发挥ZigBee无线传感网络采集车位信息的优势,将局域网与外部广域网进行连接。通过ARM嵌入式平台开源设计的优势,使用程序小、效率高的Boa服务器与网页进行连接,能起到非常好的交互作用。
[参考文献]
[1]樊勇,任燕,司博章.基于物联网技术的车位检测系统[J].物联网技术,2012(11):29-31.
[2]王慧,谢东,薛保珊,等.远程监控系统中嵌入式网关的设计[J].西昌学报(自然科学版),2018(12):85-89.
[3]林关成.基于STC89C52单片机的车库智能监控系统设计[J].计算机与数字工程,2018(10):2160-2163.
[4]牛国峰,张明新,郑金龙.基于ZigBee的物联网智能家居设计[J].常熟理工学院学报(自然科学),2018(5):51-54.
[5]李玲,郭晓玲,武仁杰,等.基于NB-IoT及ZigBee的无线传感器网络网关设计[J].通信技术,2019(1):234-237.