미세먼지 센서(GP2Y1010AU0F): 두 판 사이의 차이

아두위키 : Arduwiki
(새 문서: {{#seo:|title=아두위키 : 아두이노 미세먼지 센서(GP2Y1010AU0F) 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 미세먼지 센서(GP2Y1010AU0F), 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 미세먼지 센서(GP2Y1010AU0F)를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}파일:...)
 
편집 요약 없음
 
1번째 줄: 1번째 줄:
{{#seo:|title=아두위키 : 아두이노 미세먼지 센서(GP2Y1010AU0F) 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 미세먼지 센서(GP2Y1010AU0F), 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 미세먼지 센서(GP2Y1010AU0F)를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}[[파일:미세먼지 대표이미지.jpg|657x657픽셀]]
{{#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|656x656픽셀]]
[[파일:미세먼지 회로.png|가운데|class=coders100]]


== '''예제 코드''' ==
== '''예제 코드''' ==

2023년 12월 28일 (목) 14:23 기준 최신판

저항과 커패시터를 구성해서 사용해야 합니다.

먼지 농도 측정 시 충분한 시간을 두어야 정상적으로 작동합니다.

사양

  • 작동전압 : 5V ~ 7V
  • 작동전류 : 최대 20mA
  • 작동온도 : -10 ~ 65 [섭씨]
  • 측정범위 : 0 ~ 500 [ug/m3]

예제 사용 하드웨어

연결

신호등 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);
}

실행결과

추가 예정

구매 링크