- 필요한 구성 요소
- 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 코드 및 작동 비디오는 아래에 나와 있습니다. 의심스러운 점이 있으면 댓글 섹션에 남겨주세요.