蓝牙4.0 CC2540/CC2541实现一主三从
演示视频 http://v.youku.com/v_show/id_XODQ2ODU5NDMy.html
1,要实现的功能
1个主机连接多个从机的例程,amomcu经过开发调试,实现了最大1主3从的功能,主机可通过ti自定义特征值服务CHAR1读写任意已连接上的从机,任意从机可以通过我们自定义的CHAR6进行对主机的数据通知(notify),在此基础上,朋友们可以在从机上负载上你的数据业务,比如实现蓝牙气象站等等都很easy了。
AmoMcu提供的这一份源码是一个独立工程,内含主机工程与从机工程,不依赖其他任何文件,理论上可放在任何地方进行编译和下载,但作为程序员需要有一个好习惯, 最好把这个工程放到不带中文且比较短的路径,否则有可能编译出错, 产生不必要的麻烦。
主机工程修改要点
首先我们增加了增加特征值CHAR6, 关于这个后面可以参看本教程的 《4.4 增加特征值CHAR6 》。
要实现一主三从,就是在连接从机时在原来的主机连一个从机的基础上再多连接2个,然后对每个连接过后的从机进行服务获取,以便后面主机对从机的数据通信。由于这个主机工程已被我们修改得太多,因此,我们以不一一说明都有哪些修改,我们只要把流程走上一片即可。 在此我们还是在此说明下我们实现的功能:
功能: 一主三从 的主机 (后面我们也将提供连接多从机的android app, 预告哈)
操作步骤 (注意我们都是含有oled显示屏的, 方便观察和操作) 1,主机通过 up按键 搜索从机 2,主机 center键 自动连接,可自动连接最多3个从机, 按屏幕显示当显示 “key S1 = send data ” 时, 按下s1 键即可,之后主机向每个从机的char1 与 char6发送轮流发送数据。 3,从机可以按下s1键 向主机的 notify char6的数据 4,主机可以按down键读取个从机的rssi 或取消。 4.5 总结上面我们主要是来说明了各个数据的出口和入口。
我们来回答一些小问题。 4.5.1 如何获取rssi?答: 据我调试,主机随时都可以获取rssi值,在获取是注意一下打印格式, 否则可能的出来的值是例如 220 这样的值, 你我都不认识。 主机连接上之后,按一下五向按键的 down 按键,就会在oled显示屏上显示 各个从设备的rssi 值了。 4.5.2 如何串口输出?答: 我们通篇都没有具体描述串口输出与输入,实际上我们都完成了,例如从机中:
就是串口初始化,波特率是 115200 4.5.3 没有oled显示怎么办?答: 我们强烈建议你配置上oled显示屏,小小屏幕大作用,TI的smartRF开发板的几乎所有代码都是包含显示代码的, 方便学习与观察。 万一没有显示屏,也没关系,我们也同是串口输出了, 你照着葫芦画瓢就是了。 4.5.4 某个从机断线了怎么办?答: 目前的demo代码中, 没有处理断线之后的代码, 但是某个从机断线, 不影响其他没断线的从设备与主机之间的通信。
4.5.5 如何使能低功耗?答: 目前的demo代码是基于ble1.3.2协议栈的,只要使能 POWER_SAVING 即可进入低功耗模式。把下图中的 xPOWER_SAVING 修改成 POWER_SAVING 即可!!!
4.5.4 如何连接更多从机?答: 目前的demo代码中, 最大只能连接3个从机,这个事 TI 的这个协议栈库定死了的(我猜的,你若是找到办法, 能告诉我么?),如果你需要连接更多的从机, amomcu 没有办法了, 但是如果你只是想从机通知数据到主机, 那么其实可以用广播的方式, 请看我们的下一个例程即可(预计12月下旬推出哈) 4.5.4 如何连接更多从机?答: 目前的demo代码中, 最大只能连接3个从机,这个事 TI 的这个协议栈库定死了的(我猜的,你若是找到办法, 能告诉我么?),如果你需要连接更多的从机, amomcu 没有办法了, 但是如果你只是想从机通知数据到主机, 那么其实可以用广播的方式
|