久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3849|回復: 2
收起左側

基于STM32F103C8T6的環境監測系統程序 上傳OneNET

  [復制鏈接]
ID:734163 發表于 2021-12-28 00:45 | 顯示全部樓層 |閱讀模式
通過ESP8266連接WIFI,數據可上傳OneNET

能夠實現紅外人體監測、光照度監測、煙霧濃度監測、一氧化碳濃度監測

當監測的氣體濃度達到設定閾值后,可通過PWM調節風扇轉速

能夠通過OneNET遠程調節LED亮度、風扇轉速

OneNET三元組

OneNET三元組

ESP8266入網參數

ESP8266入網參數


單片機源程序如下:
  1. //C庫
  2. #include <string.h>

  3. //單片機頭文件
  4. #include "sys.h"

  5. //網絡協議層
  6. #include "onenet.h"

  7. //網絡設備
  8. #include "esp8266.h"

  9. //硬件驅動
  10. #include "delay.h"
  11. #include "usart.h"
  12. #include "led.h"
  13. #include "LCD.h"
  14. #include "dht11.h"
  15. #include "adc_dma.h"
  16. #include "mq2.h"
  17. #include "mq7.h"
  18. #include "timer.h"
  19. #include "bh1750.h"
  20. #include "gui.h"
  21. #include "hc_sr501.h"
  22. #include "hc_sr04.h"
  23. #include "TFT_demo.h"
  24. #include "pwm.h"
  25. #include "key.h"
  26. #include "beep.h"



  27. uint32_t time = 0; // ms 計時變量
  28. DHT11_Data_TypeDef DHT11_Data;

  29. float value_light = 0.0;         //光照度
  30. float value_mq2 = 0.0;                //煙霧濃度
  31. float value_mq7 = 0.0;                //一氧化碳濃度
  32. float value_sr04 = 0.0;                //超聲波距離
  33. u8 status_sr501 = 0;                //人體紅外檢測到的值
  34. int max_mq7 = 50;                        //一氧化碳濃度閾值
  35. int max_mq2 = 50;                        //煙霧濃度閾值
  36. u8 LED_Light;                                //PWM燈光亮度
  37. u8 FAN_Speed;                                //風扇轉速



  38. //硬件初始化
  39. void Hardware_Init(void)
  40. {
  41.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級

  42.     delay_init();                        //延時函數初始化

  43.     LCD_Init();           //液晶屏初始化
  44.     LCD_Clear(GRAY0);

  45.     Usart1_Init(115200);                //串口1初始化為115200
  46.     Usart2_Init(115200);                 //串口2,驅動ESP8266用
  47.     LED_Init();                                        //LED初始化
  48.     SR501_Init();                                //紅外熱釋電
  49.     Hcsr04Init();                                //超聲波測距
  50.     ADCx_Init();                                //ADC  DMA初始化
  51.     DHT11_GPIO_Config();                //DHT11溫濕度傳感器初始化
  52.     BH1750_Init();                                //光照
  53.     KEY_Init();
  54.     BEEP_Init();
  55.     PWM_TIM_Init();                                //PWM頻率=72000K/20*180=20Khz
  56.     TIM_SetCompare3(TIM3, 0);

  57.     Gui_DrawFont_GBK16(3, 34, BLUE, GRAY0, (u8 *)"設備初始化完成");
  58.     Gui_DrawFont_GBK16(3, 54, BLUE, GRAY0, (u8 *)"正在連接網絡....");

  59. }

  60. void Net_Init()
  61. {
  62.     ESP8266_Init();                                        //初始化ESP8266
  63.     while(OneNet_DevLink())                        //接入OneNET
  64.         delay_ms(500);
  65.     LED1 = 0;                                                //入網成功
  66.     BEEP_SetOnOff(0);
  67.     Gui_DrawFont_GBK16(4, 70, RED, GRAY0, (u8 *)"網絡連接完成");
  68.     delay_ms(2000);
  69.     BEEP_SetOnOff(1);
  70. }

  71. int main(void)
  72. {
  73.     unsigned char *dataPtr = NULL;
  74.     unsigned short timeCount = 300;        //發送間隔變量
  75.     char str[] = "";

  76.     Hardware_Init();                                //初始化外圍硬件
  77.     Net_Init();                                                //網絡初始化
  78.     GENERAL_TIM_Init();                                //1MS系統定時

  79.     LCD_Clear(BLACK);
  80.     Gui_DrawFont_GBK16(25, 4, BLUE, BLACK, (u8 *)" 系統監控 ");
  81.     GUI_DrawRectangle(1, 1, 128 - 2, 128 - 2, WHITE);                //邊框

  82.     while(1)
  83.     {
  84.         delay_ms(10);
  85.         timeCount ++;

  86.         //接收數據
  87.         dataPtr = ESP8266_GetIPD(0);
  88.         if(dataPtr != NULL)
  89.         {
  90.             OneNet_RevPro(dataPtr);
  91.         }

  92.         if(timeCount >= 300)        //發送間隔5s
  93.         {
  94.             /* 溫濕度傳感器獲取數據*/
  95.             /*調用Read_DHT11讀取溫濕度,若成功則輸出該信息*/
  96.             if(Read_DHT11(&DHT11_Data) == SUCCESS)
  97.             {
  98.                 sprintf(str, "溫度:%d.%d ℃ ", DHT11_Data.temp_int, DHT11_Data.temp_deci);
  99.                 Gui_DrawFont_GBK16(4, 30, RED, BLACK, (u8 *)str);
  100.                 sprintf(str, "濕度:%d.%d %c ", DHT11_Data.humi_int, DHT11_Data.humi_deci, '%');
  101.                 Gui_DrawFont_GBK16(4, 50, RED, BLACK, (u8 *)str);
  102.             }
  103.             else
  104.             {
  105.                 printf("Read DHT11 ERROR!\r\n");//讀取數據失敗,串口打印:Read DHT11 ERROR.
  106.                 Gui_DrawFont_GBK16(4, 30, RED, BLACK, (u8 *)"ERROR!");
  107.                 Gui_DrawFont_GBK16(4, 50, RED, BLACK, (u8 *)"ERROR!");
  108.             }

  109.             /*光照度傳感器獲取數據*/
  110.             value_light = LIght_Intensity();
  111.             sprintf(str, "光照:%.1flx  ", value_light);
  112.             Gui_DrawFont_GBK16(4, 70, YELLOW, BLACK, (u8 *)str);

  113.             /*MQ2傳感器獲取煙霧數據*/
  114.             value_mq2 = MQ2_GetPPM();
  115.             sprintf(str, "煙霧:%.1f ppm ", value_mq2);
  116.             Gui_DrawFont_GBK16(4, 90, BLUE, BLACK, (u8 *)str);

  117.             /*MQ7傳感器獲取一氧化碳數據*/
  118.             value_mq7 = MQ7_GetPPM();
  119.             sprintf(str, " CO :%.1f ppm ", value_mq7);
  120.             Gui_DrawFont_GBK16(4, 110, GREEN, BLACK, (u8 *)str);



  121.             OneNet_SendData();        //發送數據

  122.             timeCount = 0;
  123.             ESP8266_Clear();
  124.         }
  125.         /*超聲波測距獲取距離(CM)*/
  126.         //value_sr04 = Hcsr04GetLength();
  127.         /*人體檢測*/
  128.         //status_sr501 = SR501_Check();

  129.         //調節燈光亮度
  130.         //PWM_Control(LED_Light);

  131.                 //調節風扇轉速
  132.                 PWM_Control(FAN_Speed);
  133.         /**************************************************************************/
  134.         //        //判斷一氧化碳濃度是否超過上限
  135.         //        if((int)DHT11_Data.temp_int >=  15)
  136.         //        {
  137.         //            BEEP = 0;        //蜂鳴器報警
  138.         //        }
  139.         //        else
  140.         //        {
  141.         //            BEEP = 1;        //蜂鳴器關閉
  142.         //        }
  143.         //判斷一氧化碳濃度或煙霧濃度是否超過上限
  144.         if(((int)value_mq7 >= max_mq7) || ((int)value_mq2 >= max_mq2))
  145.         {
  146.             BEEP = 0;        //蜂鳴器報警
  147.         }
  148.         else
  149.         {
  150.             BEEP = 1;        //蜂鳴器關閉
  151.         }
  152.     }
  153. }
復制代碼

Keil代碼下載: 代碼.7z (250.88 KB, 下載次數: 123)

評分

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

查看全部評分

回復

使用道具 舉報

ID:712167 發表于 2022-5-1 15:32 | 顯示全部樓層
解決了我上云的苦惱
回復

使用道具 舉報

ID:310441 發表于 2022-5-5 07:38 來自手機 | 顯示全部樓層
ONENET收費幾何?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费看91 | 久久国产美女视频 | 成人毛片视频在线播放 | 粉嫩粉嫩芽的虎白女18在线视频 | 午夜久久久久久久久久一区二区 | 高清视频一区二区三区 | 99福利| 美人の美乳で授乳プレイ | 午夜伦4480yy私人影院 | 欧美天堂 | 91网站在线播放 | 国产精品完整版 | 91精品亚洲 | 亚洲精品乱码久久久久久按摩观 | 中文字幕免费观看 | 久久青青| 久久久久久久久久久高潮一区二区 | 久久久久国产一区二区三区 | 国产欧美一区二区三区在线看 | 国产一级片免费看 | 97精品超碰一区二区三区 | 国产精品视频专区 | 美女国内精品自产拍在线播放 | 一级黄色短片 | 五月天婷婷综合 | 国产清纯白嫩初高生在线播放视频 | 永久看片 | 成年人黄色一级毛片 | 久久国内 | 欧美国产日韩成人 | 国产91在线 | 亚洲 | 九九99靖品 | 三级视频在线观看电影 | 成人国产在线视频 | 国产精品久久片 | 91精品国产91久久久久游泳池 | 国产精品毛片av | 亚洲视频一区二区三区 | 国产日韩在线观看一区 | 久久精彩视频 | 日韩中文字幕视频 |