Career/Barrier Free Application Development

기능: 근접 알림 센서 (4단계)

김 정 환 2020. 4. 1. 17:06
반응형
근접 알림 센서의 필요성

초기 설계에서 외부 무선 카메라와 핸드폰을 연결하기로 했습니다. 그래서 사용자가 보행할 때 핸드폰은 주머니에 넣고 카메라를 목걸이 또는 브로치 형태로 외부에 놓기로 했습니다. 그런데 구매한 여러 무선 카메라들이 각 회사마다 독립적인 모듈을 사용하여서 저희 어플로 이용할 수 없게 되었습니다. 그래서 근접 알림 센서를 도입했습니다. 근접 알림 센서로 근방 10미터의 볼라드 개수를 사용자에게 알려주면 핸드폰을 꺼내어서 카메라로 볼라드를 인식하는 과정으로 바꾸었습니다. 

 

나중에 알게 된 사실이 있습니다. Raspberry PI camera 를 이용할 수 있다는 정보였습니다. 그러나, Raspberry PI Camera에 설정하고, 핸드폰과 통신하고, 어플에 탑재해야되는 많은 과정이 필요해서 하지 못했습니다. 그리고 비용이 5만원 이상이었습니다. 기술적인 시연은 가능했지만, 사용자에게 구매하라고 하기에는 부담이었습니다. (물론, 공장에서 싸게 만들면 될 수도 있었겠다.)

 

 

근접 알림 센서

근처에 볼라드 위치를 알기 위해서, 가장 먼저 해야할 일은 볼라드의 위치를 저장하는 일 입니다. 그러기 위해서 저희는 Firebase를 이용하여 볼라드의 위도, 경도 값을 저장했습니다. 그리고 이 함수를 DetectorActiviy.java (TensorflowYOLO)에 넣어줍니다. 그러면 카메라에서 볼라드가 감지되면, 그 위치가 firebase에 추가됩니다.

 

현재 아래는 GPSService.java입니다. 백그라운드에서 돌아가는 상태입니다. 우선 firebase에서 볼라드 위치를 가져와서 bollref에 저장합니다. 그리고 bollref.addListenerForSingleValueEvent로 볼라드 개수를 셉니다. 하지만, 근처 10m 내에 있는 볼라드를 세어야 하기 때문에 distanceCalculate() [자체 제작]를 이용합니다. 그리고 진동 또는 음성으로 근처에 볼라드를 사용자에게 알려줍니다. 

(지금 코드를 다시 보니 setting 인스턴스를 생성해서 static으로 저장된 값을 불러오고 있습니다. 초보 때 짜본 코드라서 부족한 부분이 눈에 띕니다.)

근접 알림 코드

 

근접 알림을 매번 울리기는 사용자에게 불편할 수 있습니다. 따라서 1번 울리고 난 10초 뒤에 볼라드가 있으면 다시 알림이 울리도록 했습니다. Timer.schedule()을 이용했습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형