APP下载

基于NB-IoT通信的共享单车的研究与设计

2021-07-24林敏霞吴冬燕张卫星邹广洲薛福霞

电子测试 2021年13期
关键词:通信协议蓝牙单车

林敏霞,吴冬燕,张卫星,邹广洲,薛福霞

(1.苏州工业职业技术学院 电子与通信工程系,江苏苏州,215104;2.苏州工业职业技术学院 机电工程系,江苏苏州,215104;3.国网(北京)综合能源规划设计研究院有限公司,北京,102600)

0 引言

2008年5月开始,比较成功的杭州公共自行车租赁项目,其影响范围扩大到全国。共享单车的管理可以对时延要求低的远程监控场景采用窄带物联网(NB-Iot)技术。窄带物联网技术是一种基于蜂窝网络的低功耗广域网技术,工作授权频段是专有的,而且还沿袭了蜂窝网络安全技术的加密机制,数据的安全性有着保证,网络结构简单,维护成本低。共享单车使用NB-IoT技术可以很好的解决共享单车的数量多,覆盖广等问题,能保证共享单车监控系统的稳定运行,有效的提高用户对共享单车的体验度。本文设计了基于NB-Iot通信的共享单车,使用GPS技术采集共享单车位置数据,通过NB-Iot技术实现共享单车与云平台的永久连接,利用手机APP可以进行实时查询共享单车的使用情况和远程处理共享单车的功能。

1 总体设计方案

基于NB-IoT共享单车系统的总体框架由感知层,传输层,平台层,应用层这四层结构组成。总体框架图如图1所示。

图1 总体框架图

终端就包括共享单车和智能车锁,车锁里面有MCU模块、NB-IoT通信模块、GPS模块、蓝牙模块等。GPS负责共享单车的定位,蓝牙负责连接共享单车,MCU通过控制电机来达到开锁的目的。传输层由NB-IoT通信模块和无线网组成,信息再通过核心网传递到平台,传输层也就是NB-IoT技术信息传输的通道,向上行向下行传输数据信息。平台层从接入网接收得到的开锁请求信息,终端接入互联网。应用层主要是用户使用和管理端对设备的管理、数据的查询和实时推送数据信息。其中MCU是对整个终端设备的控制,为了确保终端设备的各个模块能够井然有序的进行工作。电池和电压稳压电路组成电源供电模块,为各个模块提供稳定的工作电压。

2 硬件电路设计

在整个项目的设计过程中,电路设计是整个项目的核心,也是软件设计的前提。该电路主要包括MCU、NB-IoT通信模块、电源模块、蓝牙模块。电源模块是为了给整个电路提供电源。电机驱动模块则是通过电机驱动车锁开关来开车锁。蜂鸣器是在开锁的时候接收到信号才会响应的。电路检测可以把电量情况反馈到平台,管理人员看到共享单车的电量情况,能及时作出处理。在这个硬件电路设计中NB-IoT模块是最重要的,它负责共享单车与云平台通信传输,在整个设计中更是起到一个桥梁的作用。

NB-IoT模块主要包括BC95-B5模块,滤波天线电路,复位电路和SIM卡电路四部分。SIM连接电路是与BC95-B5芯片连接在一起的,将外部读取到的数据设备,通过BC95模块的进行数据上传操作,实现数据上报功能。BC95-B5是一款符合3GPPR R13标准的NB-IoT模组,还兼容移远通信GSM/GPRS系列的M95模块,内嵌丰富的网络服务协议栈,非常适合应用于M2M领域。该模组具有超高灵敏度,超低功耗等的优势。

3 软件程序设计

3.1 MCU主程序流程图

共享单车开锁方式有两种,一种是蓝牙开锁,另一种是NB-IoT开锁。共享单车车锁被唤醒上电后进行系统和硬件的初始化, MCU开始正常的工作。主程序流程图如图2所示。

图2 主程序流程图

打开蓝牙并读取相关信息,接着检测设备上的蓝牙是否与手机蓝牙连接上,如果连接上则把读取到的NB-IoT模块IMEI地址发送给手机APP,然后接收手机APP发送的开锁命令,并执行开锁的功能。如果设备蓝牙未成功连接手机蓝牙,可以使用另一种开锁的方式,就是使用NB-IoT模块结合云平台进行开锁,设备每20秒会给云平台发送一次心跳, NBIoT模块出库时自身带有省电模式的功能,在没有心跳的情况下,NB-IoT模块进入省电状态,该状态下不能接收到平台下发的指令。在唤醒状态下如果接收到平台下发的指令,设备会执行开锁的动作。如果开锁成功,设备上的蜂鸣器将会响两次并向平台或者手机APP发送开锁成功的数据包;若开锁失败,会向平台或者手机APP发送开锁失败的数据包。系统会执行计数程序,每一个小时会检测一次当前时间,如果在设定的时间内,系统会将设备的电量数据发送给平台。

3.2 应用程序设计

在整个项目的设计过程中,软件系统设计是整体项目的核心部分,软件系统部分主要由IAR开发软件和Android Studio软件完成的。完成基础的硬件选取与接连之后,就开始编写底层的程序,写底层程序用的是IAR开发软件。IAR 开发软件是用于编译与调试嵌入式系统应用程序的开发工具,支持汇编语言、C语言以及C++语言。Android Studio软件是用来生成共享单车APP的。在IAR开发软件写好的底层程序的基础上,再用Android Studio软件把底层程序和APP程序和云平台程序整合到一起,再生成共享单车APP。而应用程序设计采用c/s(客户机/服务器)架构,c/s架构的安全性较高,封闭式网络不容易受到他人的网络入侵。用Java语言进行编程设计。由于整个项目程序过多,需要使用结构化程序进行设计,秉着自顶向下,逐步细化,模块化,结构化编码的原则,软件设计尽量做到高内聚,低耦合。应用的所有相关功能是由一个控制器来处理的,会针对不同的客户端类型使用不同的控制器来处理,因为视图的交互与选择可能会因客户端类型的不同而有些不一样。

3.3 共享单车协议

共享单车终端有低功耗、低成本、安全性高的特点。一种面向网络的协议,CoAP协议是IETF提出的,它有HTTP类似的特征,资源抽象的核心内容、REST式交互和可以扩展的头选项等。为解决HTTP对于受限环境的不足,CoAP协议想到数据报长度需要的最优化和提供可靠的通信。JSON数据格式作为媒体类应用到CoAP负载,NB-IoT模组将传感器采集的数据信息封装到负载中发送到 CoAP服务器。为保证每台设备之间的通信安全和稳定,共享单车也有着自己通信协议,共享单车协议分为两种,一种是NB-IoT通信协议,还有一种是BLE蓝牙通信协议。

4 调试

用管理端APP对车锁扫码,进行投放车辆,再用用户端APP扫码开锁用车,用车结束后结束行程付费,在用车付费结束后发现共享单车有损坏的还可以点击报修。这时工作人员在他们的管理端APP看到共享单车的待故障处理信息,最后是对共享单车整体测试,测试结束。测试结果表明,数据可以实时的传送到云平台,也可以把骑行数据、收费信息等实时的传送到手机APP上,并进行相应的收费。同时在管理端APP上也可以看到用户使用自行车的情况。管理端APP界面如图3所示。

图3 管理端APP界面

用户在用车结束后,发现车辆有损坏的并进行了报修。用户报修之后管理端工作人员就可以看到了有待进行故障处理的消息了。维修前把故障车辆删除再对车辆进行维修,维修结束后就可以再次投放已维修好的车辆了。

5 总结

本文设计的基于NB-IoT技术的共享单车可海量接入具有极大的容量,车辆的投放也可以在城市里实现广覆盖;车辆通常所用的电池具有5-10年的使用寿命,非常好的延长终端的续航能力;数据的安全传输则利用NB-IoT通信协议。调试结果表明,本文设计的共享单车系统可实现数据的远距离传输,具有低功耗,广覆盖,接入量大,安全性高的优点。用户也可以通过用户端APP查看自己的骑行路程、时长,消费等情况;维修人员通过管理端APP查看共享单车的投放、报修等情况;用户和工作人员的使用情况在后台也都可以看到。

猜你喜欢

通信协议蓝牙单车
蓝牙音箱的直线之美
共享单车为什么在国外火不起来
飞吧,单车
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
基于Z-Stack通信协议栈的红外地温采集电路设计
对恶意破坏共享单车行为要“零容忍”
共享单车(外四首)
紧急:蓝牙指尖陀螺自燃!安全隐患频出
基于DMX512通信协议的多路转发器设计与研究