【摘要】 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)