LEGO Wall-E Motorized using Arduino controlling by iPhone
기말고사 기간에 레고 월E 출시 발견. 이어서, 마인드스톰 추가 구성해서 움직이게 한거 보고 넋이 나감.
그래서 겨울 방학때 아래의 미션하에 프로젝트를 진행하였다:
1. 레고 월E 굴러가게 하기.
2. 무조건 내 핸드폰 앱으로 컨트롤 가능해야 함. 적외선 컨트롤러 이딴거 난 안쓴다.
3. 블루투스 구성 위한 마인드스톰 오지게 비쌈. 아두이노 사용해서 경비절감.
그리하여 아래와 같이 완성!
Requirement parts:
Total cost: $120
Step 2. 아뒤노 하드웨어 부품을 연결한다. Build Arduino hardware parts
나의 모터쉴드는 아두이노 위에 겹쳐서 꼽는 방식이었다. 그 후 모터 연결하고 전원 연결은 모터 쉴드에다 하면 되고, 블루투스 모듈은 와이어를 이용해서 그림과 같이 해당 핀에 분선하여 연결한다. 나의 경우 TX를 3번 핀, RX를 2번 핀에 연결 했다. (모터 컨트롤 핀으로 쓰이지 않는 것을 선택해야 한다. 참고로 0번과 1번, 즉 아두이노 보드의 TX와 RX는 USB와 연결된 프로그램 업로드 용이므로 사용을 피한다.)
Step 3. 아두이노에 모터 제어 프로그램을 업로딩한다.
Upload a motor control program to Arduino.
아두이노를 컴퓨터에 연결하고, Arduino 공식 사이트에서 프로그램 업로드 소프트웨어를 다운받아 설치한다.
Tools 메뉴에서 Board 를 Arduino Uno 로 선택한다. 코드를 작성 후 업로드 버튼을 눌러 아두이노 보드에 작성한 코드 프로그램을 업로딩한다. 참고로, 고맙게도 모터관련 라이브러리가 이미 제작되어 있다. 이를 이용하면 모터 제어를 쉽게 짤 수 있다. AFMotor임.
https://learn.adafruit.com/adafruit-motor-shield/library-install
위 URL로 들어가면 github 다운로드 링크가 나온다. 다운받은 폴더를 아뒤노 개발툴 라이브러리 폴더 안에 넣고 (e.g. ~/Arduino/libraries/AFMotor) AFMotor.h 파일을 아뒤노 코드에 인클루드 시키면 사용할 수 있다.
내가 짠 아뒤노 코드는 이 글 최하단에 추가하였으니 참고바람.
참고로 HM-10의 커맨즈는 다음과 같다. 아뒤노 시리얼 모니터에서 입력해보고 정상적으로 응답이 오는지 확인하자. 또한 시리얼 하단에서 no line ending 옵션으로 되어 있는지도 확인한다.
Step 4. 아이폰 블루투스 컨트롤러 앱을 제작한다. Develop iPhone bluetooth controller app.
그냥 뭐... 잘 짜면 된다...;; 역시 하단에 필요 코드를 첨부하였다. 프로젝트는 기본 Single View 프로젝트로 생성하면 되고, Swift가 아닌 Object C 코드이다. 컴파일 후 아이폰에 올리고 실행하면 위 사진 왼쪽 화면이 나온다. (블루투스가 켜진 상태여야 함.) 내 월E 블루투스를 선택하면, 커넥션 성공 시 오른쪽 화면으로 이동하게 된다. 이것저것 눌러봐서 모터가 잘 도는지 확인한다. (내 이름 석자가 잘 보이는지 확인한다. 제일 중요함 음뫄하하하하!)
Step 5. 월E를 조립한 후 조립 해 둔 하드웨어 부품을 부착한다.
Assemble the Arduino hardware parts onto the Wall-E.
일단 바퀴에 모터 두개 부착.
배터리는 배안에 넣어주고 전선은 목 옆쪽 공간을 통해 밖으로 빼준다.
요런식으로 나는 등뒤에 전기테잎으로 고정하였다... 전테말고 다른 방법을 강구하고 싶지만..
(누가 우리 월E 배낭 좀 만들어주시오. ㅎㅎㅎ)
Complete!!!
Appendix
* 모터의 선택 : 월E에 실리콘 떡질해서 모터 고정시키고 싶지 않아서 레고 모터 사용. 추가적으로 이때문에 3번 항목 구입 발생.. 모터랑 월E 바퀴 연결부품인데 필요한 브릭만 레고사에서 주문 가능.
* 라즈베리 파이에 대해 : 이왕이면 더 가지고 놀게 많은 PI 를 사려고 했으나, 이게 컴터 메인보드 같은거라 배터리로 안되고 파워 지속공급 되야 함. 즉, 유선 월E가 된다는 황당한 시츄에이션이... -_- (그거슨 있어서는 안되는 일이야..)
* 블루투스 모듈: HC-05 나 HC-06 많이들 쓰는데, 안드로이드는 이거 써도 됨. 허나 아이폰 6 부터는 블루투스 4.0 이라서 안잡힘. 이거 몰랐어서 블루투스 4.0 쓰는 HM-10으로 다시 샀음. (내 돈...)
* 모터 드라이버 쉴드: 걍 젤 싼거, 모터 두개 이상 돌릴 수 있는거로 사면 됨. 모터 쉴드는 모터 연결 편리성과 파워를 안전정으로 공급하기 위해 씀. 좀 더 자세히 말하면, 첫째는, 일반적으로 모터는 높은 전류 필요로 함. (레고 모터도 65mA임) 허나 아두이노는 핀당 20mA 출력함. 드라이버가 이를 충분한 전압과 전력으로 출력할 수 있게 해 줌. 둘째는, 모터 회전 방향 변경을 하려면 + - 바꿔줘야 하는데, 이를 위한 복잡한 전선 연결을 해결해 줘서 편리하게 방향 변경할 수 있게 해줌. (그때가 납땜에 영혼을 불사를 수 있다면 직접 해도 될듯함...) 더 자세한 내용은 네이버 아두이노 카페 글 참고 http://cafe.naver.com/arduinostory/30555
* 기타 제작 과정에서 도움 받은 참고 자료 및 사이트 Additional useful references.
LEGO Wall-E 21303 Motorized with Power Functions https://youtu.be/3_9q6RjB5nM
Controlling LEGO DC motor with an Arduino https://youtu.be/PtinpaVpHeo
IPhone to Arduino using Bluetooth 4.0 http://www.instructables.com/id/IPhone-to-Arduino-using-Bluetooth-40-/
Core Bluetooth Programming Guide https://developer.apple.com/library/...
Bluetooth 4.0 datasheet http://www.pridopia.co.uk/pi-doc/BT4.0-HM-10-Serial_Port_BLE_Module_Master_Slave.pdf
출처 | http://lobotomi.tistory.com/40 |