- 필요한 구성 요소
- Nova PM 센서 SDS011
- 0.96 'OLED 디스플레이 모듈
- 대기 질 분석기의 회로도
- 성능 기판에 회로 구축
- 대기 질 모니터 코드 설명
- Arduino 대기 질 모니터 테스트
대기 오염은 많은 도시에서 주요 문제이며 대기 질 지수는 매일 악화되고 있습니다. 세계 보건기구 (WHO) 보고서에 따르면 자동차 사고보다 공기 중에 나타나는 유해 입자의 영향으로 조기에 사망하는 사람이 더 많습니다. EPA (Environmental Protection Agency)에 따르면 실내 공기는 실외 공기보다 2 ~ 5 배 더 독성이 있습니다. 그래서 여기서 우리는 공기 중의 PM2.5 및 PM10 입자를 측정 하여 공기질을 모니터링하는 장치를 만듭니다.
우리는 이전에 공기질 모니터 용 MQ135 가스 센서와 공기 중의 먼지 밀도 측정 용 Sharp GP2Y1014AU0F 센서를 사용했습니다. 이번에는 Arduino Nano와 함께 SDS011 센서를 사용하여 공기질 분석기를 구축합니다. SDS011 센서는 공기 중 PM2.5 및 PM10 입자의 농도를 계산할 수 있습니다. 여기에서 실시간 PM2.5 및 PM 10 값이 OLED 디스플레이에 표시됩니다.
필요한 구성 요소
- Arduino Nano
- Nova PM 센서 SDS011
- 0.96 'SPI OLED 디스플레이 모듈
- 점퍼 와이어
Nova PM 센서 SDS011
SDS011 센서는 Nova Fitness에서 개발 한 최신 공기질 센서입니다. 레이저 산란 원리로 작동하며 공기 중 0.3 ~ 10μm의 입자 농도를 얻을 수 있습니다. 이 센서는 소형 팬, 공기 흡입구 밸브, 레이저 다이오드 및 광 다이오드로 구성됩니다. 공기는 광원 (레이저)이 입자를 비추고 산란 된 빛이 광 검출기에 의해 신호로 변환되는 공기 유입구를 통해 들어갑니다. 이러한 신호는 PM2.5 및 PM10의 입자 농도를 얻기 위해 증폭되고 처리됩니다.
SDS011 센서 사양:
- 출력: PM2.5, PM10
- 측정 범위: 0.0-999.9μg / m3
- 입력 전압: 4.7V ~ 5.3V
- 최대 전류: 100mA
- 수면 전류: 2mA
- 응답 시간: 1 초
- 직렬 데이터 출력 주파수: 1 회 / 초
- 입자 직경 해상도: ≤ 0.3μm
- 상대 오류: 10 %
- 온도 범위: -20 ~ 50 ° C
0.96 'OLED 디스플레이 모듈
OLED (Organic Light-Emitting Diodes)는 두 도체 사이에 일련의 유기 박막을 배치하여 구성된 자체 발광 기술입니다. 이 필름에 전류가 흐르면 밝은 빛이 생성됩니다. OLED는 TV와 동일한 기술을 사용하지만 대부분의 TV보다 픽셀 수가 적습니다.
이 프로젝트에서는 단색 7 핀 SSD1306 0.96 인치 OLED 디스플레이를 사용합니다. SPI 3 Wire 모드, SPI 4-wire 모드 및 I2C 모드의 세 가지 통신 프로토콜에서 작동 할 수 있습니다. 핀과 그 기능은 아래 표에 설명되어 있습니다.
핀 이름 |
다른 이름들 |
기술 |
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 사양:
- OLED 드라이버 IC: SSD1306
- 해상도: 128 x 64
- 시각 각도:> 160 °
- 입력 전압: 3.3V ~ 6V
- 픽셀 색상: 블루
- 작동 온도: -30 ° C ~ 70 ° C
링크를 따라 OLED 및 다른 마이크로 컨트롤러와의 인터페이스에 대해 자세히 알아보십시오.
대기 질 분석기의 회로도
Arduino를 사용하여 PM2.5 및 PM10 입자 를 측정하는 회로도 는 매우 간단하며 아래에 나와 있습니다.
SDS011 센서 및 OLED 디스플레이 모듈은 모두 + 5V 및 GND로 전원이 공급됩니다. SDS011의 송신기 및 수신기 핀은 Arduino Nano의 D3 및 D4 핀에 연결됩니다. 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 |
성능 기판에 회로 구축
또한 성능 보드의 모든 구성 요소를 납땜하여 깔끔하게 보이도록했습니다. 그러나 브레드 보드에서 만들 수도 있습니다. 제가 만든 보드는 아래와 같습니다. 납땜하는 동안 전선을 분류하지 마십시오. 납땜 한 성능 보드는 다음과 같습니다.
대기 질 모니터 코드 설명
이 프로젝트의 전체 코드는 문서 끝에 제공됩니다. 여기에서는 코드의 중요한 부분을 설명합니다.
이 코드는 사용 SDS011, Adafruit_GFX , 및 Adafruit_SSD1306의 라이브러리를. 이러한 라이브러리는 Arduino IDE의 Library Manager에서 다운로드 할 수 있으며 여기에서 설치할 수 있습니다. 이를 위해 Arduino IDE를 열고 Sketch> Include Library> Manage Libraries로 이동 합니다. 이제 SDS011을 검색 하고 R. Zschiegner 의 SDS 센서 라이브러리를 설치합니다 .
마찬가지로 Adafruit 의 Adafruit GFX 및 Adafruit SSD1306 라이브러리를 설치합니다.
Arduino IDE에 라이브러리를 설치 한 후 필요한 라이브러리 파일을 포함하여 코드를 시작합니다.
#포함
다음 줄에서 PM10 및 PM2.5 값을 저장할 두 개의 변수를 정의합니다.
플로트 p10, p25;
그런 다음 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);
이제 setup () 함수 내에서 디버깅을 위해 9600의 전송 속도로 직렬 모니터를 초기화합니다. 또한 begin () 함수로 OLED 디스플레이와 SDS011 센서를 초기화합니다.
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
void loop () 내부에서 SDS011 센서에서 PM10 및 PM2.5 값을 읽고 판독 값을 직렬 모니터에 인쇄합니다.
void loop () {error = my_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:"+ String (p25)); Serial.println ("P10:"+ 문자열 (p10));
그런 다음 setTextSize () 및 setTextColor ()를 사용하여 텍스트 크기와 텍스트 색상을 설정합니다.
display.setTextSize (2); display.setTextColor (WHITE);
그런 다음 다음 줄에서 setCursor (x, y) 메서드를 사용하여 텍스트를 시작할 위치를 정의합니다. 여기에서는 OLED 디스플레이에 PM2.5 및 PM10 값을 표시하여 첫 번째 줄은 (0,15)에서 시작하고 두 번째 줄은 (0, 40) 좌표에서 시작합니다.
display.setCursor (0,15); display.println ("PM2.5"); display.setCursor (67,15); display.println (p25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
마지막으로 display () 메서드를 호출하여 OLED 디스플레이에 텍스트를 표시합니다.
display.display (); display.clearDisplay ();
Arduino 대기 질 모니터 테스트
하드웨어와 코드가 준비되면 장치를 테스트 할 차례입니다. 이를 위해 Arduino를 노트북에 연결하고 보드와 포트를 선택한 다음 업로드 버튼을 누르십시오. 아래 이미지에서 볼 수 있듯이 OLED 디스플레이에 PM2.5 및 PM10 값이 표시됩니다.
전체 작업 비디오 및 코드는 아래에 나와 있습니다. 튜토리얼을 즐겁게 읽고 유용한 것을 배웠기를 바랍니다. 질문이 있으시면 댓글 섹션에 남겨 주시거나 다른 기술 질문에 대한 포럼을 사용하십시오.