example
airquality-station
Air-quality station for South Korea (실시간 미세먼지 모니터)
2350kameleon-core
airqualitydustkoreapm10pm25
README.md

개요 (Overview)

미세먼지 정보를 인터넷에서 가져와서 컬러 OLED에 표시해주는 실시간 미세먼지 모니터를 제작하였습니다.

1582873780711.jpg

1582873789307.jpg

부품 (Component)

1582873817164.jpg

부품명수량비고
Kameleon Core1
1.5" 컬러 OLED 디스플레이 (SSD1351 SPI)1Adafruit 에서 구매
Wi-Fi 모듈 (ESP-01)1
점퍼 와이어1210cm Male-Female
미니 브레드보드13.5cm x 4.5cm
자석8지름 3mm, 두께 3mm
십자 스크류 볼드4M2x6 (길이는 5mm ~ 7mm 까지 가능)
케이스2 조각3D 프린터로 출력

배선 (Wiring)

아래와 같이 브레드보드와 점퍼 와이어를 이용하여 배선합니다.

Kameleon CoreESP8266SSD1351
3V3VCC, CH_PD3V3
GNDGNDGND
6 (UART0 TX)RXD
7 (UART0 RX)TXD
12 (SPI0-MOSI)DATA (MOSI)
10 (SPI0 CLK)CLK
8D/C
9RST
17CS

1582874629686.png

조립 (Assembly)

케이스는 3D 프린터에 PLA 필라멘트를 사용하여 출력하였습니다. 출력을 위한 모델은 아래에서 다운 받을 수 있습니다.

1582875029300.png

케이스 출력이 완료되면 OLED를 케이스 커버에 M2x6 볼트를 사용하여 부착합니다. 볼트는 너무 강하지 않게 떨어지지 않을 정도로만 적당히 조여야 합니다. 너무 강하게 조이면 케이스 커버가 뭉개지거나 OLED 보드가 휘어질 수 있습니다.

1582873803571.jpg

케이스 커버와 몸체는 자석을 이용해서 결합합니다. 우선 커버와 몸체에 있는 네 곳의 구멍에 자석을 밀어 넣어야 합니다. 팁을 주자면 먼저 몸체에 자석 4개를 밀어 넣습니다. 자석은 핀셋으로 잡고 망치로 때려서 넣거나, 플라이어(뺀찌)에 자석을 붙인 다음 강한 힘으로 내리눌러 넣으면 쉽습니다. 주의!!! : 커버에 자석을 넣을때에는 몸체에 부착된 자석와 끌어당겨져 부착될 수 있도록 방향을 잘 판단해서 삽입해야 합니다. 잘못 삽입하면 케이스 커버를 다시 출력해야 할 수 있습니다. 자석의 삽입이 끝나면 몸체의 공간에 보드를 넣고 커버를 닫으면 완성입니다.

1582873810804.jpg

설정 (Setup)

프로젝트 코드를 실행하기 위해서는 4개의 항목이 storage에 저장되어야 합니다.

먼저 WI-Fi 네트워크 접속을 위한 WIFI_SSIDWIFI_PASSWORD 항목을 아래와 같이 storage에 저장합니다.

> storage.setItem('WIFI_SSID', 'MyHome'); // WiFi SSID
> storage.setItem('WIFI_PASSWORD', '********'); // Wi-Fi Password

그리고, 실시간 미세먼지 정보를 얻기 위해 API KEY를 발급받은 다음 storage에 저장합니다. 미세먼제 측정 정보는 공공데이터포털의 대기오염정보 조회 서비스 를 활용하였습니다.

> storage.setItem('AIRKOREA_APIKEY', '***********************'); // API Key

마지막으로 미세먼지 정보를 얻어올 측정소명을 URI 인코딩한 다음 storage 저장합니다. 각 지역별 미세먼지 측정소 이름은 이곳에서 찾을 수 있습니다. Kameleon은 현재 Unicode 지원이 되지 않아 측정소명을 한글로 입력할 수 없습니다. 따라서 측정소 한글 이름을 encodeURIComponent 함수를 이용하여 URI 인코딩한 다음 저장해야 합니다.

> storage.setItem('AIRKOREA_STATION', '%EA%B0%95%EB%82%A8%EA%B5%AC'); // e.g.) 강남구

Node.js 혹은 브라우저의 콘솔에서 encodeURIComponent("종로구")와 같이 입력하면 인코딩 문자열을 얻을 수 있습니다.

% node
> encodeURIComponent("강남구");
'%EA%B0%95%EB%82%A8%EA%B5%AC'
>

사용법 (Usage)

전원을 연결하면 자동으로 Wi-Fi를 연결하고 한시간 마다 미세먼지 정보를 가져와서 화면에 표시해줍니다. 미세먼지의 등급은 아이콘으로 총 4단계로 표시됩니다 (좋음:파란색, 보통:초록색, 나쁨:주황색, 매우나쁨:빨간색)으로 표시됩니다. PM10과 PM2.5 수치(㎍/㎥)도 하단에 표시됩니다.