網(wǎng)通信-項(xiàng)目2 數(shù)據(jù)上報(bào)下發(fā)-任務(wù)2 數(shù)據(jù)上傳OneNET平臺(tái))
任務(wù)2 數(shù)據(jù)上傳OneNET平臺(tái)一、任務(wù)描述本任務(wù)基于 STM32F103C8T6 最小系統(tǒng)板通過(guò)傳感器采集溫度、濕度、光照強(qiáng)度數(shù)據(jù)由 ESP-01S WiFi 模塊以MQTT 協(xié)議將數(shù)據(jù)上傳至OneNET物聯(lián)網(wǎng)平臺(tái)。實(shí)現(xiàn)硬件采集→ WiFi傳輸→MQTT上報(bào)→云端存儲(chǔ)顯示的完整物聯(lián)網(wǎng)流程掌握設(shè)備數(shù)據(jù)上報(bào)、平臺(tái)數(shù)據(jù)解析、物聯(lián)網(wǎng)通信格式等核心技能。二、任務(wù)目標(biāo)1. 知識(shí)目標(biāo)1理解MQTT 數(shù)據(jù)上報(bào)格式與 OneNET 平臺(tái)數(shù)據(jù)解析規(guī)則。2掌握溫濕度、光照傳感器數(shù)據(jù)采集與格式轉(zhuǎn)換方法。3熟悉 ESP-01S 通過(guò)AT 指令發(fā)布 MQTT 消息PUBLISH的流程。4理解 JSON 格式在物聯(lián)網(wǎng)數(shù)據(jù)傳輸中的作用。2. 能力目標(biāo)1能夠采集溫度、濕度、光照模擬 / 數(shù)字?jǐn)?shù)據(jù)。2能夠?qū)⒉杉瘮?shù)據(jù)拼接為標(biāo)準(zhǔn) JSON 上報(bào)格式。3能夠通過(guò) ESP-01S 將數(shù)據(jù)上傳至 OneNET 平臺(tái)。4能夠在 OneNET 平臺(tái)查看實(shí)時(shí)數(shù)據(jù)、歷史曲線。3. 素質(zhì)目標(biāo)1培養(yǎng)數(shù)據(jù)格式規(guī)范、通信時(shí)序嚴(yán)謹(jǐn)?shù)墓こ塘?xí)慣。2提升傳感器采集、數(shù)據(jù)封裝、云端調(diào)試綜合能力。3建立 “采集→處理→上傳→顯示” 的完整物聯(lián)網(wǎng)思維。三、任務(wù)重難點(diǎn)1. 任務(wù)重點(diǎn)1MQTT 數(shù)據(jù)上報(bào)主題$sys/產(chǎn)品ID/設(shè)備ID/thing/property/post2標(biāo)準(zhǔn) JSON 數(shù)據(jù)格式包含溫度、濕度、光照。3ESP-01S 發(fā)布指令A(yù)TMQTTPUB。4數(shù)據(jù)成功上傳并在 OneNET 平臺(tái)顯示。2. 任務(wù)難點(diǎn)1JSON 格式錯(cuò)誤導(dǎo)致平臺(tái)無(wú)法解析。2字符串拼接、轉(zhuǎn)義字符處理不當(dāng)。3MQTT 主題錯(cuò)誤、數(shù)據(jù)無(wú)法上報(bào)。4浮點(diǎn)型數(shù)據(jù)溫度 / 濕度格式轉(zhuǎn)換。四、知識(shí)準(zhǔn)備1.MQTT 數(shù)據(jù)上傳原理設(shè)備作為MQTT 客戶端通過(guò)PUBLISH報(bào)文向指定主題Topic發(fā)送 JSON 格式數(shù)據(jù)平臺(tái)訂閱主題并解析、存儲(chǔ)、展示數(shù)據(jù)。2.OneNET 數(shù)據(jù)上報(bào)主題固定格式$sys/產(chǎn)品ID/設(shè)備ID/thing/property/post·必須替換為自己平臺(tái)的產(chǎn)品 ID和設(shè)備 ID·主題錯(cuò)誤 → 數(shù)據(jù)發(fā)不出去 / 平臺(tái)收不到3.標(biāo)準(zhǔn) JSON 上報(bào)格式必須嚴(yán)格遵守{id: 1,params: {temp: { value: 25.5 },humi: { value: 48 },light: { value: 320 }}}temp溫度humi濕度light光照格式錯(cuò)誤 → 平臺(tái)顯示無(wú)數(shù)據(jù)4.ESP-01S MQTT 發(fā)布 AT 指令A(yù)TMQTTPUB0,主題,JSON數(shù)據(jù),0,0\r\n·功能向平臺(tái)發(fā)布傳感器數(shù)據(jù)·0,0QoS0retain05.完整執(zhí)行流程1設(shè)備連 WiFi2連接 MQTT 服務(wù)器任務(wù) 2 前半部分3采集溫濕度、光照4拼接成 JSON 字符串5使用ATMQTTPUB上傳6平臺(tái)顯示數(shù)據(jù)五、硬件連接ESP-01S模塊與主控STM32F103C8T6的引腳連接如表1所示。表1 ESP-01S模塊與主控STM32F103C8T6的引腳連接編號(hào)ESP-01S模塊主控STM32F103C8T61VCC3V32GNDGND3TXPA3USART2_RX4RXPA2USART2_TX硬件連接電路圖如圖1所示。圖1硬件連接電路圖六、任務(wù)實(shí)現(xiàn)任務(wù) 2.1 修改 main.c 代碼1.在/* USER CODE BEGIN 0 */和/* USER CODE END 0 */之間添加如下代碼char LED[10]false ,fan[10]false;2./* USER CODE BEGIN 2 */后的代碼如下/* USER CODE BEGIN 2 */Led_Init();//LED初始化Init_BH1750(); //光照傳感器初始化PWM_Init(); // 風(fēng)扇驅(qū)動(dòng)初始化Led_Set(LED_ON); //開(kāi)啟LED燈strcpy(LED,true);OLED_Init();printf(任務(wù)2 數(shù)據(jù)上傳OneNET平臺(tái)\r\n);HAL_UART_Receive_IT(huart2,(uint8_t *)Uart2_RxData, 1);//開(kāi)啟串口中斷HAL_Delay(500);esp01s_Init();//初始化esp01s連接wifiHAL_Delay(500);while(OneNet_DevLink())//連接OneNETHAL_Delay(1000);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){DHT11_Read_Data(temp, humi);light Value_GY30();printf(OneNet_SendData\r\n);OneNet_SendData();//發(fā)送數(shù)據(jù)esp01s_Clear();//清空數(shù)據(jù)緩存區(qū)HAL_Delay(3000);//3s發(fā)送一次/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}任務(wù) 2.2 修改 onenet.c 代碼修改OneNet_FillBuf()函數(shù)的代碼如下extern uint8_t temp,humi;extern uint16_t light;extern char LED[10] ,fan[10];unsigned char OneNet_FillBuf(char *buf){char text[120];memset(text, 0, sizeof(text));strcpy(buf, {\id\:\123\,\params\:{);memset(text, 0, sizeof(text));sprintf(text, \temp\:{\value\:%d},, temp);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \humi\:{\value\:%d},, humi);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \light\:{\value\:%d},, light);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \LED\:{\value\:%s},, LED);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \fan\:{\value\:%s}, fan);strcat(buf, text);strcat(buf, }});return strlen(buf);}任務(wù) 2.3 編譯、下載、查看結(jié)果1.點(diǎn)擊編譯按鈕編譯程序。2.點(diǎn)擊下載按鈕下載程序。3.打開(kāi)串口調(diào)試助手按stm32f103c8t6主控板上的復(fù)位鍵在串口調(diào)試助手中輸出打印信息如圖2所示。圖2 輸出打印信息4.刷新 OneNET設(shè)備詳情頁(yè)面設(shè)備數(shù)據(jù)已經(jīng)上傳到OneNet平臺(tái)如圖3所示。圖3 設(shè)備數(shù)據(jù)上傳到OneNet平臺(tái)