车载蓝牙怎么和手机配对开发板都支持airsync协议么

    前一段时间因为工作需要开始學习 CC2541 连接微信这一块,因为前辈已经把 CC2541 和微信连接部分的程序全部完成了所以我只是教客户如何使用这个程序,并且在客户遇到问题时幫忙解决也因为前辈的程序写的很完善,所以客户一般遇到的也只是一些连接断开之类的小问题所以我也就没有很仔细地看程序的具體实现。因为在这里留下了联系方式有写同行想问我一些问题,但是说实话我也确实懂得不多后来仔细一想,有这么好的条件让我学習我不应该浪费这么好的机会,所以还是仔细学习一下这一块

我做过 CC2541 链接微信有两种,一个是微信 AirSync另一个是微信精简协议

1. 微信精簡协议目前用的就是计步协议就是能把 BLE 设备上的记步数据上传到 微信运动 这个公众号里,然后实行排名的动作但是功能很单一,只有統计步数这个功能而且目前还没办法实时上传数据,BLE 设备和 微信运动 连接一次只能上传一次数据,并且目前数据只能到微信服务器還不支持微信服务器和客户服务器的连通。有客户在用但是用的不多。

2. 微信 AirSync 就是一直说的微信协议客户可以在微信上面开设自己的公眾号,然后在公众号里加入自己的功能而且数据最终会到客户自己的服务器。如下图所示当然,这里还有很多其他的功能后面再说。

我的工作就是负责外设到微信手机这一块在往上就属于服务器部分了,这里不是我负责我也没做过。这是数据的流动方式下面介紹一下微信 jsapi 功能。见下图:

一般的数据流动方式是 设备<->微信 app<->微信后台(服务器)<->厂商服务器而 jsapi 是通过微信连接到网页,然后通过在网页仩的操作直接通过微信 app 与设备通信,这时就可以不通过微信服务器这就使客户很方便的加入各种功能,尤其是对实时性要求很高的设備比如遥控赛车,就可以用 jsapi 做遥控器这一部分具体请看《微信硬件JSAPI介绍文档》

 微信硬件平台使用车载蓝牙怎么囷手机配对作为近场控制的连接件并拟定了《微信车载蓝牙怎么和手机配对外设协议》。这份协议更像一个标准用于规范微信和车载藍牙怎么和手机配对外设之间的数据交互场景和接口。但从开发者来看要完全读懂这份协议,恐怕需要熟读很多遍并且要结合调试才能真正实现微信Airsync通信。笔者对IOT和微信硬件平台的整个框架和技术都比较熟悉了并且已经在TI的CC254X和Dialog的DA14580上实现了微信Airsync协议通信。现在回过头来从开发的角度,对微信Airsync协议进行重新解读以帮助新进入物联网领域的开发者更快地掌握微信车载蓝牙怎么和手机配对设备通信开发,鉯让产品快速接入微信硬件平台

一、微信车载蓝牙怎么和手机配对物联的技术需求

软件和协议都是需求驱动的。在物联网、移动互联网領域理解场景是提炼需求的重要方法。那么我们从场景分析的角度来理解微信硬件平台的车载蓝牙怎么和手机配对物联需求。

微信硬件平台支持车载蓝牙怎么和手机配对和Wifi/3G/GPRS接入Wifi/3G/GPRS是一种远场控制手段,只要网络可达那么用户可以在远场(例如办公场所)控制离用户距離很远(例如家里)的物联设备。而车载蓝牙怎么和手机配对接入则是一种近场控制手段用户只能利用微信通过手机的车载蓝牙怎么和掱机配对来控制20米左右的车载蓝牙怎么和手机配对设备。也即是当车载蓝牙怎么和手机配对设备离开手机车载蓝牙怎么和手机配对的连接范围,那么用户是控制不了该设备的

对于车载蓝牙怎么和手机配对外设来说,手机就像一个车载蓝牙怎么和手机配对网关一样手机通过车载蓝牙怎么和手机配对来跟车载蓝牙怎么和手机配对外设进行通信,将得到的数据通过手机的wifi或者3G/4G信号与云后端(微信公众平台、苐三方云服务端)交互前者是基于微信Airsync协议,后者则是微信制定的基于TCP/IP协议的《设备接入接口协议》

微信硬件平台只提供两部分核心嘚物联功能,一是身份管理二是消息推送。任何一个外设不管是车载蓝牙怎么和手机配对还是wifi,它都将拥有一个唯一的设备ID设备ID的楿关描述请参考《》,其包括设备类型(设备厂商的公众号ID)和该设备厂商自行定义的设备ID这种设计手段和车载蓝牙怎么和手机配对MAC地址、网卡MAC地址的设置是一样的。设备ID就是外设的身份

在外设向微信硬件平台注册身份前,微信硬件平台是不认识这个外设的所以,我們在使用车载蓝牙怎么和手机配对外设前需要向微信硬件平台注册身份。

对于微信硬件平台而言设备注册其实就是平台对这个设备进荇授权(加入)的过程。接口如下图其主要通过提交自身的唯一MAC、设备ID来向平台注册。

对于车载蓝牙怎么和手机配对设备来说它主要嘚状态包括未连接和已连接两种状态。在未连接时它需要进行广播。广播的目的是为了让手机微信能够通过车载蓝牙怎么和手机配对扫描得知这是一个支持车载蓝牙怎么和手机配对Airsync协议的设备当手机微信识别到是一个支持该协议的外设时,手机微信会发起连接

那么,廣播数据需要包含什么格式的数据才能被手机微信所识别到呢这就是车载蓝牙怎么和手机配对Airsync协议规定的内容。

车载蓝牙怎么和手机配對连接之后自然是数据通信的需求。对车载蓝牙怎么和手机配对BLE来说数据通信都是通过访问某个characteristics来实现的。而characteristics需要支持以下场景:

2)掱机微信读取外设的一些信息当外设和厂商自己研制的APP连上之后,外设处于连接状态其不会再发出广播信息,此时微信想去连接这个外设怎么办其是通过读取外设的信息,如MAC来判断该外设是否支持微信。这要求characteristics的read属性

以上两种都是手机微信作为主动方,外设是被動接下来,我们来看看外设是主动时的场景:

3)例如运动手环需要主动上报用户某个时段的运动步数。在这种情况下手机微信主动讀取运动步数显然是不合适的,因为手机不应该时时刻刻地读这个步数来更新而应该是手机微信订阅characteristics的信息更新服务,即作为被动方接受外设的信息更新

对于车载蓝牙怎么和手机配对外设来说,characteristics的信息更新有两种一种是notify,一种是indicate他们有什么区别呢?对于notify当车载蓝牙怎么和手机配对外设的characteristics的值有变化时,它会主动将新的值告知手机微信而手机微信收到这个信息更新时不需要回复。而对于indicate属性手機微信在收到这个信息时需要给车载蓝牙怎么和手机配对外设一个简单的回复。

车载蓝牙怎么和手机配对BLE通信的characteristics的长度是有限制的或者說每一帧数据长度是有限的,是20字节那么,如果车载蓝牙怎么和手机配对外设有一串很长的数据要主动传送很明显,它需要indicate属性才能唍成这个任务即将这段数据按20字节长度进行分帧,每次更新发送之后需要等手机微信回复之后才能发下一个20字节,直到发完为止

二、车载蓝牙怎么和手机配对微信Airsync协议开发

根据以上对车载蓝牙怎么和手机配对微信物联的技术需求分析,再根据车载蓝牙怎么和手机配对BLE嘚应用开发知识我们来梳理车载蓝牙怎么和手机配对微信Airsync协议的开发要点。

车载蓝牙怎么和手机配对外设广播的目的是让手机微信能够識别到微信Airsync协议是这样规定车载蓝牙怎么和手机配对外设广播数据格式的:

另外,微信Airsync协议提到广播设备分为两种一种是普通设备,沒有按钮需要无时无刻地广播数据;另一种是确认设备,即有按钮即用户按下按钮后才开始广播数据。事实上现实生活中为了省功耗,不可能时时刻刻都在广播的都是在用户拿手机过来后,再按下外设按钮之后才开始广播并连接的但是微信把这种方式称为确认设備会造成困惑啊,又没解释清楚以为广播之后还要确认什么的。这里明确解释这一点

外设要实现以下特征,并根据具体芯片平台的接ロ实现各特征字的读写回调过程以实现具体的应用需求。

满足以上两个条件代表已经能够跟手机微信进行数据通信了但是交互过程是┅个协作的过程,就像我们访问业务系统一样也要先登陆再初始化后,才能进行正常的业务通信啊那么登陆和初始化我们可以理解为應用控制信令,而后续的数据通信也是应用数据通信

车载蓝牙怎么和手机配对Airsync协议使用protobuf技术进行封包和解包,详见《》

登陆时的数据參数格式是:

微信支持两种登陆身份认证,加密和不加密这里只讨论简单的不加密认证好了。不加密时我们一般用MAC地址方式登陆,即將AeSine付空值AuthMethod赋值为EAM_macNoEncrypt.

Author会收到手机微信的回复,在加密时收到的是一个用于之后通信的秘钥但在不加密是可以忽略。

初始化的目的是外设生荿一个随机数以后每次通信后,该数值都会自动加1;另外在初始化的回复中,手机微信可以告诉外设手机微信当前的用的手机操作系統的版本、当前时间、微信用户ID等等以便于外设记录用户的信息。

初始化的数据参数格式是:

你将会事半功倍!祝好运!

更多嵌入式Linux和粅联网原创分享请关注微信公众号:嵌入式企鹅圈

我要回帖

更多关于 车载蓝牙怎么和手机配对 的文章

 

随机推荐