采用多设备低功耗蓝牙BLE技术控制LEGO汽车或机器人等模型 科技系列

CamelliaCafe 2019-2-26 4014

直流电机和伺服电机是LEGO采用的电机,可以用来驱动LEGO积木组装成的汽车或机器人。电机需要控制器来控制。

LEGO自带的遥控器包括:

1. 红外遥控。

2. EV3控制器,可以通过电脑连接有线控制,或是通过手机APP经过蓝牙控制。

3. Boost控制器,通过手机或平板APP经过蓝牙控制。

Camellia Café 不建议大家在室外环境下使用红外控制器,尤其是在日光特别强的条件下,红外线会受到极大的干扰。

在这里,Camellia Café 讲述同时与多个低功耗蓝牙设备的连接及通迅,在Android和iOS中的开发,以方便你在自己的手机上开发控制程序和设计用户界面(UI)和用户体验(UX),控制你的LEGO模型,特别是MOC。注意重点是多设备!

Camellia Café 也设计了自己的控制器,包括单片机(MCU)和嵌入式(ARM)两种,都可以控制LEGO的各种电机,自己开发的目的一是想向大家讲解这些控制技术,二是更大的自由化MOC,使自己MOC的LEGO汽车或机器人等功能更加强大,这些都将在后续展示,今天还是先回到蓝牙技术,敬请点击观看视频:


低功耗蓝牙(Bluetooth Low Energy)技术被广泛地使用在智能手表、运动手环、健康监测、共享单车、智能家电等设备的通讯中,使智能设备轻松地与手机、平板和电脑等交换数据信息。


蓝牙(Bluetooth)

公元935-985年间的丹麦和挪威的国王 Harald Blatand 非常爱吃蓝莓,因此牙齿被染成蓝色。Harald Blatand 国王骁勇善战,统治丹麦期间,持续对外征战,统一了今天的挪威、瑞典和丹麦广大北欧地区。早年,他曾是北欧海盗精神的发扬者,而当时北欧地区的主要信仰是奥丁神(Odin),即“众神之王”。

蓝牙技术联盟 SIG(Special Interest Group)行业协会,用这个似乎古怪的名字来体现和映衬 SIG

希望统一无线技术领域的雄心壮志。

蓝牙的图标取自 Harald Blatand 国王名字的两个首字母 H 和 B 的古北欧字母的结合。


低功耗蓝牙(Bluetooth Low Energy)

与经典(Classic)蓝牙相比较,低功耗蓝牙:

  • 功耗低,使用纽扣电池就可运行数月至数年

  • 小体积、低成本

  • 与现有的大部分手机、平板电脑和计算机兼容

  • 2.4GHz

  • 最大通讯距离100米

  • 通讯速度快,发送简单的数据,不用于传送语音、图像等大量数据

其实低功耗蓝牙技术是新蓝牙(4.0及以后)技术的一部分。目前,我们使用的手机中的蓝牙都是双模方式,即同时具备经典蓝牙和低功耗蓝牙;运动手表、健康监测设备等都是单一的低功耗蓝牙。

最新的蓝牙(5.1)技术,将具备厘米级的定位功能。

Received Signal Strength Indicator + Angle of Arrival and Angle of Departure which are used for location and tracking of devices.


多设备网络结构(Swarm Network Topology)

中心设备 Central:手机、平板或电脑

外围设备 Peripheral:机器人模型、智能手表、运动手环、健康监测设备、共享单车、智能家电 ……


GATT


低功耗蓝牙的连接都是建立在 GATT(Generic Attribute Profile)协议之上。

UUID(Universally Unique IDentifier) 是一个采用128位的2进制数字表示的唯一识别码,在蓝牙通讯中,用来标识不同的服务和特征值等。


每个安卓版本就是一道美味零食

苹果永远是被咬了一口的苹果


Central in Android with Java

android.bluetooth

( 点击图片查看详细内容 )

1 - 建立管理变量

2 - 扫描设备

3 - 绑定安卓系统的活动和服务

此服务是指安卓系统的后台服务(Service),与蓝牙协议中的服务(GATT),是不同的概念。

4 - 连接到设备

5 - 查找蓝牙外围设备的服务和特征值

每台设备都有自己的服务,每个服务都有自己的特征值。

6 - 发送数据

7 - 读取数据

方式一:读取后,回调(自动触发)。

方式二:特征值变化时,回调(自动触发)。

安卓的后台服务通过广播形式把读取到的数据发送到前台活动。

7 - 断开连接,解除安卓系统的活动和服务的绑定


Central in iOS with Swift

CoreBluetooth

( 点击图片查看详细内容 )

1 - 建立变量

由于需要操作多设备,每台外围设备都需要有自己的地址、服务、读、写等特性。

2 - 搜索外围设备

3 - 连接外围设备

首先连接到外围设备。

接着搜索连接到的每台外围设备的服务,其中"XXXX"为每个服务的UUID。

最后搜索每台外围设备的每个服务的特征值,其中"XXXX"为每个特征值的UUID。

4 - 发送数据到外围设备

5 - 读取外围设备的数据

6 - 断开连接

希望上述思路有助于大家开发自己的蓝牙控制程序,更好地控制你们自己的MOC。

最新回复 (2)
返回
发新帖