当前, 为了降低汽车污染物的排放, 人们逐渐使用电动汽车作为交通工具. 考虑到车辆电池在工作时的安全, 需要一个系统对其工作状态进行实时监测, 以便于后续工作的开展. 此前, 国内外在电池信息监测系统上大量运用了GPRS和3G网络技术, 部分运用了4G网络技术都能达到较好的效果.
但为了提高整体的通信质量和提供多种监测方式, 系统采用4G网络技术和WLAN网络技术. 4G网络通信作为当下流行的通信技术, 它有较高的通信速度, 提高了通信的灵活性以及智能性; 有更宽的网络频谱, 兼容性能平滑度大大提高, 并改善了使用效率, 多媒体通信质量得到了优化. 同时结合了WiFi无线通信建立局域网通信, 极大的丰富了监测终端的网络应用与近程数据传输. 无线局域网技术的优势很多: 具有传输速度快的优势; 对人体健康危害较小等. WiFi的应用范围正在逐渐扩大, WiFi技术仍是将来网络技术的主要发展趋势, 随着科技的不断发展与进步, 它也会得到不断的完善与优化.
目前, 该系统可以实时观察电池的电压与工作温度, 并且根据4G和WiFi组网可以实现近, 远程实时准确提供电池的电压与环境温度数据, 确保电池运行的安全与稳定. 满足监测系统的组网灵活, 安全可靠, 便于观察的需求.
1 监测系统的整体设计检测系统的组成涉及了数据采集客户端和服务器两部分, 首先数据采集客户端是以S3C2440处理器为核心, 并包括内部自带A/D转换器, 温度传感器, 4G通信模块和WiFi通信模块等; 服务器由两部分组成, 一是数据采集客户端由4G通信模块通过Internet向远程服务器发送采集的数据, 二是由WiFi通信模块向周边用户的移动设备发送数据. 另外检测系统同时可以组成4G-WiFi网络向用户提供流量数据服务. 监测系统的示意图如图1.
2 系统客户终端硬件平台的设计
整个系统的硬件部分包括: ARM9嵌入式开发板, 4G通信模块, WiFi通信模块和温度传感器DS18B20模块. 硬件连接如图2所示.
2.1 ARM9主控处理器主控芯片采用的是三星公司的一款基于ARM9内核16/32位精简指令集(RISC)32位微处理器S3C2440A芯片, 主要负责数据的采集与数据的转发等功能, 是整个系统结构的核心. 具体采用的是友善之臂MINI2440-FriendlyARM核心板, 该核心基于Linux2.6.32.2内核, 采用沉金工艺的4层板设计, 专业等长布线, 保证关键信号线的信号的完整性, 并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性. 其主频400 MHz, 最高533 MHz, 在板64MSDRAM, 32 bit数据总线, 256 M/1 GB Nand Flash和2MNor Flash. 接口和资源: 1个34pin GPIO接口, 1个USB Host和1个100 M以太网RJ-45接口(采用DM9000网络芯片)等. 如图3所示.
ARM9 S3C2440芯片自带一个8路10位A/D转换器, 它的最大转换率为500 kHz, 非线性度为正负1.5位, 其转换时间[1]: 当系统时钟为50 MHz, 比例(预分频器)值为49, 则:
$ A/D {\text{转换器频率}}= 50 \;{\rm{MHz}}/(49 + 1) = 1\; {\rm{MHz}} $ | (1) |
$ {\text{转换器时间}}= \frac{1}{{1 \;{\rm{MHz}}/5\;{\rm{cycles}}}} = \frac{1}{{200 \;{\rm{kHz}}}} = ({\text{相当于}}5\;{\rm{\mu s}}) $ | (2) |
A/D转换器的供电电压为3.3 V, 模拟输入电压范围为0~5 V, 满量程为5 V/1024, 最小有效位(LSB)为4.88 mV, 最小有效位(LSB)与模拟输入电压有关.
2.2 4G通信模块系统采用的4G模块是上海移远EC20 LTE模块, 采用LTE 3 GPP Rel.9技术, 虽然在功能上与目前最新Rel.14版有一定的差异, 但并不影响正常使用. 此模块支持最大下行速率100 Mbps和最大上行速率50 Mbps. EC20 LTE模块采用Mini PCIe封装通过通信模块转接板(Mini PCI-E接口卡)与主控板进行USB连接通信, Mini PCI-E接口定义为USB信号及3.6 V电压, USB接口5 V电压通过DC to DC电压源芯片转换成3.6 V电压和2 A电流供给模块及UIM/SIM卡工作. EC20 LTE模块支持频段FDD-LTE: B1/B3和TDD-LTE:B38/B39/B40/B41; 支持Mini PCIe接口: 采用PCI Express Mini Card 1.2标准接口;支持LTE特性: 符合3 GPP R9 CAT3 FDD和TDD, 支持1.4-20 MHz射频带宽, FDD: Max 100 MHz (DL) 50 MHz (UL), TDD: Max 61 MHz (DL) 18 MHz (UL); 支持的网络协议为: 支持TCP/UDP/PPP/QMI/HTTP等协议, 支持PAP和CHAP协议, 支持标准AT指令集及扩展AT指令集. 其中, Mini PCI-E转USB电路原理图如图4.
2.3 WiFi通信模块
系统采用的无线通信模块RT3070是高度集成的MAC/BBP和2.4 G RF单芯片, 芯片支持150 Mbps至300 Mbps的吞吐量. 它完全符合IEEE802.11n draft 4.0和IEEE802.11 b/g标准, 在较远的高吞吐量下提供可靠, 成本效益高, 功能丰富的无线连接. 由优化的RF结构和基带算法提供了卓越的性能和低功耗. 智能的MAC设计采用了高效的USB引擎和硬件数据处理加速器, 从而不使主机处理器过载. 符合本系统的需求.
2.4 DS18B20温度传感器模块DS18B20是美国Dallas公司生产的单总线数字温度传感器, 它具有微型化, 低功耗, 高性能, 抗干扰能力强, 易配微处理器等优点, 可直接将温度转化为数字信号处理器处理. 测量温度范围是−55°C~125°C, 测温误差为±0.5°C. 可编程的分辨率为9~12位, 可实现高精度测量. 具有负压特性: 电源极性接反时, 芯片不会因发热烧毁. 由电源线, 信号线和地线三个引脚组成的三极管集成电路. DS18B20的应用电路有: 寄生电源供电方式, 寄生电源强上拉供电方式和外部电源供电方式[2]. 该系统采用外部电源供电方式, DS18B20的工作电压范围3.0V~5.5V, 信号引脚的上拉电阻范围4.7 KΩ~10 KΩ. 其中应用原理图如图5.
2.5 USB通信接口及USB集线器模块
系统所采用的S3C2440芯片内部含有USB主机接口和USB设备接口, 系统主要应用的是USB设备接口, 它采用DMA接口方案, 允许控制传输, 中断传输和DMA接口的批量传输, 具有5个带FIFO的端点, 支持USB2.0协议, 高速的理论速度为480 Mbps和全速的理论速度为12 Mbps, 包括支持热拔插, 标准统一和多设备连接等优点. 其应用电路图如图6所示.
系统USB集线器模块采用FE2.1集线器控制芯片, 它是集成性比较高, 品质高, 性能高, 能耗低的高速七端USB2.0集线器, 系统应用其中三个端. FE2.1模块电路原理图如图7所示.
3 系统的软件设计
整个系统的软件设计在友善之臂Linux-2.6.32.2-mini2440-20150709内核的基础上所开发设计的, 主要包括Linux操作系统的移植[3], 4G-LTE模块的驱动移植和RT3070无线模块的驱动移植以及所依赖的文件移植. 通信模块中的4G模块和WiFi模块都是通过USB接口建立的驱动模块, 在移植通信模块前先要编译Linux内核然后移植驱动. 要实现4G-WiFi路由则需要移植iptables, 它可以完成封包过滤, 封包重定向和网络地址数据包转换(NAT)等功能. 关于iptables的具体移植方法, 可以从网络上了解.
3.1 4G通信模块的移植(1) 支持4G模块的内核编译
进入内核的目录并对内核进行裁剪, 执行make menuconfig进行界面选择Multi-purpose USB Networking Framework将Linux内核的rndis_host配置为动态模块, 可以在Linux下使用USB网络. 选择USB driver for GSM and CDMA mdems, 实现Linux内核对4G模块驱动的支持. 选择所有PPP网络协议选项, 可以使Linux内核支持4G网络拨号, 当4G通信模块移植完成后可以通过PPP拨号的方式连接网络和互联网.
(2) 4G通信模块驱动移植安装
通过对所提供的Linux驱动源码和拨号联网程序进行修改编译生成可执行4G模块驱动文件. 使用insmod命令将4G模块加载到内核中, 移植成功后可以看出在4G模块在系统中被映射成为的网口和4G网卡IP地址等信息, 可以Ping公网测试则移植成功[4,5].
3.2 WiFi通信模块的移植(1) 支持WiFi模块AP模式的内核编译
在Linux内核选项中选择IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)使内核支持WiFi模块的AP功能. 选择RF switch subsystem support, 此选项为了节约电力, 很多无线网卡都有内置的射频开关用于开启和关闭设备. 选择Generic IEEE802.11 Networking Stack (mac80211), Generic IEEE 802.11 Networking Stack (mac80211)选项是独立于硬件的通用IEEE 802.11协议栈模块, 可以让系统能更好的控制硬件.
(2) WiFi通信模块驱动的移植
2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2驱动下载, 此驱动是RT3070在Linux操作系统上实现软AP模式的驱动. 解压缩文件后, 在2010_0203_RT3070_SoftAP_v2.4.0.1_DPA目录下有三个文件夹分别为MODULE, NETIF, UTIL, 在这三个文件中均有Makefile, 在所有Makefile中修改其中的支持平台与平台下的内核路径和交叉编译器. 编译通过后, 在开发板修改rt2870ap.dat文件让rt3070ap在启动的时候配置成WPA2的加密方式, 并依次执行insmod rtutil3070ap.ko, insmod rt3070ap.ko, insmod rtnet3070ap.ko. 则可以系统可以识别无线模块, 并被映射成为相应的网口[6,7].
3.3 DS18B20驱动设计与实现对于单总线结构的DS18B20的读写控制必须严格按照时序图进行编程, 通过嵌入式设备的通用I/O口GPF0直接驱动DS18B20的DQ信号的交流端. 通过调用精确的延时子程序, 来对其准确时序控制[1]. DS18B20的读写时序图如图8和图9.
在Linux系统中把DS18B20的温度传感器程序通过运行交叉编译器编译成字符设备驱动. 使用insmod命令将温度传感器模块加载到内核中, 移植成功后可以在系统/dev中发现温度传感器模块被映射成为DS18B20的驱动设备号.
3.4 通信方式的设计与实现Socket接口是支持TCP/IP网络的应用程序编程接口, 是支持Linux系统中通用的网络接口, 网络的Socket数据传输是一种特殊的I/O接口, Socket也是一种文件描述. 在Socket通信中有两种通信协议: UDP协议(用户数据报协议, 面向无连接)和TCP协议(传输控制协议, 面向连接). UDP协议和TCP协议之间的区别如表1所示[8,9].
TCP协议提供IP环境下的数据可靠传输能力, 它提供的服务包括数据流传送, 可靠性, 有效流控, 全双工操作和多路复用. 它建立连接使用三次握手过程, 使一台计算机发出的字节流无差错的发向网络上的其他计算机. 在网络比较弱的时候也能保证数据传输的质量, 所以该系统选择TCP协议C/S结构的Linux Socket网络编程[10]. TCP协议的编程流程图如图10.
以4G网络为例. TCP协议的Socket的服务器首先运行, 通过调用socket函数创建一个Socket, 然后调用bind函数将其与本机地址以及一个本地端口号绑定, 然后调用listen函数在该Socket上监听, 等待客户端的连接, 接着调用accept函数来接受连接服务. 客户端程序先将接受的数据使用setsockopt函数绑定到指定4G网络端口, 然后调用connect函数和服务器建立连接, 连接成功后客户端和服务器之间调用send和recv来发送和接受数据. 最后, 两边都关闭Socket. 其中数据信息前两位为温度数据, 中间两个空格, 最后五位是电压数据.
3.5 Android手机端通信手机端通信采用C/S模式Android开发结合Socket完成网络通信. 通信系统采用Android 6版本, 以JDK7+Eclipse+SDK为开发环境, 客户进入系统可以获取WiFi通信系统分配的IP地址及设置通信端口号[11,12], 启动创建可以接受到客户端发来的电池电压与工作温度数据.
4 系统测试数据采集采用3.3 V电压供电模拟电池实际5 V电压, 来测试电压采集的数据如表2所示, 电压最大差约为0.33%, 平均误差为0.27%. 采集的温度数据与实际温度没有明显的差距. 由实验数据可以总结出, 该系统采集性能良好, 电压与温度数据误差较小, 比较好的完成对模拟电池的信息数据的读取.
通过制定好的通信协议对测试数据打包, 然后经过嵌入式控制系统通过USB接口传到4G通信模块, 通过4G通信模块向远程服务器发送数据. 如图11, 在客户端运行发送数据程序.
如图12, Linux服务器通过Internet网络接受到客户端发送来数据后采用制定好的协议解析, 然后加上系统的日期和时间.
如图13, PC机服务器通过Internet网络接受到客户端发送来数据后采用制定好的协议解析, 然后加上系统的日期和时间.
手机通信服务端接受数据信息如图14所示, 每一条数据都占有客户端不同的端口, 并包含了每条数据发来的时间.
通过手机连接4G-WiFi系统进行测试. 通过串口通信在LTE制式下测试不同环境(第一组: 室外, 第二组: 室内, 第三组: 地下车库)的丢包率和往返延时. 测试结果如表3所示.
5 结束语
本文系统在MINI2440开发板上运行Linux操作系统, 将当前阶段网络数据速率传播最快的4G移动通信技术和常用的WiFi无线通信技术结合起来, 实现了可移动强, 安全, 操作简单等特点, 实现了温度与电压数据采集与传输, 同时用户可以随时通过WiFi终端连接上互联网, 为客户端解决了网络信号差, 网速慢的问题. 特别是具有实时性较强, 设置简单和实现容易等优点, 非常适合实时监测的场景.
[1] |
孙弋. 基于S3C2440的嵌入式Linux开发实例. 西安: 西安电子科技大学出版社, 2010. 291.
|
[2] |
胡成, 杨林楠, 郜鲁涛. 基于TE2440-Ⅱ的嵌入式温度采集驱动实现. 计算机应用, 2010, 30(12): 3413-3415. |
[3] |
董胡, 刘刚, 钱盛友. ARM 9嵌入式系统开发与应用. 北京: 电子工业出版社, 2015. 213–221.
|
[4] |
陈曾海. 基于嵌入式Linux的3G-WiFi路由器研究与设计[硕士学位论文]. 北京: 北京邮电大学, 2011.
|
[5] |
胡圣尧, 杨子立, 关静, 等. 基于GPRS或4G的通信基站电源监控系统设计. 电源技术, 2016, 40(9): 1865-1866, 1892. DOI:10.3969/j.issn.1002-087X.2016.09.040 |
[6] |
何鹏举. 基于Web服务的无线网络节点传感器研究. 传感技术学报, 2009, 22(11): 1634-1638. |
[7] |
邹意然, 王永威, 赵龙. 基于ARM体系的WIFI移植研究. 微计算机信息, 2010, 26(32): 67-69. DOI:10.3969/j.issn.2095-6835.2010.32.028 |
[8] |
吕雪峰, 彭文波. 嵌入式Linux软件开发从入门到精通. 北京: 清华大学出版社, 2014. 195–352.
|
[9] |
刘红义, 赵方, 李朝晖, 等. 一种基于WiFi传感器网络的室内外环境远程监测系统设计与实现. 计算机研究与发展, 2010, 47(S2): 361-365. |
[10] |
徐克宝, 武慧, 文艺成. 基于Socket的Windows与Linux平台异步通信. 计算机系统应用, 2015, 24(7): 232-235. DOI:10.3969/j.issn.1003-3254.2015.07.043 |
[11] |
郭岱洁, 张洪欣, 刘振. 基于Android温度传感器驱动程序设计. 滨州学院学报, 2013, 29(3): 82-86. DOI:10.3969/j.issn.1673-2618.2013.03.015 |
[12] |
孟祥莲, 孙平. 基于Android平台的农业大棚温湿度监控系统设计. 数字技术与应用, 2014(6): 169, 171. |