本文原文为本人新浪博客: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/

物联网专题--基于APP Inventor的BLE蓝牙4.0数据通信相关推荐

  1. 重磅---基于App Inventor开发的蓝牙RSSI测量基站距离的手机应用软件

    RSSI的测距技术是利用无线电信号随距离增大而有规律地衰减的原理来测量节点间的距离 根据rssi强度计算距离 公式:d=10^((abs(rssi)-A)/(10*n)); A代表在距离1m时候的信号 ...

  2. App inventor arduino 手机蓝牙通信实现

    写下这篇文章是为了记录我学习App inventor及制作蓝牙通信app的过程,接下来我会从零开始一步一步搭建这个app,本篇文章适用于刚刚接触app inventor的人. 第一步,首先点击屏幕右上 ...

  3. 基于intel芯片的安卓蓝牙4.0 BLE通信总结

    基于intel芯片的安卓蓝牙4.0 BLE通信问题总结 使用设备: 台电 x98 air 3G 系统:安卓4.4.4 系统搭建: 1.安装ADT驱动,可以搜索intel_mobile_usb_driv ...

  4. (开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示

    STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示 第一 .先上效果图 第二.原理讲解 第三.c51读取各种传感器数值 第四.传感器数据推送到云端 ...

  5. APP Invertor 制作BLE蓝牙APP 控制esp32蓝牙小车

    APP Invertor蓝牙小车制作 1.插件下载 1.1.导入插件 2.APP界面展示 2.1 .可视化编程 3.esp32 蓝牙代码 4.实测效果 4.1 APP控制端 4.2 蓝牙接收端   经 ...

  6. App Inventor 使用BLE发送一串十六进制数据

    最近做的东西需要通过低功耗蓝牙BLE发送和接收一串的十六进制数据,现在终于把发送搞定了. 现在要用手机发送一串指令"01 01 02 12 45 65",想要既可以直接发送,也可以 ...

  7. 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1.HID报告描述符 富芮坤fr8016 设计Joystick例子 1.描述X轴Y轴Z轴 2.描述按钮 3 ...

  8. Android BLE蓝牙4.0开发详解

    这篇博客主要讲解 蓝牙 BLE 的用法.在讲解之前先讲一些概念性的东西,对于之前没接触过蓝牙开发,现在手上又有个蓝牙BLE项目需要做的人,先看下这些概念还是很重要的.因为我之前就是这样,之前没有接触过 ...

  9. Android BLE蓝牙4.0开发 实现扫描、连接、通讯、获取通知、特性等 (一、打开蓝牙 进行扫描)

    目录 首先说下蓝牙4.0 目前android蓝牙有2种: ble蓝牙开发流程: 1.首先当然是进行权限申请啦: 2.获取蓝牙适配器 BluetoothAdapter 3.打开蓝牙 4.关闭蓝牙 5.在 ...

最新文章

  1. EF 批量 添加 修改 删除
  2. angularJs在线API文档
  3. Maven学习(六):灵活的构建
  4. 【解惑】这么多技术我该怎么学 [转]
  5. codeforces 498 div3(a-e java)
  6. Spring Boot学习总结(7)——SpringBoot之于Spring优势
  7. qt lineedit获取内容_Qt开发中的几个关键知识点,收藏以备参考
  8. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。报错...
  9. Springboot物业管理系统
  10. python 返回列表长度_Python通过len函数返回对象长度
  11. Burpsuite的CA证书安装
  12. c++计算一维数组中的最大元素
  13. HTML之表单元素“Password”引发的思考-你的密码安全吗???
  14. es集群状态yellow排查
  15. 电脑键盘出现计算机,技巧:如何恢复计算机键盘上的乱码[设置方法]
  16. 雷军在北京大学的演讲
  17. 什么是数据工程师,主要做哪些工作?
  18. N4,C1,C4汽车(前、后装)芯片NEXTCHIP品牌。
  19. 数据治理体系化思考与实践
  20. Spring cloud Eureka consumer 调用 provider ERROR:java.net.UnknownHostException: XXX-PAYMENT-SERVICE

热门文章

  1. jsp进入另一个jsp分块之后js代码失效_一个架构师的缓存修炼之路
  2. mysql 存入图_c# 如何向mysql数据库中存入图片
  3. 永恒之蓝(MS17-010)补丁KB号
  4. python api测试框架_python api 测试框架
  5. linux服务器时间乱码问题解决
  6. 项目Beta冲刺(团队)第七天
  7. 《算法竞赛入门经典训练指南》pdf
  8. 转:一个网页图表的demon网站
  9. C++ 的Tool工具收集
  10. [Linux运维 -- 数据库]mysql处理时间