본문 바로가기
프로젝트

시각장애인을 위한 스마트지팡이 - Capston Design 프로젝트(3학년 2학기)

by hidden picture 2025. 7. 8.

프로젝트 개요

프로젝트 정보
프로젝트명 시각장애인을 위한 스마트 지팡이
개발 기간 2022/09/01~2022/12/18 (약 3.5개월)
개발 환경 개발 OS : Windows 10
하드웨어 : Arduino UNO R3, ESP32-CAM
소프트웨어 : Arduino IDE, Android Studio
사용 기술 IoT 센서 통합, 블루투스 통신, GPS 위치 추적, Android 앱 개발, 임베디드 시스템

1. 프로젝트 배경

1.1 사회적 배경 분석

현대 사회에서 사회적 약자에 대한 배려와 존중이 더욱 중요해짐에 따라 음성 안내 장치가 설치된 횡단보도와 점자블록, 선형블록 등 일상생활에서 시각장애인을 위한 시설을 쉽게 찾을 수 있다. 하지만 현행법상 사유지에는 장애인 편의시설 설치에 대한 의무가 없어 시각장애인이 불편함을 감수해야 하는 상황을 목격하게 되었다.

 

시각장애인들의 '눈'이라고도 할 수 있는 흰 지팡이는 현재까지 상용화된 다양한 보행 방법 중 가장 안전하지만, 고전적이고 언제나 남의 도움을 받을 수 없다는 한계가 있다. 따라서 동행자가 없어도 지팡이만으로 시각장애인의 단독 보행을 충분히 보조할 수 있는 스마트 시스템의 필요성을 절감하게 되었다.

 

1.2 프로젝트 동기 및 학습 목표

이 프로젝트는 단순한 기술 구현을 넘어서 사회적 가치 창출과 기술적 역량 강화를 동시에 추구하는 것이 목표였다.

시각장애인의 입장에서 긴급상황 발생 시 보호자에게 현재 위치를 문자로 보낼 수 있는 통신 기반 시스템, 장애물 인지 시스템, 야간 보행 안전 시스템, 그리고 비상 상황 대비 촬영 시스템까지 포함한 종합적인 보조 도구를 개발하고자 했다.

특히 팀 내에서 기획 및 하드웨어 설계를 담당하면서, 사용자 요구사항 분석부터 시스템 아키텍처 설계, 센서 통합까지의 전 과정을 통해 실무적 경험을 쌓고자 했다.


2. 프로젝트 목표 및 시스템 설계

2.1 핵심 목표

기술적 목표

  • IoT 센서 기반 장애물 감지 시스템 구현
  • 블루투스 통신을 통한 스마트폰 연동
  • GPS 기반 위치 정보 자동 전송 시스템
  • 실시간 영상 촬영 및 저장 기능

사회적 목표

  • 시각장애인의 독립적 보행 지원
  • 응급상황 대응 시스템 제공
  • 사회적 약자를 위한 기술적 솔루션 제공

2.2 전체 시스템 아키텍처

┌─────────────────────────────────────────┐
│               센서 계층                  │
│    초음파센서 | 조도센서 | 기울기센서      │
├─────────────────────────────────────────┤
│             제어 계층                    │
│         Arduino UNO R3 메인보드         │
├─────────────────────────────────────────┤
│             통신 계층                    │
│      HC-06 블루투스 ↔ Android App       │
├─────────────────────────────────────────┤
│             출력 계층                    │
│      진동모터 | LED | ESP32-CAM          │
└─────────────────────────────────────────┘

2.3 데이터 흐름 설계

  1. 센서 데이터 수집 : 초음파센서 → 거리측정 → 진동모터 제어
  2. 환경 인식 : 조도센서 → 밝기 판단 → LED 자동 점등
  3. 응급상황 감지 : 기울기센서 → 넘어짐 감지 → 블루투스 신호 전송
  4. 위치정보 처리 : GPS → 현재위치 → 문자메시지 자동 발송
  5. 상황 기록 : 스위치 → ESP32-CAM → SD카드 저장

3. 하드웨어 설계 및 구현

3.1 주요 구성 요소

메인 컨트롤러

  • Arduino UNO R3 : 전체 시스템 제어
  • 브레드보드 400핀 : 회로 연결

센서 모듈

  • HC-SR04 초음파 센서 : 장애물 거리 측정 (1~100cm)
  • CDS 조도센서 : 주변 밝기 감지 (기준값 : 800)
  • 기울기센서 : 넘어짐 감지 (연속 2초간 감지 시 신호 전송)

출력 및 통신 모듈

  • HC-06 블루투스 모듈 : 스마트폰과 무선 통신
  • 진동모터 : 장애물 거리에 따른 햅틱 피드백
  • LED바 : 야간 시인성 향상
  • ESP32-CAM : 상황 촬영 및 SD카드 저장

하드웨어 설계도
스마트 지팡이 블록도

3.2 핵심 알고리즘 구현

1) 장애물 감지 알고리즘

void obstacle_detection() {
    // 초음파 센서로 거리 측정
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    long duration = pulseIn(echoPin, HIGH);
    long distance = duration * 0.034 / 2;
    
    // 거리에 따른 진동 세기 조절
    if (distance < 20) {
        analogWrite(vibratorPin, 255);  // 최대 진동
    } else if (distance < 50) {
        analogWrite(vibratorPin, 150);  // 중간 진동
    } else if (distance < 100) {
        analogWrite(vibratorPin, 80);   // 약한 진동
    } else {
        analogWrite(vibratorPin, 0);    // 진동 없음
    }
}

2) 기울기 감지 및 응급신호 전송

void tilt_detection() {
    int tiltValue = digitalRead(tiltPin);
    
    if (tiltValue == 1) {  // 넘어짐 감지
        tiltCount++;
        if (tiltCount >= 10) {  // 2초간 지속 (0.2초 * 10회)
            Serial.println("SOS");  // 블루투스로 신호 전송
            MsTimer2::set(60000, emergency_timer);  // 1분 대기
        }
    } else {
        tiltCount = 0;
    }
}

3.3 ESP32-CAM 촬영 시스템

절전모드 상태에서 스위치 입력으로 깨어나 사진을 촬영하는 시스템을 구현했다. 촬영된 이미지는 자동으로 번호가 매겨져 SD카드에 저장되며, 추후 상황 확인이 가능하도록 했다.

void camera_capture() {
    camera_fb_t * fb = esp_camera_fb_get();
    if (!fb) {
        Serial.println("Camera capture failed");
        return;
    }
    
    // SD카드에 파일 저장
    String path = "/picture" + String(pictureNumber) + ".jpg";
    fs::FS &fs = SD_MMC;
    File file = fs.open(path.c_str(), FILE_WRITE);
    file.write(fb->buf, fb->len);
    file.close();
    
    esp_camera_fb_return(fb);
    pictureNumber++;
}

4. 소프트웨어 설계 및 구현

4.1 Android 애플리케이션 구조

주요 액티비티

  • MainActivity : 블루투스 통신 및 메인 제어
  • GPSTracker : 위치정보 수집 및 주소 변환
  • CallActivity : 긴급연락처 관리
  • BluetoothActivity : 기기 연결 관리

4.2 핵심 기능 구현

GPS 위치 추적 및 주소 변환

class GPSTracker(context: Context) : Service(context) {
    
    fun getCurrentAddress(): String {
        val geocoder = Geocoder(context, Locale.getDefault())
        try {
            val addresses = geocoder.getFromLocation(latitude, longitude, 1)
            return if (addresses != null && addresses.isNotEmpty()) {
                addresses[0].getAddressLine(0)
            } else {
                "주소 미발견"
            }
        } catch (e: Exception) {
            return "지오코더 서비스 사용 불가"
        }
    }
}

자동 문자 발송 시스템

fun sendSMS(numbers: Array<String>, message: String) {
    val smsManager = SmsManager.getDefault()
    
    for (number in numbers) {
        smsManager.sendTextMessage(
            number, 
            null, 
            message, 
            null, 
            null
        )
    }
    
    Toast.makeText(this, "전송완료", Toast.LENGTH_SHORT).show()
}

긴급연락처 관리 : SharedPreferences와 JSON을 활용하여 연락처를 영구 저장하고, 다중 연락처 등록이 가능하도록 구현했다.


5. 핵심 기술적 도전과제 및 해결과정

5.1 시스템 통합의 복잡성

도전과제 : 아두이노 하드웨어, ESP32-CAM, Android 앱 간의 데이터 흐름 설계와 동기화

1) 해결 접근법

  • 각 모듈별 독립적인 기능 검증 후 단계적 통합
  • 블루투스 통신 프로토콜 표준화
  • 타이머 기반 비동기 처리로 센서 간 간섭 최소화

5.2 프로젝트 범위 조정의 학습

1) 초기 기획의 문제점 : 완성도 높은 결과물을 목표로 과도하게 많은 기능을 설정하여 개발 일정에 차질이 생김.

2) 해결 과정

  1. 우선순위 재설정 : 핵심 기능(장애물 감지, 응급신호, GPS)에 집중
  2. WBS 도입 : 작업 분해 구조를 통한 체계적 일정 관리
  3. 역할 세분화 : 팀원별 전문 영역 할당으로 효율성을 향상시켰다.
  4. 문서화 강화 : 연결 흐름도와 스토리보드를 통한 명확한 소통을 구축

3) 학습 가치 : 이 경험을 통해 실현 가능한 목표 설정의 중요성을 깨달았고, 이후 프로젝트에서는 사용자 요구사항 정리 → 흐름도 설계 → 단계별 프로토타이핑 순서로 체계적으로 접근하게 되었다.

5.3 센서 데이터 처리 최적화

MsTimer2 라이브러리를 활용하여 기울기 센서를 메인 루프와 독립적으로 동작시켜 다른 센서들의 응답성을 확보했다. 이를 통해 실시간 멀티태스킹이 중요한 임베디드 시스템의 설계 원칙을 실습할 수 있었다.


6. 결과 및 성능 분석

6.1 기능별 성능 검증

1) 장애물 감지 시스템

  • 측정 범위 : 1~100cm
  • 반응 속도 : 실시간 (50ms 이내)
  • 정확도 : ±2cm 오차 범위

2) 응급신고 시스템

  • 감지 시간 : 연속 2초간 기울기 유지 시 활성화
  • 문자 발송 시간 : 3~5초 내 전송 완료
  • GPS 정확도 : ±10m 오차 범위

기울기 센서로 넘어짐을 감지 / 문자로 주소 전송

3) 야간 안전 시스템

  • 조도 기준값 : 800 (실내/외 환경 테스트 기반)
  • LED 점등 반응 속도 : 즉시

조도 센서, LED 구동

6.2 사용자 테스트 결과

애플리케이션 화면
ESP32 CAM 구동 장면 / SD카드 사진 저장

1) 긍정적 피드백

  • 직관적인 진동 패턴으로 장애물 인식이 용이
  • 자동 문자 발송으로 보호자가 안심할 수 있었다.
  • 기존 지팡이 형태 유지로 적응성이 우수

2) 개선 필요사항

  • 배터리 지속시간 향상이 필요
  • 우천 시 방수 기능 보완이 요구된다.
  • 더 세밀한 거리 구간별 진동 패턴 차별화가 필요

7. 기대효과 및 확장 가능성

7.1 직접적 기대효과

1) 시각장애인을 위한 가치

  • 독립적 보행 능력 향상으로 자립도 증대
  • 응급상황 대응 시간 단축으로 안전성 확보
  • 야간 보행 시 타인에게 시인성 제공으로 사고 예방

2) 보호자를 위한 가치

  • 실시간 위치 확인으로 불안감 해소
  • 응급상황 즉시 알림으로 신속 대응 가능

7.2 확장 가능성

1) 기술적 확장

  • AI 기반 음성 안내 시스템 추가
  • 스마트워치 연동으로 더 다양한 알림 방식 제공
  • 클라우드 기반 경로 학습 및 최적화

2) 사회적 확장

  • 독거노인, 치매환자 등 다른 사회적 약자로 적용 범위 확대
  • 지자체 복지정책과 연계한 사회 서비스 통합
  • 의료기관과 연계한 건강 모니터링 기능 추가
  •  

8. 결론 및 향후 발전방향

8.1 프로젝트 성과

이 프로젝트를 통해 기술적 구현 능력과 사회적 가치 창출을 동시에 달성할 수 있었다. 특히 IoT 센서 통합, 무선 통신, 모바일 앱 개발까지 아우르는 종합적인 시스템을 구축하면서 실무에서 요구되는 다양한 기술 스택을 경험했다.

8.2 개인적 성장과 학습 가치

1) 기획자로서의 역량 개발

  • 사용자 중심 설계 사고를 체득했다.
  • 기술적 제약과 사용자 요구 간의 균형점을 찾는 능력을 키움
  • 팀 프로젝트에서의 소통과 일정 관리 능력을 향상시킴

2) 기술적 성장

  • 하드웨어와 소프트웨어 통합 시스템 설계 경험을 쌓았다.
  • 실시간 데이터 처리 및 무선 통신 구현 능력을 배양했다.
  • 사용자 인터페이스 설계 및 사용성 고려 방법을 학습했다.

8.3 향후 발전방향

1) 기술적 개선사항

  • 머신러닝 기반 보행 패턴 학습으로 개인화된 서비스 제공
  • 5G 통신을 활용한 실시간 클라우드 연동
  • 더 정밀한 센서와 액추에이터로 사용자 경험 향상

2) 사업화 가능성

  • 의료기기 인증을 통한 정식 제품화
  • 사회적 기업 모델을 통한 지속가능한 서비스 제공
  • 정부 복지정책과 연계한 보급 확대

이 프로젝트는 단순한 기술 과제를 넘어서 사회적 임팩트를 창출하는 기술의 가치를 깨닫게 해준 의미 있는 경험이었다. 앞으로도 기술을 통해 더 나은 세상을 만드는 엔지니어가 되기 위해 지속적으로 학습하고 도전해 나갈 것이다.


동영상 링크 : https://cafe.naver.com/capstonedesign16?iframe_url_utf8=%2FArticleRead.nhn%3FreferrerAllArticles%3Dfalse%26menuid%3D1%26clubid%3D28836843%26articleid%3D400


참고문헌 및 자료

  • Arduino Official Documentation
  • Android Developer Guide
  • ESP32-CAM Module Specifications
  • 한국시각장애인연합회 보행 안전 가이드라인