- 필요한 구성 요소
- 0.96 'OLED 디스플레이 모듈
- MQ-135 센서 준비
- Arduino와 인터페이스 MQ135에 대한 회로도
- R 계산
- Arduino MQ135 센서를 사용하여 CO2를 측정하는 코드
- MQ-135 센서의 인터페이스 테스트
지구의 대기 CO2 수준은 날로 증가하고 있습니다. 2019 년 세계 평균 대기 이산화탄소는 409.8ppm이었고 2020 년 10 월 ~ 2020 년에는 411.29입니다. 이산화탄소는 주요 온실 가스이며 배출량의 약 4 분의 3을 차지합니다. 따라서 CO2 수준 모니터링 도 중요성을 갖기 시작했습니다.
이전 프로젝트에서는 중력 적외선 CO2 센서를 사용하여 공기 중 CO2 농도를 측정했습니다. 이 프로젝트에서는 Arduino와 함께 MQ-135 센서를 사용하여 CO2 농도를 측정 할 것입니다. 측정 된 CO2 농도 값은 OLED 모듈에 표시되고 마지막으로 Arduino MQ-135 센서 판독 값과 적외선 CO2 센서 판독 값을 비교합니다. CO2 외에도 Arduino를 사용하여 LPG, Smoke 및 Ammonia 가스의 농도를 측정했습니다.
필요한 구성 요소
- Arduino Nano
- MQ-135 센서
- 점퍼 와이어
- 0.96 'SPI OLED 디스플레이 모듈
- 브레드 보드
- 22KΩ 저항기
0.96 'OLED 디스플레이 모듈
OLED (Organic Light-Emitting Diodes)는 두 도체 사이에 일련의 유기 박막을 배치하여 구성된 자체 발광 기술입니다. 이 필름에 전류가 흐르면 밝은 빛이 생성됩니다. OLED는 TV와 동일한 기술을 사용하지만 대부분의 TV보다 픽셀 수가 적습니다.

이 프로젝트에서는 단색 7 핀 SSD1306 0.96 인치 OLED 디스플레이를 사용합니다. SPI 3 Wire 모드, SPI 4-wire 모드 및 I2C 모드의 세 가지 통신 프로토콜에서 작동 할 수 있습니다. 링크 된 기사를 읽고 OLED 디스플레이의 기본 사항과 유형에 대해 자세히 알아볼 수도 있습니다. 핀과 그 기능은 아래 표에 설명되어 있습니다.
|
핀 이름 |
다른 이름들 |
기술 |
|
Gnd |
바닥 |
모듈의 접지 핀 |
|
Vdd |
Vcc, 5V |
전원 핀 (3-5V 허용) |
|
SCK |
D0, SCL, CLK |
시계 핀 역할을합니다. I2C 및 SPI 모두에 사용 |
|
SDA |
D1, MOSI |
모듈의 데이터 핀. IIC 및 SPI 모두에 사용 |
|
RES |
RST, 리셋 |
모듈 재설정 (SPI 중에 유용) |
|
DC |
A0 |
데이터 명령 핀. SPI 프로토콜에 사용 |
|
CS |
칩 선택 |
SPI 프로토콜에서 둘 이상의 모듈을 사용할 때 유용합니다. |
OLED 사양:
- OLED 드라이버 IC: SSD1306
- 해상도: 128 x 64
- 시각 각도:> 160 °
- 입력 전압: 3.3V ~ 6V
- 픽셀 색상: 블루
- 작동 온도: -30 ° C ~ 70 ° C
MQ-135 센서 준비
MQ-135 가스 센서는 NH3, NOx, 알코올, 벤젠, 연기, CO2 등 다양한 가스를 감지하기위한 대기 질 센서입니다. MQ-135 센서는 모듈로 구매하거나 센서로만 구매할 수 있습니다. 이 프로젝트에서는 MQ-135 센서 모듈을 사용하여 PPM의 CO2 농도를 측정합니다. MQ-135 보드의 회로도는 다음과 같습니다.

부하 저항기 RL은 센서 작동에 매우 중요한 역할을합니다. 이 저항은 가스 농도에 따라 저항 값을 변경합니다. MQ-135 데이터 시트에 따르면 부하 저항 값은 10KΩ에서 47KΩ까지 다양합니다. 데이터 시트는 공기 중 100ppm NH3 또는 50ppm 알코올 농도에 대해 감지기를 보정하고 약 20KΩ의 부하 저항 (RL) 값을 사용하도록 권장합니다. 그러나 PCB 트레이스를 추적 하여 보드에서 RL 값 을 찾으면 1KΩ (102) 부하 저항을 볼 수 있습니다.

따라서 적절한 CO2 농도 값을 측정하려면 1KΩ 저항을 22KΩ 저항으로 교체해야합니다.
Arduino와 인터페이스 MQ135에 대한 회로도
MQ-135 가스 센서를 Arduino와 연결하는 전체 회로도 는 다음과 같습니다.

MQ-135 센서와 OLED 디스플레이 모듈을 Arduino Nano와 연결하기 만하면 회로가 매우 간단합니다. MQ-135 가스 센서 및 OLED 디스플레이 모듈은 모두 + 5V 및 GND로 전원이 공급됩니다. MQ-135 센서의 Analog Out 핀은 Arduino Nano의 A0 핀에 연결됩니다. OLED Display 모듈은 SPI 통신을 사용하기 때문에 OLED 모듈과 Arduino Nano 사이에 SPI 통신을 구축했습니다. 연결은 아래 표에 나와 있습니다.
|
S. 아니 |
OLED 모듈 핀 |
Arduino 핀 |
|
1 |
GND |
바닥 |
|
2 |
VCC |
5V |
|
삼 |
D0 |
10 |
|
4 |
D1 |
9 |
|
5 |
RES |
13 |
|
6 |
DC |
11 |
|
7 |
CS |
12 |
회로도에 따라 하드웨어를 연결 한 후 Arduino MQ135 센서 설정은 다음과 같아야합니다.

R 계산
RL의 값을 알았으니 이제 깨끗한 공기에서 R o 값 을 계산하는 방법을 살펴 보겠습니다. 여기서는 MQ135.h를 사용하여 대기 중 CO2 농도를 측정합니다. 따라서 먼저 MQ-135 라이브러리를 다운로드 한 다음 R o 값을 읽기 전에 센서를 24 시간 동안 예열하십시오. 예열 과정이 끝나면 아래 코드를 사용하여 R o 값 을 읽으십시오.
#include "MQ135.h"void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // A0 핀에 센서 부착 float rzero = gasSensor.getRZero (); Serial.println (rzero); 지연 (1000); }
이제 R o 값 을 얻었 으면 Documents> Arduino> libraries> MQ135-master 폴더로 이동 하여 MQ135.h 파일을 열고 RLOAD 및 RZERO 값을 변경합니다.
/// 보드의 부하 저항 #define RLOAD 22.0 /// 대기 CO2 수준에서의 교정 저항 #define RZERO 5804.99
이제 아래로 스크롤하여 ATMOCO2 값을 현재 대기 CO2 인 411.29로 바꿉니다.
/// 교정을위한 대기 CO2 수준 #define ATMOCO2 397.13
Arduino MQ135 센서를 사용하여 CO2를 측정하는 코드
MQ-135 센서와 Arduino를 연결하기위한 전체 코드는 문서 끝에 제공됩니다. 여기에서는 MQ135 Arduino 코드 의 몇 가지 중요한 부분을 설명 합니다.
이 코드는 사용 Adafruit_GFX , 및 Adafruit_SSD1306 , 및 MQ135.h의 라이브러리를. 이러한 라이브러리는 Arduino IDE의 Library Manager에서 다운로드하여 설치할 수 있습니다. 이를 위해 Arduino IDE를 열고 Sketch <Include Library <Manage Libraries로 이동하십시오 . 이제 Adafruit GFX를 검색하고 Adafruit의 Adafruit GFX 라이브러리를 설치합니다.

마찬가지로 Adafruit 의 Adafruit SSD1306 라이브러리를 설치합니다. MQ135 라이브러리는 여기에서 다운로드 할 수 있습니다.
Arduino IDE에 라이브러리를 설치 한 후 필요한 라이브러리 파일을 포함하여 코드를 시작합니다.
#include "MQ135.h"#include
그런 다음 OLED 너비와 높이를 정의합니다. 이 프로젝트에서는 128x64 SPI OLED 디스플레이를 사용하고 있습니다. 당신은 변경할 수 있습니다 SCREEN_WIDTH을 하고 SCREEN_HEIGHT의 디스플레이에 따라 변수.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
그런 다음 OLED 디스플레이가 연결된 SPI 통신 핀을 정의합니다.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
그런 다음 SPI 통신 프로토콜로 앞서 정의한 너비와 높이로 Adafruit 디스플레이 인스턴스를 만듭니다.
Adafruit_SSD1306 디스플레이 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
그런 다음 MQ-135 센서가 연결된 Arduino 핀을 정의하십시오.
int sensorIn = A0;
이제 setup () 함수 내에서 디버깅을 위해 9600의 전송 속도로 직렬 모니터를 초기화합니다. 또한 begin () 함수로 OLED 디스플레이를 초기화합니다.
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay ();
내부 루프 () 함수, 우선 호출의 Arduino의 아날로그 핀의 신호 값을 판독 analogRead () 함수.
val = analogRead (A0); Serial.print ("raw =");
그런 다음 다음 줄에서 gasSensor.getPPM () 을 호출 하여 PPM 값을 계산합니다. PPM 값은 부하 저항, R 0 및 아날로그 핀에서 판독을 사용하여 계산됩니다.
float ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
그런 다음 setTextSize () 및 setTextColor ()를 사용하여 텍스트 크기와 텍스트 색상을 설정합니다.
display.setTextSize (1); display.setTextColor (WHITE);
그런 다음 다음 줄에서 setCursor (x, y) 메서드를 사용하여 텍스트가 시작되는 위치를 정의합니다. 그리고 display.println () 함수를 사용하여 OLED 디스플레이에 CO2 값을 인쇄합니다.
display.setCursor (18,43); display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
마지막으로 display () 메서드를 호출하여 OLED 디스플레이에 텍스트를 표시합니다.
display.display (); display.clearDisplay ();
MQ-135 센서의 인터페이스 테스트
하드웨어와 코드가 준비되면 센서를 테스트 할 차례입니다. 이를 위해 Arduino를 노트북에 연결하고 보드와 포트를 선택한 다음 업로드 버튼을 누르십시오. 그런 다음 직렬 모니터를 열고 잠시 기다리면 (예열 프로세스) 최종 데이터가 표시됩니다. 값은 아래와 같이 OLED 디스플레이에 표시됩니다.

이것이 MQ-135 센서를 사용하여 공기 중의 정확한 CO2를 측정하는 방법입니다. 완전한 MQ135 대기 질 센서 Arduino 코드 및 작동 비디오는 아래에 나와 있습니다. 의심스러운 점이 있으면 댓글 섹션에 남겨주세요.
