산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino 기반 실내 공기질 및 쾌적도 센서 키트

필요한 부품 및 소모품

Arduino Nano R3 1개
DHT11 온습도 센서 (3핀) 1개
공기질 센서 (MQ135) 1개
0.96" I2C OLED 디스플레이 1개

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

좋은 잠을 자고 일어났는데도 몸이 무겁고 피곤하게 느껴진 적 있으신가요? 이는 밤새 밀폐된 방 안의 공기질이 나빠져서일 수 있습니다.

이 프로젝트는 저비용 공기질 모니터로, MQ135 공기질 센서를 사용하여 실내 공기질을 측정하고 DHT11 센서로 온도와 습도를 측정하여 OLED 디스플레이에 표시합니다. 재미있으면서도 실용적인 작은 프로젝트입니다.

배선

연결 방법:

코딩

코드 실행을 위해 다음 라이브러리를 설치해야 합니다:

코드에는 두 가지 주요 함수가 있습니다: sendSensor()와 air_sensor().

air_sensor() 함수는 공기질 센서에서 아날로그 값을 읽어(gasLevel = analogRead(sensor);) 해당 gasLevel에 따른 공기질 등급을 정의합니다. sendSensor() 함수는 dht 라이브러리로 온도와 습도 데이터를 측정하여 OLED에 표시합니다.

중요: MQ135 센서 보정

air_sensor() 함수에서 본인의 센서에 맞는 gasLevel 값으로 보정이 필요할 수 있습니다. MQ135 센서에 5V 전원을 공급하고 깨끗한 환경에서 최소 24시간 동안 예열(버닝)하세요. 이 과정은 센서가 출하 시 오염되어 있을 수 있기 때문에 필수적이며, 버닝을 통해 센서가 스스로 정화되어 더 정확한 결과를 제공합니다.

이후 센서를 회로에 연결하고 외부 공기가 좋은 곳으로 가서 본인 환경에 맞는 적절한 값을 튜닝하세요.

코드

Arduino 공기질 모니터
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define sensor A0
#define DHTPIN 2
#define DHTTYPE DHT11

int gasLevel = 0;
String quality = "";
DHT dht(DHTPIN, DHTTYPE);

void sendSensor() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  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 < 181){
    quality = " GOOD!";
  } else if (gasLevel > 181 && gasLevel < 225){
    quality = " Poor!";
  } else if (gasLevel > 225 && gasLevel < 300){
    quality = "Very bad!";
  } else if (gasLevel > 300 && gasLevel < 350){
    quality = "ur dead!";
  } else{
    quality = " Toxic";
  }
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(1,5);
  display.setFont();
  display.println("Air Quality:");
  display.setTextSize(1);
  display.setCursor(20,23);
  display.setFont(&FreeMonoOblique9pt7b);
  display.println(quality);
}

void setup() {
  Serial.begin(9600);
  pinMode(sensor, INPUT);
  dht.begin();
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
    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(2);
  display.setCursor(20, 20);
  display.println("BY Abid");
  display.display();
  delay(1000);
  display.clearDisplay();
}

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

커스텀 파트 및 인클로저

프로젝트용으로 설계한 3D 인클로저입니다. 하지만 3D 프린터가 없어도 종이 상자 등 다양한 재료로 직접 인클로저를 만들 수 있습니다.

회로도

회로도 이미지 참조

제조공정

  1. 초소형 PM2.5 및 VOC 센서, 실시간 개인 공기질 모니터링 실현
  2. Bosch Sensortec, AI 탑재 BME688 공기질 센서로 바이러스 전파 위험 저감
  3. 르네사스, 임베디드 AI로 실내 공기질 센서 플랫폼 향상 - 냄새 감지 강화
  4. 라즈베리 파이 공기질·기상 관측소 구축: InfluxDB & Grafana 연동
  5. 아두이노와 파이썬으로 OpenSensors를 활용한 공기질 측정 가이드
  6. DIY 공기질 모니터: 비용 효율적인 EPA 준수 검출기
  7. 헬륨 기반 태양광 전원 공기질 센서: 설계 및 배포 가이드
  8. 로라(LoRa) 기반 스마트시티 대기질 모니터링 시스템 – 태양광 자립형 IoT 노드
  9. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  10. 고급 탄소 기반 NO₂ 센서로 실내 공기 질 모니터링 향상