找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2094|回復: 1
打印 上一主題 下一主題
收起左側

智能家居環(huán)境監(jiān)測(stm32f103c8t6單片機+mq7+mq2+lcd+wifi)代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:437641 發(fā)表于 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位搶占優(yōu)先級,2位響應優(yōu)先級
  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));//設備狀態(tài)結構體初始化
  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. }
復制代碼

原理圖: 無
仿真: 無
代碼: 環(huán)境監(jiān)測.7z (264.33 KB, 下載次數: 60)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1107036 發(fā)表于 2024-1-23 16:21 | 只看該作者
大佬好,初學小白一枚。已下載程序,有原理圖或硬件配置圖嗎?想搭建看看效果。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表