끄적끄적 코딩

작업 기간
2020-01-27~2020-02-21

팀원 구성
프론트, 백엔드 : 2명
안드로이드 : 1명
AI : 1명

기술스택
프론트엔드 : Java Script, Bootstrap
백엔드 : Slim PHP, Vagrant, MySQL
안드로이드 : Kotlin
AI : KNIME
아두이노 : C
협업 툴 : figma, github, Notion



프로젝트 설명
미국 캘리포니아주 샌디에이고에서 Qualcomm Institute가 주관한 Health-related IoT Tracking Platform Challenge를 위해 6주간 거주하였습니다.

최소 요구사항은 센서들의 데이터를 앱을 통해서 받아서 데이터베이스에 넣고,
이를 웹과 앱에서 사용자가 편리하게 볼 수 있도록 시각화하는 것입니다.

센서는 미세먼지 + 온도 센서, 심장박동 센서가 주어집니다. (GPS 포함)

결과물은 위의 요구사항을 지키면서 각자 팀만의 주제를 만들어서 구현하면 됩니다.

우리팀의 주제는 Suite Car로
자동차 운전 중 차량 내부와 외부의 상태를 비교하여 사용자에게 여러가지 추천 선택지를 주는것입니다.


Additional ( recommand and Arduino )

자동차 내부와 외부에 각각 미세먼지를 측정하는 센서를 부착하여, 사용자에게 효율적인 선택지를 추천해줍니다.
효율적인 선택지란 다음과 같습니다.
1. 창문 열기
2. 창문 닫기
3. 에어컨 - COLD (내부순환) 
4. 에어컨 - NORMAL (내부순환) 
5. 에어컨 - HOT (내부순환) 
6. 에어컨 - COLD (외부순환) 
7. 에어컨 - NORMAL (외부순환) 
8. 에어컨 - HOT (외부순환) 

선택지 추천은 차량 내부와 외부의 미세먼지 농도와 온도를 기준으로 추천을 해줍니다.

사용자는 앱을 통해서 다음과 같은 추천지를 TTS를 통해 음성으로 듣고
음성으로 해당 선택지를 말하면 앱에서는 이를 반영하여, 해당 동작을 실행합니다.

우리는 여기서 테스트할 차를 구할 수 없어서 간단한 프로토타입을 만들었습니다.
아두이노의 모터와 디지털판을 이용해서 만들었으며 통신은 블루투스를 이용했습니다.

먼저 창문을 열거나 닫는것은 종이로 차량의 문과 비슷한 모양을 만들어서
모터를 통해 문사이에 있는 창문이 올라오거나 내려오면서, 창문이 열리고 닫히는 것처럼 구현을 하였습니다.

에어컨의 경우, 디지털숫자 4개를 이용해서, 첫번째 숫자는 내부순환과 외부순환을 의미하며,
3번째와 4번째 숫자를 통해 희망온도를 표현하였습니다.


App ( Android Studio )

로그인, 회원가입, 비밀번호 찾기와 같은 기본적인 로그인에 관련된 작업
센서와 블루투스 통신을 통해서 데이터를 서버로 넘겨주는 작업
서버로부터 원하는 데이터들을 요청해서 지도와 그래프를 통해서 시각화하는 작업
UI 작업


Web ( Html, CSS, Java Script, Slim PHP, Vagrant, MySQL)

로그인, 회원가입, 비밀번호 찾기와 같은 기본적인 로그인에 관련된 작업
앱으로부터 받은 정보를 데이터베이스에 저장하는 작업
데이터베이스로 부터 필요한 데이터를 받는 작업
서버로부터 원하는 데이터들을 요청해서 지도와 그래프를 통해서 시각화하는 작업
UI 작업


AI ( KNIME )

미세먼지 측정 센서가 저가여서 값이 정확하지 않아서,
고가의 센서에서 측정되는 값을 바탕으로 저가의 센서의 데이터를 고가의 센서 측정값과 비슷하게 만드는 작업


설계 ( Reference Model, System Architecture, Procedure Design, Flow Chart )

전체적인 구조를 그리고, 각 엔터티에서 수행되는 작업을 기술합니다.
모든 부분에 대해서 실행되는 프로시져를 그려줍니다. 
마지막으로, 프로시져가 어떤 방향으로 실행될 수 있는지 그립니다.


후기

팀원 모두가 열정적으로 개발에 임하여, 목표했던 결과물을 완성할 수 있었습니다.

그 결과, Outstanding Achievement Award를 받을 수 있었습니다.

처음으로 미국으로 왔는데 새로운 환경에서 여러가지 경험을 해서 재밌었습니다. 
학업적으로는 낯선곳에 떨어져서 아무런 방해를 받지 않고 공부에 전념할 수 있다는 점이 좋았습니다.
모르는 부분이 있으면 친구들과 서로 도와가며 해결하고, 직원분들과 구글, 스택오버플로우 분들께 물어보았으며,
막연하게 생각했던 일들이 하나씩 이루어지는 모습에 힘들었지만 즐거웠습니다.


배운점

1. 소프트웨어 설계의 중요성
- 초기에 설계 과정에 많은 시간을 투자하였습니다. 하지만 설계를 완료한 후에 개발을 하니 속도가 빨랐고, 서로 상의하지 않고 설계한 부분만 참고해서 진행할 수 있었습니다. 또한 다른 사람의 파트에서 문제가 생기더라도, 구성된 설계를 바탕으로 쉽게 문제를 파악하고 해결책을 줄 수 있었습니다.

2. 풀스택 개발
- 처음으로 풀스택 개발을 맡게되어 프로젝트를 진행하였습니다. 이 과정에서 프론트엔드와 백엔드가 어떻게 연결되는지에 대해 보다 명확하게 이해할 수 있었습니다. 처음 사용하는 기술스택들이 많았지만, 열심히 공부하면서 개발을 진행하는 것이 즐거웠습니다.

3. 오류노트 작성
- 개발 중에 오류가 났을 때 구글링과 스택오버플로우를 통해서 많이 해결하였습니다. 하지만 같은 오류가 났을 때 같은 구글링을 하는 경우들이 있었고 개선이 필요하다 생각하였습니다. 그래서 오류에 대해서 기록을 하기 시작했고, 같은 오류가 발생했을 때 더욱 쉽게 대처할 수 있었습니다.

아쉬운 점

1. 경험 부족
- 웹 개발에 대한 경험이 부족해서 처음에 개발에 속도가 잘 붙지 않았습니다. 그런만큼 남들보다 시간을 더 쏟아서 공부를 해서 나아갈 수 있었습니다. 이후에 프로젝트와 개인 공부를 통해서 실력을 키워야겠습니다.

2. 비동기 처리 
- 자바스크립트 기본 지식에 대해서 더욱 공부를 해야겠다는 생각을 하였습니다. 비동기 처리에서 생긴 문제들이 많았고, 공부하면서 알게 된 편리한 기능들도 있었습니다.

향후 계획
1. 토이 프로젝트 진행을 통해 웹개발 익숙해지기
2. Javascript 공부
3. 다양한 프레임워크 써보기.

 

Git : https://github.com/J3SUNG/Health-related-IoT-Tracking-Platform-Challenge

검색 태그