http://blog.naver.com/roboholic84/220453570045
http://blog.naver.com/brighteyes79/220417240913
아래와 같은 부품들이 필요합니다. 미세먼지 센서의 경우 국내에서 구하기가 어려워 해외 주문이 필요할 수 있습니다.
- 아두이노 나노 보드
- OLED 디스플레이 모듈 (없어도 가능)
- ENC28J60 이더넷 모듈
- GP2Y1010AU0F 미세먼지 센서 + 160옴 저항 + 220uF 커패시터
- 브레드 보드, 랜선, 점퍼선 등등
GP2Y1010AU0F 미세먼지 센서를 구입할 때 160옴 저항, 220uF 커패시터가 세트로 포함되어 있는 것을 구매하는 것이 편리합니다.
2. 연결 방법
2-1 미세먼지 센서 연결
가장 먼저 미세먼지 측정기를 아두이노 나노 보드와 연결해야 합니다. 미세먼지 측정기에 6개의 핀이 노출된 커넥터가 있는데 1~3번 핀이 적외선 LED 제어를 위한 핀입니다. 4~6 핀은 실제 측정된 값을 받아오는 핀입니다.
미세먼지 측정기는 아래와 같이 연결하면 됩니다.
실제 아두이노에는 아래와 같이 연결됩니다. 주의하실 점은 아두이노 5V 핀이 먼지센서 1번 핀에 연결되기 전에 150ohm 저항을 거쳐야 합니다. 그리고 아두이노 5V, GND에 연결된 1번과 2번 핀 사이에 커패시터를 연결해줘야 합니다. (커패시터의 극성 주의하세요 - 커패시터 흰색 띠가 GND로 연결)
미세먼지 측정기 | 아두이노 | ||
1 | Vled | –> | 5V (150ohm resistor) |
2 | LED-GND | –> | GND |
3 | LED | –> | Digital pin 2 |
4 | S-GND | –> | GND |
5 | Vo | –> | Analog pin 0 |
6 | Vcc | –> | 5V |
GP2Y1010AU0F 미세먼지 센서에 대한 상세 내용은 링크에서 확인하실 수 있습니다.
2-2 OLED 연결
OLED 모듈은 I2C 인터페이스를 지원하는 모듈을 사용했습니다. OLED 모듈의 상세 사용법은 링크를 참고하세요.
OLED --> | 아두이노d |
GND | GND |
VCC | 3.3V (또는 5V) |
SDA | A4 (아날로그 4번핀) |
SCL | A5 (아날로그 5번핀) |
2-3 이더넷 모듈 연결
통신을 담당하는 이더넷 모듈입니다. 랜 케이블만 있으면 동작도 안정적이고 저렴해서 좋습니다.
12개 핀 중 6개의 핀을 다음과 같이 연결합니다.
이더넷 모듈 --> | 아두이노 |
3.3V | 3.3V |
GND | GND |
MISO | D12 |
MOSI | D11 |
SCK | D13 |
CS | D8
|
2-4 전체 회로도
이상의 모듈들을 모두 연결하면 아래와 같이 됩니다.
복잡해 보이지만 모듈은 순서대로 연결하면 할만합니다~
3. 스케치 업로드
스케치를 업로드하기 전에 라이브러리 설치가 필요합니다.
이더넷 모듈을 구동하기 위해서는 EtherCard 라이브러리가 필요합니다.
- EtherCard library download : https://github.com/jcw/ethercard
- 라이브러리에 대한 상세 매뉴얼 : http://jeelabs.net/pub/docs/ethercard/
OLED 디스플레이 구동을 위해 U8glib 라이브러리 설치가 필요합니다. 라이브러리는 다음 링크에서 다운로드 받으실 수 있습니다.
이상이 준비되면 소스코드를 업로드하면 됩니다. 아래에서 소스코드를 다운로드 받으세요.
https://github.com/godstale/Dust-Sensor-Example
주의!!! 위 소스코드는 블로터 서버에 데이터를 보내도록 작성되어 있습니다. 본인만의 서버 공간에 저장하고 싶다면 thingspeak 서버에 채널을 생성해서 thingspeak 서버로 HTTP request를 보내도록 수정해주면 됩니다. 소스코드에서 sendData() 함수를 수정해주면 됩니다.
4. 동작 모습
조립과 소스 업로드가 완성되어 실제 동작하는 모습입니다.
비록 이 프로젝트가 미세먼지 문제를 근본적으로 해결하지는 못하지만 문제에 대한 경각심을 환기시키고 다양한 해결책을 모색하는 기초가 될 수는 있을 것입니다.
[출처] 아두이노 미세먼지 측정기|작성자 낭만고양
댓글 3
-
묵묵이
2017.02.06 11:08
-
묵묵이
2017.02.06 11:14
3. 프로그래밍
- http://www.dfrobot.com/wiki/index.php/Sharp_GP2Y1010AU 의 코드를 복붙하셔서 스케치에서 돌리면 1초 간격으로 시리얼로 출력됩니다.
4. 참고 자료
- 미세먼지 센서 데이터쉬트: https://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf
- 미세먼지 센서 어댑터 회로도: http://www.dfrobot.com/image/data/DFR0280/Dust%20Sensor%20Adapter%20V1.0%20SCH.pdf
-
묵묵이
2017.02.06 17:07
샘플 소스
/*
Standalone Sketch to use with a Arduino UNO and a
Sharp Optical Dust Sensor GP2Y1010AU0F
*/
int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2; //Connect 3 led driver pins of dust sensor to Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
}
void loop(){
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // read the dust value
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
// 0 - 5V mapped to 0 - 1023 integer values
// recover voltage
calcVoltage = voMeasured * (5.0 / 1024.0);
// linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/
// Chris Nafis (c) 2012
dustDensity = 0.17 * calcVoltage - 0.1;
Serial.print("Raw Signal Value (0-1023): ");
Serial.print(voMeasured);
Serial.print(" - Voltage: ");
Serial.print(calcVoltage);
Serial.print(" - Dust Density: ");
Serial.println(dustDensity); // unit: mg/m3
delay(1000);
}
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | IR 리모콘 코드 따기 [1] | 묵묵이 | 2017.02.10 | 14 |
공지 | rc 카 작업용 [1] | 묵묵이 | 2017.02.07 | 14 |
공지 | [sketch_mydust] 미세멘지 측정기 작업 용 [2] | 묵묵이 | 2017.02.07 | 35 |
23 | sprintf2 사용법 | 묵묵이 | 2017.02.07 | 5 |
22 |
디지털 온 습도계 사용 DHT22
[2] ![]() | 묵묵이 | 2017.02.06 | 5 |
» | 미세먼지 측정기 참조 [3] | 묵묵이 | 2017.02.06 | 5 |
20 | test ir 리모컨 테스트 [1] | 묵묵이 | 2017.01.23 | 5 |
19 | ir 리모컨 값 기록 | 묵묵이 | 2017.01.18 | 2 |
18 | 아두이노 IR 리모컨 R 신호 반복문제 test | 묵묵이 | 2017.01.18 | 6 |
17 | 아두이노 톤함수를 사용하지 않고 부저 소리내기 | 묵묵이 | 2017.01.17 | 1 |
16 | 키보드로 멜로디 연주하기 | 묵묵이 | 2017.01.17 | 4 |
15 | 아두이노에 작은별 멜로디 스케치 | 묵묵이 | 2017.01.17 | 4 |
14 |
아두이노 미세먼지 측정기 .. 만들기
![]() | 묵묵이 | 2017.01.17 | 2 |
13 | 서버모터 테스트 소스 | 묵묵이 | 2017.01.16 | 7 |
12 | 서보모터 제어하기 | 묵묵이 | 2017.01.16 | 1 |
11 | 아두이노 프로 미니 보드와 USB TO TTL 모듈을 이용한 프로그램 업로드 | 묵묵이 | 2017.01.13 | 1 |
10 |
ir 리모컨 수신 test ( 현제 작업중 소스)
[1] ![]() | 묵묵이 | 2017.01.12 | 4 |
9 | ir 적외선 센서를 이용한 거리 측청 - test 잘됨 | 묵묵이 | 2017.01.12 | 2 |
8 | 초음파 센서 참고 소스 [1] | 묵묵이 | 2017.01.12 | 4 |
7 | 아두이노 기초강좌 - IR 센서 [1] | 묵묵이 | 2017.01.11 | 7 |
6 | Arduino 아두이노 - relay module control 릴레이 모듈 제어 [1] | 묵묵이 | 2017.01.10 | 19 |
5 | 아두이노 나노 알아보기 | 묵묵이 | 2017.01.10 | 2 |
소스 ..