基于低功耗蓝牙(BLE)与车载ETC与智能手机的通讯

(整期优先)网络出版时间:2021-08-16
/ 3

基于低功耗蓝牙 ( BLE) 与车载 ETC与智能手机的通讯

顾海昕

上海久誉软件系统有限公司 上海 200036

摘要:车载ETC模块与智能手机的通讯


关键词:蓝牙ETCBLEOBU


本文主要描述了基于智能手机蓝牙低功耗模块BLE与车载蓝牙单元OBU的通讯


随着ETC的普及越来越多的家用车在出厂时都预装了车载蓝牙ETC模块用户在启用新车时也可同步激活车辆ETC模块只需要下载对应车厂的手机APP进入ETC模块即可自行注册激活ETC十分方便本文主要阐述车载蓝牙单元OBU与手机APP如何进行通讯以及通讯协议的简要分析


车载蓝牙单元OUB与智能手机音的通讯使用低功耗蓝牙即蓝牙BLE技术实现其最大的特点是功耗较低但其每次传输的数据量不宜过大因为一般的低功耗蓝牙在对数据传输时每个包的长度被定义在20个字节之内如需传输比较大的字节数则需要分包发送或接收数据。


车载OBU与智能手机通讯的数据通讯便是使用低功耗蓝牙协议当成功建立连接后其每次分包发送或接收时最好有一定时间的延迟100毫秒为佳发送数据的包结构如下图所示

6119f6346b10e_html_2384304050a4b478.jpg

6119f6346b10e_html_6abbe8fc4616c912.jpg


蓝牙数据的封装

应用层与蓝牙进行数据传输与通讯时必须将应用数据封装在蓝牙数据域DATA域内DATA域内的数据尊循TLV格式收发数据需要遵循20字节一包的规则当在发送数据时如数据量大于20字节则应拆分成20字节一包的形式多次发送直至发送完成并且,蓝牙数据被APP接收时APP应具备组包处理功能。蓝牙设备与移动终端间应用层协议应用数据帧格式应符合如下规定:


6119f6346b10e_html_3c59073ee7a2c1ea.jpg

其中:Type:数据类型,1字节。

Content:数据内容。


移动终端发送到蓝牙设备的指令说明,其如下表所示

6119f6346b10e_html_5b8326bf39aa4d7a.png


:A2为厂商自定义数据域可根据业务实际情况自行进行处理


车载ETCOBU设备其发送到移智能APP的指令说明,其如下表所示

6119f6346b10e_html_32ebc9b5e5c7bdd9.png

6119f6346b10e_html_c66d63f9dba1a6e8.jpg


与微信小程序的适配

此项目的蓝牙协议须适配微信小程序具体过程如下

微信对蓝牙BLE 设备做出了一定的规定,即应先模拟成输入输出流的形式进行通讯,就实际而言,经典蓝牙的RFCOMM是一个流,流具有的特性有:

a. 可以传输无限长度的数据

b. 双工,读写可以并发,互不干扰。

很明显低功耗的BLE协议无法传输无限长度的数据(即大于20字节的数据),为了传输较大字节的数据即超过20字节的数据,需要定义一个规范来实现

蓝牙设备写过程:

  1. 分帧:假设车载OBU上有一千字节的数据(1K),要发给手机微信小程序特征值收、发数据的长度有所限制,通常不能超过20个字节,整个传输过程需要分多次才能完成。一千个字节的数据,要分1024 字节/ 20 字节=51个帧。剩下的4 个字节,未到一帧,这种情况下,需补齐为一帧,同时16 个字节进行补零0X00)。总共是52 帧。

2. 发送第一个数据帧:首先将首个数据帧的内容引入至特征值然后通知手机读取数据。遵从步骤1,依次发送剩下的帧。

蓝牙设备读过程:

当蓝牙设备发现读特征值收到数据时,会对数据进行接收,同时,会将其追加至设备的缓冲区中。需要注意的是:蓝牙设备读取数据需要一个前提,即微信APP已经订阅了将要进行数据读取的特征值,不然会出现数据丢失等不良问题,又称数据丢包


微信蓝牙协议


1 前提

第一全部与之对接的厂商,都要开通微信公众平台的硬件号功能。

第二厂商还应在公众平台上注册设备。

2 设备和广播

实现与微信的良好通信,对于厂商设备的广播包,有以下的格式规定

设备安卓或苹果手机或平板需要广播:

a. 微信规定的service uuid

b.为厂商自定义字段,涵盖了设备的MAC 地址。

c. 包含指定的Characteristics

Andriod 经典蓝牙设备需要广播:

a. 暴露一个指定uuid rfcomm 服务。

b. 厂商自定义字段里,存在设备的MAC 地址。

对于IOS经典蓝牙而言,需要通过苹果公司的MFI认证,与此同时,SerialNumber 需为MAC 地址(字符串形式)

设备可分为两种:

可确认设备:若存在按钮,可以通过按动按钮的方式,实现人机交互,这种设备被称为可确认设备。

无法确认的设备对于不具备传感器或者实体按钮,不能与人交互的设备,则称为无法确认设备,这种设备目前很少。

现阶段,市面上存在的外部设备,很多设备都需要做出确认后,例如靠近手机,或者按动特定的按钮,随后用户才能与设备进行绑定。相应的,广播包有两种:

普通包:普通包又称为广播包,其实质上就是设备正常情况下,所发送的所有数据包,

广播包的数据包括了设备的MAC地址等信息

确认包:当用户对设备进行确定操作时,例如,设备上的按钮被安东,广播发出的特殊的包就叫做确认包,对于微信而言,其规范中对普通包与确认包格式进行了严格规定:即通过Manufature Data域来区别。


数据域的TVL格式

TLV格式的全称为TAG LENGTH VALUE即数据是以T+L+V的形式组包发送其具体定义如下

TAG:

固定一个字节。嵌套表示,0x80 CMD0X81表示回复

指令序号低4位从0X01开始往上累加指令序号的4位具有特殊含义,具体表示如下:

6119f6346b10e_html_4926e681b0ffc85c.jpg

LEN:

变长表示。当需表示的数据长度小于0x80个字节时,占一个字节。当需表示的数据长度大于0x80个字节时,变长表示,即用0x80+n来表示长度

示例:

1. 表示0x77LEN=0x77

2. 表示0x88LEN=0x81 0x88

3. 表示0x0156LEN=0x82 0x01 0x56

c) VAULE:

值域,长度由LEN指定。



手机APP与车载OBU的通讯iPhone为例):

IOS7.0开始支持BLEswift语言则需要到IOS8.0IOS系统中我们需要了解以下蓝牙相关术语


  • BLE(Bluetooth low energy)蓝牙4.0设备因为低耗电


  • BLE(Bluetooth low energy)蓝牙4.0设备因为低耗电


  • Central中心设备,简单而言,所谓的中心设备实际上是发起蓝牙连接的设备,通常为智能手机


  • Peripheral:外设,又称为周边设备被蓝牙连接的设备(一般是运动手环,本项目中为车载OBU设备)


  • Service and Characteristic:服务和特征,每个蓝牙设备会提供服务和特征,类似于网站提供的API这些API即特征提供给你操作蓝牙服务的功能,其可分为读(read),写(write),通知(notify)几种。


  • Description特征描述,所有的特征值均有与之对应的Description,主要用来对特征值的属性或信息进行描述。


IOS系统中提供蓝牙服务的APICoreBluetooth,其结构如下图所示


6119f6346b10e_html_7838e71d41d9d5d9.png


左侧的黄色区域,其作为中心模式存在,主要是将手机app作为中心,与其他蓝牙外设连接的情况。


右侧绿色的区域是外设模式,这是蓝牙外设与其他中心设备进行连接时所表现的情况。

服务和特征service and characteristic):

所有设备中均会存在一个或多个服务,各服务也均会具备各自的特征,一个或者多个,特征实际表示的是其具体键值对,特征属性较多,例如读、写、通知等。其结构如下图所示

6119f6346b10e_html_50889074a45f14a0.png



车载蓝牙单元与手机APP的连接流程如下

1、建立中心角色

2、扫描外设(Discover Peripheral)

3、连接外设(Connect Peripheral)

4对外设中的特征及服务进行扫描

4.1 获取外设的services

4.2 获取外设Characteristics以及characteristics的值

4.3 获取CharacteristicsDescriptorDescriptor的值

5基于特征以及外设实现数据交互

6、订阅Characteristic的通知


通过iPhone智能手机连接车载OBU单元的握手指令示例

当车载OBU单元与手机建立连接后必须发送一条握手指令以确保机具与智能手机连接成功其指令如下所示以省中心的指令为例):


手机端发送数据33008001A180

车载OBU单元会返回如下数据

A1 00 02 Device Type 设备类型 双片OBU 01,单片OBU 02 单片OBU ESAM + IC 03 单片OBU ESAM 04】 【38 36 42 45 38 38 30 30 31 45 33 46 32 42 37 46 设备编号】 【01 50 设备的版本号】【02 00 01 设备的软件版本号】【FF 电量】【02 Card Valid】【00 OBUActived】【00 预留】

如上所示握手成功后返回的指令会包括车载OBU的设备类型设备编号设备的版本号设备的软件版本号设备的电量信息设备是否激活等信息当获取到这些数据后智能手机APP端会根据具体的业务需求再进执行其它指令的收发操作


通过iPhone智能手机连接车载OBU单元进行注册激活的示例

如上当智能手机与车载OBU连接成功后先进行一次握手当握手成功后即可获取车载

OBU的相关信息OBUIDOBU版本号OBU的设备编号以及拆御标志等参数

首先需要向ETC中心请求OBU的激活数据需要上送的数据有OBUIDOBU的版本号OBU的类型ETC的用户ID当前需要激活的车辆的车辆ID

随后ETC中心会根据所收到的请求参数返回注册激活数据其中包括OBU与卡片的激活数据这些数据都是经过加密的当手机收到这些数据后再通过蓝牙指令写入机具中即可激活成功

最后当机具确认激活成功后需要向ETC中心发送确认激活的指令即可完成一次OBU激活



上海ETC APP简要介绍

基于此我们设计并制作了上海ETC APPAPP可以快便快捷的帮助用户完成ETC注册激活挂失解挂启用禁用ETC检测账单查询等常用功能APP的功能设计如下图所示


6119f6346b10e_html_17868269add4307f.png





如上便能与车载蓝牙单远建立连接之后按照协议发送以及收取蓝牙指令便能完成具体的ETC业务注册激活挂失解挂等操作


其中主要功能有

发行服务

发行服务即注册ETC,包括:开户人身份信息录入,车辆信息录入,支付账户签约绑定和OBU二发和激活。

发行服务在本产品中为“注册ETC”模块。包括:身份信息录入,车辆信息录入,支付账户签约,车户绑定和OBU二发并激活共5功能点。

使用场景:车主新购或过户迁入(前装OBU一同迁入)车辆需发行,非车主(包括借入者)使用ETC缴费需要发行。

售后服务

ETC售后服务功能包括:支付账户,启用禁用,ETC更换,ETC检测,ETC解绑,账单信息和发票开具。

支付账户

支持开户人进行发起支付账户签约、车户绑定和车户解绑。

ETC解绑

解除开户人与车辆,开户人与扣款账户,车辆同扣款账户的绑定关系。

使用场景:车辆过户迁出(前装OBU一起迁出);车辆报废(前装OBU一起报废);车辆借给他人。

启用停用

停用为暂停使用ETC缴费;启用为恢复使用ETC缴费。

使用场景:

停用:车辆遗失,车辆借出等暂停使用ETC缴费。

启用:找回遗失车辆,借出车辆等恢复使用ETC缴费。

ETC更换

4S店更换OBU设备后,对旧OBU设备注销,对新OBU二次发行和激活。

ETC检测

通过蓝牙连接OBU,如存在数据信息错误自动修正,并支持OBU重新激活功能。不能解决硬件故障。

使用场景:ETC扣款失败;前装OBU故障,维修后需要重新激活;前装OBU脱落,固定后重新激活。

  • 账单信息

账单包含行车,加油,停车等相关ETC账单。

  • 发票开具

提供跳转票根网功能。

  • 个人信息

用户查看个人信息,车辆信息,支付账户信息等。



结束语:车载蓝牙OBU单元与智能手机进行通讯方便了用户申办ETC是一项便捷的服务基于低功耗蓝牙协议厂商实现了自已的通讯及业务协议十分方便便于维护


参考文献

1ETC设备蓝牙应用协议检测系统的设计与实现

逯静辉 薛金银张北海 《公路交通科技:应用技术版》2020


2基于蓝牙智能手机的OBU社会化发行研

逯静辉 薛金银张北海 《公路交通科技:应用技术版》2020


3ETC车载单元低功耗蓝牙通信模式适应性分析

殷亚君 《中国交通信息化》2017


4BLE低功耗蓝牙技术开发指南

金纯... 国防工业出版社2016


5Blue Rubber Bleb Nevus Syndrome

Y Someda A Shoji T Tsuji NishiNihonHifuka1987


6低功耗蓝牙BLE协议

杨一聪 《企业技术开发(学术版)2019