很开心第一次在面包板社区申请了测评就拿到了开发板,由于一直做的是物联网智能家居开发,所以当知道这款蓝牙多协议开发板在申请使用的时候,特别的开心,结果抱着试试看的态度参加了申请,没想到真的中了,这心情简直不能用激动来形容了.
由于工作比较忙,一直没抽出时间仔细把玩这块板子,想着这没几天就要到期了,不能辜负了社区的信任啊,所以咬咬牙花了两个晚上,终从搭建环境到今天成功蓝牙点灯,也算是一步一坎坷吧,这社区看了一下,其他的B91试用都是在调驱动,还没有蓝牙相关的内容,简直是浪费东西呀,这我不答应,这篇就记录一下使用这块板子调通蓝牙的过程,主要包含环境搭建,蓝牙工程探索,添加蓝牙服务,编写蓝牙点灯代码,最后展示一下学习的成果.
二.搭建环境
实话实说,B91板子,用官方的手册搭建环境还是比较费劲的,感觉东西都是散落的,东一处西一处,最后还是在论坛其他朋友发的帖子里成功搭建了,这块就不多说了,主要参考了:https://mbb.eet-china.com/forum/topic/131019_1_1.html等其他几篇,就不一一列举了.
我的这篇跟他们不同的是我使用的是B91M_SINGLE_BLE_SDK,得到这个也是偶然,就是不停得逛WIKI发现的,地址在这:http://wiki.telink-semi.cn/wiki/chip-series/TLSR921x-Series/,

神奇吧,B91的sdk会在921的版块里,所以说wiki这块做的真不行,太散落了,把sdk下载之后跟他们一样导入工程,顺利编译出了bin文件,
等到要下载固件的时候又出问题了,按照官方的教程根本走不通,后面发面还需要下载一个BDT工具,然后BDT工具下载之后竟然还要更新固件,这块主要参考了这位大佬的帖子:
https://mbb.eet-china.com/forum/topic/130542_1_1.html,经过一番折腾,板子终于是可以成功更新固件了.

三.蓝牙工程探索
在这个sdk里面有很多的蓝牙案例,这里我主要使用ble_sample:

用这个工程编译之后,会出现B91_ble_sample.bin,烧录之后可以看到默认的ble广播包,官方默认的ble广播名称叫做eSample,主要在代码的这里,后来我改成了Signx23,突出自己的特色:

这个改完之后广播包就变了,使用蓝牙工具扫描一下可以看到:

然后就可以连接这个蓝牙了.
在平常使用开发板的时候习惯打开串口进行调试,经过摸索发现在app_config.h宏里面有定义:

打开之后,在main函数里添加一个打印日志,就能从串口工具看到日志了:


连接之后发现几个默认服务,关于ota和电池等.经过探索发现这块的代码位于app_att.h,

接下来就是添加自己的蓝牙服务和功能了
四.添加蓝牙服务
添加蓝牙服务在与读懂这个attribute结构体:

经过一番探索终于搞懂了逻辑,这里也可以参考官方文档,连接在此:http://wiki.telink-semi.cn/doc/an/AN_20111001-C_Telink%20B91%20BLE%20Single%20Connection%20SDK%20Developer%20Handbook.pdf

就照这样照猫画葫芦:




这样把固件编译之后,重新下载就能看到多了一个服务:

往这个服务里面写数据就能在串口终端看到日志:

同时如果数据正确就可以看到灯的变化,
导致,关于蓝牙的探索就ok了
五,视频展示:
以下是演示视频,拍的比较仓促,效果不好,灯亮了一下就灭了,这块推测是代码里面灯的状态跟按键状态绑定了.等有时间重新整一个好点的,感谢大家的观看.
再次感谢面包板社区,后续有时间会完善案例,有时间多申请其他的板子试用.