검색결과 리스트
글



저희는 인체 감지 알림 서비스를 통해 고독사와 실종사건에 사전 예방 및 안정 서비스를 제공함으로서 독거노인의 고독사나 실종을 예방하는 것에 목적을 두고 있습니다.

다음은 저희 작품에 대해 설명하겠습니다. 저희는 인체감지센서가 연동되는 애플리케이션을 제작하려 합니다. 처음에는 gps를 이용하여 사용자의 위치를 지인에게 전송하는 애플리케이션을 제작할 예정이었으나 사용자의 화장실 같은 집의 내부에 장치를 부착하자는 방향으로 변경되어 gps가 필요하지 않게 되었습니다. 그래서 저희는 아두이노에 부착된 초음파 센서를 통해 일정 시간 움직임이 없는 상황이 발생하거나 집안 내에서 장시간 적외선이 감지가 안될 시에 주변 지인이나 독거 노인 관리 담당자에게 알림 전송하는 애플리케이션을 만들려고 합니다. 상세 설명을 하자면 아두이노에서 측정한 초음파 센서값을 라즈베리파이의 데이터베이스에 저장하게 합니다. 그 후 라즈베리파이와 애플리케이션을 연동하여 라즈베리파이에 있는 데이터 값을 애플리케이션에 전달하게 하여 특정 시간 움직임이 없을 시 독거노인 관리 담당자 및 지인에게 푸시알림이 전송되게 합니다.
(인체 감지 센서를 초음파센서로 바꾸게 된 이유는 인체감지센서의 반응속도가 너무 느리고 불규칙적인 점을 보안하는 방법으로 거리를 측정하는 초음파 센서를 택하였습니다.)
(와이파이모듈의 웹서버 구축을 제외하고 라즈베리파이라 서버를 통해 DB에 저장하고 안드로이드 스튜디오로 DB에 저장된 값을 파싱해와 푸시알림을 보내기 위함입니다.)

다음은 팀원 역할 분담에 대해서 말씀드리겠습니다. 먼저 저희는 공동으로 아두이노와 애플리케이션 프로그래밍, 라즈베리파이의 데이터베이스 구축을 공동적으로 수행하기로 하였습니다.
개인의 역할로는
팀장인 이효민은 각종 보고서 작성, 물품 구매 작업 진행, 회의주체 및 일정 조율, 아두이노 코드 작성 등을 담당하기로 했습니다.
배지윤 팀원은 애플리케이션의 UI 등 기본 틀을 작성하고 사용자와 보호자의 휴대폰과 센서를 연결하는 코드를 작성합니다. 또한 하드웨어의 실질적 제품 제작을 담당하였습니다.
홍성연 팀원은 아두이노와 애플리케이션 연동을 하며 애플리케이션의 서비스 기능 작성, 하드웨어 제품 제작을 하는 역할을 맡았습니다.

다음은 9월동안 저희가 진행한 상황입니다.
저희는 아두이노로 받아들인 센서의 데이터값을 라즈베리파이의 DB로 넘겨주기 위한 서버구축을 위해 nginx,php,mariadb를 설치했습니다.
먼저 웹 서버 증설을 위해 apache가 시장 점유율이 더 높았지만 apache는 라즈베리파이에서 돌리기엔 무겁다는 판단을 하였습니다. 그래서 저희는 라즈베리파이에 맞게 가볍고 빠른 웹 서버 프로그램 nginx를 설치 해, 구축된 라즈베리파이의 IP로 웹브라우저에서 접속을 시도했습니다.
이 과정을 위해 라즈베리파이에 nginx를 설치 하고 서비스 시작을 위해 ‘service nginx start’를 실행했습니다.
위 사진은 라즈베리파이 IP로 nginx 엔진을 통해 웹브라우저에 접속을 성공한 사진입니다.

다음으로 웹서버 구현을 위해 MariaDB와 PHP를 설치하고 연결한 후, Nginx와 PHP를 연결하기 위해 Nginx 서버의 Root 폴더에 php 형식의 파일을 생성하였습니다.
외부 사설 IP에서의 서버 접속을 위해 포트포워딩을 실시하였고, MariaDB, PHP, Nginx 가 제대로 연결되었는지 확인하기 위해서 브라우저에 DB포트번호/phpinfo.php를 검색했을 때 다음 사진과 같이 연동 설치가 되었음을 확인할 수 있었습니다.

다음은 초음파 센서를 이용한 아두이노 코드를 작성한 사진입니다.
저희는 echoPin에서 펄스값을 받아 ‘펄스값 * 17/1000’ 라는 식을 통해 거리값을 구하는 구문을 작성했습니다.
욕실의 표준 치수를 조사하여 너비는 최소 0.8m 이상이며, 길이는 1.2m 이상이라는 가정하에, 80cm라는 기준선을 정하였습니다. 그래서 초음파 센서를 통해 얻게되는 거리 데이터가 80cm보다 짧으면 사람이 있다 판단하여 그를 나타내는 ‘hu’를 출력하게 되고, 그보다 거리가 멀면 사람이 없음을 나타내는 ‘not hu’를 출력하는 구문을 작성했습니다.

저희는 아두이노와 라즈베리파이의 연동을 위하여, 먼저 파이썬 사용을 위한 라이브러리를 설치했습니다. 그 후 아두이노와 시리얼 통신을 하기 위한 코드를 작성하여 그것이 바탕이 된 .py파일 생성 및 실행을 하였습니다. 연동 확인을 위하여 실행을 하였을 때 다음 사진과 같이 아두이노의 초음파 센서 값이 라즈베리파이에 실시간으로 전달되는 것을 확인 할 수 있었습니다.

저희팀의 전체 구성도에 대한 설명입니다.
우선 라즈베리파이와 아두이노 시리얼 통신으로 진행하고 아두이노에서 초음파 센서값을 라즈베리파이 DB에 저장하고
DB에 저장된 값을 안드로이드 스튜디오에 전송해주기 위해서는 직접적인 통신은 불가능해 웹서버에 올라오는 데이터 값을 PHP에 json 명령어를 통해 외부에서 PHP에 접근 할 수 있게 해주고 JSON을 파싱해서 안드로이드에서 사용할 수 있게 만들어줍니다.

저희는 10월에 애플리케이션 제작을 중점적으로 실행하였습니다.
MariaDB,PHP,Android의 연동을 위해, 먼저 MariaDB에 있는 데이터들을 JSON 형식으로 추출할 필요가 있었습니다.
JSON은 데이터를 속성-값의 쌍이나 키-값의 쌍으로 이루어져이있으므로 안드로이드에서 원하는 속성의 값을 받기 위해 connect.php 파일을 다음과 같은 형식으로 작성하였습니다.
그 후 php파일에 있는 JSON을 파싱하여 안드로이드에 파싱 한 값을 저장할 수 있도록 클래스를 생성했습니다.
어플리케이션을 실행 했을 때, 웹페이지에 실시간으로 뜨는 값과 동일한 값이 어플리케이션에 동시에 뜨는 것을 확인할 수 있었습니다.

다음은 로그인, 회원가입 구현입니다. 먼저 MariaDB를 사용하여 로그인 정보를 저장할 TABLE을 만들었습니다.
TABLE에는 사용자의 ID, PASSWORD, 이름, 나이를 저장할 수 있도록 구성하였습니다.
MariaDB와 Android의 로그인 페이지를 연결해줄 login.php와 register.php를 추가로 작성하였습니다.

애플리케이션을 실행시켰을 때, 회원가입 정보를 입력하고 로그인을 하였을 때 회원 정보가 데이터베이스에 성공적으로 저장되는 것을 확인했습니다.
또한 애플리케이션에서 로그인을 할 때, 데이터베이스에 등록된 회원의 정보로만 로그인이 되는 것을 확인했습니다.
그리고 현재는 8시간동안 인체 감지가 되지 않을 시 알람이 갈 수 있도록 타이머와 푸시알림 이벤트를 추가하고있습니다.

10월 2회차 진행 상황입니다.
먼저 애플리케이션의 메인에 타이머와 Splash 액티비티를 구현했습니다.
타이머는 최소한 8시간에 한번씩은 화장실에 간다는 가정하에 기본 8시간으로 설정해 8시간동안 화장실에 설치된 센서에 인체 감지가 되지 않는다면 타이머가 계속 흐르게 되고, 8시간안에 인체 감지가 된다면 타이머를 리셋해, 다시 타이머를 돌리는 식으로 구성했습니다.
또한 애플리케이션의 메인 화면이 띄워지기 전 애플리케이션에 대해 짧게 보여주는 스플래시/인트로 화면을 추가해 디자인적 요소를 추가했습니다.

다음은 푸시 알림 구현입니다.
푸시 알림의 조건은 타이머의 남은 시간이 0이 되면 상단바에 푸시 알림이 가게 됩니다.
푸시 알림이 갈 때, 알람을 잘 알아챌 수 있도록 진동도 같이 울리게 설정을 했습니다.
또한 상단바의 알림을 클릭하면, 앱의 메인 화면으로 이동할 수 있도록 구성했습니다.

저희는 10월에 어플리케이션 완성을 하였고, 전체적으로 어떻게 구성이 되었는지 다시 설명 드리겠습니다.
먼저 애플리케이션을 실행시키면, 짧은 시간동안 인트로 화면이 띄워졌다 사라지게 됩니다.
인트로 화면이 사라지면 앱을 최초 실행했을 때는 로그인과 회원가입을 할 수 있는 로그인 화면이 띄워지게 되고, 로그인은 이전에 수행하였다면, 메인 화면이 띄워지게 됩니다.
이때 메인 화면의 구성은 상단에는 인체 감지 상태가 보여지고, 그 밑에는 타이머가 돌아가고 있는 것을 볼 수 있습니다.
메인 화면에서 돌아가는 타이머가 제로가 되면 상단바에 푸시 알림까지 가는 것으로 구성을 하였습니다.
이렇게 애플리케이션까지 완성을 하여 실행을 했을 때 오류는 발생하지 않았으며, 저희는 남은 기간동안 라즈베리파이와 아두이노 센서의 케이스를 만들어 완성도를 높일 계획입니다.

케이스 제작을 위해서 라즈베리파이 아두이노 센서의 구상도를 그려 보았으며,
케이블선 최적화를 진행하였습니다. 케이스에 필요한 구조적 특징으로 센서를 위한 Hole 2개와 라즈베리파이 전원 공급을 위한 C-Type 포트 Hole를 치수를 측정 해 보았습니다.
현재 주문해서 오는 재료의 경우 가로, 세로의 길이가 19 / 10 Cm로 길이의 차이가 있는 부분을 조정하기위한 내부 고정도 생각중에 있습니다.

마지막으로 케이스 최종 완성에 대해서 설명드리겠습니다.
아크릴을 직접 잘라서 케이스의 측면을 완성하였으며,이때 한면에는 C-TYPE 연결선이 들어갈 수 있도록 구멍을 뚫었습니다.
케이스의 윗부분과 아랫부분은 별도의 케이스를 구입하였는데 센서 앞에 장애물이 있을 시 센서값이 제대로 측정이 안될 수가 있으므로 앞면에 센서가 나올 수 있도록 구성하였습니다.
구입한 케이스의 아랫부분은 간편한 스티커 방식으로 벽에 부착이 가능하도록 되어있으며, 글루건으로 케이스의 측면과 윗면, 아랫면을 연결하여 케이스의 최종 제작과 동시에 작품 제작을 완료하였습니다.

'프로젝트' 카테고리의 다른 글
| 2019년 지역문제해결 공모전&청년 리빙랩 해커톤 수상작 (0) | 2021.12.04 |
|---|---|
| 2018년 지역문제해결 공모전(2) (0) | 2021.12.04 |
| 2018년 지역문제해결 공모전(1) (0) | 2021.12.04 |

RECENT COMMENT