[44호]wearable 신발 : 뚜벅앱
2017 ICT 융합 프로젝트 공모전 입선작
wearable 신발 : 뚜벅앱
글 | 고려대학교 양해찬, 원준현
심사평
칩센 Health-care와 Navigation을 융합한 작품으로 생각됩니다. 이미 상용화되어 있는 솔루션을 활용하여 새로운 제품에 적용하는 것은 가장 쉬워 보이지만, 그 틈을 찾아 활용성을 만들어내는 것이 쉬운 일이 아닌데 좋은 기획을 한 것으로 보입니다. 걸음수와 같은 health-care에 대해서는 걸음수 등에 대한 패턴 파악이 가장 중요하며, 그 부분은 알려진 알고리즘이 많긴 하지만 적절한 것을 찾아 적용하는 것이 필요합니다. 작품은 신발 바닥에 포함하는 방식을 고려하였으나, 단독 제품으로서의 활용도를 위해서는 별도 액세서리로 신발에 부착하는 방식도 고려해 볼 필요가 있을 것으로 보입니다.
뉴티씨 모든 사람들의 불편함을 해결하는 노력이 엿보였습니다.
위드로봇 GPS만으로 서비스를 할 때와 비교하여 걸음수 데이터가 얼마나 유용했는지 비교 평가한 내용이 들어가면 더욱 좋을 것 같습니다.
작품 개요
사용 대상 : 모르는 길을 찾아갈 때 휴대폰의 지도를 찾아보며 목적지를 찾아가는 사람들 및 시각 장애인
배경 : 현재 도시의 도로는 상당히 빠르게 변하고 있으며 이미 알고 있는 장소가 아니면 쉽게 찾아가기 힘들다. 그로 인해 핸드폰을 보며 찾아가는 사람들은 교통사고의 위험에 노출되어 있다.
그래서 우리는 위의 사람들에게 도움을 주고자 아이디어를 내었다.
예상 효과 및 활용 방안 : 일반 사람의 경우, 앞을 보고 걸을 수 있기 때문에 교통사고의 위험에서 벗어날 수 있다.
작품 설명
주요 동작 및 특징
사용자가 어플리케이션에서 몸무게, 목적지를 설정하면 네이버 지도 API를 이용하여 경로, 방향 데이터를 가져온다. 가져온 데이터를 어플리케이션에서 하드웨어의 블루투스로 전송하고 블루투스와 MCU 간 USART 통신을 이용하여 MCU로 가져온다. 하드웨어에선 그 데이터에 맞게 진동모터를 울려주고, 목적지 근처 일정 반경 안에 들어오게 되면 PWM 제어를 이용해 진동모터의 진동 세기를 증가시켜 사용자에게 목적지 주변에 왔다는 것을 인식하게 한다. 부가적인 기능으로 가속도 센서를 이용해 사용자가 목적지를 찾아가는 동안 걸은 걸음 수를 측정하고, 검출한 걸음 수로 소비한 칼로리를 계산할 수 있게 하였다.
1. 스마트폰에서 목적지와 정보 입력
2. 네이버 지도 API를 이용하여 목적지까지의 경로를 받음.
3. 받아온 목적지까지의 경로 데이터의 좌표(네이버 표준 좌표계)를 자체 제작 API (문서 하단에 설명)을 이용해 안드로이드에서 사용하는 위경도 좌표계로 변환.
4. 스마트폰 나침반을 이용해 사용자의 현재 방향과 이동해야 할 방향 을 측정
5. 스마트폰에서 Bluetooth로, Bluetooth에서 USART통신으로 MCU로 방향, 경로 데이터 전송
6. 데이터에 맞게 진동모터를 울려준다.
7. 목적지에 도착 했을 때, 측정한 걸음 수와 소모한 칼로리를 계산
8. Bluetooth 통신으로 신발에서 스마트폰으로 걸음 수, 칼로리 데이터 전송
전체 시스템 구성
USART와 I2C 통신이 가능한 ARM CORTEX-M3 프로세서와 진동모터, 3축 가속도 센서를 이용하여 회로를 구성하였다.
전체적인 시스템을 < 그림 2 >로 나타내었다.
어플리케이션에서 목적지와 사용자 몸무게 등, 정보를 받으면 그 정보를 서버의 데이터베이스에 저장한다. 경로와 방향 데이터를 받아오면 어플리케이션과 MCU 간 블루투스 와 USART통신으로 데이터를 받아오고 가속도 센서와 MCU 간 I2C 통신을 이용하여 가속도 센서 측정값을 받아와 저장한다.
그리고 가속도 센서 데이터를 이용하여 걸음 수를 측정하고 소모한 칼로리를 계산한다.
안드로이드 앱
도보 길찾기 서비스를 제공하기 위해, 안드로이드 앱을 제작하였다. 앱의 주 기능으로는 칼로리 소모 측정을 위한 사용자 정보(몸무게) 입력, 네이버 지도 API를 이용한 장소 검색 및 목적지까지의 도보 경로 검색, 이동 중 사용자의 현재 위치와 방향을 이용하여 현재 위치에서 목적지의 방향 검출 및 하드웨어(신발)에 전송, 하드웨어(신발)에서 보내는 걸음 수 데이터 처리 기능이 있다.
네이버 지도 API 파싱 및 분석
장소 검색, 도보 경로 검색을 위해 네이버 지도 API를 사용하였다. 이 API는 안드로이드에서 바로 사용할 수 있도록 문서화가 되어있지 않으므로, 직접 서버에 정보를 요청하는 과정을 파싱하였다. (모바일 iOS)
1. 장소 검색요청 URL : http://api2.map.naver.com/api2/searchAllExt.nhn, Request(Get Parameter), Response(body – XML)
2. 도보 경로 검색요청 URL : http://api2.map.naver.com/route/findWalkRoute.nhn, Request(Get Parameter), Response(body – JSON)
각각의 요청을 포맷에 맞게 안드로이드에서 작동할 수 있도록 코드를 작성 하였으며, 문서 하단 (7번) 에 일부 소스 코드를 기재하였다.
사용자 정보 입력 화면
사용자로부터 몸무게를 입력받는 확인이다. 몸무게를 입력하고 “입력” 버튼을 누르면 메인 화면으로 이동한다.
메인 화면
메인 화면으로, 현재 위치 및 신발 블루투스 연결 상태를 확인할 수 있다. “장소 검색”을 눌러 위치 검색 화면으로, “현재 위치 보기”를 눌러 현재 위치 지도를 보여주는 화면으로 이동한다.
위치 검색 화면
(네이버 지도 API 파싱 및 분석) 란에 기재한 API를 이용하여 입력한 키워드로 검색 후, listview를 이용해 사용자에게 표시한다.
원하는 위치를 선택하면 현재 위치와 원하는 위치를 이용하여 도보 경로를 검색한 후, 경로 안내 화면으로 이동한다.
좌표계 변환 API 시스템
받아온 목적지까지의 경로 데이터의 좌표(네이버 표준 좌표계)를 자체 제작 API 을 이용해 안드로이드에서 사용하는 위경도 좌표계로 변환한다.
API 사용 예제
서버 주소 : https://transcoords.live2skull.net
HTTP Get, Post 요청을 통해 변환할 좌표를 입력한다.
요청 예제 Python 코드 :
변환 결과 :
파라메터 리스트 :
형식 리스트 :** 형식 이름 // 형식 번호 (이 번호를 사용한다.)
개발 환경
하드웨어
· MCU: ARM-Cortex M3
· Tool: IAR Embedded Workbench
· Language: C/C++
소프트웨어
· Tool: Android Studio, Webstorm IDE
· Graphic: Photoshop
· Language: Node-js, MySql(server), Angular-js, bootstrap(client), Java(Android)
· Tool: Visual Studio (2015)
· Language: C# (DuraMap-Xr.dll)을 이용한 좌표계 변환 프로그램
단계별 제작 과정
하드웨어 회로 구성
1. ARM Cortex M3 구성
· 블루투스 모듈에 UART1을 사용하기 위해 Tx(A9), Rx(A10) 핀 이용
· 가속도 센서를 사용하기 위해 I2C1 – SCL(B6), SDA(B7) 핀 이용
· TIMER3의 Channel 1 – 4 까지 각각 (A6) (A7) (B0) (B1) 핀 이용
2. 블루투스 모듈 -HC06 (Datasheet 참조)
(1) Bluetooth Tx -> MCU Rx(A10)에 연결
(2) Bluetooth Rx -> MCU Tx(A9)에 연결
3. 진동모터
(1) PWM 사용을 위해 MCU에 할당된 Timer 핀을 이용
(2) 각각 Timer 3의 Channel 1 (A6), Channel 2 (A7), Channel 3 (B0), Channel 4 (B1) 핀 이용
4. 6축 자이로 가속도 센서 MPU6050
(1) MCU와의 I2C통신을 위해 MCU의 I2C1 – SCL (B6), SDA (B7) 핀 이용
5. 부가적인 부품들 (트랜지스터, 저항 330옴, LED)
트렌지스터 : PWM 제어에 사용
저항 : PWM 제어, LED 제어에 사용
LED : 제대로 전압이 흐르는지 확인하기 위해 사용
참고문헌
· 안드로이드 앱 프로그래밍
· ARM Cortex-M3 시스템 프로그래밍 완전정복 1, 2
부품목록
소스코드
Java – 네이버 API 도보 경로 검색
Java – 네이버 API 위치 검색
Java – 좌표계 변환 API 서비스 연동
좌표계 변환 API 서비스
C# 프로그램 – 네이버 좌표계 / UTM-K(GRS80 타원체) 간 상호변환
C# 프로그램 – 좌표현환 DruaMap-xr.dll 초기화 및 설정
C# 프로그램 – 좌표계 변환
NodeJS – 좌표 변환 프로그램 실행 및 결과값 전달 모듈
회로도