在《STM32與機智云連接實現步驟與技巧(上篇)》中,我們介紹了硬件連接和通信協議配置。本篇將重點講解如何將機智云相關代碼移植到STM32,完成數據上傳和設備控制。我們將介紹如何在STM32中配置機智云SDK,集成API,實現數據傳輸和設備狀態同步,并分享移植過程中的常見問題及解決方法,幫助開發者順利實現云端連接。
機智云相關代碼開始移植
相關移植步驟
1、實現與模組通信串口驅動
2、實現串口打印函數printf();
3、實現1ms定時器,gizTimerMs()維護系統時間 (提供時基)
4、實現MCU復位函數,模組可請求MCU復位
5、實現配置入網功能,調用gizwitsSetMode()函數實現模組配網功能
6、實現userHandle()數據的采集(上行邏輯)
7、實現 gizwitsEventProcess()控制命令的具體執行(下行邏輯)
1、WIFI串口接收數據寫入緩沖區
串口包含這個機智云的頭文件
在該文件中找到uartWrite()這個函數,并在給文件上方添加所用串口的.h文件
該函數修改為
(代碼部分請點擊文末查看原文以獲取詳細內容)
實現毫秒定時
對于使用的定時器4,中斷里添加相應代碼
(代碼部分請點擊文末查看原文以獲取詳細內容)
編譯會出現警告,找不到該函數,gizTimerMs();函數沒有定義,在gizwits_product.h文件中進行定義。
實現芯片復位函數
修改該函數在gizwits_product.h文件中
改為下邊的代碼
(代碼部分點擊查看原文進行查閱)
實現配置入網
模組支持 SoftAp 和 AirLink 兩種方式配置入網, 相應接口為 gizwitsSetMode(), 三種模式如下:
WIFI_RESET_MODE 恢復默認出廠設置
WIFI_SOFTAP_MODE 熱點配網
WIFI_AIRLINK_MODE 手機廣播配網
在此之前主函數中添加頭文件
以及初始化
添加機智云初始化代碼,本次選擇了airlink配網模式
(代碼部分點擊查看原文進行查閱)
協議處理
根據采集到的數據,然后調用函數 gizwitsHandle()、userHandle()上報,函數位置在gizwits_protocol.c文件中,該函數主要完成協議數據的處理及數據主動上報的相關操作,到這一步,配網就結束了,接下來開始配置自己需要傳輸的數據。
(代碼部分請點擊文末查看原文以獲取詳細內容)
數據上下發配置
上發數據用到的函數為userHandle(),這個函數是在gizwits_protocol.c中
如圖,本設計一開始將參數都初始化為0
采集數據的函數
該函數中內容作為機智云app下發數據
實驗現象
WIFI連接出現的問題
出現timeout超時,可能原因是主函數中給了延時函數,可以嘗試屏蔽掉。如果出現連接數據傳輸不穩定,WIFI連接容易掉,可以嘗試一下。
注釋掉箭頭指向的這三行
并且把這個語句能搜索到的全部注釋掉,可以ctrl+f 搜索都在這兩個文件中。
這個主要是串口1打印內容(gizwits_product.c,gizwits_protocol.c)
-
STM32
+關注
關注
2289文章
11012瀏覽量
362385 -
機智云
+關注
關注
3文章
609瀏覽量
26742
發布評論請先 登錄
機智云自動生成工程移植STM32CubeMX
STM32CubeMX移植機智云自動生成代碼詳解
STM32+機智云WebSocket實現物聯網游戲
【開源案例】雙STM32和機智云,一起打造“優美”的數字儀表
移植機智云代碼到STM32F103
基于STM32與esp8266機智云app聯網總結
機智云官方生成的MCU代碼(hal庫)移植為STM32標準庫教程

評論