// education

다양한 센서 활용하기 (CDS, 초음파, 온습도, PIR)

아두이노 주변의 물리적 환경(빛, 거리, 온도, 습도, 움직임)을 센싱하는 대표 센서 4종을 정밀 다룹니다.


1. 센서 용어 사전 (Glossary)


2. 초음파 거리 센서 (HC-SR04) 정밀 거리 계산

음속은 $15^\circ\text{C}$ 공기 중에서 약 $340\text{m/s} = 0.0343\text{cm/}\mu\text{s}$ 입니다.

$$\text{거리(cm)} = \frac{\text{왕복 시간}(\mu\text{s}) \times 0.0343}{2}$$

const int trigPin = 9;
const int echoPin = 8;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW); delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); delayMicroseconds(10); // 10us 초음파 발사 펄스
  digitalWrite(trigPin, LOW);

  // echoPin이 HIGH를 유지하는 시간(us)을 측정
  long duration = pulseIn(echoPin, HIGH, 30000); // 30ms 타임아웃
  
  if (duration == 0) {
    Serial.println("측정 범위 초과 (타임아웃)");
  } else {
    float distance = duration * 0.0343 / 2.0;
    Serial.print("측정 거리: "); Serial.print(distance); Serial.println(" cm");
  }
  delay(200);
}

3. DHT11 온습도 센서 사용법

#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();    // 습도 측정 (%)
  float t = dht.readTemperature(); // 온도 측정 (°C)

  if (isnan(h) || isnan(t)) {
    Serial.println("DHT 센서 읽기 실패!");
    return;
  }

  Serial.print("습도: "); Serial.print(h);
  Serial.print("% | 온도: "); Serial.print(t); Serial.println("°C");
  delay(2000); // DHT11은 최소 2초 샘플링 주기 필요
}

4. 자주 묻는 질문 (Q&A)

Q. PIR 센서 아래에 있는 2개의 가변저항 나사는 무엇을 조절하나요? A. 하나는 **감지 민감도(Sensitivity/거리 조절)**이고, 다른 하나는 감지 후 HIGH 신호를 유지하는 지연 시간(Delay Time 조절) 나사입니다.

← 이전디스플레이 활용 (Char LCD 및 OLED) 다음 →모터 활용하기 (DC 모터, 서보 모터, 스텝 모터)