初步實現MQTT上傳DHT11溫度到onenet。根據正點原子的ESP8266例子,改成mqtt協議通信上傳溫濕度到onenet
單片機源程序如下:
- #include "stm32f4xx.h"
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "key.h"
- #include "usmart.h"
- #include "sram.h"
- #include "malloc.h"
- #include "w25qxx.h"
- #include "sdio_sdcard.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "fontupd.h"
- #include "text.h"
- #include "usmart.h"
- #include "touch.h"
- #include "usart3.h"
- #include "common.h"
- #include "dht11.h"
- int temp_limit_up = 35, temp_limit_down = 10, humi_limit_up = 90, humi_limit_down = 20; //溫濕度閾值
- //測試界面主UI
- void esp_8266_mtest_ui(u16 x,u16 y)
- {
- LCD_Clear(WHITE);
- POINT_COLOR=RED;
- Show_Str_Mid(0,y,"ESP8266 WIFI應用",16,240);
- Show_Str(x,y+25,200,16,"請選擇網絡模式:",16,0);
- Show_Str(x,y+45,200,16,"KEY0:WIFI STA+AP",16,0);
- Show_Str(x,y+65,200,16,"KEY1:WIFI STA",16,0);
- Show_Str(x,y+85,200,16,"KEY2:WIFI AP",16,0);
- Show_Str(x,y+105,200,16,"WK_UP:WIFI STAMQTT",16,0);
-
- }
- //esp-ESP8266模塊測試主函數
- void esp_8266_test(void)
- {
- u8 key;
- POINT_COLOR=RED; //LCD字體設置紅色
- while(esp_8266_send_cmd("AT","OK",20))//檢查WIFI模塊是否在線
- {
- esp_8266_quit_trans();//退出透傳
- esp_8266_send_cmd("AT+CIPMODE=0","OK",200); //關閉透傳模式
- Show_Str(40,55,200,16,"未檢測到模塊!!!",16,0);
- delay_ms(800);
- LCD_Fill(40,55,200,55+16,WHITE); //對矩形區域填充白色
- Show_Str(40,55,200,16,"嘗試連接模塊...",16,0);
- }
- while(esp_8266_send_cmd("ATE0","OK",20));//關閉回顯
- esp_8266_mtest_ui(32,30); //顯示UI界面
- while(1)
- {
- delay_ms(10);
- key=KEY_Scan(0);
- if(key)
- {
- LCD_Clear(WHITE);
- POINT_COLOR=RED;
- switch(key)
- {
- case 1://KEY0
- Show_Str_Mid(0,30,"ESP WIFI-AP+STA 測試",16,240);
- Show_Str_Mid(0,50,"正在配置ESP8266模塊,請稍等...",12,240);
- esp_8266_apsta_test();//WIFI APSTA測試
- break;
- case 2://KEY1
- Show_Str_Mid(0,30,"ESP WIFI-STA 測試",16,240);
- Show_Str_Mid(0,50,"正在配置ESP8266模塊,請稍等...",12,240);
- esp_8266_wifista_test();//WIFI STA測試
- break;
- case 3://KEY2
- Show_Str_Mid(0,30,"ESP WIFI-AP 測試",16,240);
- Show_Str_Mid(0,50,"正在配置ESP8266模塊,請稍等...",12,240);
- esp_8266_wifiap_test();//WIFI AP測試
- break;
- case 4://KEY_UP
- Show_Str_Mid(0,30,"ESP WIFI-STA-MQTT 測試",16,240);
- Show_Str_Mid(0,50,"正在配置ESP8266模塊,請稍等...",12,240);
- esp_8266_wifistamqtt_test();//WIFI STA MQTT測試
- break;
- }
- }
- }
- }
- int main(void)
- {
- u8 key,fontok=0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
- delay_init(168); //初始化延時函數
- uart_init(115200); //初始化串口波特率為115200
- usart3_init(115200); //初始化串口3波特率為115200
- LED_Init(); //初始化LED
- LCD_Init(); //LCD初始化
- KEY_Init(); //按鍵初始化
- W25QXX_Init(); //初始化W25Q128
- tp_dev.init(); //初始化觸摸屏
- usmart_dev.init(168); //初始化USMART
- my_mem_init(SRAMIN); //初始化內部內存池
- my_mem_init(SRAMCCM); //初始化CCM內存池
- exfuns_init(); //為fatfs相關變量申請內存
- f_mount(fs[0],"0:",1); //掛載SD卡
- f_mount(fs[1],"1:",1); //掛載FLASH.
- key=KEY_Scan(0);
- if(key==KEY0_PRES) //強制校準
- {
- LCD_Clear(WHITE); //清屏
- TP_Adjust(); //屏幕校準
- TP_Save_Adjdata();
- LCD_Clear(WHITE); //清屏
- }
- fontok=font_init(); //檢查字庫是否OK
- if(fontok||key==KEY1_PRES)//需要更新字庫
- {
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=RED; //設置字體為紅色
- LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
- while(SD_Init()) //檢測SD卡
- {
- LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
- delay_ms(200);
- LCD_Fill(60,70,200+60,70+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(60,70,200,16,16,"SD Card OK");
- LCD_ShowString(60,90,200,16,16,"Font Updating...");
- key=update_font(20,110,16,"0:");//從SD卡更新
- while(key)//更新失敗
- {
- LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
- delay_ms(200);
- LCD_Fill(20,110,200+20,110+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(60,110,200,16,16,"Font Update Success!");
- delay_ms(1500);
- LCD_Clear(WHITE);//清屏
- }
-
- if(DHT11_Init()) //dht11器件不存在
- {
- Show_Str_Mid(0,30,"DHT11 Init ERROR",16,240);
-
- }
-
- /*
- while(1)
- {
-
- key=KEY_Scan(0);
- if(key)
- {
-
- switch(key)
- {
- case 1://KEY0
- printf("a");
- break;
- case 2://KEY1
- printf("b");
- break;
- case 3://KEY2
- printf("c");
- break;
- case 4://KEY_UP
- printf("d");
- break;
- }
- }
- }
- */
- esp_8266_test(); //進入ATK_ESP8266測試
- }
復制代碼
所有資料51hei附件下載:
MQTT應用代碼.7z
(829.88 KB, 下載次數: 60)
2021-10-31 00:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|