Membuat Laser Tank Kendali Leap Motion – Arduino, Raspberry Pi, RGB LEDs
Komponen dan Perlengkapan
LED Inframerah
×
1
Penerima Inframerah
×
1
Arduino UNO
×
1
Raspberry Pi 2 Model B
×
1
Modul RF24
×
1
LED-RGB-Common Cathode
×
1
Integrated Circuit motor driver L293D
×
1
Papan roti (generik)
×
1
Kabel Jumper (generik)
×
1
Holder Baterai
×
1
Baterai AA
Baterai NiMH Rechargeable
×
1
Lego Bricks
×
1
Ball Caster Metal - 3/8"
×
1
Leap Motion Controller
×
1
Tentang Proyek Ini
Tujuan proyek ini adalah untuk membuat sekelompok robot tank untuk bertempur di mana operator mendapatkan perasaan yang lebih realistis untuk mengontrol kendaraan menggunakan pengontrol Leap Motion. Saya ingin membuat robot tank dengan harga terjangkau, jadi orang dapat mereplikasi proyek dengan mudah.
Badannya terbuat dari batu Lego generik dan papan. Sumber daya adalah blok sederhana dari 4 baterai AA rechargeable. Pengontrol tank adalah Arduino Uno R3. "Propulsi" adalah dua motor DC sederhana dengan rodi di belakang dengan satu caster di depan menggunakan satu integrated circuit L293D. "Senjata" adalah satu lampu LED inframerah dan "baju baja" adalah sekelompok sensor inframerah yang mendeteksi pukulan dari LED inframerah tank lawan. "Tampilan kepala" adalah satu LED multi-warna yang memberi tahu Anda tentang tindakan apa pun yang terjadi pada tank termasuk status baju baja Anda. Terakhir "kendali" tank dilakukan secara nirkabel melalui Raspberry Pi 2 yang menjalankan NodeJS terhubung melalui modul nirkabel RF24 yang juga dilengkapi setiap tank.
Menggunakan tangan operator, Leap Motion mengontrol tank menggunakan JavaScript SDK Leap Motion. Menggunakan SDK untuk mendeteksi gerakan tangan, javascript berkomunikasi dengan server NodeJS di Raspberry PI 2, yang berbalik berkomunikasi dengan tank melalui modul RF24. Kedua tangan ke depan, tank bergerak ke depan. Kedua tangan ke belakang, tank bergerak ke belakang. Tangan kiri ke depan, tangan kanan ke belakang, tank berbelok kanan. Tangan kanan ke depan, tangan kiri ke belakang, tank berbelok kiri. Kedua tangan di posisi "netral" akan menghentikan tank. Satu tangan ke depan (kiri atau kanan) sambil menurunkan tangan lainnya akan "memancarkan" senjata tank.
Ini adalah demonstrasi cepat dari senjata, baju baja, dan tampilan kepala Tank.
Menggunakan armor multi-arah canggih dan kotak kardus sebagai perlindungan, Laser Tanks menjadi permainan buru dan elak.
Langkah Pengaturan Proyek:
1) Rangkit tank dan sambungkan kabel menggunakan skematik di bawah. Unduh library Arduino yang diperlukan (lihat README di repositori github), Kompilasi, dan Unggah sketsa arduino untuk tank1 ke satu tank, dan tank2 ke tank lainnya.
2) Sambungkan transceiver RF24 ke Raspberry Pi. Instal OS Raspbian dan node JS di Pi.
3) Unduh, Konfigurasikan, dan Bangun (lihat README di repositori github) library RF24 di Pi.
4) Unduh perangkat lunak server NodeJS dari situs github, konfigurasikan, dan nyalakan App Server/Web server (lihat README di repositori github).
5) Instal Leap Motion dan driver pada komputer Anda. Buka browser dan muat URL ke Raspberry Pi Rest/Web server untuk memuat halaman web (lihat README di repositori github) untuk mengontrol tank satu atau tank dua.
6) Klik tombol kalibrasi dan pegang tangan Anda di atas leap motion sehingga mendeteksi dua tangan dan mengetahui posisi netral Anda. Setelah kalibrasi selesai Anda dapat mengontrol tank dengan tangan Anda.
Catatan singkat tentang badan tank:
Badannya dirangkit dari lego sederhana yang "di-lem gorilla" ke bagian (motor, papan roti, dll) tank untuk membantu menjaga agar tetap utuh. Berikut adalah slide show untuk menunjukkan cara dilakukan.
Catatan singkat tentang LED Inframerah:
Remote kontrol inframerah sangat fungsional saat Anda ingin duduk di sofa, atau lantai, atau kursi dan dapat mengganti saluran TV Anda dari mana saja. LED Inframerah dibuat untuk memancarkan cahaya ke sejumlah arah yang mungkin untuk meningkatkan cakupan. Namun, jika Anda ingin mengontrol sinar LED untuk lebih kecil untuk membuatnya lebih sulit untuk memukul sensor remote (seperti dalam permainan pertempuran tank) sedikit lebih sulit. Dalam bacaan saya saya menemukan bahwa dengan menggunakan kaca pembesar sangat sederhana di ujung tabung, Anda dapat memfokuskan sinar inframerah. Berikut adalah diagram yang menunjukkan apa yang saya bicarakan:
Saya akhirnya membeli kaca pembesar saku yang sangat murah di apotik, mengambil lensa dari itu dan membangun tabung di sekitarnya dan memiliki LED Inframerah di ujung tabung lainnya, dan ini bekerja sempurna untuk menyempitkan sinar IR LED untuk lebih tepat.
Catatan singkat tentang 360 derajat Sensor Inframerah
Sensor inframerah dapat mendeteksi sinyal dari LED inframerah saat LED tersebut langsung di depannya atau sekitar 90 derajat fokus. Jika LED Inframerah di belakang sensor, itu tidak akan dapat mendeteksi sinyal yang dikirim.
Untuk mencapai sudut deteksi 360 derajat penuh, Anda perlu memodifikasi library inframerah untuk mendeteksi sinyal pada 4 pin berbeda dari 4 sensor berbeda, atau menciptakan solusi hardware yang memungkinkan 4 sensor di-rantai untuk melaporkan pada satu pin. Saya menemukan beberapa artikel online yang menunjukkan bagaimana Anda dapat mencapai ini dengan integrated circuit AND sederhana untuk menghubungkan 4 sensor ke satu pin masukan. Saat salah satu sensor inframerah mendeteksi sinyal inframerah, itu melaporkannya pada pin tersebut. Ini memungkinkan untuk mendapatkan deteksi 360 derajat, tanpa perlu memodifikasi library Inframerah, atau untuk menggunakan 4 pin masukan.
Kode
Laser Tanks Github
All the custom code files for the Leap Motion Laser Tanks projecthttps://github.com/corky/LaserTanks
Skematik
Using a Infrared LED, the tank shoots "codes" that the other tanks identify as hits.Using a single Infrared Sensor, the tank is able to detect when infrared signals come from opposing tanks and register them as hitsUsing 4 infrared sensors, daisy chained together with a simple AND gate integrated circuit (74HCT21), a Tank is able to identify infrared signals from opposing Tank's LED as hits from 360 degrees around it.Using a RGB LED, the Tank identifies its current status (how many hits it has taken) by changing the color of the LED. Also, the tank changes the color of the LED to Green for each shot it fires.Using a L293D integrated circuit, and some simple DC motors, the tank is able to move forward, backward and turn left or right.Using a simple and inexpensive RF24 transciever, the tank is able to communicate and receive commands from the operator.Using a Raspberry Pi2, a simple and inexpensive RF24 transciever, and Node JS, the Operator is able to communicate to each tank via REST API calls.