簡介: ESP8266通過MQTT協議將溫溼度數據傳輸至OnenNet雲平臺
關鍵詞: OneNet、ESP8266、DHT11、MQTT、LED
1. 相關連接:
- github(源碼): https://github.com/Mbwide/DHT11_ToOneNetByMqtt
- CSDN:(圖文解析):
- Bilibili(視頻解析):https://www.bilibili.com/video/BV1Vi4y1w7U1
2. 具體功能:
- DHT11採集環境溫溼度數據,ESP8266模塊通過MQTT協議將溫溼度數據傳輸至OnenNet雲平臺
- OneNET可以通過雲平臺遠程控制LED燈的亮滅
- 串口顯示相關數據信息
3. 硬件環境:
- 正點原子STM32F103RCT6(正點原子MiniSTM32)
- DHT11溫溼度傳感器
- ESP8266-01S無線模塊
4. 雲平臺環境配置:
-
雲平臺配置:
- OneNET控制檯—全部產品服務(多協議接入,選MQTT舊版)—添加產品—進入產品(記住產品ID)—設備列表—添加設備(記住鑑權信息)—創建完成(記住設備ID)
-
雲平臺應用設置:
-
添加應用—編輯應用—組件庫中添加折線圖和開關
-
折線圖(數據上傳成功後進行配置): 選擇數據流 — 選擇設備—數據流選擇要顯示的數據(這裏選擇溫度,temperature)
-
開關(數據上傳成功後進行配置): 選擇數據流 — 選擇設備—數據流選擇要顯示的數據(這裏選擇LED,ledFlag)—開關開值(LEDON)—開關關值(LEDOFF)—EDP不填
-
5. 接線:
-
ESP8266-01S(5根線)
- PA2 RX
- PA3 TX
- PA4 復位
- 3V3 VCC
- GND GND
-
DHT11(3根線)
-
PA6 DATA
-
3V3 VCC
-
GND GND
-
-
LED
- PD2 LED1
6. 功能展示:
-
數據流
-
APP應用管理
-
串口數據
-
源碼簡要解析
- stm32f10x_it.c:中斷處理函數
- usart1.c:與上位機通信
- usart2.c:與ESP8266通信,串口2接收中斷處理上位機發送來的數據
- timer2.c:定時器2中斷用來發送溫溼度數據,10S
- timer3.c:定時器3中斷用來發送心跳包(ping,用於保持和服務器連接,長時間沒給服務器發送數據會被踢下線),2s和30s兩種模式
- timer4.c:將串口2接收到的服務器數據依次存放在MQTT接收緩存數組中,50ms
- control.c:控制LED燈,並且發送LED燈開關信號
7. 要修改的的地方:
-
mqtt.h :
#define PRODUCTID "393773" //自己的產品ID #define DEVICEID "660024974" //自己的設備ID #define AUTHENTICATION "123456" //自己的鑑權信息(創建設備的時候設置)
-
wifi.h
#define SSID "PPP" //自己的路由器名稱 #define PASS "qaz123qaz" //自己的路由器密碼
-
mqtt.c
sprintf(ServerIP,"%s","183.230.40.39"); //構建服務器域名(ONENET的) ServerPort = 6002; //服務器端口號6002
根據平臺地址列表填寫,這裏是mqtt協議