BLE - UART 服务
材料准备
- AmebaD [ AMB23 / AMB21 / AMB22 / BW16 / AW-CU488 Thing Plus ] x 1
- Android / iOS 智能手机
范例说明
介绍
BLE可以使用GATT系统发送和接收应用程序数据。 GATT使用服务,特征和属性来组织数据并控制如何读取和写入数据。 BLE的蓝牙SIG规范包括针对常见应用的几种定义服务,但用户可以依据适合其数据结构和应用需求来自由实施自定义服务和特性。
在此范例中,BLEService和BLECharacteristic用于实现类似于常规UART传输ASCII字符的自定义服务。此自定义服务是在多个智能手机应用程序中受支持的Nordic UART服务。
步骤
确保您的智能手机上已安装兼容的BLE UART应用程序,该应用程序可在以下位置获得:
– Google Play Store:
https://play.google.com/store/apps/details? id=com.adafruit.bluefruit.le.connect
https://play.google.com/store/apps/details?id=de. kai_morich.serial_bluetooth_terminal
– Apple App Store:
https://apps.apple.com/us/app/bluefruit-connect/id830125974
打开范例, “Files” -> “Examples” -> “AmebaBLE” -> “BLEUartService”.
上传代码并在上传完成后按Ameba上的重置按钮。
在手机上打开应用程序,扫描并连接到显示为“AMEBA_BLE_DEV”的Ameba开发板,然后在应用程序中选择UART功能。
请注意,Ameba板上的BLE UART服务仅可与Bluefruit Connect应用程序中的UART和Plotter功能一起使用,其他功能(Pin I/O,图像传输)需要此范例中未包括的其他BLE服务。
在应用程序的UART终端部分中,输入一条消息,然后单击发送。您应该看到消息出现在Arduino串行监视器中。
在Arduino串行监视器中,输入一条消息,然后单击发送。该消息将出现在手机应用程序中。
程式码说明
BLECharacteristic用于创建两个特征,一个用于接收(Rx),一个用于发送(Tx),并添加到使用BLEService创建的服务中。
使用set__Property()方法为每个特征设置所需的读/写/通知属性,并使用set__Callback()方法注册回调函数。还为每个特征设置了所需的缓冲区大小,以便它有足够的内存来存储完整的字符串。
将数据写入接收特性时,将调用已注册的回调函数,该函数将接收到的数据作为字符串输出到串行监视器。
在串行端口上接收到数据后,会将其复制到发送特性缓冲区中,然后notify()方法用于将新数据通知给连接的设备。