아두이노 스마트 지팡이: 시각장애인을 위한 근접 센서
부품 및 소모품
| 부품명 | 수량 |
| 아두이노 우노 | 1 |
| 납땜 없는 브레드보드 (풀 사이즈) | 1 |
| 초음파 센서 HC-SR04 (일반) | 1 |
| 부저 | 2 |
| LED (일반) | 1 |
필요한 도구 및 기계
앱 및 온라인 서비스
프로젝트 소개
거리에서 시각장애인들이 행인들에게 도움을 요청하며 걷는 모습을 보고 안타까워 이 프로젝트를 시작했습니다.
코드
업로드할 코드 (C/C++)
/* 시각장애인을 돕는 스마트 지팡이 만들기 */
#define trigPin 9
#define echoPin 8
#define Buzzer1 5 // 액티브 부저
#define Buzzer2 7 // 패시브 부저
#define Led1 6 // 진동 모터/LED
int sound = 250;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Buzzer1, OUTPUT);
pinMode(Buzzer2, OUTPUT);
pinMode(Led1, OUTPUT);
}
void loop() {
Serial.begin(9600); // 루프 안에서 반복 호출 불필요, setup으로 이동 권장
long duration, distance;
digitalWrite(trigPin, LOW);
delay(2);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1; // cm 단위
digitalWrite(Buzzer1, LOW);
digitalWrite(Buzzer2, LOW);
digitalWrite(Led1, LOW);
if (distance < 40) {
digitalWrite(Led1, HIGH);
delay(2000);
}
if (distance < 20) {
digitalWrite(Led1, HIGH);
delay(2000);
digitalWrite(Buzzer1, HIGH);
delay(2000);
}
if (distance < 10) {
digitalWrite(Led1, HIGH);
delay(2000);
digitalWrite(Buzzer1, HIGH);
delay(2000);
digitalWrite(Buzzer2, HIGH);
delay(2000);
}
}
코드 개선 제안:
Serial.begin(9600)은 setup()으로 이동
delay() 사용으로 센서 측정 간격 발생 → millis() 기반 논블로킹 방식으로 개선 권장
- 거리 임계값별 차등 알림(LED → 부저1 → 부저2) 로직은 좋으나 중복 실행 구조 개선 필요
- 진동 모터 사용 시 별도 드라이버 회로 필요할 수 있음
회로도
연결 순서:
- 초음파 센서, 부저 2개, LED를 브레드보드에 장착
- 점퍼 와이어로 아두이노와 연결
- 완성된 회로를 테이프로 지팡이에 고정
회로도 이미지: 초음파 센서 VCC→5V, GND→GND, Trig→핀9, Echo→핀8 / 부저1→핀5, 부저2→핀7 / LED→핀6