조도센서는 빛의 양에 따라 전기적 특성이 변하는 센서로, 주로 환경 밝기에 따른 반응으로 다양한 응용에서 사용됩니다. 이번에는 아두이노와 HS-CDSM 디지털 조도센서를 사용하여 어떻게 빛을 감지하는지 실험해보겠습니다.
조도센서의 원리
조도센서는 CDS라고도 하며, 황화 카드뮴(cadmium sulfide)을 기반으로 합니다. 빛의 양에 따라 저항값이 변화하는 특징을 가집니다. 빛이 많이 들어올수록 저항이 감소하고, 빛이 적을수록 저항이 증가합니다.
HS-CDSM 조도센서의 특징
대부분의 조도센서는 4개의 핀을 가지고 있지만, HS-CDSM은 디지털 출력만을 제공하는 센서입니다. 이로 인해 결과값은 0(어두움)과 1(밝음)로만 출력됩니다. 이는 아날로그 값을 통한 상세한 밝기 측정이 불가능하다는 단점을 가집니다.
실험 준비
조도센서의 감도는 가변저항을 통해 조절이 가능합니다. 조도센서의 전원을 연결하여 동작 확인: 어두울 경우 LED가 꺼지고, 밝을 경우 LED가 켜집니다.
코드 작성 및 실행
조도센서를 아두이노의 7번 핀에 연결하였습니다. 빛의 유무를 판단하여 시리얼 모니터에 출력하는 코드를 작성하였습니다. 빛이 차단되면 "어두워요."라는 메시지와 함께 값 1이 출력되고, 빛이 있으면 "밝아요."라는 메시지와 함께 값 0이 출력됩니다.
const int nPin_cds2 = 7; // 조도센서가 연결된 핀 번호
void setup() {
Serial.begin(9600); // 시리얼 통신 시작
pinMode(nPin_cds2, INPUT); // 조도센서 핀을 입력 모드로 설정
}
void loop() {
int ncds2 = digitalRead(nPin_cds2); // 조도센서의 값을 읽어옴
// 빛의 유무에 따른 메시지 출력
if (ncds2 == 1) {
Serial.println("어두워요.");
} else {
Serial.println("밝아요.");
}
// 조도센서의 값 출력
Serial.print("CDS2 : ");
Serial.println(ncds2);
delay(500); // 0.5초 동안 대기
}
코드의 주요 부분을 간략히 설명하면:
- 변수 선언
- nPin_cds2 : 조도센서가 연결된 아두이노의 핀 번호를 저장하는 변수로, 7번 핀에 연결되어 있습니다.
- setup() 함수
- Serial.begin(9600); : 시리얼 통신을 9600 bps의 전송 속도로 시작합니다.
- pinMode(nPin_cds2, INPUT); : 조도센서가 연결된 핀을 입력 모드로 설정합니다.
- loop() 함수
- digitalRead(nPin_cds2); : 조도센서가 연결된 핀에서 디지털 값을 읽어옵니다.
- if-else 문 : 조도센서의 값이 1인 경우 "어두워요."를 시리얼 모니터에 출력하고, 그렇지 않은 경우 "밝아요."를 출력합니다.
- Serial.print("CDS2 : "); : "CDS2 :" 문자열을 시리얼 모니터에 출력합니다.
- Serial.println(ncds2); : 조도센서의 값을 시리얼 모니터에 출력합니다.
- delay(500); : 0.5초 동안 프로그램의 실행을 중지합니다.
다음은 실행결과 창입니다.
확장
추가적으로 피에조 부저를 사용하여 빛의 유무에 따른 소리 알림 기능도 구현할 수 있습니다. 이를 통해 물리적인 알림도 제공할 수 있습니다.
불이 꺼지면 피에조(스피커)에서 소리 나오게 해보려고 합니다. 그래서 아두이노의 핀보드에 피에조를 13번핀 연결하고, 조도센서 CDS는 7번핀에 연결했습니다.
tone(13, 5000, 100); // 피에조 ON (13핀, 주파수 5000, 0.1초간)
소스파일
다음은 피에조를 포함한 소스코드를 압축한 파일입니다.
결론
HS-CDSM 디지털 조도센서는 간단한 빛 감지 실험에 적합하며, 아두이노와의 연결을 통해 다양한 응용이 가능합니다. 하지만 상세한 밝기 측정이 필요한 경우 다른 아날로그 출력을 제공하는 조도센서의 사용을 고려해야 합니다.
조도센서 디지털 HS-CDSM 구입하려면?
'Language > Arduino' 카테고리의 다른 글
[아두이노] 블루투스(HC-06) 와 AT 명령어 사용하기 (0) | 2019.01.29 |
---|---|
아두이노 회로설계 툴 프릿징 Fritzing 사용해보기 (0) | 2019.01.28 |
[아두이노] 토양수분센서 값 알아내기 HS-Soil Moisture Sensor (0) | 2019.01.22 |
[아두이노] 아두이노 비주얼 스튜디오에서 사용하기 (Arduino and Visual Studio) (0) | 2019.01.21 |
[아두이노] 아두이노 활용한 스마트팜 제작해보기 계획 (0) | 2019.01.21 |