基于Infineon WiFi&BT Comb CYW43012之蓝牙IoT网关方案

基于CYW43012蓝牙® LE物联网网关的解决方案;该方案展示了如何使用MQTT客户端库和Infineon连接设备的蓝牙®主机堆栈来实现一个蓝牙®物联网网关。MQTT客户端库使用了AWS IoT设备SDK,其中包括一个MQTT 3.1.1客户端以及针对AWS IoT的特定库,如Thing Shadows。蓝牙®Mesh堆栈在服务器和客户端模型中与FreeRTOS一起运行。 该方案有两个主要部分:MQTT和Mesh。MQTT客户端RTOS任务与配置的MQTT代理(MQTT broker)(在本方案中为AWS IoT核心)以及使用MQTT主题与云端进行双向通信的发布者(publisher )和订阅者(subscriber )建立连接。Mesh使用GATT配置服务初始化了一个带有服务器和客户端模型的网关。它与其他节点(可调光灯和开关)建立通信。

软件要求:

  • ModusToolbox v3.1 或者以上
  • 板级支持软件包:Board support package (BSP) version: 4.0.0 或者以上
  • 软件实现语言: C
  • 所涉及Infineon主要芯片型号: MCU:CY8C624A;WiFi&BT Combo CYW43012; BLE SoC CYW20835;

支持的编译工具链

GNU Arm® embedded compiler v10.3.1 (GCC_ARM)

使用的开发板

  • CY8CKIT-062S2-43012
  • CYW920835M2EVB-01

其它软件需求:

  1. 串口打印工具

项目软件实现步骤:

  1. 启动ModusToolbox IDE工具。
  2. 从“Project Creator - Choose Board Support Package (BSP)”对话框中的列表中选择CY8CKIT-062S2-43012开发套件。
  3. 点击“Create”完成应用程序创建过程。
  4. 现在就可以修改和创建自己的代码

该方案的配置操作步骤:

  1. 使用提供的USB电缆将CY8CKIT-062S2-43012开发板通过KitProg3 USB连接器连接到PC。
  2. 使用提供的USB电缆将两个AIROC™蓝牙®开发板(例如CYW920835M2EVB-01或CYBT-213043-MESH)连接到PC。这些开发板将充当Node1和Node2。
  3. 根据以下步骤修改configs目录中的用户配置文件:
  • 在configs/wifi_config.h中设置Wi-Fi凭据:修改WIFI_SSID、WIFI_PASSWORD和WIFI_SECURITY宏,使其与您要连接的Wi-Fi网络匹配。
  • 在configs/mqtt_client_config.h中设置MQTT客户端并配置凭据,具体如下:

       3.1)根据《入门AWS IoT教程》中的说明,在AWS IoT核心中设置MQTT设备(也称为Thing)。

       3.2)在AWS IoT控制台的设置页面上,将MQTT_BROKER_ADDRESS设置为您的自定义终端节点。其格式为ABCDEF1234567.iot..amazonaws.com。

       3.3)下载在上一步骤中创建并激活的以下证书和密钥:

  • AWS IoT Thing的证书 - xxxxxxxxxx.cert.pem
  • 公钥 - xxxxxxxxxx.public.key
  • 私钥 - xxxxxxxxxx.private.key
  • 用于AWS IoT的根CA证书“RSA 2048位密钥:Amazon Root CA 1”(用于服务器身份验证的CA证书)。

      4.4) 使用这些证书和密钥,以隐私增强邮件(PEM)格式在mqtt_client_config.h中输入以下参数:

  • CLIENT_CERTIFICATE - xxxxxxxxxx.cert.pem
  • CLIENT_PRIVATE_KEY - xxxxxxxxxx.private.key
  • ROOT_CA_CERTIFICATE - 根CA证书

       根据mqtt_client_config.h中显示的格式,手动将这些值转换为字符串。

     4.5) 根据实际的应用程序,修改以下文件中的配置宏:

  • configs/core_mqtt_config.h(由MQTT库使用)
  • configs/FreeRTOSConfig.h
  1. 打开终端程序,并选择CY8CKIT-062S2-43012的KitProg3 COM端口和CYW920835M2EVB-01的WICED PUART端口。将两个开发板的串口参数设置为8N1和115200波特率。下载LE IoT Gateway的软件;
  2. 编程Node1(这里是CYW920835M2EVB-01)。 下载Demo Light Dimmable程序。烧写完成后,使用Mesh Client Controller应用程序对该节点进行配置。
  3. 编程Node2(这里是CYW920835M2EVB-01)。 下载Demo Switch On Off代程序。编程完成后,使用Mesh Client Controller应用程序对该节点进行配置。

编程完成后,应用程序会自动启动。观察UART终端上的消息,并等待设备完成所有必要的连接。

图 1. 终端打印程序启动信息

  1. 确认用户LED1以大约2 Hz的频率闪烁,这表示网关节点正在使用"IoT Gateway"的名称进行广播。
  2. 初始化完成后,客户端将与AWS云建立连接,并开始使用"IoT Gateway"的名称进行广播。您需要对IoT网关和其他节点进行配置。

调光灯和开关节点将数据发布到Mesh网络;IoT网关节点从Mesh网络订阅数据。 按下用户按钮(SW2)将值发布到AWS云上的主题。按住用户按钮(SW2)超过5秒钟可以执行恢复出厂设置。在刷写任何新固件之前,建议进行恢复出厂设置。

图 2.MQTT 和GATT DB 连接成功


在开关节点上切换用户按钮会改变开关状态值。该值将从IoT网关节点发布到云端。开关级别和灯光级别的值将在AWS设备影子文件中维护。

图 3.AWS device shadow


请参考亚马逊AWS设备影子页面,了解如何使用设备影子服务的详细信息。 用户可以通过向IOT_GATEWAY/mesh_devices主题发布SET/GET命令来获取云端的节点信息。 可以使用GET NODE命令从云端读取灯光节点和开关节点的状态。可以使用SET LIGHT命令从云端控制可调光灯节点的亮度。 示例:

GET NODE

SET LIGHT 6

图4. 从AWS向设备发布(Publish)消息

 

设计与实现

IoT蓝牙®网关应用程序将Mesh服务器和客户端模型实现为两个元素。这些元素订阅(subscribe)来自可调光灯(server/服务器)和开关(client/客户端)Mesh节点的消息。该应用程序通过MQTT与云端进行通信,进行主题订阅(topic subscribe)和发布(publish)操作。按钮中断服务程序(ISR)用于用户发布(publish)数据和重置(reset)节点。 UART用于控制台日志。可以通过在Makefile中设置WICED_BT_MESH_TRACE_ENABLE宏来启用Mesh跟踪;USER_LED1用于显示配置状态,USER_LED2用于应用程序使用。 有关Bluetooth® Mesh API的更多信息,请参阅Bluetooth® Mesh API指南({mtb_shared}/ble-mesh/release-{version}/docs/api_reference_manual.html),这些API是BTStack SDK的一部分。

图 5. 软件设计框图

 

►场景应用图

►展示板照片

►方案方块图

►核心技术优势

WiFi和蓝牙二合一; 超低功耗; 兼容性强。

►方案规格

支持802.11a/b/g/n; 支持802.11ac friendly; 支持蓝牙5.2。

技术文档

类型标题档案
硬件Datasheet