蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)

          蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)

    其实有很多博客都有写过怎么对接微信运动功能的,但是,基于nrf52832的很少有比较详细的讲解,很多时候可能移植微信硬件给出来的官方demo还是会踩雷(我自己就踩过!!噗~~~)。所以,我就想着写一个比较完整的从移植,到对接协议,最后实现的东西出来,方便以后回顾,同时也希望对有需要的小伙伴提供一点帮助。

一:移植

        不管是精简协议还是AirSync协议,都是移植官方基于nrf51822的demo,这里有一个我在官方demo做了修改的工程,里面需要用到的函数我都用中文做了注释,方便大家阅读。点击下面的蓝色字体的链接就可以下载啦!!!

官方demo(里面做了中文注释)

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第1张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第2张图片

移植完成后,要添加代码啦~~

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第3张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第4张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第5张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第6张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第7张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第8张图片

 

然后在wechat_service.c文件里面声明   extern data_handler             *m_mpbledemo2_handler;

到了这里,移植就大功告成了。。。哈哈,已成功了第一步哈!!!

(如果编译出错的话:有几个处理方法1.屏蔽掉ble_stack_handler.h和consource.h;2.修改ble_gap_address_get为ble_gap_addr_get;)。基本不会出错。

 

二:精简协议

         精简协议,是比较简单的。一般用到精简协议的基本上是上传一个类型的数据。虽然现在里面可以上传像步数,卡路里,距离这三个类型的数据;但是,这里我只用上传步数做例子(因为我的需求就是上传步数给微信运动~~~)。

先在wechat_service.h 添加    #define BLE_UUID_WECHAT_STEP_CHARACTERISTICS           0xFEA1
                                               #define BLE_UUID_WECHAT_TARGET_CHARACTERISTICS         0xFEA2

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第9张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第10张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第11张图片蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第12张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第13张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第14张图片

 

在读特性ble_wechat_add_read_char()函数里面添加:

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第15张图片

到这里就已经把服务里面的特性配置完毕了;下面就是最后一步,自动上传步数

1.创建一个软件定时器     APP_TIMER_DEF(m_wechat_send_data_timer_id);

2.又开始上图了(这部分是在wechat_service.c文件添加的函数,步骤1也是)

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第16张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第17张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第18张图片

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第19张图片

3.在main函数里面添加下面两句:

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第20张图片

4.到此,精简协议下的上传步数到微信运动就成功了(下面是用官方的AirSyncDebugger工具测试结果,本人亲自测试过,是能够上传到微信运动的公众号里面进行步数排名的)

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第21张图片

 

三:AirSync协议

其实AirSync协议是不难的。基本跟精简协议一样,区别不大。

1.要先从微信服务器生成 DEVICE_TYPE 和 DEVICE_ID

2.在mpledemo2.h 里面打开宏定义 EAM_macNoEncrypt  2

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第22张图片

 

3.在wechat_service.c 的服务初始化

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第23张图片

4.在main函数的主循环里面添加

5.我上传步数的做法是短按按键,按一次就上发一次(也可以像上面精简协议的定时器定时上发的方式处理,代码就用上面的精简协议那个创建定时器方法,这里就不重复了)

6.这里我使用官方的AirSyncDebugger 进行的测试,是成功的:

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第24张图片

 

蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议)_第25张图片

本来我拍了一个小视频,是整个流程下来的,但是好像这里放不上来,也就没办法了。跟着上面的步骤来做功能基本能实现的。

四:总结

写完这篇博客,我自己相当于又重新做了一遍,记忆加深了。对自己是很有好处的,我也希望这边博客能够帮到需要和这个微信运动功能对接的小伙伴们。有什么好的建议也可以对我提示提示哈,大家一起进步~~~bingo!!!

你可能感兴趣的:(蓝牙nrf52832对接微信运动(包括精简协议和AirSync协议))