어둠을 밝히는 로봇: 불빛 감지 로봇 만들기
페이지 정보
작성자 관리자 작성일 25-11-20 12:40 조회 271 댓글 0본문
아주 좋은 프로젝트입니다! '어둠을 밝히는 로봇: 불빛 감지 로봇 만들기'는 로봇이 주변 환경을 **'인지(Perception)'**하고 그에 따라 **'행동(Action)'**하는 가장 기본적인 원리를 배우기에 최적화되어 있습니다. 주변이 어두워지면 스스로 불을 밝히는 로봇을 만들며, 로봇의 지능적인 행동이 어떻게 구현되는지 직접 경험해 볼 수 있습니다.
어둠을 밝히는 로봇: 불빛 감지 로봇 만들기
이 프로젝트는 빛의 유무를 감지하는 '조도 센서(Photoresistor)'를 핵심 부품으로 사용하여, 주변의 밝기에 따라 LED를 켜거나 끄는 로봇(또는 간단한 장치)을 만들어 볼 것입니다.
1단계: 불빛 감지 로봇의 '원리' 이해하기
불빛 감지 로봇은 다음과 같은 원리로 움직입니다.
인지 (조도 센서): 로봇에 달린 '조도 센서'가 주변의 '밝기'를 측정하여 아두이노에게 전기 신호로 전달합니다.
밝을 때: 조도 센서의 저항값이 낮아져, 아두이노가 읽는 아날로그 값이 높아집니다.
어두울 때: 조도 센서의 저항값이 높아져, 아두이노가 읽는 아날로그 값이 낮아집니다.
판단 (컨트롤러/코드): 아두이노가 조도 센서로부터 받은 값을 미리 정해놓은 '밝기 기준값(임계값)'과 비교하여, 현재 주변이 '밝은지' '어두운지'를 판단합니다.
현재 밝기 값 < 기준값: 어둡다고 판단. → LED 켜기.
현재 밝기 값 ≥ 기준값: 밝다고 판단. → LED 끄기.
행동 (LED): 아두이노의 판단에 따라 LED를 켜거나 끕니다.
2단계: 필수 준비물 확인 및 구매
컨트롤러:
아두이노 우노 R3 (Arduino Uno R3) 호환 보드: 1개
USB 케이블: 아두이노와 컴퓨터 연결용.
센서:
조도 센서 (CdS Cell / Photoresistor): 1개
저항 (10kΩ): 1개 (조도 센서와 함께 전압 분배 회로 구성용)
액추에이터:
LED (5mm 또는 3mm): 1개 또는 여러 개 (다양한 색깔로 준비하면 더 좋습니다.)
저항 (220Ω 또는 330Ω): 1개 (LED에 과전류가 흐르는 것을 방지)
전원:
(선택 사항) 9V 배터리 & 스냅 커넥터: 1개 (아두이노 독립 전원용)
연결 재료:
브레드보드: 1개 (필수)
점퍼 케이블 (수-수): 넉넉하게
공구:
니퍼: 전선 정리용.
양면테이프 또는 글루건: 부품 고정용.
팁: 아두이노 스타터 키트에 위 모든 부품들이 대부분 포함되어 있습니다.
3단계: 로봇의 '몸' 만들기 (기계적 조립 - 간단한 구조)
이 프로젝트에서는 복잡한 이동 로봇 몸체보다는, 브레드보드와 아두이노를 중심으로 조립합니다.
아두이노 고정: 아두이노 보드를 책상 위에 놓거나 작은 판에 고정합니다.
브레드보드 고정: 아두이노 옆에 브레드보드를 고정합니다 (양면테이프 이용).
조도 센서 부착: 조도 센서가 외부 빛을 잘 감지할 수 있는 방향으로 브레드보드에 꽂습니다.
LED 부착: LED를 조도 센서와 가깝거나 원하는 위치에 브레드보드에 꽂습니다.
전원 고정 (선택 사항): 9V 배터리를 사용한다면 아두이노 근처에 고정합니다.
4단계: 로봇의 '신경망' 연결하기 (전기 배선)
회로도를 정확히 따라 하는 것이 가장 중요합니다.
전원 및 접지 연결:
아두이노의 5V 핀을 브레드보드의 + 라인에 점퍼 케이블로 연결.
아두이노의 GND 핀을 브레드보드의 - 라인에 점퍼 케이블로 연결.
조도 센서 회로 연결 (전압 분배 회로):
브레드보드의 + 라인에서 조도 센서의 한쪽 다리에 연결.
조도 센서의 다른 쪽 다리와 10kΩ 저항 한쪽 다리를 함께 연결. 이 연결 지점(조도 센서 다리 + 10kΩ 저항 다리)을 아두이노의 A0 아날로그 핀에 연결.
10kΩ 저항의 다른 쪽 다리를 브레드보드의 - 라인에 연결.
팁: 조도 센서는 저항값이 빛에 따라 변하므로, 10kΩ 저항과 직렬로 연결하여 '전압 분배 회로'를 만들어야 아두이노가 읽을 수 있는 전압 값으로 변환됩니다.
LED 회로 연결:
LED의 긴 다리 (애노드, +)를 220Ω 저항 한쪽 다리에 연결.
220Ω 저항의 다른 쪽 다리를 아두이노의 핀 13 (또는 원하는 디지털 핀)에 연결.
LED의 짧은 다리 (캐소드, -)를 브레드보드의 - 라인 (GND)에 연결.
배선 시 주의사항:
LED 극성: LED는 긴 다리(+)와 짧은 다리(-)가 있습니다. 극성을 반대로 연결하면 불이 들어오지 않습니다.
저항 사용: LED와 직렬로 저항(220Ω 또는 330Ω)을 반드시 연결해야 합니다. 저항 없이 연결하면 LED가 타버릴 수 있습니다.
모든 GND 연결: 아두이노, 조도 센서, LED의 GND는 모두 동일한 GND 라인에 연결되어야 합니다.
5단계: 로봇의 '명령' 프로그래밍하기 (아두이노 코딩)
이제 로봇에게 어두워지면 불을 켜도록 명령할 차례입니다.
5.1. 아두이노 IDE 설정 (이전 프로젝트와 동일)
5.2. 불빛 감지 로봇 기본 코드 예시
cpp
// 핀 정의
const int lightSensorPin = A0; // 조도 센서를 아두이노 A0 아날로그 핀에 연결
const int ledPin = 13; // LED를 아두이노 13번 디지털 핀에 연결 (보드 자체 내장 LED도 13번)
// 밝기 기준값 (임계값)
// 이 값보다 작으면 어둡다고 판단하여 LED를 켭니다.
// 주변 환경에 따라 이 값을 조정해야 합니다.
int threshold = 500; // 초기값 설정. 시리얼 모니터로 값 확인 후 조정
void setup() {
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정
Serial.begin(9600); // 시리얼 통신 시작 (조도 센서 값 확인용)
}
void loop() {
int lightValue = analogRead(lightSensorPin); // A0 핀으로부터 조도 센서 값 읽기 (0-1023)
Serial.print("Light Value: ");
Serial.print(lightValue);
Serial.print(" / Threshold: ");
Serial.println(threshold);
// 현재 밝기 값이 기준값보다 작으면 어둡다고 판단
if (lightValue < threshold) {
digitalWrite(ledPin, HIGH); // LED 켜기
Serial.println(" -> Dark! LED ON");
} else {
digitalWrite(ledPin, LOW); // LED 끄기
Serial.println(" -> Bright! LED OFF");
}
delay(100); // 0.1초마다 반복 (측정 주기가 너무 빠르면 시리얼 모니터 보기 힘듦)
}
5.3. 코드 업로드 및 밝기 기준값(threshold) 조정
위 코드를 아두이노 IDE에 복사하여 붙여넣기 합니다.
스케치(Sketch) → 컴파일/업로드(Upload)를 클릭하여 코드를 아두이노 보드에 업로드합니다.
툴(Tools) → 시리얼 모니터(Serial Monitor)를 열어 Light Value를 확인합니다.
주변이 밝을 때의 Light Value
조도 센서를 손으로 가려 어둡게 만들었을 때의 Light Value
이 두 값을 보고, LED가 켜지고 꺼지는 기준이 될 threshold 값을 코드에서 적절히 조정합니다. (예: 밝을 때 700, 어두울 때 300이라면 500 정도로 설정). 값을 조정한 후 다시 업로드합니다.
6단계: 로봇 테스트 및 최적화
시험 운행: 로봇에 전원을 공급하고, 조도 센서에 빛을 비추거나 손으로 가려 어둡게 만들어봅니다.
밝을 때는 LED가 꺼지고, 어두워지면 LED가 켜지는지 확인합니다.
디버깅 및 조정:
LED가 항상 켜져 있거나 꺼져 있다면: threshold 값이 현재 환경에 맞지 않을 수 있습니다. 시리얼 모니터를 통해 Light Value를 확인하며 값을 다시 조정하세요.
조도 센서 감지 불량: 조도 센서의 배치나 빛을 받는 면적이 적절한지 확인합니다.
LED 밝기: LED 저항값을 바꾸어 LED의 밝기를 조절할 수 있습니다.
반응 속도: delay(100) 값을 조절하여 로봇이 빛 변화에 반응하는 속도를 조절할 수 있습니다.
축하합니다! 이제 당신만의 불빛 감지 로봇이 완성되었습니다!
이 로봇은 로봇에게 '환경 인지' 능력을 부여하고 스스로 '판단'하여 '행동'하는 기본 원리를 배우는 좋은 프로젝트입니다. 여기서 더 나아가:
LED 대신 서보 모터를 연결하여, 어두워지면 창문을 닫거나 커튼을 여는 동작을 하게 할 수도 있습니다.
로봇 카에 조도 센서를 달아, 어두운 곳으로 이동하면 불을 켜고, 밝은 곳으로 이동하면 불을 끄도록 만들 수도 있습니다.
자신이 만든 로봇이 주변 환경에 반응하는 모습을 보며 즐거운 시간을 보내시길 바랍니다!
댓글목록 0
등록된 댓글이 없습니다.
