이카루스... 날고자 하는 열망의 대명사이기도 하지만,
다르게 보면 날고자 하는 열망에만 빠져 죽고 만 어리석을을 대변한다고도 생각합니다.
저는 팀 이름을 지을 때부터 뭔가 불안했습니다, 날고자 하는 열망이 어떤 결과를 빚어낼 지
개인적으로 회의적인 면이 없지 않아 있었거든요.
그런 불안감은 곧 현실이 되어 나타났고, 최종 연구 결과 발표 시 제대로 한 번 날지 못한 채
상처입은 날개로 날 개짓 했던 icarus는 행사들의 뒤안길로 사라졌습니다.
(당시 11.1v 3s lipo 의 3개의 셀 중 하나가 맛이 가서 최대 전압이 7.4v밖에 나오질 않았었고, 모터 하나는 반쯤 맛이 갔었음)
그리고 모든 행사의 끝과 동시에 icarus는 저희 집에 썩게 되었는데,
한달 간 저는 집에 머물며 곰곰히 생각해보곤 했습니다. 무엇이 문제였을까.
1. 애초에 잘 다루지도 못할 nRF24l01모듈을 5만원이나 주고 구입함
2. 아두이노에 위 모듈을 붙여 송수신기로 쓰려함- 사실 이 돈이면 조종기 구입하고도 남음
3.rf모듈 사용 못하는 거 자각하고 아두이노로 조종 몰빵했습니다.
4.하드웨어적 결함- 모터 하나 고장, 배터리 스웰링
5. 쓸데없는 데에 시간낭비
이때까지만 해도 멀티위 블루투스 조종 앱이 있다는 걸 몰랐던지라
아두이노 하나는 블루투스에서 값을 받아서 pulse 신호로 변환해서 멀티위 아두이노에 쏴주는 역할을 하고
나머지 하나는 pulse 신호 받아서 제어하도록 했습니다.
근데 문제는 둘의 통신 프로토콜을 제가 정한 적이 없어 블루투스는 안드로이드에서 한 채널의 값만 수신 할 수 있었고,
블루투스를 이용하는 어플리케이션 제작에도 애를 먹었었습니다
결과적으로 블루투스 이용하는 조종 앱 개발은 실패하였고
블루투스는 어느 채널에 할당할 지 고민하다 throttle에 할당했는데,
당시 앱에서 블루투스 모듈로 값을 보내는 데는 bluetoothChat 앱을 이용해서 정적인 값을 보내줬습니다.
이런 식으로요. 1000 입력하고 send 누르고 1200입력하고 send 누르고...
그런데 이랬더니 값이 올라가려다가도 안올라가는겁니다.
심지어 저런 식으로 풀스로틀로 돌려봤지만 모터는 돌지 않는 사태까지 발생해 연구 마지막 2주를 까먹었습니다.
문제를 고민하다 보니 저는 문득, 스로틀 값을 동적으로 줘 보면 어떨까? 라는 생각에 착안해서
가변 저항을 수신 및 값변환용 아두이노에 달아 가변저항 값을 pulse로 바꾸게 해서
멀티위 아두이노 throttle pin에 물려놨더니 가변저항값에 따라 모터도 맞춰 돌더군요.
그 땐 pid고뭐고 일단 뜨기만 하면 됐습니다. 미친듯이 앱을 만드려고 노력해봤지만,
BluetoothChat 소스에 뿌려지는 View에 있는 editText를 SeekBar로 바꾸고, 코드도 그에 맞게 바꾸고
그렇게 수 십번을 시도했지만 자꾸만 어디선가 빌드 에러가 떠서 포기하고, 원시적인 방법으로 돌아가
결국엔 연구 결과 발표때는 가변저항을 달아 돌려서 띄우는 무식한 방법까지 썼었습니다.
그리곤 이제, 그를 놓아주려 합니다.
1년을 열정으로 불태울 수 있었던 시간들
고마웠습니다. icarus