基於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
其它軟體需求:
- 串口列印工具
項目軟體實現步驟:
- 啟動ModusToolbox IDE工具。
- 從“Project Creator - Choose Board Support Package (BSP)”對話框中的列表中選擇CY8CKIT-062S2-43012開發套件。
- 點擊“Create”完成應用程序創建過程。
- 現在就可以修改和創建自己的代碼
該方案的配置操作步驟:
- 使用提供的USB電纜將CY8CKIT-062S2-43012開發板通過KitProg3 USB連接器連接到PC。
- 使用提供的USB電纜將兩個AIROC™藍牙®開發板(例如CYW920835M2EVB-01或CYBT-213043-MESH)連接到PC。這些開發板將充當Node1和Node2。
- 根據以下步驟修改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
- 打開終端程序,並選擇CY8CKIT-062S2-43012的KitProg3 COM埠和CYW920835M2EVB-01的WICED PUART埠。將兩個開發板的串口參數設置為8N1和115200波特率。下載LE IoT Gateway的軟體;
- 編程Node1(這裡是CYW920835M2EVB-01)。 下載Demo Light Dimmable程序。燒寫完成後,使用Mesh Client Controller應用程序對該節點進行配置。
- 編程Node2(這裡是CYW920835M2EVB-01)。 下載Demo Switch On Off代程序。編程完成後,使用Mesh Client Controller應用程序對該節點進行配置。
編程完成後,應用程序會自動啟動。觀察UART終端上的消息,並等待設備完成所有必要的連接。
圖 1. 終端列印程序啟動信息
- 確認用戶LED1以大約2 Hz的頻率閃爍,這表示網關節點正在使用"IoT Gateway"的名稱進行廣播。
- 初始化完成後,客戶端將與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。