파이브가이즈

신소재공학과 캡스톤위키
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 시각 장애인을 위한 지하철 내 실시간 점자 안내판

영문 : Real-time Braille Information Board for the Blind in the Subway

과제 팀명

파이브가이즈

지도교수

김현식 교수님

개발기간

2023년 9월 ~ 2023년 12월 (총 4개월)

구성원 소개

서울시립대학교 신소재공학과 20184500** 이*형(팀장)

서울시립대학교 신소재공학과 20184500** 김*호

서울시립대학교 신소재공학과 20184500** 석*창

서울시립대학교 신소재공학과 20184500** 이*서

서울시립대학교 신소재공학과 20184500** 한*창

서론

개발 과제의 개요

개발 과제 요약

본 과제에서는 지하철 내 시각장애인을 위한 실시간 점자 안내판을 제작한다. 제작된 점자 안내판은 모터를 통해 지하철 노선도에 따라 실시간으로 점자판을 표시한다.
지하철 내 벽면에 부착하는 기기이므로 편리하게 이용할 수 있고 비장애인이 보는 노선도처럼 현재 위치까지 파악 가능하므로 시각장애인의 교통상황 파악에 도움이 된다.
현재 지하철 내에는 음성 방송 외에 교통 정보를 안내하는 시스템이 존재하지 않으므로 상기 시스템은 시각장애인 및 교통약자에게 높은 효용가치를 지닌다.

개발 과제의 배경

2023년 현재, 시각 장애인의 지하철 이용은 여전히 많은 어려움이 있는 것으로 나타나고 있습니다. [윤지영 외. “시각장애인 및 저시력자를 위한 버스 도착 안내 어플리케이션”, 한국HCI학회, 856-861. 2018]에 의하면 시각장애인이 이용하는 교통수단을 살펴보면 장애인 콜밴의 이용률이 가장 높으며(31%)  다음으로 지하철/전철(28%)인 것으로 나타납니다. 시각장애인이 대중교통을 이용하기에 불편한 이유는 교통안내가 부족한 점과 거주지에서 버스 정류소 또는 지하철역까지 이동이 어려운 점이 동일하게 17%로 높게 나타납니다. 이 밖에도 지하철역의 편의시설이 충분히 갖춰져 있지 않은 경우가 많습니다. 점자블록이 제대로 설치되어 있지 않거나, 점자 표지판이 표기되어 있지 않아 시각 장애인이 이동하기 어렵습니다. 또한, 지하철 안내방송이 너무 빠르거나, 소음이 심해 시각 장애인이 알아듣기 어렵습니다.
하지만, 최근 들어 시각 장애인을 위한 지하철 이용 편의 개선을 위한 노력이 이어지고 있습니다. 서울교통공사는 지하철역마다 음성유도기를 설치하고, 또 타지하철 앱을 통해 실시간 위치 안내를 제공하고 있습니다. 또한, 카카오맵은 승강장 연단 정보를 음성으로 안내하는 기능을 제공하고 있습니다. 국내에는 NAVIWALK-STICK이 RFID를 적용하여 시각장애인의 보행 및 위치정보를 제공하는 기술로 개발되었으며 RF 지팡이, RF IC TAG, TTS 단말기로 구성되어 있습니다.
이러한 노력에도 불구하고, 시각 장애인이 지하철을 이용하기 위해서는 여전히 많은 개선이 필요합니다. 그 예로, 지하철 내 목적지 및 플랫폼 정보는 시각 장애인에게 음성 안내로만 이뤄지고 소리가 작거나 안내 되지 않는 경우도 있습니다. 철도차량의 소음권고기준 및 검사방법 등에 관한 규정에서는 권고 주행소음 기준 최대 92dB(데시벨)로 규정하고 있습니다. 소음이 심하면 90~100dB 이상으로 시끄러워지기도 하며, 이는 국가소음정보시스템에서 언급하는 난청 증상 발현 구간으로 안내 방송이 들리지 않을 가능성이 충분합니다.
따라서 본 과제를 통해 지하철 내에서도 시각 장애인에게 목적지 및 플랫폼 정보를 원활하게 전달하겠습니다.

개발 과제의 목표 및 내용

◇목표
이동권은 모든 사회에서 평등하게 보장되어야 하는 권리입니다. 특히, 교통 수단을 통한 이동은 모든 시민에게 근본적인 권리이며, 장애인들 또한 이 권리를 무제한으로 행사할 수 있어야 합니다. 이에 따라, 장애인들의 이동권을 보장하고 사회 통합을 촉진하기 위한 기술적인 개선이 필요합니다.
본 과제는 이러한 요구에 부응하기 위해 시행하고자 하는 것으로, 지하철 노선 정보를 지하철 내에 설치하는 장치에 점자로 표현하여 시각에 제약이 있는 사용자들이 정확하고 안전하게 현재 위치와 내릴 역을 파악할 수 있도록 교통정보를 안내합니다. 궁극적으로 이러한 안내를 통해 시각 장애인의 이동권을 보장하고 더 나아가 지하철 외의 교통수단에서도 목적지를 촉각 정보로 제공하는 것을 목표로 합니다.
◇내용
지하철 문 옆 노약자석 방향에 해당기기를 부착하여 시각장애인이 실시간으로 지하철 노선을 알 수 있게 하는 장치입니다.
지하철 자체적으로 실시간으로 전광판에 신호를 주어 정보를 표시하고 있다. 우리도 이를 이용하여 신호를 받으면 점자로 해당 지하철역을 나타내는 점자로 바뀌어서 시각장애인이 편하게 해당 역의 정보를 알 수 있게 합니다.
고무 패드에 각각의 역에 해당하는 점자들을 기입한 뒤에 모터를 이용하여 해당 역의 점자 부분이 노출될 수 있도록 회전시켜서 시각 장애인이 정보를 알 수 있게 합니다. 
아래의 그림은 대략적인 모식도입니다. 

모식도.jpg

자세한 구동방식은 다음과 같습니다.
1) 현재 지하철 차량이 향하는 목적지가 변경되었다는 정보를 획득합니다.
2) 정보 획득 시, 위의 모터가 작동하며 컨베이어 벨트가 돌아갑니다.
3) 사용자에게 노출되는 점자의 내용이 변경되며 목적지에 대한 정보를 표시합니다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황
1) 국내 사례  
◇ 시각장애인용 음성안내기
기존의 시각장애인용 음성안내기의 경우 지하철 열차 내부에 설치되어 있는 것이 아니라 지하철역의 고정된 위치에 정해진 정보를 제공하고 있다. 하지만 지하철 내부에서 실시간으로 변하고 있는 역의 정보를 제공하는 데는 쓰이지 못하고 있다. 또한 음성을 듣기 위한 공용리모컨의 보급이 되지 않고 있다는 문제 또한 있다. 하지만 실시간 점자판을 활용한다면 공용리모컨을 활용할 필요 없이 손으로 점자를 활용하여 지하철 열차 내에서 실시간으로 정보를 얻을 수 있다는 장점이 있다.
◇ 지하철시각장애인 안내도우미
지하철시각장애인 안내도우미의 경우 7시부터 오후 7시까지의 도우미분들의 근무시간이 정해져 있다는 문제점이 있다. 따라서 시각 장애인의 경우 오후 7시 이후에는 도움을 받지 못한다는 문제와 지하철을 이용하기 전에 도우미를 신청하고 기다리는 절차가 필요하기 때문에 시간적인 손해 또한 발생하게 된다. 하지만 실시간 점자판을 활용한다면 도우미를 신청하고 기다리는 절차를 생략하고 혼자서 지하철을 이용하는데 있어 도움이 될 것이며, 시간적 제약없이 지하철을 이용하는데 도움을 얻을 수 있을 것으로 기대된다.

2) 해외 사례 
◇ 일본은 스마트폰 기술과 QR 코드를 결합해 기차역 정보를 전달하는 새로운 내비게이션 시스템을 개발하였다. 티켓 차단기와 플랫폼을 연결하는 곳을 포함하여 중요한 지점에 위치한 포장 블록과 경로가 갈라지거나 계단에 도달하는 구간에서 QR 코드를 삽입하여 시각장애인이 QR 코드 중 하나에 도달하면 휴대폰에서 음성이 재생되어 이전에 입력한 목적지로 안내한다.
또한 일본의 교세라 주식회사는 '스마트 지팡이'를 개발 중이라고 발표했다. 이 개념에는 플랫폼 가장자리나 기차 차량이 연결되는 부분과 같은 특정 지점에 신호 방출기를 설치하는 것이 포함된다. 스마트 지팡이 사용자가 송신기에 접근하면 수신기가 장착된 지팡이에 진동을 일으키고 사용자의 전화기에서 위험에 대해 음성 경고를 발령한다.
  • 선행 특허조사 및 특허분석

선행 특허 조사 결과, 다음과 같은 특허를 확인했다.

시각장애인을 위한 지하철 음성 안내 시스템 법적상태: 취하 출원번호: 1020190094106 출원일자: 2019.08.02.

관련특허사진.jpg

본 발명과 달리 음성 안내 시스템이 아닌 점자 시스템을 이용하였다. 음성 안내 시스템의 경우 지하철 내 추가적인 소음이 발생해 기존 사용자들에게 불편함을 유발한다는 단점이 존재하며 본 발명은 비장애인에게 불편함을 유발하지 않는 점자 전광판을 사용하고, 기존 차량 설비에 추가적인 조치가 필요하지 않은 무선 체계를 사용하여 통신한다.

본 발명은 와이파이와 배터리를 통한 무선 연결로 복잡한 장치가 필요하지 않으며, 점자 스티커를 교체하여 다른 대중교통에 적용 가능해 높은 경제성을 지닌다. 또한 비장애인의 편의성을 해치지 않고 시각장애인의 편의성 증대가 가능하며, 직관적인 인터페이스와 간편한 조작을 통한 점자 안내판 조작하는 방식으로 구동된다.

시장상황에 대한 분석

  • 관련 제품과 비교 분석

◇ 기존 점자 표시기와 비교분석 지하철 차내 점자 전광판을 만들기 위해서는 지하철 역이 바뀔때마다 역에 해당하는 점자를 표시해주는 시스템을 만들어야 한다. 실시간으로 점자를 표시하기 위해서는 여러 방법이 있는데, 대표적으로 솔레노이드나 모터를 이용한 점자 표시기가 있다.

솔레노이드.jpg

솔레노이드, 모터를 이용한 점자 표시기는 실시간으로 점자를 변경할 수 있지만, 그 단점이 확실하다. 점자가 표시되기 위해 모든 점마다 이를 제어하는 모터나 솔레노이드를 부착하고, 전원을 공급받아야 한다는 것이다. 점 6개가 한글의 초성에 해당하기 때문에 일반적인 지하철역 이름을 점자를 이용해서 표시하려면 80개가 넘는 솔레노이드와 이를 구동하기 위한 전력 공급이 필요하고, 이는 지하철 차내에 사용하기에 적합하지 않다. 또한 모듈화되어 제작되는 점자 표시기 특성상 점 하나를 구동하는 솔레노이드가 고장날 경우 장비를 꺼내서 교체해야 해 수리가 어렵고, 고장이 난 부분을 일일이 확인하기 쉽지 않다. 추가로, 솔레노이드를 이용한 점자 표시기의 경우 솔레노이드의 최소 크기 제한으로 인해서 지하철 차내 기둥에 설치할 수 있는 규격에 만족하지 못한다.

따라서 이러한 문제점을 해결하기 위해 본 과제에서 제작하는 <시각장애인을 위한 실시간 점자 안내판>은 지하철 역을 표시하기 위해 점자 스티커를 이용해 현재 역을 표시해주는 시스템을 적용한다. 본 제품에서 제작하는 프로토타입은 총 26개의 역을 나타내며, 각 역이 점자 스티커를 이용해 제작되고 스텝모터를 이용해 현재 역에 해당하는 점자스티커가 나타난다.

점자 스티커를 이용하면 현재 역을 표시하는 과정에서 모터에 대한 전원 공급을 제외하면 추가 전원이 필요하지 않으며, 모든 점을 직접 제어하는 방식이 아니므로 고장의 위험도 적을뿐더러 가격도 저렴하다.

개발과제의 기대효과

기술적 기대효과

◇ 지하철 내 시각장애인을 위한 IoT 기술 활성화
본 과제에서 사용하는 <시각장애인을 위한 실시간 점자 안내판>은 무선연결을 이용하여 지하철역에 대한 정보를 제공한다. 이러한 무선 연결은 향후 시각장애인을 위한 역사 내 IoT 기술로도 연결될 수 있다. 현재 지하철역에서 시각장애인의 편의성을 돕기 위한 점자유도블럭과 음향신호기는 훼손된 부분이 많으며, 이를 위해서는 지속적인 유지보수와 관리가 필요한 상황이다. <시각장애인을 위한 실시간 점자 안내판>을 중심으로 시각장애인을 위한 편의시설이 IoT 서비스를 통해 연결되고, 통합되어 관리된다면 시각장애인들이 서비스를 이용하기 편리해 질뿐더러 관리와 유지보수의 편의성 또한 증대될 수 있다.
◇ 시각장애인의 청력 보호
시각장애인은 비장애인보다 청각을 많이 활용하기 때문에 청각기관의 노화도 빨리 진행된다. 열차 이용시에도 목적지에 대한 안내방송에 집중하기 위해 청각을 많이 이용하므로 장기적으로 봤을 때 시각장애인의 청각기관의 노화에 영향을 주는 것은 분명하다. 상기 시스템을 도입한다면 시각장애인과 저청력자들이 청력에만 의존하지 않고 점자를 통해 이동방향을 파악해 시각장애인의 청력 보호에 기여할 수 있다.
◇ 정보의 효율적 전달
실시간 점자 안내판은 지하철의 역 상황에 대한 정보를 장애인들에게 신속하고 정확하게 전달할 수 있게 한다. 이를 통해 시각장애인들과 저청력자들의 이동의 편의성을 증대시킬 수 있다.
◇ 정보 전달에 대한 정확도 향상
실시간 점자 안내판의 구동 방식은 지하철 안내방송을 제어하는 기관사의 제어에 따라 저장된 데이터 중 이번 역에 해당하는 데이터가 현시되는 방식이다. 이는 일반적인 지하철 차내 전광판의 구동 방식과 동일한 구동 방식이다. 기관사가 직접 제어하기 때문에 gps 기반으로 역의 위치를 결정하는 방식이 가지는 불안정성에 대한 부분을 해소하고, 높은 정확도로 시각장애인들에게 정보를 제공할 수 있다.

경제적, 사회적 기대 및 파급효과

◇ 지하철 관련 민원 개선
시각장애인에게 지하철 이용의 가장 큰 어려움은 소음이다. 전동차가 주행할 때 발생하는 풍절음과 하체 소음이 60~70dB에 달해 역의 안내방송이 제대로 들리지 않는 문제점이 있다. 이로 인해 시각장애인들은 안내방송 소리를 키워달라며 민원을 넣는다. 하지만 방송 소리가 크면 싫어하는 승객이 있다는 이유로 민원이 거절당하는 사례도 많다. <시각장애인을 위한 실시간 점자 안내판>이 도입된다면 관련 민원을 해결해 안내 방송의 소리를 키우지 않고도 시각장애인의 편의성을 증대시킬 수 있다.
◇ 사회적 통합 및 평등 강화
실시간 점자 안내판이 도입되면 시각장애인 및 저청력자들이 대중교통을 더 쉽게 이용할 수 있게 되어 일상생활에서의 활동이 증가할 것이다. 이로 인해 시각장애인 및 저청력자들의 사회 참여를 촉진할 수 있고, 평등한 기회를 제공함으로써 사회적 통합을 강화할 수 있다.
◇ 다양한 이용자의 편의 제공
시각장애인을 위한 실시간 점자 안내판이 도입된다면, 시각장애인들의 편의성이 늘어남과 동시에 다양성에 대한 고려가 늘어날 수 있다. 이를 통해 시각장애인 뿐 아니라 청각장애인, 거동이 불편한 노약자 등 다양한 사람들에게 더 많은 편의를 제공하고, 광범위한 이용자 층을 확보하는 데 도움이 될 것이다.
◇ 수요 증가와 산업 활성화
시각장애인을 위한 점자 안내판과 관련된 산업은 현재 활성화되지 않은 상황이며, 해당 분야에 대한 투자나 연구는 활발하게 진행되지 않고 있다. 이러한 시스템이 지하철 내에 도입된다면 관련 연구와 투자를 촉진하고, 시각장애인을 위한 편의 서비스에 대한 산업이 활성화되는 데 기여할 것이다.
◇ 사회적 책임 강화 및 지역 발전
공공시설에 시각장애인을 위한 점자 안내판을 도입하면, 사회적 책임을 강조하는 좋은 예시가 될 수 있다. 장애인의 편의성을 증대시키는 서비스를 도입해 지하철을 이용하는 고객들에게 긍정적인 인상을 남길 수 있으며, 이를 통해서 다른 기업들도 사회적 책임을 강화하기 위해 추가적인 상황을 모색하는 기회가 될 수 있다. 또한, 공공 시설에 장애인을 위한 시스템을 갖추면 이는 향후 지속 가능성에 도움이 되고, 지역에 대한 이미지에 긍정적으로 작용할 수 있다.

기술개발 일정 및 추진체계

개발 일정

개발일정2.jpg

구성원 및 추진체계

구성원및추진체계1.jpg

설계

설계사양

제품의 요구사항

제품요구사항.jpg

설계 사양

◇ 경제성 컨베이어 벨트 형식은 기존에 생각했던 다른 방식들에 비해, 벨트형식은 벨트의 형태를 유지하기만 하면 되는 소재를 사용하면 되기 때문에 벨트형식의 점자판이 경제성이 좋으리라 생각한다.

◇ 정확성

컨베이어 벨트 형식의 점자판의 경우, 시스템 복잡성이 높은 것이 아니고, 계속 바뀌는 반지름으로 인한 높은 난이도의 코딩을 해야 하는 것이 아니기 때문에 기존에 생각했던 여러가지 아이디어 중 가장 정확성이 높을 것으로 판단하였다.

◇ 안정성&내구성 컨베이어 벨트 형식은 손이 끼이는 등의 안전사고 가능성이 있지만, 모터의 속도 조절과 안전장치의 설치를 통해 안정성을 높여 사고를 방지할 수 있다.

◇ 편의성 컨베이어 벨트 형식은 집적도 문제와 그로 인한 편의성 문제는 발생하지 않지만, 이 장치를 설치하면서 시각 장애인이 아닌 승객들의 편의성을 조금 해칠 수도 있다. 다만, 장치의 부피를 최대한 작게 제작하고 장치의 설치 위치 조정을 통해 편의성을 개선할 수 있을 것이다.

개념설계안

◇ <구간설정 및 가장 긴 역 이름>

개념설계안사진1.jpg

점자판으로 표시할 구간을 1호선의 독산~평택지제로 지정한다. 이는 일반적인 지하철, 급행, 옆으로 빠지는 역을 모두 점자판을 이용하여 표현할 수 있게 하기 위함이다. 이들 중 점자판 기준으로 가장 이름이 긴 성균관대역을 기준으로 점자판 제작한다.

◇ <컨베이어 벨트 원리를 참고한 점자판>

개념설계안사진2.jpg

미리 지하철역 이름이 점자로 표시된 판을 제작하고, 그 판을 두 개의 원기둥을 이용해서 컨베이어 벨트처럼 펴준다. 한 개의 원기둥을 모터에 연결해서 모터를 이용해 원기둥을 회전시켜준다. 원기둥이 회전할 때 점자판이 돌아간다. 점자판을 박스 안에 넣고 역을 표시해주는 칸을 위해 구멍을 뚫어주고 원하는 역에 해당하는 점자판을 구멍에 위치시킨다. 즉, 한 개의 모터만 조절해서 원하는 역 점자를 구멍에 위치시켜 실시간으로 역을 알려주는 점자판을 만든다. 대략적인 규격은 그림에서 표현한 것과 같다.

◇ <지하철역 지정을 위한 UI>

개념설계안사진3.jpg

그림과 같이 출발역과 도착역을 지정하고 출발 버튼을 누르게 되면 설정이 완료되고 지하철 역들의 이름이 나열되며 프로그램이 실행된다. 지하철 모양의 그림이 현재 지하철의 위치를 나타내고 있고, 이전 역이 파란색으로 표시되며 다음 역이 빨간색으로 표시된다. 다음 역 버튼을 누르면 지하철의 위치가 다음 위치로 바뀌게 되며 이전 역과 다음 역의 표시가 이에 맞게 바뀐다.
이러한 UI를 이용하여 일반 지하철과 급행, 그리고 어디를 향해 가는 지하철인지를 모두 고려하여 역을 지정할 수 있으며 이전 역과 다음 역, 현재 지하철 위치를 표시함으로써 UI사용자(기관사)의 사용의 편의성을 고려하였다.

◇ <무선 모듈 및 최종 제품 설계>

개념설계안사진4.jpg

지하철 벽면에 부착만 하면 바로 사용 가능할 수 있도록 무선 모듈(와이파이)을 이용하여 설계한다. 와이파이의 경우 현재 지하철에서 지원하는 와이파이를 이용한다. 전력공급 역시 선 형태로 노트북에서 공급하는 형태가 아닌 휴대용 외부전원을 이용하여 공급하도록 한다.

점자판을 표시하는 주요 기기와 모터, 아두이노 보드, 드라이버, 외부전원, 브레드보드을 설치할 수 있는 박스 형태의 기기를 그림과 같이 제작한다. 점자판 기기는 박스의 아래쪽 부분에 배치하고, 나머지 기기들은 박스의 위쪽 부분에 배치한다.

이론적 계산 및 시뮬레이션

[Python 코드]

 python 코드의 핵심 요소는 역 표시 알고리즘, 역 이동 알고리즘, Wi-Fi를 통한 아두이노와의 통신이다.
 

1) 역 표시 알고리즘 def gogo():

   global station,station_num, next_station, now_station
   
   # 초기화
   station_num = 1
   for widget in frame_up.winfo_children():
       widget.destroy()
   # Station 목록 생성
   str_station = cbx_str.get()
   end_station = cbx_end.get()
   # 조건에 따라 역 목록 불러오기
   if end_index > -1 and str_index > -1: # 일반노선에 대해    
       # 다른라인: 충청 출발 경기북부 도착
       if str_station in station_3 and  end_station in station_1:
           station = station_3[station_3.index(str_station)::-1] 
           + list(reversed(station_1[end_index:]))
       
       # 다른 라인: 경기 출발 충청 도착
       elif str_station in station_1 and end_station in station_3: 
           station = station_1[str_index:] 
           + station_3[:station_3.index(end_station)] 
           + [station_3[station_3.index(end_station)]]
                         
       else: # OG station 내에서 이어져 있는 라인 (같은 라인, 인천~경기 북부 라인)
           if end_index < str_index: # 상행
               station = OG_station[str_index:end_index:-1] + [OG_station[end_index]]
           else: # 하행
               station = OG_station[str_index:end_index] + [OG_station[end_index]]

# 이후 급행, 특급에 따른 역 불러오기 코드

   now_station = station[0]
   if next_station != "":
       parameter = OG_station.index(next_station) - OG_station.index(now_station)
       sock.sendall(f"{parameter}\n".encode())
   next_station = station[1]
   parameter = OG_station.index(now_station) - OG_station.index(next_station)
   sock.sendall(f"{parameter}\n".encode())
 GUI에서 선택한 지하철의 출발역과 도착역 정보를 받으면, 해당된 역 list를 바탕으로 GUI에 역 리스트를 표시한다. 이 과정에서 기존에 진행 중이던 역이 있을 시 모터를 현재 출발역으로 돌리고, 역의 표시와 동시에 지하철 출발로 인식하여 이동을 진행한다.

2) 역 이동 알고리즘 def drive():

   global station, station_num, next_station, now_station
   i = station_num
   if i == len(station) - 1:
       return
   if i != len(station)-1: #끝까지 다 안했다면
       globals()[f"label_{i}"].config(font=start_font) # (구)다음역 -> (현) 지금역
       globals()[f"label_{i+1}"].config(font=arrive_font) # (구)다다음역 -> (현) 다음역
       globals()[f"label_{i}"].config(fg = "#5a64f6") # (구)다음역 -> (현) 지금역
       globals()[f"label_{i+1}"].config(fg = "#ff4d4d") # (구)다다음역 -> (현) 다음역
       globals()[f"arrow_{i+1}"].config(text="🚇")
       globals()[f"arrow_{i+1}"].config(font=subway_font)
       
       globals()[f"arrow_{i}"].config(text="➡")
       globals()[f"arrow_{i}"].config(font=arrow_font)
       
       globals()[f"label_{i-1}"].config(font=button_font) # (구)현재역 -> (현) 이전역
       globals()[f"label_{i-1}"].config(fg = "black") # (구)현재역 -> (현) 이전역
       now_station = station[i]
       next_station = station[i+1]
       parameter = OG_station.index(now_station) - OG_station.index(next_station) 
       sock.sendall(f"{parameter}\n".encode())
   station_num += 1
 GUI의 "다음 역" 버튼을 누르면 GUI에 표시된 Label의 색을 바꾸고 지하철 아이콘을 이동 시켜 다음 역, 현재 역, 지하철 위치를 표시한다. 또한 현재역과 다음역의 OG_station(=점자판에서의 역 순서 위치) index를 찾아 이동할 step을 아두이노로 전달한다.

3) Wi-Fi를 통한 아두이노와의 통신

esp8266_ip = "192.168.145.70" esp8266_port = 80 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((esp8266_ip, esp8266_port))

 socket 라이브러리를 통해 Wi-Fi와 통신한다. 이때 연결할 IP의 설정은 아두이노를 통해 확인한다. 데이터의 전달은 역 이동, 표시 알고리즘에서 있던 sock.sendall(f {parameter}\n".encode())를 통해서 전달한다.

[Arduino 코드]

 Wi-Fi 연결과 모터 구동을 위한 코드에 대해 각 부분 별로 나눠서 다음과 같이 설명을 할 수 있습니다.

1) 라이브러리 및 상수 선언

  1. include <ESP8266WiFi.h>
  2. include <AccelStepper.h>

// Wi-Fi 구동 상수 설정 const char *ssid = "AndroidHotspot4506"; const char *password = "qwerty123456"; const int serverPort = 80;

// 스텝모터 구동 상수 설정 const int en = D2; // Enable 핀 const int step = D3; // Step 핀 const int dir = D4; // Direction 핀

AccelStepper stepper(AccelStepper::DRIVER, step, dir);

 ESP8266와 AccelStepper 라이브러리를 사용하기 위한 헤더 파일을 포함하고, Wi-Fi 연결 및 서보 모터 제어를 위한 변수 및 상수를 선언합니다.

2) setup 함수 설정 WiFiServer server(serverPort);

void setup() {

 Serial.begin(115200);  
 WiFi.begin(ssid, password);   // 와이파이 연결
 pinMode(LED_BUILTIN, OUTPUT); // 우노 보드 내장 LED 설정
 while (WiFi.status() != WL_CONNECTED) { // 와이파이 미연결 시, 연결 중일 때
   digitalWrite(LED_BUILTIN, HIGH); // 우노 보드 LED 점멸
   delay(250);
   digitalWrite(LED_BUILTIN, LOW);
   delay(250);
 }
 Serial.println("Connected to WiFi");
 Serial.println(WiFi.localIP());
 server.begin();
 // 각 핀을 출력 모드로 설정
 pinMode(en, OUTPUT);
 digitalWrite(en, LOW); 
 stepper.setMaxSpeed(1000);  // 최대 속도 설정 (스텝/초)
 stepper.setAcceleration(500);  // 가속도 설정 (스텝/초^2)
 stepper.moveTo(0);  // 초기 위치 설정

}

 setup 함수에서는 시리얼 통신을 시작하고, LED 핀을 출력으로 설정하며, Wi-Fi에 연결하고 서버를 시작한다. 이때 Wi-Fi 연결 완료 상태를 확인하기 위해 LED를 점멸한다. Wi-Fi 연결 완료 시 로컬 IP를 출력하고 서버를 시작한다. 또한, 스텝 모터를 제어하기 위한 핀 및 가속도, 최대 속도 등의 초기 설정을 수행한다.

2) loop 함수 설정 void loop() {

 WiFiClient client = server.available();
 if (client) {
   Serial.println("Client connected"); // 클라이언트 연결 확인
   // Read the data from the client
   while (client.connected()) {
     if (client.available()) { // 파이썬에서 클라이언트로 보낸 신호 확인
       delay(1000);        
       int step_count = client.parseInt(); // 클라이언트에서 보낸 신호 정수로 받기
       Serial.println(step_count);
       if (step_count != 0) {
         // 모터를 지정된 스텝 수만큼 이동
         stepper.moveTo(stepper.currentPosition() + (step_count * 100));
         // 이동이 완료될 때까지 대기
         while (stepper.isRunning()) {
           stepper.run();
         }
       }
     }
   } 
 }

}

 loop 함수에서는 클라이언트의 연결을 확인하고, 클라이언트로부터 수신된 데이터를 읽어들여 스텝 모터를 제어한다. 클라이언트가 연결되면 데이터를 읽어들이고, 클라이언트로부터 수신된 데이터를 처리하여 스텝 모터를 움직인다. 클라이언트로부터 전달된 스텝 수를 읽어들여, 스텝 모터를 해당 스텝 수만큼 이동하도록 설정하고 이동이 완료될 때까지 대기한다.




[점자 1칸의 Step 수 calibration]

이론적 계산 사진.jpg

1step당 angle θ= step angle * microstep = 1.8° * 1/4 = 0.45° 1step당 움직이는 길이 l = 2πr*θ/360 = 2*3.14*20*0.45/360 = 0.157mm 벨트의 전체 길이 = 590mm 역 한 칸을 이동하기 위한 step = 전체 길이 / 역 개수 / l = 590 / 24 / 0.157 = 157 step

기기의 오차를 감안하였을 때 이론적 값을 토대로 실제로 기기를 구동해보며 step을 조절하였고, 한 칸을 이동하기 위한 step수로 147 step을 얻었다.

상세설계 내용

상세설계사진1.jpg 상세설계사진2.jpg 상세설계사진3.jpg 상세설계사진4.jpg

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

섬네일을 만드는 중 오류 발생: convert: Image width exceeds user limit in IHDR `/var/www/capstone/mse/images/4/4a/1.png' @ warning/png.c/MagickPNGWarningHandler/1672.
convert: Image height exceeds user limit in IHDR `/var/www/capstone/mse/images/4/4a/1.png' @ warning/png.c/MagickPNGWarningHandler/1672.
convert: Invalid IHDR data `/var/www/capstone/mse/images/4/4a/1.png' @ error/png.c/MagickPNGErrorHandler/1646.
convert: corrupt image `/var/www/capstone/mse/images/4/4a/1.png' @ error/png.c/ReadPNGImage/4095.
convert: no images defined `/tmp/transform_c5c1daaf367c.png' @ error/convert.c/ConvertImageCommand/3210.

Error code: 1
기기의 사진
지하철 부착 사진

포스터

4.png

관련사업비 내역서

물품검사(수)내역서
활동비 지출내역
회의비 지출내역

완료작품의 평가

7.png


1. 초기 과제의 목표를 달성하였는가?

1) 노선 정보를 점자 형태로 정확하고 안전한 정보 전달
점자 스티커와 스텝 모터의 정확한 제어를 통해 노선 정보를 점자 형식으로 정확히 전달하도록 하였다. 또한, 점자 개구부 크기를 적절히 조절하고 점자 변환 속도를 적절하게 조정함으로써 정확하고 안전한 정보 전달이 가능하도록 하였다.
2) 현재 위치와 내릴 역 파악
기관사의 간편한 조작을 통해 무선으로 모터를 제어하여, 기기 이용자가 현재 위치와 내릴 역을 손쉽게 파악할 수 있도록 하였다. 
3) 추가적인 개선사항
기존의 차량을 개조하지 않고도 즉각적으로 설치하여 사용할수 있게끔 제작하였다.
LED를 통해 WIFI 및 전원 작동 여부를 확인 가능하도록 하였다. 
이용자들이 개구부 위치를 쉽게 파악할 수 있도록 안내선을 설치하였다.

최종적으로 시각장애인의 이동권 보장이라는 초기 목표를 충분히 달성하였다.


2. 프로토 타입이 과제를 잘 나타내는가?

점자형식으로 역을 표시하는데 있어 240개의 역을 지나면 1mm 정도의 오차가 발생하는 것을 확인하였지만, 이는 실제 지하철을 운용하는 것을 고려하였을 때, 가장 긴 구간을 지나도 100개의 역도 채 되지 않기 때문에 실사용하는데 있어서는 아무 문제가 없을 것이라 판단하였다. 또한, WIFI 모듈을 통한 무선 통신에 있어도 아무 문제가 발생하지 않았다. 이를 통해 복잡한 지하철 노선, 급행 여부를 모두 오차 없이 나타낼 수 있고 이용자에게 있어 정확하고 안전한 정보 전달이 가능하다.

3. 심미성이 좋은가?

제작한 프로토타입의 경우 내부를 보여주기 위하여 전면부를 아크릴로 제작하였는데, 이 과정에서 비용문제로 아크릴을 판을 여러 개를 부착하여 제작하였다. 심미성 부분에서 약간 심미성이 부족하다고 판단하였다. 다만 실제 제품의 경우 아크릴판을 사용하지 않고 깔끔하게 제작할 수 있기 때문에 심미성을 더욱 향상시킬 수 있을 것이다. 

4. 보는이가 과제를 한눈에 이해할 수 있는가?

프로토타입의 전면부를 아크릴로 제작하였기 때문에 작동하는 것을 한눈에 잘 파악할 수 있다. 또한, 내부에 점자가 적혀있다는 게 바로 보이며, 점자 아래에 이 점자가 무슨 역을 나타내는지를 표시하였기 때문에 무슨 용도인지 바로 파악할 수 있다.

5. 조원 모두가 참여하였는가?

조원 모두가 맡은 분야에 있어 각자 성실하게 최선을 다하였다.

향후계획

해당 프로젝트를 통해 제작한 [시각장애인을 위한 실시간 점자 안내판]을 실제로 적용해보기 위해, 도로교통공사와 철도 관련 기업에 사회공헌활동 목적으로 문의 메일과 시민참여 아이디어에 해당 프로젝트의 내용을 게시했다.

향후계획사진1.jpg

문의 결과, 한국철도공사의 경우 현재 보여지는 출입문 주변에 설치되는 점자판 설비가 고객의 동선에 지장을 주고, 철도 안전 관리체계 관련 추가 연구가 필요한 점, 철도연구원에서 교통약자에 대한 프로젝트를 시행하고 있는 것을 고려할 때 반영이 어렵다는 답변을 받았다. 이 외에도 현대로템, 다원시스, 우진산전 등 철도 장비 관련 기업 및 시각장애인 관련 업체와 연락해 사회 기여활동을 할 수 있는 방안을 알아볼 계획이다.

향후계획사진2.jpg

특허 출원 내용

내용