在手机上开发micro:bit蓝牙连接程序

网友投稿 2019-09-09 12:05

本篇继《micro:bit的蓝牙功能》《手机连接micro:bit 通过蓝牙控制积木小车》两篇,简单讲解下APP端的蓝牙程序开发。

在micro:bit的官方app上,有一项Monitor and Control. 连接上蓝牙后,可以获取传感器数据、控制LED等多项功能,可先行体验。

https://cdn.china-scratch.com/timg/190911/1205405N9-0.jpg

上述对应的功能就是用这些积木块实现的。

https://cdn.china-scratch.com/timg/190911/12054014G-1.jpg

再来看下,MIT App Inventor: 

http://appinventor.mit.edu/about-us

https://cdn.china-scratch.com/timg/190911/120541MB-2.jpg

MIT App Inventor是一个直观的可视化编程环境,可以为智能手机和平板电脑构建功能齐全的应用程序。项目旨在通过赋予所有人,特别是年轻人,从技术消费转向技术创造的能力。但是因网络环境,无法用Google账号登陆,无法体验强大的功能。

iOS平台下蓝牙功能的开发

进入正题,我这里用iOS平台简单讲下蓝牙连接的过程。需要读者懂swift、iOS和蓝牙的基本知识。

手机作为中心管理者,来管理附属设备。micro:bit做为附属设备,提供相关服务。在app应用界面加载时,完成设备管理器CBCentralManager的实例化。

https://cdn.china-scratch.com/timg/190911/120541E61-3.jpg

实现扫描按钮的功能,点下后开始扫描设备。

https://cdn.china-scratch.com/timg/190911/1205412544-4.jpg

当然,记得开启手机蓝牙并且在micro:bit上打开蓝牙服务。

https://cdn.china-scratch.com/timg/190911/1205424416-5.jpg

实现代理方法,当发现外设时获取它的名字,名字包含BBC,停止扫描,自动选中这个设备。

https://cdn.china-scratch.com/timg/190911/12054263H-6.jpg

实现连接按钮的功能

https://cdn.china-scratch.com/timg/190911/120542LX-7.jpg

实现代理方法,在设备连接成功后,开始查找服务

https://cdn.china-scratch.com/timg/190911/1205425326-8.jpg

实现代理方法,查找到服务后,生成一个服务列表,再继续查找特征。

https://cdn.china-scratch.com/timg/190911/1205423S1-9.jpg

检索到所有的特征,并显示它们的值。其中有一项服务显示了micro:bit的版本号等。

https://cdn.china-scratch.com/timg/190911/12054341E-10.jpg

实现查找到特征的代理方法,关注所有的特征值。在micro:bit上发送一个数据,会发现是由特征6E400002-B5A3-F393-E0A9-E50E24DCCA9E而来。

https://cdn.china-scratch.com/timg/190911/1205434161-11.jpg

那么在手机端给特征6E400003-B5A3-F393-E0A9-E50E24DCCA9E发送数据试试,果不其然,micro:bit可以正常收到数据。下面完成收到数据时的代理方法。

https://cdn.china-scratch.com/timg/190911/1205445091-12.jpg

实现一个发送数据按钮的功能,变量self.cbCharacteristic对应的就6E400003-***对应的那个特征。

https://cdn.china-scratch.com/timg/190911/1205441309-13.jpg

接下来实现发送一个文本命令到micro:bit,发送s表示STOP,发送H:100表示水平滚动条的值,micro:bit接收到后按规则解析,执行。

https://cdn.china-scratch.com/timg/190911/1205444a4-14.jpg

这样完成了整个数据发送和接收的过程。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com