이 프로젝트의 목표는 운영자들이 리프 모션 컨트롤러를 사용해 차량을 조종할 때 더 현실적인 느낌을 받을 수 있는 로봇 탱크 세트를 만들어 전투를 벌이는 것이었습니다. 가능한 한 저렴하게 로봇 탱크를 만들어 사람들이 프로젝트를 쉽게 복제할 수 있도록 하고 싶었습니다.
탱크 본체는 일반 레고 브릭과 플레이트로 만들어졌습니다. 전원은 단순한 4개 AA 충전식 배터리 블록입니다. 탱크 컨트롤러는 Arduino Uno R3입니다. "추진"은 뒤쪽의 바퀴가 달린 두 개의 단순한 DC 모터와 앞쪽의 단일 캐스터로, 단일 L293D 집적 회로를 사용합니다. "무기"는 단일 IR LED 라이트이고 "장갑"은 상대 탱크의 IR LED로부터 타격을 감지하는 IR 센서 세트입니다. "헤드업 디스플레이"는 탱크에서 발생하는 모든 동작(장갑 상태 포함)을 알려주는 단일 다색 LED입니다. 마지막으로 탱크의 "제어"는 NodeJS가 실행되는 Raspberry Pi 2를 통해 RF24 무선 모듈로 무선으로 처리되며, 각 탱크에도 장착되어 있습니다.
운영자의 손을 사용해, 리프 모션은 리프 모션 자바스크립트 SDK를 사용해 탱크를 제어합니다. 손 움직임을 감지하기 위해 SDK를 사용하면, 자바스크립트가 Raspberry Pi 2의 NodeJS 서버와 통신하고, 그것이 다시 RF24 모듈을 통해 탱크와 통신합니다. 양손을 앞으로 밀면 탱크가 앞으로 이동합니다. 양손을 뒤로 당기면 탱크가 뒤로 이동합니다. 왼손 앞, 오른손 뒤면 탱크가 오른쪽으로 회전합니다. 오른손 앞, 왼손 뒤면 탱크가 왼쪽으로 회전합니다. 양손을 '중립' 위치에 두면 탱크가 정지합니다. 한 손(왼쪽 또는 오른쪽)을 앞으로 내밀면서 다른 손을 내리면 탱크의 '무기'를 발사합니다.
탱크의 무기, 장갑, 헤드업 디스플레이에 대한 빠른 시연입니다.
전방위 고급 장갑과 종이 상자 엄폐물을 이용해, 레이저 탱크는 사냥과 회피의 게임이 됩니다.
프로젝트 설정 단계:
1) 아래 회로도를 사용해 탱크를 조립하고 배선하세요. 필요한 아두이노 라이브러리 다운로드 (github 저장소의 README 참조), 컴파일, 탱크1용 아두이노 스케치를 한 탱크에, 탱크2용을 다른 탱크에 업로드하세요.
4) github 사이트에서 NodeJS 서버 소프트웨어 다운로드, 구성, 앱 서버/웹 서버 시작 (github 저장소의 README 참조).
5) 컴퓨터에 리프 모션과 드라이버 설치. 브라우저를 열고 라즈베리 파이 REST/웹 서버 URL을 로드해 웹 페이지(github 저장소의 README 참조)를 불러와 탱크 1 또는 탱크 2를 제어하세요.
6) 캘리브레이트 버튼을 클릭하고 리프 모션 위에 손을 올려 두 손을 감지하고 중립 위치를 알도록 하세요. 캘리브레이션이 완료되면 손으로 탱크를 제어할 수 있습니다.
탱크 섀시에 대한 빠른 메모:
탱크 본체는 심플한 레고로 조립되었으며, 탱크의 부품(모터, 브레드보드 등)에 "고릴라 글루"로 접착해 고정했습니다. 이 과정을 보여주는 슬라이드 쇼입니다.
적외선 LED에 대한 빠른 메모:
적외선 리모컨은 소파, 바닥, 의자에 앉아 TV 채널을 어디서든 바꾸고 싶을 때 매우 기능적입니다. 적외선 LED는 커버리지를 개선하기 위해 빛 빔이 가능한 많은 방향으로 가도록 제작됩니다. 하지만 탱크 전투 게임처럼 리모트 센서를 맞추기 더 어렵게 LED 빔을 더 작게 제어하고 싶다면 조금 더 어렵습니다. 제 조사에서 단순한 돋보기 렌즈를 튜브 끝에 사용하면 적외선 빔을 집중시킬 수 있음을 알게 되었습니다. 여기에 제가 말하는 것을 보여주는 다이어그램이 있습니다:
저는 약국에서 매우 저렴한 포켓 돋보기를 구입해 렌즈를 꺼내 그 주위에 튜브를 만들고 튜브 다른 끝에 적외선 LED를 배치했고, 이는 IR LED 빔을 더 정밀하게 좁히는 데 완벽하게 작동했습니다.
360도 적외선 센서에 대한 빠른 메모
적외선 센서는 그 LED가 정면이거나 약 90도 초점 내에 있을 때 적외선 LED로부터 신호를 감지할 수 있습니다. 적외선 LED가 센서 뒤에 있다면, 그것은 보낸 신호를 감지할 수 없습니다.
완전한 360도 감지 각도를 달성하려면, 적외선 라이브러리를 수정해 4개의 다른 핀에서 4개의 다른 센서로부터 신호를 감지하게 하거나, 4개의 센서를 데이지 체인으로 연결해 단일 핀에 보고하는 하드웨어 솔루션을 만들어야 합니다. 단순한 AND 집적 회로(74HCT21)로 4개의 센서를 단일 입력 핀에 연결하는 방법을 보여주는 온라인 기사들을 찾았습니다. 어떤 적외선 센서가 적외선 신호를 감지하면, 그것이 그 핀에 보고했습니다. 이는 적외선 라이브러리를 수정하거나 4개의 입력 핀을 사용하지 않고도 360도 감지를 달성할 수 있게 했습니다.
코드
레이저 탱크 Github
리프 모션 레이저 탱크 프로젝트의 모든 커스텀 코드 파일 https://github.com/corky/LaserTanks
회로도
적외선 LED를 사용해 탱크가 상대 탱크들이 타격으로 식별하는 "코드"를 발사합니다.
단일 적외선 센서를 사용해 탱크가 상대 탱크들로부터 오는 적외선 신호를 감지하고 타격으로 기록합니다.
단순한 AND 게이트 집적 회로(74HCT21)로 데이지 체인된 4개의 적외선 센서를 사용해, 탱크가 주변 360도에서 상대 탱크의 LED로부터 오는 적외선 신호를 타격으로 식별합니다.
RGB LED를 사용해 탱크가 현재 상태(받은 타격 수)에 따라 LED 색상을 변경해 표시합니다. 또한 탱크가 발사할 때마다 LED 색상을 녹색으로 변경합니다.
L293D 집적 회로와 단순한 DC 모터를 사용해 탱크가 전진, 후진, 좌우 회전할 수 있습니다.
단순하고 저렴한 RF24 트랜시버를 사용해 탱크가 운영자로부터 명령을 주고받을 수 있습니다.
Raspberry Pi 2, 단순하고 저렴한 RF24 트랜시버, Node JS를 사용해 운영자가 REST API 호출을 통해 각 탱크와 통신할 수 있습니다.