아두이노 주변의 물리적 환경(빛, 거리, 온도, 습도, 움직임)을 센싱하는 대표 센서 4종을 정밀 다룹니다.
1. 센서 용어 사전 (Glossary)
- CDS Photoresistor: 황화카드뮴 소재를 사용하여 빛의 양에 따라 저항값이 가변하는 빛 감지 센서입니다.
- HC-SR04 (Ultrasonic Sensor): 40kHz의 초음파 트리거 신호를 쏜 후 반사되어 돌아오는 시간을 측정하여 거리를 계산하는 센서입니다.
- DHT11: 온도와 습도를 디지털 1-Wire 데이터 신호로 전송하는 복합 온습도 센서입니다.
- PIR (Passive Infrared Sensor): 사람이나 동물의 몸에서 방출되는 적외선 변화량을 측정하여 움직임을 감지하는 센서입니다.
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 조절) 나사입니다.