灯灯灯 发表于 2017-5-10 19:44:10

【CurieNano教程2】蓝牙BLE广播(无需建立连接)

一、概述
    支持Arduino 101广播收发 2字节数据,信道共享,无需建立连接,不同的广播设备用UUID来区分。
    蓝牙常规的使用方式是建立连接后互相通信,但实际上也支持不建立连接广播数据。CurieBLE库支持广播发送数据,但不支持广播接收数据。我修改了CurieBLE库,使CurieNano/Arduino 101支持广播接收。库下载链接:


二、广播发送
    广播发送是CurieBLE库自带的功能,不需要修改库源码。只需上传../BLE-broadcast/BLE-broadcast.ino 到你的Arduino 101。然后打开手机APP: NRF connect,点击scan,在下方显示的设备中展开"Arduino 101",在Service Data里可以看到,UUID=0x1234,Data每秒+1。

图:Arduino 101广播发送,手机接收的效果


三、广播接收
    广播接收是CurieBLE库不具备的功能,我修改了CurieBLE库的源码。修改后的库在../CurieBLE.zip。请解压后替代原来的库\Arduino15\packages\Intel\hardware\arc32\2.0.2\libraries\CurieBLE(以上是非完整路径,完整路径取决于你的Curie库的安装位置)。请在替代前备份原来的库。
    替代完成后,上传../BLE-readBroadcast/BLE-readBroadcast.ino 到你的Arduino 101。然后打开串口监视器,可以发现Arduino 101在不断搜索广播。此时若另一个上传了BLE-broadcast.ino的Arduino 101上电,可以看到它广播的UUID和Data被打印出来。


四、更复杂的广播网络
    使用3块Arduino101:A, B, C
    给A上传BLE-broadcast.ino。
    给B上传BLE-broadcast.ino。上传之前把第4行的"1234"改成"1235"
    给C上传BLE-readBroadcast.ino。然后打开串口监视器,可以看到来自A和B的数据。


五、注意事项
    1、每个Arduino 101可以接收多个广播UUID,但只能广播一个UUID。
    2、广播发送和广播接收例程中,UUID必须相同才可以接收到数据。
    3、若想用多个设备发送广播,则不同设备选用不同的UUID,便于区分不同设备


六、应用价值
    BLE广播的方式编程简单,对于轻量级、不私密、连接稠密的数据传输非常适用。无需建立连接也省去了麻烦。比如以下2个情景:
    情景1:传感器网络:多个从设备采集传感器数据并使用不同的UUID广播,主设备接收所有传感器的数据并用UUID区分它们。
    情景2:控制网络:一个主设备使用1个UUID广播命令,多个从设备接收广播,根据数据做出相应动作。(因为主设备只能广播1个UUID,若想区分一个命令是针对哪个从设备,请使用命令内容加以区分)

Lone_ranger_for 发表于 2017-5-31 13:32:59

您好我遇到问题 无法上传BLE-readBroadcast到101 :'(
希望获得您的解答

Arduino:1.8.1 (Mac OS X), 开发板:"Arduino/Genuino 101"

In file included from /Users/qianyikai/Documents/Arduino/libraries/CurieBLE/src/CurieBLE.h:33:0,
               from /Users/qianyikai/Desktop/CurieBLE-broadcast 2/BLE-readBroadcast/BLE-readBroadcast.ino:1:


/Users/qianyikai/Documents/Arduino/libraries/CurieBLE/src/BLECommon.h:26:54: fatal error: ../src/services/ble_service/ble_protocol.h: No such file or directory
#include "../src/services/ble_service/ble_protocol.h"
                                                      ^
compilation terminated.
exit status 1
为开发板 Arduino/Genuino 101 编译时出错。

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。

Lone_ranger_for 发表于 2017-6-2 14:02:41

Lone_ranger_for 发表于 2017-5-31 13:32 static/image/common/back.gif
您好我遇到问题 无法上传BLE-readBroadcast到101
希望获得您的解答



我自己解决啦

pdtopdog 发表于 2017-9-19 00:02:12

非常不错的资料,很感谢。
页: [1]
查看完整版本: 【CurieNano教程2】蓝牙BLE广播(无需建立连接)