Membuat Hovercraft RC Berbasis Arduino: Panduan Lengkap Desain Cetak 3D dan Pemrograman
Dalam tutorial ini kita akan mempelajari cara membuat Hovercraft RC berbasis Arduino. Saya akan menunjukkan seluruh proses pembuatannya, mulai dari merancang dan mencetak 3D bagian hovercraft, termasuk propeler, hingga menghubungkan komponen elektronik dan memrogram Arduino.
Anda dapat menonton video berikut atau membaca tutorial tertulis di bawahnya.
Ringkasan
Untuk mengontrol hovercraft, saya menggunakan pengirim RC berbasis Arduino DIY saya yang saya buat dalam salah satu video saya sebelumnya. Saya mengatur joystick kanan untuk mengontrol servo motor untuk memosisikan ruder di sisi belakang motor dorong, mengatur salah satu potensiometer untuk mengontrol propeler pengangkat yang sebenarnya dipasang pada motor DC brushless, dan mengatur joystick kiri untuk mengontrol dorongan. Jadi, mari kita lihat apa yang dibutuhkan untuk membangun hovercraft RC ini.
Model 3D Hovercraft
Untuk memulai, saya merancang hovercraft menggunakan perangkat lunak pemodelan 3D.
Anda dapat menemukan dan mengunduh model 3D ini, serta menjelajahnya di browser Anda di Thangs.
Unduh model 3D perakitan di Thangs.
File STL untuk Cetak 3D:
Prinsip Kerja Hovercraft
Prinsip kerja dasar hovercraft adalah bahwa kapal dilangitkan oleh bantal udara. Propeler tengah meniup udara ke bawah kapal, yang mengembangkan selimut yang terbuat dari bahan lunak.
Saat tekanan udara dalam selimut cukup tinggi, kapal terangkat. Udara yang terus disuplai melarikan diri dari tengah kapal, antara selimut dan tanah, yang menciptakan lift tambahan dan juga mengurangi gesekan antara hovercraft dan tanah.
Setelah terangkat, menggunakan propeler kedua dorongan dihasilkan yang memindahkan hovercraft ke depan.
Di sisi belakang propeler dorong terdapat sekumpulan ruder sederhana yang digunakan untuk mengemudi hovercraft.
Cetak 3D
Namun, setelah selesai mendesain, saya memulai dengan mencetak 3D bagian-bagiannya.
Badan hovercraft adalah bagian terbesar yang akan dicetak dan saya secara khusus merancangnya agar sesuai dengan printer 3D Creality CR-10 saya, yang memiliki cetakan 30x30cm.
Ini adalah tautan ke printer 3D ini jika Anda ingin memeriksanya.
Setelah pencetakan selesai, saatnya untuk membersihkan. Badan utama hovercraft atau kabin adalah cetakan terlama yang memakan waktu sekitar 18 jam untuk dicetak. Karena desain lengkung, dan karena saya ingin mencetaknya sebagai satu cetakan, banyak bahan pendukung yang digunakan untuk cetakan ini.
Namun, sangat mudah untuk menghapusnya dan bagian akhir sangat sempurna. Badan hovercraft dicetak terbalik dan hanya memiliki sedikit bahan pendukung yang harus dihapus. Sebenarnya, saya harus melakukan beberapa penyesuaian pada cetakan ini dan memotong beberapa materi dari perumahan blower tengah sehingga pemegang selimut dapat pas dengan baik.
Saya sudah memperbarui model 3D jadi tidak akan memiliki masalah ini lagi.
Beberapa area bundar pada bagian sedikit kasar jadi saya menggunakan kertas penggerus sederhana untuk menghaluskannya.
Propeler tidak perlu pembersihan dan bekerja cukup bagus langsung keluar dari printer 3D.
Melukis Hovercraft
Oke langkah berikutnya adalah melukis bagian cetak 3D. Saya tidak menggunakan primer sebelumnya melainkan langsung melapisi cat akrilik dalam bentuk cat spray.
Saya menggunakan warna cokelat coklat untuk lapisan pertama. Untuk beberapa bagian kecil, yang sebenarnya hanya hiasan, saya menggunakan warna cokelat lebih terang.
Untuk membuat hovercraft terlihat sedikit lebih keren, setelah lapisan pertama kering, saya melanjutkan dengan menambahkan dua warna lagi pada bagian-bagiannya. Untuk tujuan itu, saya membuat pola acak pada kertas sederhana, dan menggunakannya untuk membuat garis dan bintik-bintik dengan warna berbeda. Saya menggunakan warna cokelat lebih terang dan hitam untuk tujuan itu.
Merakit Hovercraft RC Arduino
Saya sangat suka bagaimana bagian-bagiannya hasilnya, jadi setelah kering, saya melanjutkan dengan merakitnya.
Saya memulai dengan memasang servo motor yang mengontrol ruder pada perumahan blower dorong. Saya mengamankan servo menggunakan dua baut dan nut M2.
Selanjutnya adalah motor brushless. Model tertentu yang saya miliki adalah D2830 yang memiliki diameter 28mm dan panjang 30mm, dan tentu saja, perumahannya dirancang khusus untuk motor ini.
Di sini saat memasang motor, pertama saya harus melewati kabel melalui pembukaan. Ini sedikit sempit, tetapi masih bisa dilakukan untuk melewatinya. Kemudian di sisi belakang, menggunakan baut M3 saya mengamankan motor pada perumahan.
Selanjutnya, saya dapat menggabungkan perumahan dorong dengan badan utama hovercraft. Bagian ini memiliki pembukaan sehingga kabel servo dan motor BLDC dapat melewatinya.
Menggunakan empat baut M3, saya mengamankan mereka erat bersama.
Setelah selesai itu, saya melanjutkan dengan memasang motor brushless kedua pada badan hovercraft. Di sini lagi saya menggunakan metode yang sama. Pertama, saya melewati kabel melalui pembukaan dan kemudian di sisi belakang mengamankan motor menggunakan empat baut M3.
Diagram Rangkaian
Selanjutnya datang elektronik. Komponen elektronik akan ditempatkan di antara badan dan badan utama hovercraft. Namun sebelum kita melakukannya mari kita lihat diagram rangkaian dan melihat bagaimana semuanya perlu dihubungkan.
Jadi, otak dari hovercraft ini adalah papan Arduino. Dengan Arduino kita dapat dengan mudah mengontrol servo serta dua motor brushless menggunakan dua pengendali kecepatan elektronik atau ESC. Untuk memadamkan motor BLDC, saya akan menggunakan baterai Li-Po 3S yang menyediakan sekitar 11V, dan untuk memadamkan Arduino, kita dapat menggunakan 5V yang diatur yang disediakan ESC melalui fitur Battery Eliminator Circuit.
Untuk komunikasi nirkabel saya akan menggunakan modul transceiver NRF24L01 yang jika digunakan dengan antena diperkuat dapat memiliki jangkauan stabil hingga 700 meter di ruang terbuka. Pengirim RC yang akan saya gunakan untuk mengontrol hovercraft, adalah yang saya buat sendiri dalam salah satu tutorial saya sebelumnya, jadi Anda dapat memeriksanya jika Anda memerlukan lebih banyak detail tentangnya. Ada juga tutorial terperinci tentang modul NRF24l01, dan cara menggunakan motor brushless menggunakan Arduino. Namun, prinsip kerja dasarnya adalah bahwa pengirim mengirim data Joystick atau potensiometer ke penerjemah yang mengontrol kecepatan motor brushless dan posisi servo.
Ada satu detail kecil lagi pada diagram rangkaian ini, dan itu adalah pemantau baterai. Saya menambahkan pembagi tegangan sederhana yang terbuat dari dua resistor, yang terhubung langsung ke baterai, dan outputnya pergi ke input analog Arduino. Pembagi tegangan menurunkan 11 volt menjadi sekitar 4 volt yang kemudian dapat diterima oleh pin 5V Arduino. Dengan ini kita dapat memantau tegangan baterai, dan mengatur LED untuk menyala saat, misalnya, tegangan baterai akan turun di bawah 11 volt.
Anda dapat mendapatkan komponen yang diperlukan untuk Tutorial Arduino ini dari tautan di bawah ini:
Modul Transceiver NRF24L01….
NRF24L01 + PA + LNA ………….….
Motor Brushless ………………….……
ESC 30A ……………………………….…..
Baterai Li-Po ………………………………..
XT60 2 Betina ke 1 Jantan ………….
Konektor XT60 …………………………
Motor Servo ………………………………..
Papan Arduino …………………………
Jadi, saya mulai menghubungkan komponen seperti yang dijelaskan. Untuk menghubungkan dua ESC ke satu baterai saya menggunakan pemisah konektor baterai paralel, tipe XT60.
Untuk menambahkan saklar daya ke proyek, saya menggunakan konektor XT60 lain, di mana saya memotong satu kabel dan memasang saklar geser di sana. Jadi, satu sisi pergi ke kabel splitter Y dan sisi lain ke baterai.
Selanjutnya, saya menempatkan ESC ke dalam badan utama dan menimpalnya di antara badan dan badan hovercraft. Kemudian menggunakan empat baut M3 saya memasang dua bagian bersama. Dari pembukaan atas badan saya kemudian memasukkan baterai ke dalam area kabin.
Selanjutnya, kita perlu menghubungkan komponen ke Arduino dan untuk itu saya menambahkan dua pin header ke Arduino yang akan berfungsi sebagai pin GND dan 5V.
Jadi, setelah saya menghubungkan semuanya ke Arduino, saya melewati antena NRF24L01, LED indikator dan saklar daya, melalui tutup atas kabin.
Kemudian saya hanya perlu memasukkan semuanya ke dalam kabin. Di sini agak sempit karena saya menggunakan Arduino UNO, dan sebaiknya saya menggunakan Arduino Nano sebagai gantinya.
Namun, saya berhasil memasukkan semuanya, juga melekatkan bagian hias kecil pada tutup dan kemudian hanya memasangnya ke badan kabin.
Saya melanjutkan dengan memasang sistem pengemudi. Pertama, saya menghubungkan tautan kecil ke tanduk servo menggunakan baut dan nut M2. Kemudian saya memasukkan ruder pertama di tempat dan mengamankannya pada perumahan dorong menggunakan kawat logam 2mm yang melewati badannya sehingga ruder dapat berputar di sekelilingnya. Dengan cara yang sama saya memasang ruder kedua.
Ruder ini memiliki slot tambahan sehingga kita dapat menghubungkannya ke tautan yang sebelumnya dimasukkan ke servo. Lagi, saya menggunakan baut dan nut M2 untuk mengamankannya. Dan akhirnya, saya menghubungkan kedua ruder satu sama lain menggunakan tautan lain dan dengan itu sistem pengemudi selesai.
Selanjutnya, saya akan melekatkan bagian hias kecil ini di sisi hovercraft. Menggunakan bor, saya membuat lubang dan kemudian mengamankan bagian pada badan dengan satu baut. Saya menempatkan bagian ini di kedua sisi dan saya pikir mereka cukup cocok dengan tampilan keseluruhan hovercraft.
Oke, selanjutnya saya melanjutkan dengan membuat selimut untuk hovercraft ini. Anda dapat memperhatikan di sini pemegang selimut memiliki lubang di sekelilingnya dan itu untuk memasangnya pada badan.
Ada juga slot untuk nut ditempatkan dan dengan cara itu, kita akan dapat dengan mudah mengamankan pemegang selimut pada badan menggunakan baut M3. Setelah saya mengamankan semua nut di tempat, saya melanjutkan dengan membuat selimut untuk yang saya gunakan kantong plastik sampah sederhana.
Jadi pertama saya menerapkan perekat AC pada area tengah pemegang, dan melekatkannya pada kantong plastik. Kemudian saya memindahkan perimeter pemegang sekitar 6cm. Saya menandainya di beberapa titik dan kemudian menghubungkannya bersama.
Menggunakan pisau utilitas, saya memotong kantong plastik ke ukuran yang tepat. Kemudian saya membalik selimut, dan menambahkan pemegang tambahan pada kantong di tempat sebelumnya kita melekatkannya menggunakan perekat AC.
Selanjutnya, bagian luar kantong perlu diikat ke atas pemegang. Lagi, saya menggunakan perekat AC untuk tujuan itu dan dengan hati-hati mengamankan kantong plastik padanya.
Setelah selesai dengan itu, inilah bagaimana selimut harus terlihat.
Selanjutnya, saya membuat lubang melalui kantong plastik tempat baut harus melewati. Pemegang selimut hanya 1mm lebih kecil dari badan hovercraft, jadi dalam kombinasi dengan kantong plastik itu pas dengan sempurna di dalam badan. Untuk mengamankan selimut pada badan, saya cukup mengencangkan baut M3 di sekeliling seluruh perimeter.
Ada satu hal lagi yang perlu dilakukan pada selimut dan itu adalah memotong area tengah kantong plastik.
Jadi, dengan ini setengah udara akan langsung mengembangkan selimut dan kemudian akan keluar melalui pembukaan ini, menciptakan bantal udara tambahan di tengah.
Akhirnya, yang tersisa adalah memasang propeler pada motor brushless. Untuk tujuan itu, saya menggunakan collet yang datang dengan motor brushless. Ini adalah cara yang sangat sederhana dan efektif untuk memasang propeler pada poros motor.
Namun, saya kehilangan collet untuk motor lainnya, jadi saya harus mencetak versi propeler yang berbeda untuk langsung pas pada poros motor, yang berdiameter 3.15mm. Hasil cetaknya sebenarnya cukup bagus, pas dan teramankan sempurna pada motor bahkan tanpa menggunakan perekat.
Dan itu saja, hovercraft kontrol radio kita akhirnya selesai.
Namun, yang tersisa dalam video ini adalah untuk melihat kode Arduino dan bagaimana programnya bekerja.
Kode Arduino Hovercraft RC
Inilah kode untuk proyek Hovercraft RC berbasis Arduino DIY ini:
/* Arduino based RC Hovercraft == Receiver Code - ESC and Servo Control = by Dejan, www.HowToMechatronics.com Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <Servo.h> #define led 10 RF24 radio(8, 9); // nRF24L01 (CE, CSN) const byte address[6] = "00001"; unsigned long lastReceiveTime = 0; unsigned long currentTime = 0; Servo esc1; // create servo object to control the ESC Servo esc2; Servo servo1; int esc1Value, esc2Value, servo1Value; // Max size of this struct is 32 bytes - NRF24L01 buffer limit struct Data_Package { byte j1PotX; byte j1PotY; byte j1Button; byte j2PotX; byte j2PotY; byte j2Button; byte pot1; byte pot2; byte tSwitch1; byte tSwitch2; byte button1; byte button2; byte button3; byte button4; }; Data_Package data; //Create a variable with the above structure void setup() { Serial.begin(9600); radio.begin(); radio.openReadingPipe(0, address); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_LOW); radio.startListening(); // Set the module as receiver resetData(); esc1.attach(7); esc2.attach(6); servo1.attach(5); pinMode(led, OUTPUT); } void loop() { // Check whether we keep receving data, or we have a connection between the two modules currentTime = millis(); if ( currentTime - lastReceiveTime > 1000 ) { // If current time is more then 1 second since we have recived the last data, that means we have lost connection resetData(); // If connection is lost, reset the data. It prevents unwanted behavior, for example if a drone jas a throttle up, if we lose connection it can keep flying away if we dont reset the function } // Check whether there is data to be received if (radio.available()) { radio.read(&data, sizeof(Data_Package)); // Read the whole data and store it into the 'data' structure lastReceiveTime = millis(); // At this moment we have received the data } // Controlling servos servo1Value = map(data.j2PotX, 0, 255, 0, 50); servo1.write(servo1Value); // Controlling brushless motor with ESC // Lift propeller esc1Value = map(data.pot1, 0, 255, 1000, 2000); // Map the receiving value form 0 to 255 to 0 1000 to 2000, values used for controlling ESCs esc1.writeMicroseconds(esc1Value); // Send the PWM control singal to the ESC // Thrust propeller esc2Value = constrain(data.j1PotY, 130, 255); // Joysticks stays in middle. So we only need values the upper values from 130 to 255 esc2Value = map(esc2Value, 130, 255, 1000, 2000); esc2.writeMicroseconds(esc2Value); // Monitor the battery voltage int sensorValue = analogRead(A0); float voltage = sensorValue * (5.00 / 1023.00) * 3; // Convert the reading values from 5v to suitable 12V i Serial.println(voltage); // If voltage is below 11V turn on the LED if (voltage < 11) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } void resetData() { // Reset the values when there is no radio connection - Set initial default values data.j1PotX = 127; data.j1PotY = 127; data.j2PotX = 127; data.j2PotY = 127; data.j1Button = 1; data.j2Button = 1; data.pot1 = 1; data.pot2 = 1; data.tSwitch1 = 1; data.tSwitch2 = 1; data.button1 = 1; data.button2 = 1; data.button3 = 1; data.button4 = 1; }Code language: Arduino (arduino)
Deskripsi: Jadi pertama kita perlu menyertakan pustaka RF24 untuk komunikasi radio serta pustaka servo untuk mengontrol baik servo maupun motor brushless. Kemudian kita perlu mendefinisikan objek radio dan servo, beberapa variabel yang dibutuhkan untuk program di bawah serta struktur variabel yang digunakan untuk menyimpan data masuk dari pengirim RC DIY saya. Untuk detail lebih lanjut bagaimana komunikasi ini bekerja saya menyarankan untuk memeriksa tutorial khusus saya untuk itu.
Di bagian setup kita perlu menginisialisasi komunikasi radio serta menentukan pin tempat servo dan ESC terhubung.
Di bagian loop kita membaca data masuk dari pengirim dan menggunakan nilai-nilai tersebut untuk mengontrol servo dan motor brushless. Jadi, data masuk joystick yang bervariasi dari 0 hingga 255 dikonversi menjadi nilai dari 0 hingga 50 dan kita menggunakan nilai-nilai ini untuk mengontrol posisi servo.
Dengan metode yang sama kita mengontrol motor brushless menggunakan ESC. Data masuk yang dari 0 hingga 255 dikonversi menjadi nilai dari 1000 hingga 2000 dan menggunakan fungsi writeMicroseconds() kita mengirim data ini ke ESC sebagai sinyal kontrol.
Untuk memantau tegangan baterai, kita membaca input analog yang datang dari pembagi tegangan dan dengan matematika sederhana kita mengonversi nilai input menjadi nilai nyata tegangan baterai. Jika tegangan baterai turun di bawah 11V kita cukup menyalakan LED indikator.
Dan itu saja. Jika Anda memerlukan lebih banyak detail, Anda dapat memeriksa tutorial lain yang disarankan dan Anda akan dapat memahami sepenuhnya bagaimana semuanya bekerja.
Saya harap Anda menyukai tutorial ini dan mempelajari hal baru. Jangan ragu untuk bertanya apa pun di bagian komentar di bawah dan periksa Koleksi Proyek Arduino saya.