微信硬件开发系列教程07-蓝牙nrf51822固件编译(airkiss/airsync)
转载自:
https://blog.csdn.net/hunhun1122/article/details/69676832
蓝牙nrf51822源代码固件编译,使用上篇搭建的开发环境进行源代码的讲解和编译,下载到开发板中。 (电脑烧写开发板连线图)仿真+串口的接线。 一、固件源代码下载 二、源代码目录结构。 services目录里ble_wechat_service.c主要是通信服务功能。 其它代码主要都是官方ble的sdk代码,也采用轮寻的一个小系统,有兴趣可以研究一下。 三、源代码讲解 源代码我们主入口main开始,为大家一一解说。双击main.c,声明了m_ble_wechat(微信协议), m_mpbledemo2_handler(数据事件)。 然后进行resource_init资源初始化,advertising_start(蓝牙广播)。 这里我们主要关心,串口调试要用到最多的,io针脚控制灯开关的,buttons按钮,其它很多都 是ble系统内部的,我们只要会用就可以了。 在uart_init按F12,跳转到uart_init的函数里,因为串口输入做为最重要的调试日志。 在ble_stack_init按F12,跳转到协议践的初始化,看到代码将m_ble_wechat、m_mpbledemo2_handler 引入,然后on_ble_evt(p_ble_evt)这个函数处理事件,比如蓝牙连接事件,断开事件,发送数据事件, 下图我们看看业务类的各个函数声明。 mpbledemo2_data_consume_func,如上图,这个函数接收微信发来的处理,进行验证然后解析, 判断是openLightPush就开灯,是closeLightPush就关灯的处理。 做扩展功能可以在这里进行修改,如果是别的值就做别的事。 mpbledemo2_button_handler,这个函数处理按键点击后,执行发送信息给微信的实例,仿这个做 成传感器传数据就可以啦。 最重要的源代码就是上面讲的这些,想深入研究可以了解ble协议践吧,加油。 四、DeviceID和DeviceType申请和配置 复制https://api.weixin.qq.com/device/getqrcode?access_token=7olhdCJrKFWLots92V0YIq6Oa xj9JHKLj3t41zqnkw8QNky61_g6a550QsT51_ue 1x5ekUN0T48ishysQsR0Dls9xW7elU44fdLDhvwEk7BWEvHcXrZRnQIQw0pfRIvFUXDcAIAZCI &product_id=10114(复制你自己生成的哦),后面是添加&product_id=10114(自己的产品编号) ,用另一个网页选项卡打开,会返回下面的json格式。 {"base_resp":{"errcode":0,"errmsg":"ok"},"deviceid":"gh_0c61a2431300_9886c60e32d1eeff", "qrticket":"http:\/\/we.qq.com\/d\/AQDOu5W-_BTxnVphy1Ew-SZRjz3fd6nTFwvm1_qO"} 那么这样就成功获取到deviceid,qrticket(到二维码网站生成就可以扫描了) 选择:硬件接入api接口调试,设备授权-利用deviceid更新设备属性 device/authorize_device,填 写下面的代码 { 获取mac,先去搜索lightBlue软件APP(苹果) } 强制解绑,要输入device_id和openid,openid在测试公众号里面的 "用户列表" 可以看到。 五、编译固件、下载到蓝牙开发板 运行nRFgo Studio软件,选择nRF51 Programming,选择SEGGER to USE,点击Program SoftDevice, 点击Browse选择"蓝牙demo源代码V3\softdevice"目录里的s110_nrf51822_5.2.1_softdevice.hex, 点击Program进行刷写。 修改成第4节申请获得的参数,DEVICE_TYPE就是微信原始id,DEVICE_ID就是deviceid, EAM_md5AndNoEnrypt使用md5不加入验证。 改成这样,在扫描二维码时才能对应上某个硬件。 六、测试演示airsync蓝牙功能 airsyscndebug是一款专门测试airsyscn协议的app,目前只有安卓,使用它测试通过, 那么说明协议就正常了。 进入到公众号界面,会显示正在连接中,已连接等字样(我手机显示connected, 如果一直显示正在连接,未连接.....,请重上电开发板和微信多试,经常有这样的问题, 可能是微信测试服务号不稳定) 点击点灯,正常则显示已发送xxxxx(如果这时显示服务器不可用,那么公众号和服务器请求 不成功,多试和检查服务器,如果显示未绑定请强行解绑再扫二维码一次) 只要我们在这里改一下,就可以实现开门,关窗,发送各种命令(机器人的话就摇头晃脑命令 咯),那开发板怎么把数据传给微信呢?下面我们用开发板按键模拟。 按下开发 板上的k2按键,微信就会收到如上信息, 如果按键换成是传感器,微信收到的信息经过的我们部署的服务器时,我们就可以把数据 保存到数据库进行用户数据分析,达到智能的概念了。 常见问题(调试微信经常出现一些莫名的问题): 2、在微信公众号开发DEMO的源代码上,菜单新增了url,调用无法生成? 3、扫描二维码,显示连接中,然后断开又重新连接? 4、设备授权-device/authorize_device,需要注意些什么? |
微信硬件开发系列教程07-蓝牙nrf51822固件编译(airkiss/airsync)相关推荐
- 微信硬件开发系列教程04-新浪云服务器搭建(airkiss/airsync)
https://blog.csdn.net/hunhun1122/article/details/69676793 上篇已经介绍如何编译出源代码,这篇我们在新浪云搭建服务器, 然后部署上去,实现在微信 ...
- 微信程序开发系列教程(二)微信订阅号+人工智能问答服务
我的前一篇文章**微信程序开发系列教程(一)**开发环境搭建 已经介绍了微信服务器的开发环境搭建.本文作为开发系列的第二篇文章,介绍如何给您的微信订阅号开发一个最简单的问答服务,非常好玩. 这个系列的 ...
- Auto.js Pro安卓免ROOT引流脚本开发系列教程07微信运动点赞(4)
课程内容 翻页前判断是否在指定页面 翻页到达底部的处理 封装接口函数 开发环境与工具 开发环境:Visual Studio Code Auto.js:Pro 7.0.3-7 终端设备:红米NOTE5A ...
- 微信程序开发系列教程(一)开发环境搭建
1. 您得从微信官方平台注册一个微信订阅号: https://mp.weixin.qq.com 2. 这个教程使用nodejs开发微信订阅号对应的消息服务器,因此需要具备基本的nodejs开发技能. ...
- C#微信公众号开发系列教程三(消息体签名及加解密)
http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...
- 微信小程序开发系列教程三:微信小程序的调试方法
微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 这个教程的前两篇文章,介绍了如何用下图所示的微信开发者工具自动生成一个Hel ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
C#微信公众号开发系列教程五(接收事件推送与消息排重) 原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续 ...
- C#微信公众号开发系列教程二(新手接入指南)
此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...
- 微信公众号开发系列教程一(调试环境部署)
http://www.cnblogs.com/zskbll/p/4074855.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
最新文章
- [转]Introduction of iSCSI Target in Windows Server 2012
- ICCV2017 | 一文详解GAN之父Ian Goodfellow 演讲《生成对抗网络的原理与应用》(附完整PPT)
- 02 面向对象之:类空间问题以及类之间的关系
- crackme 逆向寒假生涯(22/100)
- SpringBoot中使用thymeleaf模板时select下拉框怎样查询数据库赋值
- 你所需要的MySQL检索语句(DQL)都在这儿(小白都能懂的哦)
- 禁售苹果手机_苹果、华为供应商工厂突发火灾!浓烟冲天
- C# 正则表达式验证数据类型
- Win11系统可以快速截屏吗?
- python用pip安装numpy清华_安装numpy和matplotlib
- python tkinter教程-事件绑定_详解python tkinter教程-事件绑定
- 计算机专业英语常用术语大全,计算机专业必备英语词汇汇总
- 基于matlab的64QAM通信系统的仿真
- 什么是黑帽seo?黑帽seo技术盘点。
- excel表格自动填充为汉字拼音首字母
- Dichotomy专栏:Leetcode:#33 搜索旋转排序数组
- 解决:CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pk gs/main/win-64/c
- 命令行工具 DOT和DOH测试
- pic16f1829 c语言,PIC16F1829 串口初始化程序及应用
- docker修炼手册