基於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