衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

構建一個基于Arduino的空氣質量監測系統

科技觀察員 ? 來源:electroschematics ? 作者:electroschematics ? 2024-02-11 12:03 ? 次閱讀

呼吸清潔、健康的空氣對我們的健康至關重要,但在許多環境中,空氣質量仍然是一個問題。在本文中,我們將深入探討如何創建一個基于Arduino的空氣質量監測系統。我們將從討論各種組件開始,然后繼續討論其MQ135傳感器與Arduino板的接口,然后是編碼。所以,讓我們直接進入它。

什么是AQI傳感器或空氣質量指數傳感器?

空氣質量指數 (AQI)是一種標準化的測量方法,用于傳達特定時間特定區域的空氣污染程度或清潔程度。它提供了一種易于理解的方式向公眾傳達有關空氣質量的信息。

AQI通常考慮全球環境機構監管的幾種主要空氣污染物,如地面臭氧、顆粒物(PM2.5和PM10)、一氧化碳(CO)、二氧化硫(SO2)和二氧化氮(NO2)。每種污染物都有自己的規模和閾值水平,這些水平決定了AQI值。

AQI 量表范圍從 0 到 500,特定類別表示與空氣質量相關的健康問題水平:

0 至 150:正常至中度污染-該范圍包括大多數人認為可以接受的空氣質量條件,偶爾會關注高端的敏感人群。

151 至 200:較差-每個人都可能開始受到健康影響,敏感人群更有可能受到嚴重影響。

201 到 300:非常糟糕 -緊急情況的健康警告。整個人口都可能受到影響,并可能產生嚴重的健康影響。

301 至 500:有毒 - 健康警報:由于空氣質量極差,每個人都可能會受到更嚴重的健康影響。

對于這個項目,我們不會測量PM2.5和PM10,但如果你想了解更多信息,你可以檢查AQI監測系統,并在以后將其作為這個項目的升級。

空氣質量監測系統如何工作?

空氣質量監測系統利用傳感器來檢測氣體水平、溫度和濕度等環境參數。具體來說,來自氣體傳感器的模擬讀數連接到Arduino的模擬引腳,提供有關空氣質量的數據。這些讀數映射到預定義的閾值,將空氣質量分類為“好”、“差”、“非常差”或“有毒”。同時,DHT11傳感器可測量濕度和溫度。收集的數據使用 Adafruit 庫實時顯示在 OLED
屏幕上。通過持續監測這些參數,該系統提供了空氣質量狀況的快照,使用戶能夠評估和應對環境的變化。

此項目所需的組件包括:

Arduino開發板

MQ135氣體傳感器,用于檢測各種氣體。

DHT11溫濕度傳感器

用于視覺輸出的OLED顯示屏

面包板和跳線

Arduino空氣質量監測系統電路圖

完整的空氣質量監測系統項目連接如下,OLED、DHT11 和 MQ135 氣體傳感器連接到面包板上的 Arduino Uno。

空氣質量監測系統連接電路

arduino在SDA和SCL引腳的幫助下,使用I2C協議連接到OLED。MQ135 氣體傳感器輸出模擬信號,這些信號發送到 Arduino
的模擬輸入引腳 A0。DHT11 傳感器有一個數字數據輸出引腳,連接到 Arduino 的 D2 引腳。

以下是項目在面包板上連接后的外觀。

Arduino空氣質量監測系統

基于Arduino的空氣質量監測系統代碼解釋

該代碼監測空氣質量并在OLED顯示屏上顯示傳感器讀數(溫度、濕度和氣體水平)。讓我們分解一下:

#include < SPI.h >
#include < Wire.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#include < dht.h >

這些產品線包括通信協議(SPI、有線)、圖形處理(Adafruit_GFX)、OLED顯示控制(Adafruit_SSD1306)和DHT傳感器的必要庫。

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4

為OLED顯示器的寬度、高度和復位引腳定義常量。

Adafruit_SSD1306顯示器(SCREEN_WIDTH、SCREEN_HEIGHT和電線、OLED_RESET);

創建一個名為 Adafruit_SSD1306 類型的 display
對象,以使用指定的寬度、高度、通信(Wire)和復位引腳來控制 OLED 顯示器。

#define sensor A0
#define DHT11PIN 2

為連接到氣體傳感器(傳感器)的模擬引腳和連接到 DHT11 傳感器
(DHT11PIN) 的引腳定義常數。

int gasLevel = 0;
String quality = "";
dht DHT;

聲明變量以存儲氣體水平和質量描述,并創建 DHT 傳感器的實例 DHT。

void sendSensor() {
 // Function to read temperature and humidity from the DHT sensor
int readData = DHT.read11(DHT11PIN);
      float h = DHT.humidity;
      float t = DHT.temperature;

      if (isnan(h) || isnan(t)) {
      Serial.println("Failed  to read from DHT sensor!");
        Return;
  }
      display.setTextColor(WHITE);
      display.setTextSize(1);
      display.setFont();
      display.setCursor(0, 43);
      display.println("Temp  :");
     display.setCursor(80, 43);
      display.println(t);
      display.setCursor(114, 43);
      display.println("C");
      display.setCursor(0,  56);
      display.println("RH    :");
      display.setCursor(80, 56);
      display.println(h);
      display.setCursor(114, 56);
      display.println("%");
}

此功能用于讀取DHT傳感器的溫度和濕度數據,并將其顯示在OLED屏幕上。

void air_sensor() {
gasLevel = analogRead(sensor);

      if(gasLevel< 151){
        quality = "  GOOD!";
      }
      else if (gasLevel >151 && gasLevel< 200){
        quality =  "  Poor!";
  }
      else if (gasLevel >200 && gasLevel< 300){
        quality  = "Very bad!";
  }
        else if (gasLevel >300 && gasLevel< 500){
        quality  = "Toxic!";
  }
        else{
        quality = " Toxic";   
}
  display.setTextColor(WHITE);
  display.setTextSize(1);  
  display.setCursor(1,5);
  display.setFont();
  display.println("Air Quality:");
  display.setTextSize(1);
  display.setCursor(5,23);
  display.println(gasLevel);
  
  display.setCursor(20,23);
  display.println(quality);  
}
This function is defined to read gas levels from the analog pin connected to the gas sensor and determine the air quality based on predefined thresholds. It also displays the gas level and quality on the OLED screen.

void setup() {
 Serial.begin(9600);
  pinMode(sensor,INPUT);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address  0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
}
  display.clearDisplay();
  display.setTextColor(WHITE);
  
  display.setTextSize(2);
  display.setCursor(50, 0);
  display.println("Air");
  display.setTextSize(1);
  display.setCursor(23, 20);
  display.println("Quality monitor");
  display.display();
  delay(1200);
  display.clearDisplay();
  
  display.setTextSize(1.5);
  display.setCursor(20, 20);
  display.println("BY Circuit");
  display.setCursor(20, 40);
  display.println("Digest");
  display.display();
  delay(1000);
  display.clearDisplay(); 

}

設置功能初始化串行通信,將傳感器引腳設置為輸入,并初始化OLED顯示屏。它在屏幕上顯示介紹性消息。

void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();  

}

循環功能清除顯示屏,使用定義的功能讀取氣體傳感器和 DHT
傳感器數據,并使用最新讀數不斷更新顯示屏。

該代碼實質上是初始化傳感器,讀取其數據,根據氣體水平確定空氣質量,并在OLED屏幕上循環顯示所有信息。

#include
#include
#include
#include
#include
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define sensor A0
#define DHT11PIN 2

int gasLevel = 0; //int variable for gas level
String quality ="";
dht DHT;

void sendSensor()
{
int readData = DHT.read11(DHT11PIN);
float h = DHT.humidity;
float t = DHT.temperature;

if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont();
display.setCursor(0, 43);
display.println("Temp :");
display.setCursor(80, 43);
display.println(t);
display.setCursor(114, 43);
display.println("C");
display.setCursor(0, 56);
display.println("RH :");
display.setCursor(80, 56);
display.println(h);
display.setCursor(114, 56);
display.println("%");
}

void air_sensor()
{
gasLevel = analogRead(sensor);

if(gasLevel<151){
quality = " GOOD!";
}
else if (gasLevel >151 && gasLevel<200){
quality = " Poor!";
}
else if (gasLevel >200 && gasLevel<300){
quality = "Very bad!";
}
else if (gasLevel >300 && gasLevel<500){
quality = "Toxic!";
}
else{
quality = " Toxic";
}

display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(1,5);
display.setFont();
display.println("Air Quality:");
display.setTextSize(1);
display.setCursor(5,23);
display.println(gasLevel);

display.setCursor(20,23);
display.println(quality);
}

void setup() {
Serial.begin(9600);
pinMode(sensor,INPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
}
display.clearDisplay();
display.setTextColor(WHITE);

display.setTextSize(2);
display.setCursor(50, 0);
display.println("Air");
display.setTextSize(1);
display.setCursor(23, 20);
display.println("Quality monitor");
display.display();
delay(1200);
display.clearDisplay();

display.setTextSize(1.5);
display.setCursor(20, 20);
display.println("BY Circuit");
display.setCursor(20, 40);
display.println("Digest");
display.display();
delay(1000);
display.clearDisplay();
}

void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}

審核編輯:陳陳

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監測系統
    +關注

    關注

    8

    文章

    2756

    瀏覽量

    81529
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187813
收藏 人收藏

    評論

    相關推薦

    STM32空氣質量檢測應用教程

    ;HAL庫配合強大的PC端圖形化配置工具STM32CubeMX,能夠幫助用戶大大簡化MCU開發,降低門檻。本文以簡單的手機APP遠程空氣質量監測應用為例,將教會大家如何使用STM3
    發表于 12-29 14:36

    【Thunderboard Sense試用申請】移動空氣質量監測

    項目名稱:移動空氣質量監測站試用計劃:項目描述:基于EFR32系列平臺,開發可移動式空氣質量監測站,板上溫濕度傳感器監測
    發表于 05-19 17:10

    什么是空氣質量網格化監測?

    近幾年,環境污染問題直都困擾著人們的生活,尤其是大氣污染問題不僅嚴重威脅著人類的生命健康,而且也造成了生態破壞。隨著城市大氣污染的日益惡化,城市管理部門為了實時采集各區域范圍內的空氣質量數據,都會選擇部署空氣環境
    發表于 11-24 06:07

    Arduino檢測器:關注空氣質量

    Arduino檢測器:關注空氣質量
    發表于 05-10 06:56

    空氣質量微觀站是什么?空氣質量微觀站有哪些功能?

    為什么要研發出空氣質量微觀站?空氣質量微觀站是什么?空氣質量微觀站有哪些功能?
    發表于 06-16 06:55

    怎樣去設計基于STM32的空氣質量監測系統

    基于STM32的空氣質量監測系統簡單案例系統簡介軟硬件介紹STM32F103開發板MQ135空氣質量傳感器DS18B20溫度傳感器設計流程硬
    發表于 08-11 07:38

    基于單片機的空氣質量監測的設計資料分享

    ,當前時間在設置時間范圍時,打開排風繼電器空氣質量大于設置閾值進行聲光報警,并打開排風繼電器每半分鐘語音播報當前空氣質量系統通過藍牙模塊向手機發送當前時間以及空氣質量標簽:STM32單
    發表于 12-13 07:26

    空氣質量網格化監測系統的簡單介紹

    空氣質量網格化監測系統【恒美儀器】對于多點城市流動環境監測、突發事件處理后的空氣質量應急監測、重
    發表于 06-30 10:21 ?999次閱讀

    空氣質量監測站的用處是什么

    空氣質量監測站【恒美HM-AQI】有用嗎?空氣質量好壞與生命健康有莫大的關系,近年來因為空氣質量問題引發的疾病隱患數不勝數,傳統的空氣質量
    發表于 10-11 09:58 ?754次閱讀

    如何構建能夠測量空氣質量的設備

    電子發燒友網站提供《如何構建能夠測量空氣質量的設備.zip》資料免費下載
    發表于 12-05 10:15 ?0次下載
    如何<b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>能夠測量<b class='flag-5'>空氣質量</b>的設備

    DIY空氣質量監測設備

    這是便宜的DIY空氣質量監測設備。
    發表于 12-07 11:17 ?1次下載

    空氣質量監測儀:了解您周圍空氣質量的最佳選擇

    空氣質量的變化正在影響全球,從政府到個人,所有人都在爭取改善空氣質量。在這種情況下,空氣質量監測儀變得越來越重要,它可以幫助我們熟悉周圍空氣質量
    的頭像 發表于 06-21 11:15 ?860次閱讀

    空氣質量監測儀:掌控空氣質量

    空氣質量的惡化已經成為嚴峻的問題,面對這問題,空氣質量監測儀成為我們實現控制
    的頭像 發表于 07-21 13:50 ?822次閱讀

    空氣質量監測系統介紹

    環境保護已經成為全球的重要議題,而空氣質量監測和管理是其中的重要環。在這個過程中,空氣質量監測系統
    的頭像 發表于 08-15 10:51 ?1628次閱讀

    空氣質量監測系統:保護我們的環境和健康

    什么是空氣質量監測系統? 空氣質量監測系統種用于
    的頭像 發表于 08-16 11:39 ?630次閱讀
    bet365投注网| 澳门百家乐官网上下限| 百家乐赌博技巧论坛| 广州百家乐官网赌场| 二八杠生死门口诀| 百家乐真人荷官| 信誉好百家乐官网平台| 百家乐单双打法| 赌场游戏| 威斯汀百家乐的玩法技巧和规则| 电脑百家乐官网玩| 黄冈市| 大发888二十一点| 欢乐谷百家乐的玩法技巧和规则 | 苏尼特右旗| 大发888棋牌游戏下载| 百家乐官网丽| 澳门百家乐官网开户投注| 博彩套利| 大发888客户端下载| 不夜城百家乐的玩法技巧和规则| 属鸡与属羊做生意| 百家乐官网网上真钱娱乐| 大发888官网 平台| 百家乐任你博赌场娱乐网规则 | 天下足球网| 大发888真坑阿| 大发888真钱娱乐| 全讯网址| 赌博百家乐的乐趣| 百家乐赌场占多大概率| 老牌百家乐娱乐城| 百家乐游戏百家乐| 百家乐分析绿色版| 百家乐正确的打法| 百家乐下载免费软件| 百家乐优惠高的网址| 百家乐注册优惠平台| 百家乐筹码币方形| 网上的百家乐官网怎么才能赢| 旺财转运24妙法|