아두이노 먼지센서 GP2Y1014AU 사용하기

메이커 2018-08-19 (일) 22:22 1년전 6158  

먼지센서 GP2Y1014AU는 공기중의 먼지를 검출할 수 있는 광학식 공기 품질 센서입니다. 적외선 방출

다이오드와 포토 트렌지스터가 각각 대각선으로 배치되어 공기중 먼지의 반사광을 감지하는 원리입니다.

원활한 측정을 위해선 팬모터로 공기를 순환시켜주어야합니다. 


■ 진행 전 알면 좋은 내용

■ 준비물 (Items)
  • GP2Y1014AU 미세먼지센서 세트

  • 아두이노 우노 보드

  • 우노 케이블 (USB - B)

  • 400핀 브레드 보드

  • M-M 케이블


■ 사양 (Specification)
  • 광학식 공기 품질 센서

  • 작동 전압: 5V~7V

  • 작동 전류: 최대 20mA

  • 측정 범위 : ~500ug/m3

  • 작동 온도: -10~65℃

  • 출력 유형: 아날로그 전압

  • 크기: 46 x 34 x 17.7 mm


■ 연결 회로도 (Fritzing) 

7595aa66b97a8262ba54081667a4c0aa_1534685


7595aa66b97a8262ba54081667a4c0aa_1534685




7595aa66b97a8262ba54081667a4c0aa_1534685


■ 샘플코드 (Sample Code) 

int measurePin = 0;          // measurePin을 0으로 설정합니다.
int ledPower = 2;             // ledPower를 2로 설정합니다.
  
int samplingTime = 280;    // samplingTime을 280으로 설정합니다.
int deltaTime = 40;           // deltaTime을 40으로 설정합니다.
int sleepTime = 9680;       // sleepTime을 9690으로 설정합니다.
  
float voMeasured = 0;      // voMeasured를 0으로 설정합니다.
float calcVoltage = 0;       // calcVoltage를 0으로 설정합니다.
float dustDensity = 0;       // dustDensity를 0으로 설정합니다.
  
void setup(){
  Serial.begin(9600);                   // 시리얼 통신을 사용하기 위해 보드레이트를 9600으로 설정합니다.
  pinMode(ledPower,OUTPUT);   // ledPower를 출력 단자로 설정합니다.
}
  
void loop(){
  digitalWrite(ledPower,LOW);                               // ledPower를 LOW로 설정합니다.
  delayMicroseconds(samplingTime);                    // samplingTime(280) 마이크로초만큼 지연합니다. 
  
  voMeasured = analogRead(measurePin);             //  measurePin의 아날로그 값을 받아 voMeasured에 저장합니다.
  
  delayMicroseconds(deltaTime);                          // deltaTime(40) 마이크로초만큼 지연합니다. 
  digitalWrite(ledPower,HIGH);                              // ledPower를 HIGH로 설정합니다.
  delayMicroseconds(sleepTime);                        // sleepTime(9680) 마이크로초만큼 지연합니다.
  
  calcVoltage = voMeasured * (5.0 / 1024.0);         // voMeasured의 값을 5.0/1024.0을 곱하여 calcVoltage에 저장합니다.
  
  dustDensity = (0.17 * calcVoltage - 0.1) * 1000;   // calcVoltage 값에 0.17을 곱하고 -0.1을 더합니다. (mg/m3)
                                                   // 값을 ug/m3 단위로 표현하기 위해 1000을 곱하여 dustDensity에 저장하여줍니다.
  
  if (dustDensity > 30){                                      // dustDensity 30미만이면(잡음을 막기 위함)
    Serial.print(dustDensity);                              // dustDensity을 시리얼 통신으로 출력합니다.
    Serial.println(" ug/m3");                               // " ug/m3"를 시리얼 통신으로 출력하고 줄을 바꿉니다.
  }
  delay(1000);                                                 // 1초동안 지연합니다.
}

▶아래 플러스 친구 버튼을 통해 다양한 정보와 교제 자료 및 이벤트등의 소식을 받아보실 수 있습니다.




모바일 버전으로 보기