프로젝트 명 : Safe Riding
프로젝트 기간 : 2014.09 ~ 2015.06
프로젝트 구성 인원 : 4명
지원자의 역할 : RapberryPi – Arduino – App 간의 통신제어 및 RapberryPi 프로그래밍
대학교 졸업 작품을 만드는 프로젝트실무라는 강의를 들으며 팀을 이루어 프로젝트를 진행하였습니다. 저희 팀의 프로젝트는 SafeRiding이라는 것으로 RaspberryPi, Arduino, Application(스마트폰)을 결합하여 카메라를 이용한 후방감지, 초음파를 이용한 물체감지 등의 기능으로 운전자의 안전사고와 자전거의 도난사고를 방지하는 것이었습니다.
저희는 4명이 한 조가 되어 RaspberryPi, Arduino, Application, 디자인 부분으로 나누어 진행하였고 전 RaspberryPi를 담당했습니다.
Arduino의 초음파센서, LED, 자이로센서 등 다양한 센서를 사용하여 입력받은 데이터 값들과 Application의 입력 및 GPS값의 RaspberryPi를 통한 양방향 통신이 가능해야 했습니다. RaspberryPi를 중간다리 역할인 서버로 두고 Arduino와 Application에서의 통신제어를 하며 동시에 RaspberryPi의 Cam을 Application으로 Streaming하기 위한 프로그래밍이 저의 주된 역할이었고 Application의 프로그래밍을 보조했습니다.
리눅스 기반인 RaspberryPi의 프로그래밍에는 Python과 Bash Script를 사용했습니다. 어떤 통신기술을 사용해야 가장 최적화된 통신이 가능할지에 대한 많은 회의와 테스트를 거쳐 저희는 Arduino와 Application의 통신에는 Bluetooth를, Cam Streaming에는 Web-Streaming을 사용하여 통신하기로 결정했습니다.
사용되는 장비 및 기술과 언어들을 처음 접해본 저희는 프로젝트 진행에 앞서 서로 부족한 부분을 채워나가며 각 기술들을 공부했습니다. 초기 테스트 시에는 양방향 통신을 하는 것에 블루투스 프로그래밍을 하는데 채널의 중복으로 통신이 이루어지지 않아 문제가 됐었습니다.
그리고 Web-Streaming에서도 Web에서 URL로 직접 접속했을 때는 영상이 보였지만 Application에서는 보이지 않는 문제가 있었습니다. 블루투스 연결프로그램의 코드를 바꾸고 다시 짜보는 등 많은 시도를 했지만 쉽게 해결하지 못했습니다. 그러던 중 마음을 비우고 다시 해보자는 생각을 하며 코드의 처음 부분부터 차근차근 보던 중에 정말 단 한 문장의 코드가 문제였다는 것을 알게 되었습니다.
그 것을 계기로 프로그래밍을 할 때 작성하는 코드 하나하나가 얼마나 중요한지를 알게 되었습니다. Web-Streaming에서의 문제는 RaspberryPi에서는 제대로 영상이 나가지만 Application에서 받지 못하는 것으로 보였고 어느 부분이 잘 못 되어있는지 찾기 힘들었기에 처음 작성한 코드가 아닌 다른 형식으로 코딩해서 문제를 해결하였습니다.
프로그래밍 및 통신제어를 구현하는 역할을 하며 Arduino와 Application 양측을 각각 구현해야 했고, 다른 팀원들과 많은 대화를 할 기회가 있었습니다. 그 과정에서 팀장의 자리에 있던 형과 Application 개발을 맡고 있던 팀원의 서로에 대한 불만을 듣게 되었습니다.
상대방에게 불만을 느끼고 진행해 나가며 ‘프로젝트까지만 버티자’라는 생각을 하는 둘을 보며 안타까웠습니다. 그래서 전 양 측의 입장을 듣고 서로의 불만 및 바라는 점을 정리 한 후 삼자대면을 통해 서로의 입장을 대변하며 흥분하지 않도록 대화를 이끌어 그 날을 기점으로 확고한 팀워크를 다지게 되었습니다.
그 경험에서 저는 경청해가며 서로를 대변해주는 완충 역할이 팀 프로젝트에 있어 얼마나 중요한지를 알게 되었고 프로젝트를 성공적으로 마쳤습니다.