找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2103|回复: 1
收起左侧

智能家居环境监测(stm32f103c8t6单片机+mq7+mq2+lcd+wifi)代码

[复制链接]
ID:437641 发表于 2023-11-7 15:41 | 显示全部楼层 |阅读模式
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "time.h"
  5. #include "adc_dma.h"
  6. #include "mq2.h"
  7. #include "mq7.h"
  8. #include "dht11.h"
  9. #include "esp8266.h"
  10. #include "gizwits_product.h"
  11. #include "Lcd_Driver.h"
  12. #include "GUI.h"
  13. #include "led.h"
  14. #include "sensor.h"

  15. u8 temperature = 20;              
  16. u8 humidity = 20;
  17. float mq2 = 20;
  18. float mq7 = 10;
  19. char str[10] ={0};

  20. //硬件初始化
  21. void Hardware_Init(void)
  22. {
  23.         delay_init();
  24.         NVIC_Configuration();                  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  25.         uart_init(115200);                         //串口初始化为115200
  26.         ADCx_Init();                                //ADC初始化
  27. //        TIM4_Init(6000,36000-1);          //定时3s        
  28.         Led_Init();
  29.         Sensor_Init();
  30.         Lcd_Init();        
  31.         Lcd_Clear(BLUE);
  32.         
  33. //        while(DHT11_Init())        //DHT11初始化        
  34. //        {
  35. //                Gui_DrawFont_GBK16(16,30,RED,BLUE,(u8 *)"DHT11_Init FAILED");
  36. //                delay_ms(500);
  37. //        }
  38. }

  39. //协议初始化
  40. void Gizwits_Init(void)
  41. {
  42.         TIM3_Int_Init(9,7199);                //1MS 系统定时
  43.         usart3_init(9600);                        //WIFI 初始化 波特率必须为 9600
  44.         memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
  45.         userInit();
  46.         gizwitsInit();
  47. }

  48. void userHandle(void);
  49. void TFT_ShowTable(void);

  50. int main(void)
  51. {        
  52.         u8 t=0;                             

  53.         Hardware_Init();
  54.         Gizwits_Init();
  55.         TFT_ShowTable();

  56.         while(1)
  57.         {            
  58.                         gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入                    
  59.                  if(t%10==0)                        //每100ms读取一次
  60.                 {                                                                          
  61. //                        DHT11_Read_Data(&temperature,&humidity);        //读取温湿度值        
  62.                         mq2 = MQ2_GetPPM();
  63.                         mq7 = MQ7_GetPPM();
  64.                 }                                   
  65.                  delay_ms(10);
  66.                 t++;
  67.                 if(t==20)
  68.                 {
  69.                         t=0;
  70.                 }        

  71.                 userHandle();//用户采集

  72.                 gizwitsHandle((dataPoint_t *)¤tDataPoint);//协议处理
  73.                
  74.                 if(SENSOR_LIGHT == 1)//手头没有独立按键了,用光敏传感器代替
  75.                 {
  76.                         printf("WIFI进入AirLink连接模式\r\n");
  77.                         gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入        
  78.                 }
  79.         }
  80. }

  81. void userHandle(void)
  82. {
  83.     currentDataPoint.valueValue_Tem = temperature;        //Add Sensor Data Collection
  84.     currentDataPoint.valueValue_Hum = humidity;                //Add Sensor Data Collection
  85.     currentDataPoint.valueValue_Mq7 = mq7;        //Add Sensor Data Collection
  86.     currentDataPoint.valueValue_Mq2 = mq2;        //Add Sensor Data Collection
  87.         
  88.         
  89.         Gui_DrawFont_GBK24(23,4,BLUE,YELLOW,(u8 *)"AIR MONITOR");
  90.         
  91.         sprintf(str, "MQ2: %.2fppm", mq2);        
  92.         Gui_DrawFont_GBK16(16,30,BLUE,YELLOW, (u8 *)str);

  93.         sprintf(str, "MQ7: %.2fppm", mq7);        
  94.         Gui_DrawFont_GBK16(16,50,BLUE,YELLOW,(u8 *)str);

  95.         sprintf(str, "TEM: %d℃", temperature);        
  96.         Gui_DrawFont_GBK16(16,70,BLUE,YELLOW,(u8 *)str);

  97.         sprintf(str, "HUM: %d%c", humidity, '%');        
  98.         Gui_DrawFont_GBK16(16,90,BLUE,YELLOW,(u8 *)str);
  99.         
  100.         
  101.         if(currentDataPoint.valueValue_Mq2 >= currentDataPoint.valueMq2_MAX)
  102.         {
  103.                 currentDataPoint.valueWarning_Mq2 = 1;//Add Sensor Data Collection
  104.         }
  105.         else
  106.         {
  107.                 currentDataPoint.valueWarning_Mq2 = 0;//Add Sensor Data Collection
  108.         }
  109.         
  110.     if(currentDataPoint.valueValue_Mq7 >= currentDataPoint.valueMq7_MAX)
  111.         {
  112.                 currentDataPoint.valueWarning_Mq7 = 1;//Add Sensor Data Collection
  113.         }
  114.         else
  115.         {
  116.                 currentDataPoint.valueWarning_Mq7 = 0;//Add Sensor Data Collection
  117.         }
  118.         
  119.         
  120.         if((currentDataPoint.valueValue_Tem >= currentDataPoint.valueTem_MAX) | (currentDataPoint.valueValue_Tem <= currentDataPoint.valueTem_MIN))
  121.         {
  122.                 currentDataPoint.valueWarning_Tem = 1;//Add Sensor Data Collection
  123.         }
  124.         else
  125.         {
  126.                 currentDataPoint.valueWarning_Tem = 0;//Add Sensor Data Collection
  127.         }
  128.         
  129.         if((currentDataPoint.valueWarning_Hum >= currentDataPoint.valueHum_MAX) | (currentDataPoint.valueWarning_Hum <= currentDataPoint.valueHum_MIN))
  130.         {
  131.                 currentDataPoint.valueWarning_Hum = 1;//Add Sensor Data Collection
  132.         }
  133.         else
  134.         {
  135.                 currentDataPoint.valueWarning_Hum = 0;//Add Sensor Data Collection
  136.         }
  137. }

  138. void TFT_ShowTable(void)
  139. {
  140.         Gui_DrawFont_GBK24(23,4,BLUE,YELLOW,(u8 *)"AIR MONITOR");

  141.         DisplayButtonUp(15,28,113,46); //x1,y1,x2,y2
  142.         DisplayButtonUp(15,48,113,66); //x1,y1,x2,y2
  143.         DisplayButtonUp(15,68,113,86); //x1,y1,x2,y2
  144.         DisplayButtonUp(15,88,113,106); //x1,y1,x2,y2
  145. }
复制代码

原理图: 无
仿真: 无
代码: 环境监测.7z (264.33 KB, 下载次数: 60)

评分

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

查看全部评分

回复

使用道具 举报

ID:1107036 发表于 2024-1-23 16:21 | 显示全部楼层
大佬好,初学小白一枚。已下载程序,有原理图或硬件配置图吗?想搭建看看效果。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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