미세먼지 센서(GP2Y1010AU0F): 두 판 사이의 차이
(새 문서: {{#seo:|title=아두위키 : 아두이노 미세먼지 센서(GP2Y1010AU0F) 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 미세먼지 센서(GP2Y1010AU0F), 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 미세먼지 센서(GP2Y1010AU0F)를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}파일:...) |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
{{#seo:|title=아두위키 : 아두이노 미세먼지 센서(GP2Y1010AU0F) 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 미세먼지 센서(GP2Y1010AU0F), 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 미세먼지 센서(GP2Y1010AU0F)를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}[[파일:미세먼지 대표이미지.jpg| | {{#seo:|title=아두위키 : 아두이노 미세먼지 센서(GP2Y1010AU0F) 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 미세먼지 센서(GP2Y1010AU0F), 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 미세먼지 센서(GP2Y1010AU0F)를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}[[파일:미세먼지 대표이미지.jpg|가운데|class=coders100]] | ||
저항과 커패시터를 구성해서 사용해야 합니다. | 저항과 커패시터를 구성해서 사용해야 합니다. | ||
75번째 줄: | 75번째 줄: | ||
| colspan="1" rowspan="1" |1 | | colspan="1" rowspan="1" |1 | ||
|} | |} | ||
[[파일:미세먼지 회로.png| | [[파일:미세먼지 회로.png|가운데|class=coders100]] | ||
== '''예제 코드''' == | == '''예제 코드''' == |
2023년 12월 28일 (목) 14:23 기준 최신판
저항과 커패시터를 구성해서 사용해야 합니다.
먼지 농도 측정 시 충분한 시간을 두어야 정상적으로 작동합니다.
사양
- 작동전압 : 5V ~ 7V
- 작동전류 : 최대 20mA
- 작동온도 : -10 ~ 65 [섭씨]
- 측정범위 : 0 ~ 500 [ug/m3]
예제 사용 하드웨어
- 아두이노 보드
- 3색 신호등 LED 모듈
- 커패시터 220uF
- 저항 150옴
연결
신호등 LED | 아두이노 우노 | 콘덴서 | 저항 | 미세먼지 |
R | D5 | |||
Y | D6 | |||
G | D7 | |||
D2 | 3 | |||
A0 | 5 | |||
5V | 연결 | 6 | ||
GND | GND | - | 2,4 | |
+ | 연결 | 1 |
예제 코드
미세먼지 센서 값에 따라 RGB LED 색이 바뀌는 코드입니다.
int dust_sensor = A0; // 미세먼지 핀 번호
int rgb_red = 5; // rgb 핀 빨간색 핀
int rgb_yellow = 6; // rgb핀 노란색 핀
int rgb_green = 7; // rgb핀 녹색 핀
float dust_value = 0; // 센서에서 입력 받은 미세먼지 값
float dustDensityug = 0; // ug/m^3 값을 계산
int sensor_led = 2; // 미세먼지 센서 안에 있는 적외선 led 핀 번호
int sampling = 280; // 적외선 led를 키고, 센서 값을 읽어 들여 미세먼지를 측정하는 샘플링 시간
int waiting = 40;
float stop_time = 9680; // 센서를 구동하지 않는 시간
void setup() {
Serial.begin(9600);
pinMode(sensor_led, OUTPUT);
pinMode(4, OUTPUT);
pinMode(rgb_red, OUTPUT);
pinMode(rgb_yellow, OUTPUT);
pinMode(rgb_green, OUTPUT);
}
void loop() {
digitalWrite(sensor_led, LOW);
delayMicroseconds(sampling);
dust_value = analogRead(dust_sensor);
delayMicroseconds(waiting);
digitalWrite(sensor_led, HIGH);
delayMicroseconds(stop_time);
dustDensityug = (0.17 * (dust_value * (5.0 / 1024)) - 0.1) * 1000;
Serial.print("Dust Density [ug/m3]: ");
Serial.print(dustDensityug);
if (dustDensityug <= 30.0) {
digitalWrite(rgb_red, LOW);
digitalWrite(rgb_yellow, LOW);
digitalWrite(rgb_green, HIGH);
Serial.print(" ");
Serial.println("green");
} else if (30.0 < dustDensityug && dustDensityug <= 80.0) {
digitalWrite(rgb_red, LOW);
digitalWrite(rgb_yellow, HIGH);
digitalWrite(rgb_green, LOW);
Serial.print(" ");
Serial.println("yellow");
} else if (80.0 < dustDensityug && dustDensityug <= 150.0) {
digitalWrite(rgb_red, HIGH);
digitalWrite(rgb_yellow, LOW);
digitalWrite(rgb_green, LOW);
Serial.print(" ");
Serial.println("red");
} else {
digitalWrite(rgb_red, HIGH);
digitalWrite(rgb_yellow, HIGH);
digitalWrite(rgb_green, HIGH);
Serial.print(" ");
Serial.println("all");
}
delay(2000);
}
실행결과
추가 예정