Arduino Drone Dengan GPS

Kami berangkat untuk membangun drone quadcopter (FPV) yang dikendalikan oleh Arduino yang dikontrol dan distabilkan dengan kembali ke rumah, pergi ke koordinat, dan fungsi penahanan GPS. Kami dengan naif berasumsi bahwa menggabungkan program Arduino yang ada dan kabel untuk quadcopter tanpa GPS dengan yang ada pada sistem transmisi GPS akan relatif mudah dan bahwa kami dapat dengan cepat beralih ke tugas pemrograman yang lebih kompleks. Namun, jumlah yang mengejutkan harus berubah untuk menyatukan kedua proyek ini, dan akhirnya kami membuat quadcopter FPV yang mendukung GPS, tanpa ada fungsi tambahan.

Kami telah memasukkan instruksi tentang cara mereplikasi produk kami jika Anda senang dengan quadcopter yang lebih terbatas.

Kami juga telah memasukkan semua langkah yang kami ambil menuju quadcopter yang lebih otonom. Jika Anda merasa nyaman menggali jauh ke dalam Arduino atau sudah memiliki banyak pengalaman Arduino dan ingin mengambil titik pemberhentian kami sebagai titik awal untuk eksplorasi Anda sendiri, maka Instructable ini juga untuk Anda.

Ini proyek hebat untuk mempelajari sesuatu tentang membangun dan mengkode untuk Arduino tidak peduli berapa banyak pengalaman yang Anda miliki. Selain itu, Anda mudah-mudahan akan pergi dengan drone.

Setup adalah sebagai berikut:

Dalam daftar bahan, bagian tanpa tanda bintang diperlukan untuk kedua sasaran.

Bagian-bagian dengan satu tanda bintang diperlukan hanya untuk proyek yang belum selesai dari quadcopter yang lebih otonom.

Bagian dengan dua tanda bintang diperlukan hanya untuk quadcopter yang lebih terbatas.

Langkah-langkah umum untuk kedua proyek tidak memiliki penanda setelah judul

Langkah-langkah yang hanya diperlukan untuk quadcopter non-otonom yang lebih terbatas memiliki "(Uno)" setelah judul.

Langkah-langkah yang hanya diperlukan untuk quadcopter otonom yang sedang dalam proses memiliki "(Mega)" setelah judul.

Untuk membangun quad berbasis Uno, ikuti langkah-langkah dalam urutan, lewati setiap langkah dengan "(Mega)" setelah judul.

Untuk mengerjakan quad berbasis Mega, ikuti langkah-langkahnya secara berurutan, lewati semua langkah dengan "(Uno)" setelah judul.

Langkah 1: Kumpulkan Bahan

Komponen:

1) Satu frame quadcopter (frame yang tepat kemungkinan tidak masalah) ($ 15)

2) Empat 2830, motor 900kV brushless (atau serupa), dan empat paket aksesori pemasangan (4x $ 6 + 4x $ 4 = total $ 40)

3) Empat 20A ESC UBEC (4x $ 10 = total $ 40)

4) Satu papan distribusi daya (dengan koneksi XT-60) ($ 20)

5) One 3s, 3000-5000mAh LiPo baterai dengan koneksi XT-60 (3000mAh sesuai dengan sekitar 20 menit waktu penerbangan) ($ 25)

6) Banyak baling-baling (ini sering patah) ($ 10)

7) One Arduino Mega 2560 * ($ 40)

8) One Arduino Uno R3 ($ 20)

9) Arduino Uno R3 kedua ** ($ 20)

10) One Arduino Ultimate GPS Shield (Anda tidak memerlukan pelindung, tetapi menggunakan GPS yang berbeda akan membutuhkan kabel yang berbeda) ($ 45)

11) Dua transceiver nirkabel HC-12 (2x $ 5 = $ 10)

12) Satu giro / akselerometer 6 MPO- 6050, 6DOF (derajat kebebasan) ($ 5)

13) Satu Turnigy 9x 2.4GHz, pasangan pemancar / penerima 9 saluran ($ 70)

14) header Arduino perempuan (dapat ditumpuk) ($ 20)

15) pengisi daya LiPo Battery Balance (dan adaptor 12V DC, tidak termasuk) ($ 20)

17) Kabel adaptor USB A to B male to male ($ 5)

17) Lakban

18) Kecilkan tubing

Peralatan:

1) Besi solder

2) Solder

3) Epoksi Plastik

4) Lebih ringan

5) Wire stripper

6) Satu set kunci pas Allen

Komponen opsional untuk transmisi video FPV (tampilan orang pertama) real-time:

1) Kamera FPV kecil (ini tautan ke yang cukup murah dan berkualitas buruk yang kami gunakan, Anda bisa mengganti yang lebih baik) ($ 20)

2) 5.6GHz pasangan pemancar / penerima video (832 model digunakan) ($ 30)

3) 500mAh, 3s (11.1V) Baterai LiPo ($ 7) (kami menggunakan dengan steker pisang, tetapi kami sarankan Anda menggunakan baterai yang terhubung, karena memiliki konektor yang kompatibel dengan pemancar TS832, dan dengan demikian tidak t membutuhkan solder).

4) 2 1000mAh 2s (7.4V) baterai LiPo, atau serupa ($ 5). Jumlah mAh tidak kritis selama lebih dari 1000mAh atau lebih. Pernyataan yang sama seperti di atas berlaku untuk jenis steker untuk salah satu dari dua baterai. Yang lain akan digunakan untuk menyalakan monitor, jadi Anda harus menyolder apa pun yang terjadi. Mungkin yang terbaik untuk mendapatkan satu dengan steker XT-60 untuk ini (itulah yang kami lakukan). Tautan untuk jenis itu ada di sini: 1000mAh 2s (7.4V) LiPo dengan plug XT-60

5) Monitor LCD (opsional) ($ 15). Anda juga dapat menggunakan adaptor AV-USB dan perangkat lunak penyalin DVD untuk dapat melihat langsung di laptop. Ini juga memberikan pilihan untuk merekam video dan foto, daripada hanya menontonnya secara langsung.

6) Jika Anda membeli baterai dengan colokan berbeda dari yang terhubung, Anda mungkin memerlukan adaptor yang sesuai. Apapun, dapatkan adaptor yang sesuai dengan colokan untuk baterai yang memberi daya pada monitor. Di sinilah tempat mendapatkan adaptor XT-60

* = hanya untuk proyek yang lebih maju

** = hanya untuk proyek yang lebih mendasar

Biaya:

Jika mulai dari awal (tetapi dengan besi solder, dll ...), tidak ada sistem FPV: ~ $ 370

Jika Anda sudah memiliki pemancar / penerima RC, pengisi daya baterai LiPo, dan baterai LiPo: ~ $ 260

Biaya sistem FPV: $ 80

Langkah 2: Pasang Bingkai

Langkah ini cukup mudah, terutama jika menggunakan bingkai pra-dibuat yang sama yang kami gunakan. Cukup gunakan sekrup yang disertakan dan satukan bingkai seperti yang ditunjukkan, menggunakan kunci pas allen atau obeng untuk bingkai Anda. Pastikan lengan dengan warna yang sama berdekatan satu sama lain (seperti dalam gambar ini), sehingga drone memiliki bagian depan dan belakang yang jelas. Selanjutnya, pastikan bahwa bagian panjang pelat bawah menonjol di antara lengan yang berwarna berlawanan. Ini menjadi penting nanti.

Langkah 3: Pasang Motor dan Hubungkan Escs

Sekarang setelah bingkai terpasang, keluarkan empat motor dan empat aksesori pemasangan. Anda dapat menggunakan sekrup yang disertakan dalam set pemasangan, atau sekrup yang tersisa dari bingkai quadcopter untuk memasang sekrup pada motor dan dudukan. Jika Anda membeli tunggangan yang telah kami tautkan, Anda akan menerima dua komponen tambahan, seperti gambar di atas. Kami memiliki performa motor yang baik tanpa bagian-bagian ini, jadi kami membiarkannya untuk mengurangi berat.

Setelah motor disekrup di tempat, epoksi papan distribusi daya (PDB) di tempat di atas pelat atas bingkai quadcopter. Pastikan Anda mengarahkannya sedemikian rupa sehingga konektor baterai menunjukkan di antara lengan-lengan yang berbeda warna (sejajar dengan salah satu bagian panjang pelat bawah), seperti pada gambar di atas.

Anda juga harus memiliki empat kerucut baling-baling dengan utas wanita. Sisihkan ini untuk saat ini.

Sekarang keluarkan ESC Anda. Satu sisi akan memiliki dua kabel keluar dari sana, satu merah dan satu hitam. Untuk masing-masing dari empat ESC, masukkan kabel merah ke dalam konektor positif pada PDB dan hitam ke negatif. Perhatikan bahwa jika Anda menggunakan PDB yang berbeda, langkah ini mungkin memerlukan penyolderan. Sekarang sambungkan masing-masing dari tiga kabel yang keluar dari masing-masing motor. Pada titik ini, tidak masalah kawat ESC mana yang Anda hubungkan dengan kabel motor mana (selama Anda menghubungkan semua kabel satu ESC dengan motor yang sama!) Anda akan memperbaiki polaritas mundur di kemudian hari. Tidak berbahaya jika kabel dibalik; itu hanya menghasilkan motor berputar ke belakang.

Langkah 4: Siapkan Arduino dan Perisai

Catatan sebelum Anda mulai

Pertama, Anda dapat memilih untuk menyolder semua kabel secara langsung. Namun, kami merasa sangat berharga untuk menggunakan pin header karena mereka memberikan banyak fleksibilitas untuk pemecahan masalah dan mengadaptasi proyek. Berikut ini adalah deskripsi dari apa yang kami lakukan (dan rekomendasikan orang lain lakukan).

Siapkan Arduino dan lindungi

Keluarkan Arduino Mega Anda (atau Uno jika melakukan quad non-otonom), perisai GPS, dan header yang bisa ditumpuk. Solder ujung jantan dari header yang dapat ditumpuk di tempatnya pada perisai GPS, dalam barisan pin yang sejajar dengan pin yang telah disolder sebelumnya, seperti yang ditunjukkan pada gambar di atas. Juga menyolder dalam header yang dapat ditumpuk pada baris pin berlabel 3V, CD, ... RX. Gunakan pemotong kawat untuk memotong panjang berlebih pada pin yang menjulur ke bawah. Tempatkan header laki-laki dengan puncak bengkok di semua header yang bisa ditumpuk ini. Ini adalah kabel yang akan Anda solder untuk komponen lainnya.

Pasang perisai GPS ke atas, pastikan pin cocok dengan yang ada di Arduino (Mega atau Uno). Perhatikan bahwa jika menggunakan Mega, banyak Arduino akan tetap terbuka setelah Anda menempatkan perisai di tempatnya.

Letakkan pita listrik di bagian bawah Arduino, yang menutupi semua pin soldier yang terbuka, untuk mencegah korsleting saat Arduino bertumpu pada PDB.

Langkah 5: Menyatukan Komponen dan Tempatkan Baterai (Uno)

Skema di atas hampir identik dengan yang dibuat oleh Joop Brooking karena kami sangat mendasarkan desain kami dari miliknya.

* Perhatikan bahwa skema ini mengasumsikan pelindung GPS yang dipasang dengan benar, dan dengan demikian GPS tidak muncul dalam skema ini.

Skema di atas disiapkan menggunakan perangkat lunak Fritzing, yang sangat direkomendasikan terutama untuk skema yang melibatkan Arduino. Kami sebagian besar menggunakan bagian-bagian generik yang dapat diedit secara fleksibel, karena bagian-bagian kami umumnya tidak ada dalam pustaka bagian Fritzing.

-Pastikan bahwa saklar pada perisai GPS dialihkan ke "Direct Write."

-Sekarang kabel semua komponen sesuai dengan skema di atas (kecuali untuk baterai!) (Catatan penting pada kabel data GPS di bawah).

-Perhatikan bahwa Anda telah menghubungkan ESC ke motor dan PDB, sehingga bagian skematis ini selesai.

-Selanjutnya, perhatikan bahwa data GPS (kabel kuning) keluar dari pin 0 dan 1 pada Arduino (bukan pin Tx dan Rx terpisah pada GPS). Itu karena dikonfigurasi untuk "Direct Write" (lihat di bawah), GPS output langsung ke port serial perangkat keras di uno (pin 0 dan 1). Ini paling jelas ditunjukkan pada gambar kedua di atas dari kabel lengkap.

-Ketika memasang penerima RC, lihat gambar di atas. Amati bahwa kabel data masuk ke baris atas, sementara Vin dan Gnd masing-masing berada di baris kedua dan ketiga (dan pada kolom pin kedua hingga terjauh).

-Untuk melakukan perkabelan untuk transceiver HC-12, penerima RC, dan 5Vout dari PDB ke Vin dari Arduino kami menggunakan header stackable, sedangkan untuk gyro kami menyolder kabel langsung ke papan dan menggunakan tabung panas menyusut di sekitar pateri. Anda dapat memilih untuk melakukan salah satu komponen, namun menyolder langsung ke gyro disarankan karena menghemat ruang yang membuat bagian kecil lebih mudah untuk dipasang. Menggunakan header adalah pekerjaan kecil di depan, tetapi memberikan lebih banyak fleksibilitas. Kabel solder secara langsung adalah koneksi yang lebih aman untuk jangka panjang, namun berarti menggunakan komponen itu pada proyek lain lebih sulit. Perhatikan bahwa jika Anda menggunakan tajuk pada pelindung GPS, Anda masih memiliki cukup banyak fleksibilitas terlepas dari apa yang Anda lakukan. Yang terpenting, pastikan kabel data GPS pada pin 0 dan 1 pada GPS mudah dilepas dan diganti.

Pada akhir proyek kami, kami tidak dapat merancang metode yang baik untuk melampirkan semua komponen kami ke bingkai. Karena tekanan waktu kelas kami, solusi kami umumnya berputar di sekitar pita busa dua sisi, lakban, pita listrik, dan ikatan zip. Kami sangat menyarankan Anda menghabiskan lebih banyak waktu merancang struktur pemasangan yang stabil jika Anda merencanakan ini sebagai proyek jangka panjang. Dengan semua itu, jika Anda hanya ingin membuat prototipe cepat, jangan ragu untuk mengikuti proses kami. Namun, pastikan bahwa gyro sudah terpasang dengan aman. Ini adalah satu-satunya cara Arduino mengetahui apa yang dilakukan quadcopter, jadi jika bergerak dalam penerbangan, Anda akan memiliki masalah.

Dengan segala sesuatu terhubung dan terpasang, ambil baterai LiPo Anda dan geser di antara pelat atas dan bawah bingkai. Pastikan bahwa konektornya menunjuk ke arah yang sama dengan konektor PDB, dan bahwa mereka sebenarnya dapat terhubung. Kami menggunakan lakban untuk menahan baterai di tempatnya (pita velcro juga berfungsi, tetapi lebih mengganggu daripada lakban). Lakban berfungsi dengan baik karena seseorang dapat dengan mudah mengganti baterai atau mengeluarkannya untuk pengisian daya. Namun, Anda harus yakin bahwa Anda menekan baterai dengan kencang, seolah-olah baterai bergerak selama penerbangan, ini bisa sangat mengganggu keseimbangan drone. Jangan menghubungkan baterai ke PDB.

Langkah 6: Menyatukan Komponen dan Tempatkan Baterai (Mega)

Skema di atas disiapkan menggunakan perangkat lunak Fritzing, yang sangat direkomendasikan terutama untuk skema yang melibatkan arduino. Kami sebagian besar menggunakan suku cadang umum, karena suku cadang kami umumnya tidak ada di perpustakaan bagian Fritzing.

-Catat bahwa skema ini mengasumsikan pelindung GPS yang dipasang dengan benar, dan dengan demikian GPS tidak muncul dalam skema ini.

-Flip saklar pada Mega 2560 Anda ke "Soft Serial."

-Sekarang Hubungkan semua komponen sesuai dengan skema di atas (kecuali untuk baterai!)

-Perhatikan bahwa Anda telah menghubungkan ESC ke motor dan PDB, sehingga bagian skematis ini selesai.

-Jumper kabel dari Pin 8 ke Rx dan Pin 7 ke Tx ada karena (tidak seperti Uno, yang dibuat perisai ini), mega tidak memiliki pemancar-penerima (UART) asinkron universal pada pin 7 dan 8, dan dengan demikian kita harus menggunakan pin serial perangkat keras. Ada lebih banyak alasan mengapa kita membutuhkan pin seri perangkat keras, yang akan dibahas nanti.

-Ketika memasang penerima RC, lihat gambar di atas. Amati bahwa kabel data masuk ke baris atas, sementara Vin dan Gnd masing-masing berada di baris kedua dan ketiga (dan pada kolom pin kedua hingga terjauh).

-Untuk melakukan pengkabelan untuk transceiver HC-12, penerima RC, dan 5Vout dari PDB ke Vin dari Arduino kami menggunakan header stackable, sedangkan untuk gyro kami menyolder kabel secara langsung dan menggunakan pipa panas menyusut di sekitar solder. Anda dapat memilih untuk melakukan salah satu komponen. Menggunakan header adalah pekerjaan kecil di depan, tetapi memberikan lebih banyak fleksibilitas. Kabel solder secara langsung adalah koneksi yang lebih aman untuk jangka panjang, namun berarti menggunakan komponen itu pada proyek lain lebih sulit. Perhatikan bahwa jika Anda menggunakan tajuk pada pelindung GPS, Anda masih memiliki cukup banyak fleksibilitas terlepas dari apa yang Anda lakukan.

Pada akhir proyek kami, kami tidak dapat merancang metode yang baik untuk melampirkan semua komponen kami ke bingkai. Karena tekanan waktu kelas kami, solusi kami umumnya berputar di sekitar pita busa dua sisi, lakban, pita listrik, dan ikatan zip. Kami sangat menyarankan Anda menghabiskan lebih banyak waktu merancang struktur pemasangan yang stabil jika Anda merencanakan ini sebagai proyek jangka panjang. Dengan semua yang dikatakan, jika Anda hanya ingin membuat prototipe cepat, jangan ragu untuk mengikuti proses kami. Namun, pastikan bahwa gyro sudah terpasang dengan aman. Ini adalah satu-satunya cara Arduino mengetahui apa yang dilakukan quadcopter, jadi jika bergerak dalam penerbangan, Anda akan memiliki masalah.

Dengan segala sesuatu terhubung dan terpasang, ambil baterai LiPo Anda dan geser di antara pelat atas dan bawah bingkai. Pastikan bahwa konektornya menunjuk ke arah yang sama dengan konektor PDB, dan bahwa mereka sebenarnya dapat terhubung. Kami menggunakan lakban untuk menahan baterai di tempatnya (pita velcro juga berfungsi, tetapi lebih mengganggu daripada lakban). Lakban berfungsi dengan baik karena seseorang dapat dengan mudah mengganti baterai atau mengeluarkannya untuk pengisian daya. Namun, Anda harus yakin bahwa Anda menekan baterai dengan kencang, seolah-olah baterai bergerak selama penerbangan, ini bisa sangat mengganggu keseimbangan drone. Jangan menghubungkan baterai ke PDB.

Langkah 7: Bind Receiver

Ambil penerima RC dan hubungkan sementara ke catu daya 5V (baik dengan menyalakan Arduino dengan USB atau daya 9V, atau dengan catu daya terpisah. Jangan menghubungkan LiPo ke Arduino dulu). Ambil pin mengikat yang datang dengan penerima RC dan letakkan ke pin BIND pada penerima. Secara bergantian, pendekkan pin atas dan bawah di kolom BIND seperti yang ditunjukkan pada foto di atas. Lampu merah harus berkedip cepat pada penerima. Sekarang ambil controller dan tekan tombol di bagian belakang saat itu mati, seperti yang ditunjukkan di atas. Dengan tombol ditekan, hidupkan controller. Sekarang lampu yang berkedip pada receiver harus berubah menjadi padatan. Penerima terikat. Lepaskan kabel yang mengikat. Jika Anda menggunakan catu daya yang berbeda, sambungkan kembali penerima ke 5V dari Arduino.

Langkah 8: (Opsional) Menyatukan dan Memasang Sistem Kamera FPV.

Pertama, solder bersama adaptor XT-60 dengan kabel power dan ground pada monitor. Ini mungkin berbeda dari monitor ke monitor, tetapi daya akan hampir selalu merah, tanah hampir selalu hitam. Sekarang masukkan adaptor dengan kabel solder ke LiPo 1000mAh Anda dengan steker XT-60. Monitor harus dihidupkan dengan (biasanya) latar belakang biru. Itu langkah paling sulit!

Sekarang pasang antena pada penerima dan pemancar Anda.

Hubungkan 500mAh Lipo kecil Anda ke pemancar. Pin paling kanan (tepat di bawah antena) adalah ground (V_) baterai, pin berikutnya ke kiri adalah V +. Mereka datang tiga kabel yang masuk ke kamera. Kamera Anda harus dilengkapi dengan colokan tiga-in-one yang sesuai dengan pemancar. Pastikan Anda memiliki kabel data kuning di tengah. Jika Anda menggunakan baterai yang terhubung dengan colokan yang dimaksudkan untuk ini, langkah ini seharusnya tidak memerlukan solder.

Terakhir, pasang baterai 1000mAh lainnya dengan kabel DC out yang menyertai receiver Anda, dan colokkan itu ke port DC in pada receiver Anda. Terakhir, sambungkan ujung hitam kabel AVin yang menyertai receiver Anda ke port AVin pada penerima Anda, dan ujung lainnya (kuning, perempuan) ke ujung kuning laki-laki dari kabel AVin monitor Anda.

Pada titik ini, Anda harus dapat melihat tampilan kamera pada monitor. Jika Anda tidak bisa, pastikan bahwa penerima dan pemancar keduanya aktif (Anda harus melihat angka pada layar kecil mereka) dan bahwa mereka berada di saluran yang sama (kami menggunakan saluran 11 untuk keduanya dan berhasil dengan baik). Selanjutnya, Anda mungkin perlu mengubah saluran pada monitor.

Pasang komponen pada bingkai.

Setelah pengaturan berhasil, cabut baterai hingga siap untuk terbang.

Langkah 9: Mengatur Penerimaan Data GPS

Sambungkan Arduino kedua Anda dengan transceiver HC-12 kedua Anda seperti ditunjukkan dalam skema di atas, mengingat bahwa pengaturan hanya akan diaktifkan seperti yang ditampilkan jika dicolokkan ke komputer. Unduh kode transceiver yang disediakan, buka monitor serial Anda ke 9600 baud.

Jika menggunakan pengaturan yang lebih mendasar, Anda harus mulai menerima kalimat GPS jika perisai GPS Anda diaktifkan dan ditransfer dengan benar ke transceiver HC-12 lainnya (dan jika sakelar perisai pada "Direct Write").

Dengan Mega, pastikan sakelar menyala "Soft Serial."

Lampiran

  • Unduh Transceiver_Uno.ino

Langkah 10: Lakukan Pengaturan Kode (Uno)

Kode ini identik dengan yang digunakan oleh Joop Brokking dalam tutorial quadcopter Arduino-nya, dan ia layak mendapatkan semua pujian atas tulisannya.

Dengan baterai dilepas, gunakan kabel USB untuk menghubungkan komputer Anda ke Arduino, dan unggah Kode Pengaturan terlampir. Nyalakan pemancar RC Anda. Buka monitor serial Anda ke 57600 baud dan ikuti petunjuknya.

Kesalahan Umum:

Jika kode gagal diunggah, pastikan pin 0 dan 1 dicabut dari perisai UNO / GPS. Ini adalah port perangkat keras yang sama yang digunakan perangkat untuk berkomunikasi dengan komputer, sehingga harus bebas.

Jika kode melompati banyak langkah sekaligus, periksa apakah sakelar GPS Anda ada di "Direct Write."

Jika tidak ada receiver yang terdeteksi, pastikan ada lampu merah solid (tapi redup) pada receiver Anda saat pemancar menyala. Jika demikian, periksa kabel.

Jika tidak ada gyro yang terdeteksi, ini bisa jadi karena gyro rusak atau jika Anda memiliki jenis gyro yang berbeda dengan kode yang dirancang untuk menulis.

Lampiran

  • Unduh YMFC-AL_setup.ino

Langkah 11: Lakukan Pengaturan Kode (Mega)

Kode ini identik dengan yang digunakan oleh Joop Brokking dalam tutorial quadcopter Arduino-nya, dan ia layak mendapatkan semua pujian atas tulisannya. Kami hanya mengadaptasi kabel untuk Mega sehingga input penerima sesuai dengan pin Interupsi Pin yang benar.

Dengan baterai dilepas, gunakan kabel USB untuk menghubungkan komputer Anda ke Arduino, dan unggah Kode Pengaturan terlampir. Buka monitor serial Anda ke 57600 baud dan ikuti petunjuknya.

Lampiran

  • Unduh YMFC-AL_setup.ino

Langkah 12: Kalibrasi ESC (Uno)

Sekali lagi, kode ini identik dengan kode Joop Brokking. Semua modifikasi dilakukan dalam upaya mengintegrasikan GPS dan Arduino dan dapat ditemukan kemudian, dalam deskripsi pembangunan quadcopter yang lebih maju.

Unggah kode kalibrasi ESC terlampir. Pada monitor serial, tulis huruf 'r' dan tekan kembali. Anda harus mulai melihat nilai-nilai kontroler RC realtime terdaftar. Pastikan bahwa mereka bervariasi dari 1000 hingga 2000 di ujung throttle, roll, pitch, dan yaw yang ekstrem. Kemudian tulis 'a' dan tekan kembali. Biarkan kalibrasi gyro berjalan, dan kemudian verifikasi bahwa gyro mencatat gerakan quad. Sekarang angkat arduino dari komputer, dorong throttle sepenuhnya ke atas pada pengontrol, dan hubungkan baterai. ESC harus memutar ton beep yang berbeda (tetapi ini mungkin berbeda tergantung pada ESC dan firmware-nya). Dorong throttle sepenuhnya ke bawah. ESC harus mengeluarkan bunyi bip rendah, lalu diam. Cabut baterai.

Secara opsional, Anda dapat menggunakan kerucut yang menyertai paket aksesori pemasangan motor untuk mengencangkan baling-baling dengan erat. Kemudian masukkan angka 1 - 4 pada monitor seri untuk memberi daya masing-masing motor 1-4 pada daya terendah. Program akan mencatat jumlah goncangan karena ketidakseimbangan alat peraga. Anda dapat mencoba memperbaikinya dengan menambahkan sedikit scotch tape di satu sisi atau sisi lainnya dari alat peraga. Kami menemukan bahwa kami bisa mendapatkan penerbangan yang bagus tanpa langkah ini, tetapi mungkin sedikit kurang efisien dan lebih keras daripada kami menyeimbangkan alat peraga.

Lampiran

  • Unduh YMFC-AL_esc_calibrate.ino

Langkah 13: Kalibrasi ESC (Mega)

Kode ini sangat mirip dengan kode Brokking, namun kami mengadaptasinya (dan kabel yang sesuai) untuk bekerja dengan Mega.

Unggah kode kalibrasi ESC terlampir. Pada monitor serial, tulis huruf 'r' dan tekan kembali. Anda harus mulai melihat nilai-nilai kontroler RC realtime terdaftar. Pastikan bahwa mereka bervariasi dari 1000 hingga 2000 di ujung throttle, roll, pitch, dan yaw yang ekstrem.

Kemudian tulis 'a' dan tekan kembali. Biarkan kalibrasi gyro berjalan, dan kemudian verifikasi bahwa gyro mencatat gerakan quad.

Sekarang angkat arduino dari komputer, dorong throttle sepenuhnya ke atas pada pengontrol, dan hubungkan baterai. ESC harus mengeluarkan tiga bunyi bip rendah diikuti dengan bunyi bip tinggi (tetapi ini mungkin berbeda tergantung pada ESC dan firmware-nya). Dorong throttle sepenuhnya ke bawah. Cabut baterai.

Perubahan yang kami lakukan pada kode ini adalah beralih dari menggunakan PORTD untuk pin ESC ke menggunakan PORTA dan kemudian mengubah byte yang ditulis ke port ini sehingga kami mengaktifkan pin yang tepat seperti yang ditunjukkan dalam skema pengkabelan. Perubahan ini karena pin register PORTD tidak berada di lokasi yang sama pada Mega seperti pada Uno. Kami belum dapat sepenuhnya menguji kode ini karena kami bekerja dengan Mega merek lama yang dimiliki toko sekolah kami. Ini berarti bahwa karena alasan tertentu tidak semua pin register PORTA dapat mengaktifkan ESC dengan benar. Kami juga mengalami masalah dengan menggunakan operator sama dengan (| =) di beberapa kode pengujian kami. Kami tidak yakin mengapa ini menyebabkan masalah saat menulis byte untuk mengatur tegangan pin ESC, jadi kami memodifikasi kode Brooking sesedikit mungkin. Kami pikir kode ini sangat dekat dengan fungsional, tetapi jarak tempuh Anda mungkin berbeda.

Lampiran

  • YMFC-AL_esc_calibrateMEGA.ino Unduh

Langkah 14: Dapatkan Airborne !! (Uno)

Dan lagi, kode genius ketiga ini adalah karya Joop Brokking. Perubahan pada ketiga bagian kode ini hanya ada dalam upaya integrasi data GPS kami ke dalam Arduino.

Dengan baling-baling Anda terpasang dengan kuat ke bingkai dan semua komponen diikat, ditempel, atau dipasang, memuat kode pengontrol penerbangan ke Arduino Anda, lalu cabut kabel Arduino dari komputer Anda.

Bawa quadcopter Anda ke luar, pasang baterai dan nyalakan pemancar Anda. Secara opsional, bawa laptop yang terhubung ke pengaturan penerimaan GPS Anda serta pengaturan dan monitor penerimaan video Anda. Muat kode transceiver ke Arduino terestrial Anda, buka monitor serial Anda hingga 9600 baud dan saksikan data GPS masuk.

Sekarang Anda siap terbang. Dorong throttle ke bawah dan menguap ke kiri untuk mempersenjatai quadcopter, lalu perlahan angkat throttle untuk melayang. Mulailah dengan terbang rendah ke tanah dan melewati permukaan lembut seperti rumput hingga Anda merasa nyaman.

Lihat video tertanam dari kami dengan bersemangat menerbangkan drone saat pertama kali kami dapat membuat drone dan GPS bekerja secara bersamaan.

Lampiran

  • Unduh YMFC-AL_Flight_controller.ino

Langkah 15: Dapatkan Airborne !! (Mega)

Karena hangup kami dengan kode kalibrasi ESC untuk Mega, kami tidak pernah dapat membuat kode pengendali penerbangan untuk board ini. Jika Anda sampai pada titik ini, maka saya membayangkan bahwa Anda setidaknya telah mengutak-atik kode kalibrasi ESC untuk membuatnya bekerja untuk Mega. Karena itu, Anda mungkin harus membuat modifikasi yang mirip dengan kode pengontrol penerbangan seperti yang Anda buat pada langkah terakhir. Jika kode kalibrasi ESC kami untuk Mega berfungsi secara ajaib tanpa modifikasi lainnya, maka hanya ada beberapa hal yang harus Anda lakukan terhadap kode stok untuk membuatnya berfungsi untuk langkah ini. Pertama-tama Anda harus melalui dan mengganti semua instance PORTD dengan PORTA. Juga, jangan lupa untuk mengubah DDRD ke DDRA. Kemudian, Anda perlu mengubah semua byte yang sedang ditulis ke register PORTA sehingga mereka mengaktifkan pin yang tepat. Untuk melakukan ini, gunakan byte B11000011 untuk mengatur pin ke tinggi dan B00111100 untuk mengatur pin ke rendah. Semoga Sukses, dan beri tahu kami jika Anda berhasil terbang menggunakan Mega!

Langkah 16: Bagaimana Kita Sampai Ke Tempat Kita Sekarang Dengan Mega Design

Proyek ini adalah pengalaman belajar yang luar biasa bagi kami sebagai pemula Arduino dan hobi elektronik. Oleh karena itu, kami pikir kami akan memasukkan kisah semua yang kami temui saat mencoba GPS mengaktifkan kode Joop Brokking. Karena kode Brokking sangat menyeluruh dan jauh lebih rumit daripada apa pun yang kami tulis, kami memutuskan untuk memodifikasinya sesedikit mungkin. Kami mencoba mendapatkan perisai GPS untuk mengirim data ke Arduino dan kemudian meminta Arduino mengirimkan informasi itu kepada kami melalui transceiver HC12 tanpa mengubah kode penerbangan atau kabel dengan cara apa pun. Setelah melihat skema dan kabel Arduino Uno kami untuk mengetahui pin apa yang tersedia, kami mengubah kode transceiver GPS yang kami gunakan untuk bekerja di sekitar desain yang ada. Kemudian kami mengujinya untuk memastikan semuanya bekerja. Pada titik ini, segalanya tampak menjanjikan.

Langkah selanjutnya adalah mengintegrasikan kode yang baru saja kami modifikasi dan uji dengan pengontrol penerbangan Brokking. Ini tidak terlalu sulit, tetapi kami dengan cepat mengalami kesalahan. Pengontrol penerbangan Brokking mengandalkan perpustakaan Arduino Wire dan EEPROM sementara kode GPS kami menggunakan pustaka Serial Perangkat Lunak dan pustaka GPS Arduino. Karena Pustaka Kawat merujuk pustaka Serial Perangkat Lunak, kami mengalami kesalahan di mana kode tidak dapat dikompilasi karena ada "beberapa definisi untuk _vektor 3_", apa pun artinya. Setelah mencari di Google dan mencari-cari di perpustakaan, kami akhirnya menyadari bahwa konflik perpustakaan ini tidak memungkinkan untuk menggunakan potongan kode ini bersama-sama. Jadi, kami mencari alternatif.

Apa yang kami temukan adalah bahwa satu-satunya kombinasi perpustakaan yang tidak membuat kesalahan pada kami adalah beralih perpustakaan GPS standar untuk neoGPS dan kemudian menggunakan AltSoftSerial, bukan Software Serial. Namun kombinasi ini berhasil, AltSoftSerial hanya dapat beroperasi dengan pin tertentu, yang tidak tersedia dalam desain kami. Inilah yang mengarahkan kita untuk menggunakan Mega. Arduino Megas memiliki beberapa port serial perangkat keras, yang berarti bahwa kita dapat melewati konflik pustaka ini dengan tidak perlu membuka port serial perangkat lunak sama sekali.

Namun, ketika kami mulai menggunakan Mega, kami segera menyadari bahwa konfigurasi pin berbeda. Pin pada Uno yang memiliki interupsi berbeda pada Mega. Demikian pula, pin SDA dan SCL berada di lokasi yang berbeda. Setelah mempelajari diagram pin untuk setiap jenis Arduino, dan membuat ulang register yang disebut dalam kode, kami dapat menjalankan kode pengaturan penerbangan hanya dengan kabel ulang yang minimal dan tidak ada perubahan perangkat lunak.

Kode kalibrasi ESC adalah tempat kami mulai mengalami masalah. Kami telah menyinggung ini secara singkat sebelumnya, tetapi pada dasarnya kode menggunakan register pin untuk mengatur pin yang digunakan untuk mengontrol ESC. Ini membuat kode lebih sulit dibaca daripada menggunakan fungsi pinMode () standar; Namun, itu membuat kode berjalan lebih cepat dan mengaktifkan pin secara bersamaan. Ini penting karena kode penerbangan berjalan dalam putaran yang diatur dengan cermat. Karena perbedaan pin antara Arduino, kami memutuskan untuk menggunakan register port A pada Mega. Namun, dalam pengujian kami, tidak semua pin memberi kami tegangan output yang sama ketika disuruh berlari tinggi. Beberapa pin memiliki output sekitar 4.90V dan yang lain memberi kami lebih dekat ke 4.95V. Rupanya ESC yang kami miliki agak rewel, jadi mereka hanya akan beroperasi dengan benar ketika kami menggunakan pin dengan tegangan yang lebih tinggi. Ini kemudian memaksa kami untuk mengubah byte yang kami tulis untuk mendaftar A sehingga kami berbicara dengan pin yang benar. Ada lebih banyak info tentang ini di bagian kalibrasi ESC.

Ini adalah sejauh yang kami dapatkan di bagian proyek ini. Ketika kami pergi untuk menguji kode kalibrasi ESC yang dimodifikasi ini, sesuatu terpendek dan kami kehilangan komunikasi dengan Arduino kami. Kami sangat bingung dengan ini karena kami tidak mengubah kabel apa pun. Ini memaksa kami untuk mundur dan menyadari bahwa kami hanya punya beberapa hari untuk mendapatkan drone terbang setelah berminggu-minggu mencoba menyatukan potongan-potongan kami yang tidak kompatibel. Inilah sebabnya kami mundur dan menciptakan proyek yang lebih sederhana dengan Uno. Namun, kami masih berpikir bahwa pendekatan kami dekat dengan bekerja dengan Mega dengan sedikit lebih banyak waktu.

Tujuan kami adalah bahwa penjelasan tentang rintangan yang kami temui ini bermanfaat bagi Anda jika Anda berupaya memodifikasi kode Brokking. Kami juga tidak pernah mendapat kesempatan untuk mencoba mengkodekan fitur kontrol otonom apa pun berdasarkan GPS. Ini adalah sesuatu yang perlu Anda ketahui setelah membuat drone yang berfungsi dengan Mega. Namun, dari beberapa penelitian Google awal sepertinya menerapkan filter Kalman mungkin cara yang paling stabil dan akurat untuk menentukan posisi dalam penerbangan. Kami menyarankan agar Anda sedikit meneliti tentang bagaimana algoritma ini mengoptimalkan estimasi keadaan. Selain itu, semoga sukses dan beri tahu kami jika Anda berhasil lebih dari yang kami bisa!

Artikel Terkait