如何开发低功耗蓝牙通信类型设备端

发布时间:2024-11-25 07:29

如何让无线蓝牙耳机自动连接:开启‘蓝牙设备发现’功能,靠近设备自动连接。 #生活技巧# #数码产品使用技巧# #音频设备设置方法#

阿里云IoT生活物联网平台对低功耗蓝牙通信类型(BLE)的设备,提供了Breeze协议接入方案,可以便捷实现App-设备-云的完整链路。

背景介绍

本文主要介绍在具备低功耗蓝牙(BLE)能力的设备端上,如何集成Breeze协议,并与手机端App建立连接、对BLE设备的身份进行认证、建立BLE设备与手机之间的安全通信通道,以及将BLE设备端数据通过手机App通道推送至云端等。手机端客户端和云端开发请参见蓝牙连接开发指南。

Breeze协议类似于BLE协议栈中的Profile(配置文件),需要适配并运行于BLE协议栈之上。

设备端Breeze SDK

Breeze协议规定了接入阿里云IoT生活物联网平台的BLE设备与移动端App之间的通信协议,为了方便用户实现更快速的接入,生活物联网设备端SDK提供了Breeze协议的代码实现:Breeze SDK,其结构框图如下所示。

HAL层:Breeze SDK需要适配BLE Stack,HAL层就是用来适配BLE Stack之用,不同的BLE Stack需要适当修改进行移植和适配。 核心组件层:实现了设备端-移动端-云端的认证、通道等逻辑的源码,用户一般不用做修改即可使用。 应用层:Breeze提供了设备OTA通道、辅助Wi-Fi配网通道等,用户需要根据实际场景进行使用。

设备端Breeze SDK代码结构

设备端Breeze SDK随生活物联网设备端SDK对外开源,最新版本请获取最近发布的获取SDK含AliOS Things版本。

代码位于$(SDK Src)/framework/bluetooth/breeze,目录如下。

. ├── Config.in //配合meunconfig组件配置 ├── breeze.mk //makefile文档 ├── README.md //readme文档 ├── api //目录,展示给应用的接口为breeze_export.*是Breeze SDK提供的接口; breeze_awss_export.*是蓝牙辅助配网的接口。依照应用场景选择其一使用 ├── core //目录,源码核心实现,包含安全,通道以及扩展指令等的实现 ├── hal //参考移植实现,使用AliOS Things OS, BLE协议栈,以及内部mebdtls和安全部分参考 ├── include //Breeze SDK的头文件

使用开发指南

开发者可以通过SDK提供的HAL接口进行对接,在自己的运行了BLE协议栈的设备上支持Breeze协议。

移植SDK到第三方平台

breeze_hal_sec对接安全部分,包含AES128 CBC加解密算法和SHA256接口。其余部分代码和应用维持不变。参见源代码目录下的hal,将第三方的实现替换此文件夹下的HAL实现:OS、BLE协议栈、Security,定义在$(SDK Src)/framework/bluetooth/breeze/hal下,其余部分代码和应用维持不变。

breeze_hal_ble:对接BLE蓝牙协议栈部分接口,包含蓝牙广播,注册Breeze蓝牙服务等 breeze_hal_sec:对接安全部分,包含AES128 CBC加解密算法 breeze_hal_os:对接不同OS的接口,包含OS timer的资源,KV(存储和读取接口)操作等

API接口列表

详细定义和说明参见蓝牙设备端SDK用户编程接口。

HAL接口列表

详细定义和说明参见蓝牙设备端SDK移植接口。

在生活物联网平台定义产品

由于设备最终要通过生活物联网平台认证,所以需要在生活物联网平台申请对应的产品认证信息。

创建项目。 新建产品。

参见创建产品,并按照以下要求配置。

选择节点类型为设备 选择是否接入网关为是 选择接入网关协议为BLE

定义产品功能。 (可选)在产品-设备调试界面,单击新增测试设备。

在产品定义界面右边可以看到产品的三个信息:Product Key、Product Secret和Product ID。这对于一型一密设备来说已经足够,但一机一密还需要在产品-设备调试中生成对应同一类型产品的多个设备,根据DeviceName进行区分Device Secret。此时,一机一密需要的五个元素信息都已经获得。

设备端高级应用场景开发

在SDK基础建立安全通道基础上,主要有以下两应用场景:低功耗蓝牙辅助Wi-Fi配网和低功耗蓝牙设备OTA。

蓝牙辅助配网

使用场景

Wi-Fi设备需要连接Wi-Fi热点(Wi-Fi AP)之后才能与其它设备进行IP通信。对于没有键盘、没有触摸屏、没有Web Server的Wi-Fi IoT设备而言,如何获取Wi-Fi热点的SSID、密码是实现设备远程管理的第一个关键步骤。

我们将Wi-Fi设备获取到Wi-Fi热点的SSID、密码的步骤称为Wi-Fi配网,蓝牙辅助Wi-Fi配网方案适用于同时支持蓝牙BLE以及Wi-Fi的设备,该方案通过蓝牙BLE通道将Wi-Fi热点的SSID/密码发送给Wi-Fi设备,从而让Wi-Fi设备可以连接到Wi-Fi AP(通常为Wi-Fi无线路由器)。蓝牙辅助Wi-Fi配网的工作原理示意图如下。

可以很容易得出蓝牙辅助Wi-Fi配网构成。

设备端SDK:设备端硬件支持Combo芯片(同时支持Wi-Fi和BLE),并运行基于Breeze SDK的蓝牙配网例程。 配网手机端SDK:手机集成配套的蓝牙配网SDK或者“云智能”App。 开发流程

如果您是一个Wi-Fi的模组商或者设备商,您的模组/设备支持蓝牙BLE以及Wi-Fi并且希望集成阿里云IoT生活物联网平台提供的蓝牙辅助Wi-Fi配网功能,可以按照下面的过程进行模组/设备开发。

产品注册,参见设备开发流程,并在产品的产品-人机交互的配网引导中增加蓝牙辅助配网的配网方式。 使用“云智能”App与设备端的comboapp开发。如果集成移动端SDK开发自有App的方式,可参见蓝牙连接开发指南。 设备端comboapp开发

在完成设备移植Breeze SDK步骤后,可参考example/comboapp实现低功耗蓝牙辅助Wi-Fi配网的功能,并将“产品注册”阶段的设备信息设置到comboapp中。

Breeze设备OTA

OTA编译配置

可以参考breezeapp示例,默认已经使能OTA功能。

OTA对接移植

OTA模块代码实现在framework/uOTA/src/device/ble下,包含以下目录。

. ├── README.md ├── ble.mk ├── inc //包含了对外的接口和对接API │ ├── ais_ota.h │ ├── ota_breeze.h │ ├── ota_breeze_export.h │ ├── ota_breeze_plat.h │ └── ota_breeze_transport.h └── src // OTA内部逻辑的实现 ├── ota_breeze.c ├── ota_breeze_plat.c ├── ota_breeze_service.c └── ota_breeze_transport.c

具体对接函数请参见蓝牙设备端SDK OTA接口。

OTA调试和使用

OTA的具体用法请参见蓝牙连接开发指南中“运营中OTA配置”章节。

网址:如何开发低功耗蓝牙通信类型设备端 https://www.yuejiaxmz.com/news/view/253710

相关内容

如何开发蓝牙Mesh智能灯设备固件
如何开发蓝牙辅助配网
如何使用蓝牙设备端SDK用户编程接口
低功耗蓝牙芯片智能照明解决方案
如何开发设备端本地定时功能
WiFi+BLE蓝牙模块在物联网设备的应用案例
蓝牙智能门锁现状分析
如何开发蜂窝网设备端
智能家居的低功耗无线连接解决方案
智能手机省电秘诀:看如何从设计源头来降低功耗

随便看看