【華為雲技術分享】基於小熊派STM32芯片的通過MQTT上報JSON數據到華為物聯網平台的自動售貨機Demo解析


【摘要】 STM32的工程在文章末尾,可自行下載。

一、工程配置

1、MCU類型選擇STM32L431RC

2、燒錄器選擇OpenOCD,參數 -f interface/stlink-v2-1.cfg -f target/stm32l4x.cfg

3、輸出目錄選擇 LiteOS_Lab_STM32\targets\STM32L431_BearPi\GCC\appbuild

4、編譯器Makefile選擇 targets\STM32L431_BearPi\GCC\Makefile

5、平台參數配置:LiteOS_Lab_STM32\demos\oc_mqtt_demo\oc_mqtt_demo_static\oc_mqtt_static.c

6、WIFI用戶名密碼配置: LiteOS_Lab_STM32\iot_link\network\tcpip\esp8266_socket\esp8266_socket_imp.h

7、在物聯網平台上創建產品,選擇MQTT方式

二、部分代碼解析

編譯燒錄程序之前我們需要修改兩處代碼

第一處打開oc_mqtt_static.c文件,我們需要配置設備連接華為雲,物聯網平台所需要的參數,

修改第51行CN_MQTT_EP_NOTE_ID 為在華為雲,設備接入服務,注冊設備時使用的設備識別碼,可以在平台中查看,

修改CN_MQTT_EP_DEVICE_ID 為注冊設備時生成的設備ID,CN_MQTT_EP_PASSWD為注冊設備時生成的密鑰,

設備ID和密鑰在之前注冊設備時保存的txt文件中查看,如果忘記或丟失,可以重新注冊一個新的設備,

設備ID也可以在設備接入服務中查看,密鑰可以在設備接入服務中重置。

第二處打開esp8266_socket_imp點h文件,我們需要配置開發板鏈接wifi所需要的參數,

修改第43行WIFI_SSID 為自己創建的wifi熱點名字,WIFI_PASSWD為熱點的密碼,用於開發板鏈接wifi,

此處wifi熱點建議自己手機開啟熱點,開發板傳輸數據較小,不會花費太多流量,也可以用路由器的wifi,

但不能用有portal認證和802.1x認證的wifi,只能使用認證方式為用戶名密碼的wifi。

點擊編譯按鈕,進行編譯,耐心等待提示編譯成功。

將開發板用USB線連接到電腦上,開啟手機熱點或者路由器,點擊燒錄按鈕,耐心等待提示燒錄成功。如果燒錄不成功,請檢查前面工程配置的步驟是否配置正確,或者嘗試重新插拔USB線。隨后登錄華為雲 物聯網平台,點擊左下角切換頁面,在設備,所有設備處可以看到設備已經在線,隨后在開發板的LCD屏幕上可以看到所有商品,F1選擇商品,F2將其加入購物車,當F1位於submit時,F2提交訂單。也可以取消訂單,此時上報的數據購物車為空,訂單狀態為0。隨后我們登錄物聯網平台,點擊在線的設備,可以看到上報的數據,點擊查看全部屬性,可以看到數據詳情。

關鍵代碼講解

config.mk LiteOS SDK的配置文件,可以選擇或開關相關功能,如協議選擇:mqtt/lwm2m/coap,或者配置加密/非加密

Makefile定義了一系列的規則與編譯選項,編譯器會根據這些定義來對源文件進行編譯、鏈接

project.mk定義了所有需要移植的文件

Hardware包含了開發板的四款傳感器和LCD顯示屏的驅動

main.c程序入口函數main所在的文件

iot link文件夾,包含了Lite O S SDK所有功能代碼。SDK會根據用戶在config.mk中的配置,自動地添加對應功能的源代碼參與編譯。

oc_mqtt_static.c主要的案例程序文件,負責數據上報和命令下發業務邏輯實現。

oc_mqtt_static.c里面業務邏輯的實現方式

oc_mqtt_demo_main是售貨機的案例入口函數,首先做LCD屏幕的初始化,背景設置為黑色,字體設置為綠色,循環顯示每個商品,

顯示Submit和Cancel選項,顯示選擇按鈕F1當前的位置,顯示購物車當前商品數量,

初始化按鍵檢測任務,創建信號量,用於命令響應,創建數據上報任務,創建命令下發任務

兩個任務相當於兩個線程,創建好后,會自動執行。

key_detect任務,當按下F1按鍵時,順序調整星號的位置,來標記當前F1按鈕所在的位置。

oc_mqtt_report_entry 是數據上報任務,首先定義上報所需要的 JSON 數據結構體,然后配置物聯網平台的參數,連接到華為雲平台,配置成功后,

可以在華為雲平台上看到設備在線,然后進入循環體,不斷監測F2按鍵是否按下,當F2被按下並處於submit或者cancel位置時,進行 JSON字段組裝,

將每一個字段的名字,數據,數據大小,數據類型放在結構體中,拼接到上一個字段后面,以此類推,組裝完所有字段。然后將他們轉化成 JSON 格式,

再轉化為字符串用於數據上報,待oc_mqtt_report數據上報成功后,清空所有訂單數據,清空購物車,F1按鍵的標識星號回到第一個商品位置,最后釋放剛才創建的數據。

當按下F2時,F1按鍵在商品處,就將該商品添加到購物車,相應的購物車商品數量和總價增加,這里左邊和右邊五個商品分開判斷。

oc_mqtt_cmd_entry為下發命令響應的任務,當接收到命令時根據命令中的商品順序,進行相應的修改。

全局變量的定義,包括用於LCD顯示,數據上報所需要的常量。

三、工具IoT Studio常用的快捷鍵

1、當前文件搜索 Ctrl+F

2、全局搜索 Ctrl+Shift+F

3、撤銷 Ctrl+Z 恢復 Ctrl+Y

4、保存 Ctrl+S

5、注釋 Ctrl+反斜杠

6、搜索文件 Ctrl+P

7、復制Ctrl+C 、粘貼Ctrl+V 、剪切 Ctrl+X 

8、前進 Alt+右箭頭

9、后退 Alt+左箭頭

HDC.Cloud 華為開發者大會2020 即將於2020年2月11日-12日在深圳舉辦,是一線開發者學習實踐鯤鵬通用計算、昇騰AI計算、數據庫、區塊鏈、雲原生、5G等ICT開放能力的最佳舞台。

歡迎報名參會https://www.huaweicloud.com/HDC.Cloud.html?utm_source=&utm_medium=&utm_campaign=&utm_content=techcommunity


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM