一种基于NB-IoT的公路雾灯自动指示系统
2018-07-16刘源陈龙宇周家绪张欢
文/刘源 陈龙宇 周家绪 张欢
1 引言
当前,我国高速公路的发展十分迅猛,逐步由发达地区向不发达地区铺进。与此同时,由于高速公路上行驶车辆速度快、车流量大等特点,当突发恶劣天气时很容易发生撞上防护栏或连环追尾等严重的交通事故,后果不堪设想。目前,在高速公路上常见的警示方式为电子显示牌显示警示信息,警示牌或者警示柱等带有反光作用的警示物为车辆提供道路路线信息。特别是在一些山区路段出现大雾天气时,常常因为车辆在转弯路段看不清道路而发生交通事故,主要原因就是能见度低以及行驶路线信息不足。
在事故频发路段、恶劣天气频发路段主要使用安装照明灯的方式,但灯具的开关通常由值班室或变电室根据实时的天气、路况进行管控,或者由光控模块来进行自动控制。当照明灯数量较多时,人工管控的成本较高且容易发生错漏。而当前的光控模块控制方式面临着待机功耗高、控制信号覆盖度低等问题,间接提高了使用成本。在NB-IoT技术逐渐成熟的今日,研究一种能够保持低功耗、低时延,具有准确而快速地应对突发恶劣环境的能力的公路雾灯指示系统具有重要的实际应用意义。
2 NB-IoT技术简介与特点
NB-IoT是新一代的低功耗物联网技术标准,在当前主流运营商的蜂窝网络(GSM、LTE等)上建立,可以实现平滑升级和快速部署。NB-IoT建立在电信营业商的授权频段上,具有网络连接可靠性高,连接安全性高,可维护性好,服务质量好等特点。使用的180KHz带宽,相较与传统的低速率蜂窝网络(GPRS)覆盖能力提升了20dB,每个基站可以承载4-5万个连接,且覆盖广度可达10-12千米甚至更远,具有低功耗、大连接、高覆盖的特性。
3 NB-IoT雾灯系统架构
基于NB-IoT的雾灯系统架构主要由若干雾灯子系统(一个NB-IoT雾灯系统下至少包括一个雾灯子系统)、物联网云平台、客户端软件组成。一个雾灯子系统下包括一个检测子系统和若干指示子系统(一个雾灯子系统下至少包括一个检测子系统和一个指示子系统)。可以在公路两侧每隔固定距离(一般为50-100m)安装一个指示子系统,每1-3千米安装一个检测子系统,使得一个检测子系统可以控制该路段下所有的指示子系统。
整个雾灯系统工作流程如图1所示,由检测子系统每隔固定时间间隔采集能见度信息,通过NB-IoT通讯模块与其对应的基站将数据上传至物联网云平台,物联网云平台将接收到的数据存储、处理后,会将数据显示在客户端软件上,与此同时会将控制信息发送给检测子系统,检测子系统会进一步控制指示子系统并点亮雾灯。客户端软件上可以显示所有接入云平台的雾灯子系统的状态、各个路段的能见度信息,并且可以控制每个雾灯子系统的开关并制定检测策略等。
4 NB-IoT雾灯系统的实现
4.1 检测子系统的实现
检测子系统包括NB-IoT通讯模块、微处理器、LoRa模块和检测传感器。选型上,NB-IoT通讯模块选择M5310模组,该模组支持eSIM技术,且尺寸小可节约布板面积,适用于物联网设备;微处理器选择STM32F407VET6芯片;LoRa模块选择SX1278;检测传感器选择VS2k-UMB能见度传感器,该传感器采用前散射光技术,具有测量范围大、测量精度高的特点,其接收经过大气散射后的红外光,经过光敏二极管后转换为电信号,再经过AD转换和一定的算法处理后按照数据传输协议通过RS485接口输出测量结果。
工作时,微处理器定时从RS485接口读取能见度传感器的采集数据并解析数据,由NB-IoT通讯模块通过CoAP协议向物联网云平台上报信息,信息中包含该检测子系统特有的唯一编号,能见度信息,所属于该检测子系统下的所有指示子系统的开关状态等信息。其中采用的基于NB-IOT的CoAP协议是基于轻量级的UDP协议设计的,其数据协议包头为4个字节,传输量小、功耗低的特性非常适合本检测子系统。
当接收到客户端通过云平台下发的指令,或检测到能见度持续低于阈值后,检测子系统会通过LoRa网络唤醒该检测子系统下的所有指示子系统,点亮雾灯为过往车辆提供指引。
4.2 指示子系统的实现
指示子系统包括微处理器、LoRa模块、GPS模块和双面雾灯。选型上,微处理器选择STM32L053R8T6芯片,其低功耗模式下不同的状态对应的电流消耗只有4-13μA;LoRa模块选择SX1278模块;GPS模块采用BS-125;双面雾灯采用黄光卤素灯,在单个雾灯中安装有两个卤素灯,保证在低能见度下、不同方向上依然具备高穿透力。
一般,指示子系统处于低功耗运行状态,通过LoRa网络等待该指示子系统所在路段的检测子系统的唤醒信号。在接收到唤醒信号后,微处理器会根据收到的信号执行相应任务,例如进行自检并上报设备信息、点亮雾灯、进入休眠等任务。双面雾灯的设计可以使得一个指示子系统可以对两个不同的车辆行驶方向进行车辆指引、诱导,进一步降低部署成本。当接到点亮雾灯的信息后,微处理器会先初始化GPS模块,获取到世界时并与接收到的信息中包含的时间进行校对,再点亮雾灯,这样该LoRa网络下的所有指示子系统的雾灯都能以同样的频率进行同亮同灭。
图1:NB-IoT雾灯系统工作流程图
4.3 物联网云平台和客户端软件的选择与实现
为了在大量的设备连接下保持良好的响应性能、数据上传下发速度,选择NB-IoT基站所属的通信运营商承办的物联网云平台。检测子系统与该平台的连接采用基于NB-IoT的CoAP协议,可以进行设备注册、数据上报、接收命令等操作。
在客户端软件(C/S架构)上,使用C#和WPF完成具有地图显示、图表显示、命令下发等功能的客户端软件的实现,其中需要调用第三方地图平台的API、物联网云平台的消息协议API。为了加快软件打开时渲染地图数据的速度,选择PostgreSQL作为存储地图渲染数据的数据库,PostgreSQL相较于其他关系型数据库最大的优点在于有GIS(地理信息系统)扩展。
5 NB-IoT雾灯系统的测试
当基于NB-IoT的公路雾灯系统的检测子系统、指示子系统和客户端软件完成相应的实现,且物联网云平台的准备工作完成后,可在实地进行安装测试。
在60米的路段上,安装有一个检测子系统、两个指示子系统并开启所有模块,由于是第一次工作,所以检测子系统在初始化设备、注册NB-IoT运营商MNC后,会通过LoRa网络收集两个指示子系统的设备信息和GPS信息,并通过NB-IoT通讯模块和相应的NBIoT基站向物联网云平台发送设备注册信息,注册信息中除了两个指示子系统的信息外还包括检测子系统本身的设备信息(包括但不限于imsi、imei)。
当物联网云平台接收到注册信息后会在后端完成相应操作并向检测子系统返回注册成功信息,注册成功信息中包括了云平台分配给子系统的唯一编号。之后检测子系统会进入循环采集能见度信息的流程,指示子系统则进入低功耗模式等待检测子系统的唤醒信号。
检测子系统每隔一定时间间隔向物联网云平台上报信息,云平台收到信息后会存储该信息中的重要部分并通过socket将重要信息转发给客户端软件,客户端软件上显示出指示子系统所在的位置(结合地图显示经纬度)、开关状态、实时的能见度信息、历史能见度信息及其折线图。通过客户端软件向检测子系统下发打开雾灯的命令,命令通过物联网云平台转发并送达检测子系统后,检测子系统通过LoRa网络唤醒指示子系统,指示子系统唤醒后通过GPS模块获取世界时,与软件下发命令时带的时间戳进行比较,当时间差为3秒的整数倍时开启雾灯,雾灯会做以3秒为周期的亮灭,而两个指示子系统中的两个雾灯就会同时亮同时灭。
除了进行客户端下发指令的测试外,还采用降低能见度传感器的周围环境能见度的方式进行测试。当环境能见度发生改变后,检测子系统对传感器数据经过一系列处理、判断满足点亮条件后,将自动唤醒指示子系统。测试统计,当环境能见度开始降低到200m以下时,在3分钟内检测子系统均可作出响应,且其在47次实验中都能100%唤醒指示子系统。当能见度恢复正常状态后,检测子系统会使指示子系统重新进入低功耗模式等待下次唤醒,与此同时在客户端软件上会显示指示子系统的亮灭状态、时间等信息。
6 结论和展望
本文所提出的基于NB-IoT的公路雾灯自动指示系统具有检测准确、警示效果强、管理方便等特点。系统架构设计、选型合理,经过测试,系统的响应迅速、性能稳定,具有较高的应用前景。