一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

構(gòu)建一個(gè)基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

科技觀(guān)察員 ? 來(lái)源:electroschematics ? 作者:electroschematics ? 2024-02-11 12:03 ? 次閱讀

呼吸清潔、健康的空氣對(duì)我們的健康至關(guān)重要,但在許多環(huán)境中,空氣質(zhì)量仍然是一個(gè)問(wèn)題。在本文中,我們將深入探討如何創(chuàng)建一個(gè)基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)。我們將從討論各種組件開(kāi)始,然后繼續(xù)討論其MQ135傳感器與Arduino板的接口,然后是編碼。所以,讓我們直接進(jìn)入它。

什么是AQI傳感器或空氣質(zhì)量指數(shù)傳感器?

空氣質(zhì)量指數(shù) (AQI)是一種標(biāo)準(zhǔn)化的測(cè)量方法,用于傳達(dá)特定時(shí)間特定區(qū)域的空氣污染程度或清潔程度。它提供了一種易于理解的方式向公眾傳達(dá)有關(guān)空氣質(zhì)量的信息。

AQI通??紤]全球環(huán)境機(jī)構(gòu)監(jiān)管的幾種主要空氣污染物,如地面臭氧、顆粒物(PM2.5和PM10)、一氧化碳(CO)、二氧化硫(SO2)和二氧化氮(NO2)。每種污染物都有自己的規(guī)模和閾值水平,這些水平?jīng)Q定了AQI值。

AQI 量表范圍從 0 到 500,特定類(lèi)別表示與空氣質(zhì)量相關(guān)的健康問(wèn)題水平:

0 至 150:正常至中度污染-該范圍包括大多數(shù)人認(rèn)為可以接受的空氣質(zhì)量條件,偶爾會(huì)關(guān)注高端的敏感人群。

151 至 200:較差-每個(gè)人都可能開(kāi)始受到健康影響,敏感人群更有可能受到嚴(yán)重影響。

201 到 300:非常糟糕 -緊急情況的健康警告。整個(gè)人口都可能受到影響,并可能產(chǎn)生嚴(yán)重的健康影響。

301 至 500:有毒 - 健康警報(bào):由于空氣質(zhì)量極差,每個(gè)人都可能會(huì)受到更嚴(yán)重的健康影響。

對(duì)于這個(gè)項(xiàng)目,我們不會(huì)測(cè)量PM2.5和PM10,但如果你想了解更多信息,你可以檢查AQI監(jiān)測(cè)系統(tǒng),并在以后將其作為這個(gè)項(xiàng)目的升級(jí)。

空氣質(zhì)量監(jiān)測(cè)系統(tǒng)如何工作?

空氣質(zhì)量監(jiān)測(cè)系統(tǒng)利用傳感器來(lái)檢測(cè)氣體水平、溫度和濕度等環(huán)境參數(shù)。具體來(lái)說(shuō),來(lái)自氣體傳感器的模擬讀數(shù)連接到Arduino的模擬引腳,提供有關(guān)空氣質(zhì)量的數(shù)據(jù)。這些讀數(shù)映射到預(yù)定義的閾值,將空氣質(zhì)量分類(lèi)為“好”、“差”、“非常差”或“有毒”。同時(shí),DHT11傳感器可測(cè)量濕度和溫度。收集的數(shù)據(jù)使用 Adafruit 庫(kù)實(shí)時(shí)顯示在 OLED
屏幕上。通過(guò)持續(xù)監(jiān)測(cè)這些參數(shù),該系統(tǒng)提供了空氣質(zhì)量狀況的快照,使用戶(hù)能夠評(píng)估和應(yīng)對(duì)環(huán)境的變化。

此項(xiàng)目所需的組件包括:

Arduino開(kāi)發(fā)板

MQ135氣體傳感器,用于檢測(cè)各種氣體。

DHT11溫濕度傳感器

用于視覺(jué)輸出的OLED顯示屏

面包板和跳線(xiàn)

Arduino空氣質(zhì)量監(jiān)測(cè)系統(tǒng)電路圖

完整的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)項(xiàng)目連接如下,OLED、DHT11 和 MQ135 氣體傳感器連接到面包板上的 Arduino Uno。

空氣質(zhì)量監(jiān)測(cè)系統(tǒng)連接電路

arduino在SDA和SCL引腳的幫助下,使用I2C協(xié)議連接到OLED。MQ135 氣體傳感器輸出模擬信號(hào),這些信號(hào)發(fā)送到 Arduino
的模擬輸入引腳 A0。DHT11 傳感器有一個(gè)數(shù)字?jǐn)?shù)據(jù)輸出引腳,連接到 Arduino 的 D2 引腳。

以下是項(xiàng)目在面包板上連接后的外觀(guān)。

Arduino空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)代碼解釋

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

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

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

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

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

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

創(chuàng)建一個(gè)名為 Adafruit_SSD1306 類(lèi)型的 display
對(duì)象,以使用指定的寬度、高度、通信(Wire)和復(fù)位引腳來(lái)控制 OLED 顯示器。

#define sensor A0
#define DHT11PIN 2

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

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

聲明變量以存儲(chǔ)氣體水平和質(zhì)量描述,并創(chuàng)建 DHT 傳感器的實(shí)例 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傳感器的溫度和濕度數(shù)據(jù),并將其顯示在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(); 

}

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

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

}

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

該代碼實(shí)質(zhì)上是初始化傳感器,讀取其數(shù)據(jù),根據(jù)氣體水平確定空氣質(zhì)量,并在OLED屏幕上循環(huán)顯示所有信息。

#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();
}

審核編輯:陳陳

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 監(jiān)測(cè)系統(tǒng)

    關(guān)注

    8

    文章

    2827

    瀏覽量

    82171
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6485

    瀏覽量

    189762
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32空氣質(zhì)量檢測(cè)應(yīng)用教程

    ;HAL庫(kù)配合強(qiáng)大的PC端圖形化配置工具STM32CubeMX,能夠幫助用戶(hù)大大簡(jiǎn)化MCU開(kāi)發(fā),降低門(mén)檻。本文以個(gè)簡(jiǎn)單的手機(jī)APP遠(yuǎn)程空氣質(zhì)量監(jiān)測(cè)應(yīng)用為例,將教會(huì)大家如何使用STM3
    發(fā)表于 12-29 14:36

    【Thunderboard Sense試用申請(qǐng)】移動(dòng)空氣質(zhì)量監(jiān)測(cè)

    項(xiàng)目名稱(chēng):移動(dòng)空氣質(zhì)量監(jiān)測(cè)站試用計(jì)劃:項(xiàng)目描述:基于EFR32系列平臺(tái),開(kāi)發(fā)可移動(dòng)式空氣質(zhì)量監(jiān)測(cè)站,板上溫濕度傳感器監(jiān)測(cè)
    發(fā)表于 05-19 17:10

    什么是空氣質(zhì)量網(wǎng)格化監(jiān)測(cè)?

    近幾年,環(huán)境污染問(wèn)題直都困擾著人們的生活,尤其是大氣污染問(wèn)題不僅嚴(yán)重威脅著人類(lèi)的生命健康,而且也造成了生態(tài)破壞。隨著城市大氣污染的日益惡化,城市管理部門(mén)為了實(shí)時(shí)采集各區(qū)域范圍內(nèi)的空氣質(zhì)量數(shù)據(jù),都會(huì)選擇部署空氣環(huán)境
    發(fā)表于 11-24 06:07

    Arduino檢測(cè)器:關(guān)注空氣質(zhì)量

    Arduino檢測(cè)器:關(guān)注空氣質(zhì)量
    發(fā)表于 05-10 06:56

    空氣質(zhì)量微觀(guān)站是什么?空氣質(zhì)量微觀(guān)站有哪些功能?

    為什么要研發(fā)出空氣質(zhì)量微觀(guān)站?空氣質(zhì)量微觀(guān)站是什么?空氣質(zhì)量微觀(guān)站有哪些功能?
    發(fā)表于 06-16 06:55

    怎樣去設(shè)計(jì)基于STM32的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

    基于STM32的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)簡(jiǎn)單案例系統(tǒng)簡(jiǎn)介軟硬件介紹STM32F103開(kāi)發(fā)板MQ135空氣質(zhì)量傳感器DS18B20溫度傳感器設(shè)計(jì)流程硬
    發(fā)表于 08-11 07:38

    基于單片機(jī)的空氣質(zhì)量監(jiān)測(cè)的設(shè)計(jì)資料分享

    ,當(dāng)前時(shí)間在設(shè)置時(shí)間范圍時(shí),打開(kāi)排風(fēng)繼電器空氣質(zhì)量大于設(shè)置閾值進(jìn)行聲光報(bào)警,并打開(kāi)排風(fēng)繼電器每半分鐘語(yǔ)音播報(bào)當(dāng)前空氣質(zhì)量系統(tǒng)通過(guò)藍(lán)牙模塊向手機(jī)發(fā)送當(dāng)前時(shí)間以及空氣質(zhì)量標(biāo)簽:STM32單
    發(fā)表于 12-13 07:26

    空氣質(zhì)量網(wǎng)格化監(jiān)測(cè)系統(tǒng)的簡(jiǎn)單介紹

    空氣質(zhì)量網(wǎng)格化監(jiān)測(cè)系統(tǒng)【恒美儀器】對(duì)于多點(diǎn)城市流動(dòng)環(huán)境監(jiān)測(cè)、突發(fā)事件處理后的空氣質(zhì)量應(yīng)急監(jiān)測(cè)、重
    發(fā)表于 06-30 10:21 ?1042次閱讀

    空氣質(zhì)量監(jiān)測(cè)站的用處是什么

    空氣質(zhì)量監(jiān)測(cè)站【恒美HM-AQI】有用嗎?空氣質(zhì)量好壞與生命健康有莫大的關(guān)系,近年來(lái)因?yàn)?b class='flag-5'>空氣質(zhì)量問(wèn)題引發(fā)的疾病隱患數(shù)不勝數(shù),傳統(tǒng)的空氣質(zhì)量
    發(fā)表于 10-11 09:58 ?814次閱讀

    如何構(gòu)建個(gè)能夠測(cè)量空氣質(zhì)量的設(shè)備

    電子發(fā)燒友網(wǎng)站提供《如何構(gòu)建個(gè)能夠測(cè)量空氣質(zhì)量的設(shè)備.zip》資料免費(fèi)下載
    發(fā)表于 12-05 10:15 ?0次下載
    如何<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>能夠測(cè)量<b class='flag-5'>空氣質(zhì)量</b>的設(shè)備

    DIY空氣質(zhì)量監(jiān)測(cè)設(shè)備

    這是個(gè)便宜的DIY空氣質(zhì)量監(jiān)測(cè)設(shè)備。
    發(fā)表于 12-07 11:17 ?1次下載

    空氣質(zhì)量監(jiān)測(cè)儀:了解您周?chē)?b class='flag-5'>空氣質(zhì)量的最佳選擇

    空氣質(zhì)量的變化正在影響全球,從政府到個(gè)人,所有人都在爭(zhēng)取改善空氣質(zhì)量。在這種情況下,空氣質(zhì)量監(jiān)測(cè)儀變得越來(lái)越重要,它可以幫助我們熟悉周?chē)?b class='flag-5'>空氣質(zhì)量
    的頭像 發(fā)表于 06-21 11:15 ?967次閱讀

    空氣質(zhì)量監(jiān)測(cè)儀:掌控空氣質(zhì)量

    空氣質(zhì)量的惡化已經(jīng)成為個(gè)嚴(yán)峻的問(wèn)題,面對(duì)這問(wèn)題,空氣質(zhì)量監(jiān)測(cè)儀成為我們實(shí)現(xiàn)控制
    的頭像 發(fā)表于 07-21 13:50 ?981次閱讀

    空氣質(zhì)量監(jiān)測(cè)系統(tǒng)介紹

    環(huán)境保護(hù)已經(jīng)成為全球的重要議題,而空氣質(zhì)量監(jiān)測(cè)和管理是其中的重要環(huán)。在這個(gè)過(guò)程中,空氣質(zhì)量監(jiān)測(cè)系統(tǒng)
    的頭像 發(fā)表于 08-15 10:51 ?1810次閱讀

    空氣質(zhì)量監(jiān)測(cè)系統(tǒng):保護(hù)我們的環(huán)境和健康

    什么是空氣質(zhì)量監(jiān)測(cè)系統(tǒng)? 空氣質(zhì)量監(jiān)測(cè)系統(tǒng)種用于
    的頭像 發(fā)表于 08-16 11:39 ?727次閱讀