本文原文为本人新浪博客:http://blog.sina.com.cn/s/blog_12f79c9b90102wbde.html
本科毕业设计要用到蓝牙4.0(芯片选用TI公司的CC254x系列)与手机客户端的数据交互,偶然间发现的AI2工具非常好用。上手之后发现国内的在线版本不支持蓝牙4.0,辗转问了好多人,无果,最后终于在一家台湾的网站上发现了有关BLE通信的APP制作方法,现在总结一下。
第一步:得到一个可以浏览国外网站的VPN
原文提供了VPN的购买链接,目前已经失效,请大家科学上网。
第二步:登录MIT的BLE测试网址
目前为止,国内以及国外的AI在线版都不支持BLE通信,唯一支持的是MIT的专门为BLE开设的测试版,网址链接为:
http://ble-test.appinventor.mit.edu/#6287416046387200
PS:第一次打开的时候谷歌可能会要求验证谷歌账号,有的话直接验证就好,没有的可以注册一个,很方便。
下图为BLE在线测试版的截图:
BLE在线测试版
可以发现,在线测试版和正式版几乎是一模一样的,区别在哪里呢?唯一的区别就在于BLE测试版添加了蓝牙4.0的组件,如下图所示:
蓝牙4.0控件
由上图可以看出,BLE在线测试版添加了“BluetoothLE”(全称为Bluetooth Low Energy), 即BLE组件,通过该组件可以进行有关蓝牙4.0数据的接受与发送。
第三步:熟悉BLE各种逻辑语句
首先是控制语句:
BLE组件的控制语句
① 当BLE设备被连接时,执行下列语句。该语句一般用作连接成功后改变显示状态;
② 当BLE设备被发现时,执行下列语句。该语句一般用作被发现之后改变列表中地址值;
③ 当BLE设备的RSSI值改变时,执行下列语句。 该语句一般用作检测搜寻附近蓝牙设备;
④ 当从BLE设备读或写的值改变时,执行下列语句。该语句一般用作数据通信;
⑤ 当BLE设备的值被读取时,执行下列语句。该语句一般用作数据通信;
⑥ 当BLE设备的值被写入时,执行下列语句。该语句一般用作数据通信。
其次是过程语句:
BLE组件的过程语句1
① 连接Index中的BLE设备。该语句一般和列表一起使用;
② 连接已知地址的BLE设备。该语句用来进行与已知地址的BLE设备进行连接;
③ 断开已知地址的BLE设备。该语句用来 断开已知地址的BLE设备;
④ 读取Index中的BLE设备地址。该语句一般和列表一起使用;
⑤ 读取Index中的BLE设备名称。该语句一般和列表一起使用;
⑥ 读取Index中的BLE设备RSSI值。该语句一般和列表一起使用;
⑦ 在已知设备UUID和特征值UUID的BLE设备上读一个字节变量。该语句用作与已知设备的数据通信;
⑧ 在已知设备UUID和特征值UUID的BLE设备上读一个浮点型变量。该语句用作与已知设备的数据通信。
BLE组件的过程语句2
① 在已知设备UUID和特征值UUID的BLE设备上读一个整型变量,offset是偏移的位数。该语句用作与已知设备的数据通信;
② 在已知设备UUID和特征值UUID的BLE设备上读一个字符型变量,offset是偏移的位数。该语句用作与已知设备的数据通信;
③ 开始扫描BLE设备。该语句一般在开始时使用;
④ 结束扫面BLE设备;
⑤ 在已知设备UUID和特征值UUID的BLE设备上写入一个整型变量,offset是偏移的位数,value是待写入的值。该语句用作与已知设备的数据通信;
⑥ 在已知设备UUID和特征值UUID的BLE设备上写入一个 浮点型变量,offset是偏移的位数,value是待写入的值。该语句用作与已知设备的数据通信;
⑦ 得到被支持的GATT服务。
最后是逻辑语句:
BLE组件的逻辑语句
① BLE设备中一个字节变量的值;
② 已连接BLE设备中的RSSI值;
③ BLE设备的设备列表;
④ BLE设备中一个整型变量的值;
⑤ BLE设备已连接;
⑥ BLE设备中一个字符型变量的值;
⑦ BLE设备。
第四步:数据的发送与接收
蓝牙4.0通信逻辑图
上图所示是在已知UUID的BLE设备中,向特征值3写入字符1,然后读特征值5,显示在标签文本上。上图中,设备的UUID是“0000FFF0-0000-1000-8000-00805F9B34FB”,特征值3的UUID是“0000FFF3-0000-1000-8000-00805F9B34FB” ,,特征值5的UUID是“0000FFF3-0000-1000-8000-00805F9B34FB”。
蓝牙4.0的数据通信主要是通过特征值来完成的,我们也可以根据需要自行添加特征值。每个设备都有不同的UUID,怕麻烦的话可以借助一些辅助的手机软件来读出来,比如TI官方的“BLE Device Monitor”或者“nRF Master Control Panel”,推荐后者,功能较多。
任何有问题的地方,欢迎留言交流!
附:参考网址
1. 基于AI2的BLE的基础运用:
链接1:http://blog.cavedu.com/programming-language/appinventor/app-inventor-藍牙4-0-ble-part-1-led-閃爍/
链接2:http://blog.cavedu.com/programming-language/appinventor/app-inventor-物聯網應用-藍牙4-0-ble-lesson-2-led-pwm呼吸燈/
2. 基于AI的传统蓝牙通信:
链接:http://blog.sina.com.cn/s/blog_62218b990102v65p.html
3. 好用的AI中文学习教程:
链接:http://www.17coding.net/