找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2458|回复: 1
打印 上一主题 下一主题
收起左侧

初步实现STM32单片机+MQTT上传DHT11温度到onenet源程序

[复制链接]
跳转到指定楼层
楼主
ID:190564 发表于 2021-10-30 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初步实现MQTT上传DHT11温度到onenet。根据正点原子的ESP8266例子,改成mqtt协议通信上传温湿度到onenet

单片机源程序如下:
  1. #include "stm32f4xx.h"
  2. #include "sys.h"
  3. #include "delay.h"  
  4. #include "usart.h"   
  5. #include "led.h"
  6. #include "lcd.h"
  7. #include "key.h"  
  8. #include "usmart.h"  
  9. #include "sram.h"   
  10. #include "malloc.h"
  11. #include "w25qxx.h"   
  12. #include "sdio_sdcard.h"
  13. #include "ff.h"  
  14. #include "exfuns.h"   
  15. #include "fontupd.h"
  16. #include "text.h"        
  17. #include "usmart.h"        
  18. #include "touch.h"               
  19. #include "usart3.h"
  20. #include "common.h"
  21. #include "dht11.h"

  22. int temp_limit_up = 35, temp_limit_down = 10, humi_limit_up = 90, humi_limit_down = 20;   //温湿度阈值

  23. //测试界面主UI
  24. void esp_8266_mtest_ui(u16 x,u16 y)
  25. {
  26.         LCD_Clear(WHITE);
  27.         POINT_COLOR=RED;
  28.         Show_Str_Mid(0,y,"ESP8266 WIFI应用",16,240);
  29.         Show_Str(x,y+25,200,16,"请选择网络模式:",16,0);                                             
  30.         Show_Str(x,y+45,200,16,"KEY0:WIFI STA+AP",16,0);                                             
  31.         Show_Str(x,y+65,200,16,"KEY1:WIFI STA",16,0);                                             
  32.         Show_Str(x,y+85,200,16,"KEY2:WIFI AP",16,0);
  33.         Show_Str(x,y+105,200,16,"WK_UP:WIFI STAMQTT",16,0);
  34.          
  35. }





  36. //esp-ESP8266模块测试主函数
  37. void esp_8266_test(void)
  38. {
  39.         u8 key;
  40.         POINT_COLOR=RED;  //LCD字体设置红色
  41.         while(esp_8266_send_cmd("AT","OK",20))//检查WIFI模块是否在线
  42.         {
  43.                 esp_8266_quit_trans();//退出透传
  44.                 esp_8266_send_cmd("AT+CIPMODE=0","OK",200);  //关闭透传模式        
  45.                 Show_Str(40,55,200,16,"未检测到模块!!!",16,0);
  46.                 delay_ms(800);
  47.                 LCD_Fill(40,55,200,55+16,WHITE);  //对矩形区域填充白色
  48.                 Show_Str(40,55,200,16,"尝试连接模块...",16,0);
  49.         }
  50.                 while(esp_8266_send_cmd("ATE0","OK",20));//关闭回显
  51.                 esp_8266_mtest_ui(32,30);  //显示UI界面
  52.         while(1)
  53.         {
  54.                 delay_ms(10);
  55.                 key=KEY_Scan(0);
  56.                 if(key)
  57.                 {
  58.                         LCD_Clear(WHITE);
  59.                         POINT_COLOR=RED;
  60.                         switch(key)
  61.                         {
  62.                                 case 1://KEY0
  63.                                         Show_Str_Mid(0,30,"ESP WIFI-AP+STA 测试",16,240);
  64.                                         Show_Str_Mid(0,50,"正在配置ESP8266模块,请稍等...",12,240);
  65.                                   esp_8266_apsta_test();//WIFI APSTA测试
  66.                                         break;
  67.                                 case 2://KEY1
  68.                                         Show_Str_Mid(0,30,"ESP WIFI-STA 测试",16,240);
  69.                                         Show_Str_Mid(0,50,"正在配置ESP8266模块,请稍等...",12,240);
  70.                                   esp_8266_wifista_test();//WIFI STA测试
  71.                                         break;
  72.                                 case 3://KEY2
  73.                                         Show_Str_Mid(0,30,"ESP WIFI-AP 测试",16,240);
  74.                                         Show_Str_Mid(0,50,"正在配置ESP8266模块,请稍等...",12,240);
  75.                                   esp_8266_wifiap_test();//WIFI AP测试
  76.                                         break;
  77.                           case 4://KEY_UP
  78.                                         Show_Str_Mid(0,30,"ESP WIFI-STA-MQTT 测试",16,240);
  79.                                         Show_Str_Mid(0,50,"正在配置ESP8266模块,请稍等...",12,240);
  80.                                   esp_8266_wifistamqtt_test();//WIFI STA MQTT测试
  81.                                         break;        
  82.                         }
  83.                 }         
  84.         }
  85. }




  86. int main(void)
  87. {        
  88.         u8 key,fontok=0;
  89.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  90.         delay_init(168);  //初始化延时函数
  91.         uart_init(115200);                //初始化串口波特率为115200
  92.         usart3_init(115200);  //初始化串口3波特率为115200
  93.         LED_Init();                                        //初始化LED  
  94.          LCD_Init();                                        //LCD初始化  
  95.          KEY_Init();                                        //按键初始化  
  96.         W25QXX_Init();                                //初始化W25Q128
  97.         tp_dev.init();                                //初始化触摸屏
  98.         usmart_dev.init(168);                //初始化USMART
  99.         my_mem_init(SRAMIN);                //初始化内部内存池
  100.         my_mem_init(SRAMCCM);                //初始化CCM内存池
  101.         exfuns_init();                                //为fatfs相关变量申请内存  
  102.   f_mount(fs[0],"0:",1);                 //挂载SD卡
  103.          f_mount(fs[1],"1:",1);                 //挂载FLASH.
  104.         key=KEY_Scan(0);  
  105.         if(key==KEY0_PRES)                //强制校准
  106.         {
  107.                 LCD_Clear(WHITE);        //清屏
  108.                 TP_Adjust();                  //屏幕校准
  109.                 TP_Save_Adjdata();         
  110.                 LCD_Clear(WHITE);        //清屏
  111.         }
  112.         fontok=font_init();                //检查字库是否OK
  113.         if(fontok||key==KEY1_PRES)//需要更新字库                                 
  114.         {
  115.                 LCD_Clear(WHITE);                           //清屏
  116.                  POINT_COLOR=RED;                        //设置字体为红色                                
  117.                 LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
  118.                 while(SD_Init())                        //检测SD卡
  119.                 {
  120.                         LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
  121.                         delay_ms(200);
  122.                         LCD_Fill(60,70,200+60,70+16,WHITE);
  123.                         delay_ms(200);                    
  124.                 }                                                                                                                     
  125.                 LCD_ShowString(60,70,200,16,16,"SD Card OK");
  126.                 LCD_ShowString(60,90,200,16,16,"Font Updating...");
  127.                 key=update_font(20,110,16,"0:");//从SD卡更新
  128.                 while(key)//更新失败               
  129.                 {                                          
  130.                         LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
  131.                         delay_ms(200);
  132.                         LCD_Fill(20,110,200+20,110+16,WHITE);
  133.                         delay_ms(200);                       
  134.                 }                  
  135.                 LCD_ShowString(60,110,200,16,16,"Font Update Success!");
  136.                 delay_ms(1500);        
  137.                 LCD_Clear(WHITE);//清屏               
  138.         }  
  139.         
  140.         if(DHT11_Init())           //dht11器件不存在
  141.         {
  142.                 Show_Str_Mid(0,30,"DHT11 Init ERROR",16,240);
  143.                
  144.         }
  145.         
  146.         /*
  147.                 while(1)
  148.         {
  149.                
  150.                 key=KEY_Scan(0);
  151.                 if(key)
  152.                 {
  153.         
  154.                         switch(key)
  155.                         {
  156.                                 case 1://KEY0
  157.                                         printf("a");
  158.                                         break;
  159.                                 case 2://KEY1
  160.                                         printf("b");
  161.                                         break;
  162.                                 case 3://KEY2
  163.                                         printf("c");
  164.                                         break;
  165.                           case 4://KEY_UP
  166.                                         printf("d");
  167.                                         break;        
  168.                         }
  169.                 }         
  170.         }
  171.         */
  172.         esp_8266_test();                //进入ATK_ESP8266测试
  173. }
复制代码

所有资料51hei附件下载:
MQTT应用代码.7z (829.88 KB, 下载次数: 60)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:346927 发表于 2021-11-2 11:44 | 只看该作者
很好的资料,已下载,谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表