Daftar Isi:
- Langkah 1: Pengaturan Perangkat Keras Vivado
- Langkah 2: Menyiapkan Desain Blok
- Langkah 3: Buat Blok IP PWM Kustom
- Langkah 4: Tambahkan Blok IP PWM ke Desain
- Langkah 5: Konfigurasikan Pembungkus HDL dan Atur File Kendala
- Langkah 6: Menghasilkan Bitstream
- Langkah 7: Menyiapkan Proyek di SDK
- Langkah 8: Modifikasi Kode FreeRTOS
- Langkah 9: Pencetakan 3D untuk Stabilizer
- Langkah 10: Merakit Bagian
- Langkah 11: Menghubungkan Zybo ke Stabilizer
- Langkah 12: Koreksi Utara Sejati
- Langkah 13: Menjalankan Program
Video: Stabilizer Kamera Genggam: 13 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
pengantar
Ini adalah panduan untuk membuat rig stabilisasi kamera genggam 3-sumbu untuk GoPro menggunakan Digilent Zybo Zynq-7000 Development Board. Proyek ini dikembangkan untuk kelas Sistem Operasi Real-Time CPE (CPE 439). Stabilizer menggunakan tiga servos dan IMU untuk mengoreksi gerakan pengguna untuk menjaga level kamera.
Bagian yang Diperlukan untuk Proyek
- Papan Pengembangan Zybo Zynq-7000 yang Digilent
- Sparkfun IMU Breakout - MPU 9250
- 2 Servo HiTec HS-5485HB (beli gerakan atau program 180 derajat dari 90 hingga 180 derajat)
- 1 HiTec HS-5685MH Servo (beli gerakan atau program 180 derajat dari 90 hingga 180 derajat)
- 2 Kurung Servo Standar
- 1 papan tempat memotong roti
- 15 kabel jumper pria-ke-pria
- 4 kabel jumper pria-ke-wanita
- Lem panas
- Pegangan atau Pegangan
- batang kayu diameter 5 mm
- GoPro atau kamera lain dan perangkat keras pemasangan
- Catu daya mampu menghasilkan 5V.
- Akses ke Pencetak 3D
Langkah 1: Pengaturan Perangkat Keras Vivado
Mari kita mulai dengan membuat desain blok yang mendasari untuk proyek tersebut.
- Buka Vivado 2016.2, klik ikon "Buat Proyek Baru", dan klik "Berikutnya>".
- Beri nama proyek Anda dan klik "Berikutnya >".
- Pilih proyek RTL dan tekan "Berikutnya>".
- Ketik ke dalam bilah pencarian xc7z010clg400-1 dan kemudian pilih bagian dan tekan "Berikutnya>" dan "Selesai".
Langkah 2: Menyiapkan Desain Blok
Sekarang kita akan mulai membuat desain blok dengan menambahkan dan mengatur Blok Zynq IP.
- Di panel sebelah kiri, di bawah IP Integrator, Klik "Buat Desain Blok" dan kemudian klik "OK".
- Klik kanan pada tab "Diagram" dan pilih "Tambahkan IP…".
- Ketik "ZYNQ7 Processing System" dan klik pilihan.
- Klik dua kali pada blok Zynq yang muncul.
- Klik "Impor Pengaturan XPS" dan impor file "ZYBO_zynq_def.xml" yang disediakan.
- Buka "MIO Configuration" dan pilih "Application Processor Unit" dan aktifkan Timer 0 dan Watchdog timer.
- Di tab yang sama, di bawah "I/O Peripherals", pilih ENET 0 (dan ubah menu dropdown ke "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
- Di bawah "GPIO", centang GPIO MIO, Reset ENET, Reset USB, dan Reset I2C.
- Sekarang arahkan ke "Konfigurasi Jam". Pilih FCLK_CLK0 di bawah PL Fabric Clocks. Kemudian, Klik "Oke".
Langkah 3: Buat Blok IP PWM Kustom
Blok IP ini memungkinkan papan untuk mengirim sinyal PWM keluar untuk mengontrol pergerakan servos. Pekerjaan itu sangat didasarkan pada tutorial oleh Digitronix Nepal, ditemukan di sini. Logika ditambahkan untuk memperlambat jam sehingga pulsa keluar pada tingkat yang benar. Blok mengambil angka dari 0 hingga 180 dan mengubahnya menjadi pulsa dari 750-2150 usec.
- Sekarang, di bawah tab Alat di dekat sudut kiri atas, klik "Buat dan Paket IP …" dan tekan Berikutnya.
- Kemudian pilih "Buat periferal AXI4 baru" dan tekan Berikutnya.
- Beri nama blok IP PWM Anda (kami menamakannya pwm_core) dan klik Next dan kemudian klik Next di halaman berikutnya juga.
- Sekarang klik "Edit IP" dan tekan Selesai. Ini akan membuka jendela baru untuk mengedit blok pwm.
- Di tab "Sumber" dan di bawah "Sumber Desain", perluas 'pwm_core_v1_0' (ganti pwm_core dengan nama Anda) dan buka file yang terlihat.
- Salin dan tempel kode yang disediakan di bawah 'pwm_core_v1_0_S00_AXI.v' di file zip di bagian bawah proyek. Ctrl + Shift + R dan ganti 'pwm_core' dengan nama Anda untuk blok ip.
- Selanjutnya buka ' name _v1_0' dan salin kode yang disediakan di file 'pwm_core_v1_0.v'. Ctrl + Shift + R dan ganti 'pwm_core' dengan name.
- Sekarang arahkan ke tab 'Paket IP - nama' dan pilih "Parameter Kustomisasi".
- Di tab ini akan ada bilah kuning di bagian atas yang memiliki teks tertaut. Pilih ini, dan "Parameter Tersembunyi" akan muncul di kotak.
- Sekarang pergi ke "Customization GUI" dan klik kanan pada Pwm Counter Max pilih "Edit Parameter…".
- Centang kotak "Visible in Customization GUI" dan "Specify Range".
- Ubah menu tarik-turun "Jenis:" ke Rentang bilangan bulat dan atur minimum ke 0 dan maksimum ke 65535 dan centang kotak "Tampilkan Rentang". Sekarang klik OK.
- Tarik Pwm Counter Max di bawah Pohon 'Halaman 0'. Sekarang pergi ke "Review and Package" dan klik tombol "Re-Package IP".
Langkah 4: Tambahkan Blok IP PWM ke Desain
Kami akan menambahkan blok IP ke dalam desain blok untuk memungkinkan pengguna mengakses blok IP PWM melalui prosesor.
- Klik kanan pada tab diagram dan klik "Pengaturan IP…". Arahkan ke tab "Pengelola Repositori".
- Klik tombol plus hijau dan pilih. Sekarang temukan ip_repo di File Manager dan tambahkan itu ke proyek. Kemudian Tekan Terapkan dan kemudian OK.
- Klik kanan pada tab diagram dan klik "Tambahkan IP…". Ketik nama blok IP PWM Anda dan pilih.
- Seharusnya ada bilah hijau di bagian atas layar, pertama-tama pilih "Jalankan Otomatisasi Koneksi" dan klik OK. Kemudian klik "Jalankan Otomatisasi Blokir" dan klik OK.
- Klik dua kali pada blok PWM dan ubah Pwm Counter Max menjadi 1024 dari 128.
- Arahkan penunjuk mouse Anda ke PWM0 pada blok PWM. Seharusnya ada pensil kecil yang muncul saat Anda melakukannya. Klik kanan dan pilih "Buat Port…" dan klik OK saat jendela terbuka. Ini menciptakan port eksternal untuk sinyal yang akan diteruskan.
- Ulangi langkah 6 untuk PWM1 dan PWM2 juga.
- Temukan ikon panah ganda melingkar kecil di bilah sisi dan klik itu. Ini akan meregenerasi tata letak dan desain blok Anda akan terlihat seperti gambar di atas.
Langkah 5: Konfigurasikan Pembungkus HDL dan Atur File Kendala
Kita sekarang akan membuat Desain Tingkat Tinggi untuk Desain Blok kita dan kemudian memetakan pin PWM0, PWM1, dan PWM2 ke Pmod pada papan Zybo.
- Buka tab "Sumber". Klik kanan file desain blok Anda di bawah "Sumber Desain" dan klik "Buat Pembungkus HDL…". Pilih "Salin pembungkus yang dihasilkan untuk mengizinkan pengeditan pengguna" dan klik OK. Ini menghasilkan Desain Tingkat Tinggi untuk Desain Blok yang kami buat.
- Pmod yang akan kita hasilkan adalah JE.
- Di bawah File, pilih "Tambahkan Sumber…" dan pilih "Tambah atau buat batasan" dan klik Berikutnya.
- Klik tambahkan file dan pilih file "ZYBO_Master.xdc" yang disertakan. Jika Anda melihat file ini, Anda akan melihat semuanya tidak diberi komentar kecuali enam baris "set_property" di bawah "##Pmod Header JE". Anda akan melihat bahwa PWM0, PWM1, dan PWM2 adalah argumen untuk baris ini. Mereka memetakan ke Pin 1, Pin 2, dan Pin 3 dari JE Pmod.
Langkah 6: Menghasilkan Bitstream
Kita perlu menghasilkan bitstream untuk desain perangkat keras untuk diekspor ke SDK sebelum kita melanjutkan.
- Di bawah "Program dan Debug" di bilah sisi, pilih "Hasilkan Bitstream". Ini akan menjalankan sintesis, lalu implementasi, dan kemudian menghasilkan bitstream untuk desain.
- Perbaiki kesalahan yang muncul, tetapi peringatan umumnya dapat diabaikan.
- Buka File-> Luncurkan SDK dan klik OK. Ini akan membuka Xilinx SDK.
Langkah 7: Menyiapkan Proyek di SDK
Bagian ini bisa sedikit membuat frustrasi. Jika ragu, buat BSP baru dan ganti yang lama. Ini menghemat banyak waktu debugging.
- Mulailah dengan mengunduh FreeRTOS versi terbaru di sini.
- Ekstrak semuanya dari unduhan dan impor FreeRTOS ke SDK dengan Mengklik File-> Impor, dan di bawah "Umum" klik "Proyek yang Ada Ke Ruang Kerja" lalu klik Berikutnya.
- Buka "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" di dalam folder FreeRTOS. Hanya impor "RTOSDemo" dari lokasi ini.
- Sekarang buat Board Support Package (BSP) dengan mengklik File->New Board Support Package.
- Pilih "ps7_cortexa9_0" dan centang "lwip141" dan klik OK.
- Klik kanan pada folder biru RTOSDemo dan pilih "Referensi Proyek".
- Hapus centang "RTOSDemo_bsp" dan centang BSP baru yang baru saja kita buat.
Langkah 8: Modifikasi Kode FreeRTOS
Kode yang kami berikan dapat dipisahkan menjadi 7 file yang berbeda. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h dan iic_imu.h. Kode di iic_main_thread.c telah diadaptasi dari perpustakaan Kris Winer, yang dapat ditemukan di sini. Kami terutama mengubah kodenya untuk memasukkan tugas dan membuatnya bekerja dengan papan Zybo. Kami juga menambahkan fungsi untuk menghitung koreksi orientasi kamera. Kami telah meninggalkan beberapa pernyataan cetak yang berguna untuk debugging. Sebagian besar dari mereka dikomentari tetapi jika Anda merasa perlu, Anda dapat membatalkan komentar mereka.
- Cara termudah untuk memodifikasi file main.c adalah dengan mengganti kode dengan kode yang disalin dari file main.c kami yang disertakan.
- Untuk membuat file baru, klik kanan pada folder src di bawah RTOSDemo dan pilih C Source File. Beri nama file ini "iic_main_thread.c".
- Salin kode dari "iic_main_thread.c" yang disertakan dan tempel di file yang baru Anda buat.
- Ulangi langkah 2 dan 3 dengan file yang tersisa.
- membutuhkan instruksi penautan di gcc. Untuk menambahkan ini ke jalur build Anda klik kanan pada RTOSDemo dan pilih "C/C++ Build Settings".
- Sebuah jendela baru akan terbuka. Navigasikan ke ARM v7 gcc linker->Libraries. Pilih file add kecil di sudut kanan atas dan ketik "m". Ini akan mencakup perpustakaan matematika dalam proyek.
- Bangun proyek dengan Ctrl + B untuk mengonfirmasi semuanya berfungsi. Periksa peringatan yang dihasilkan tetapi Anda mungkin dapat mengabaikannya.
- Ada beberapa tempat yang perlu dimodifikasi, terutama deklinasi magnetik dari lokasi Anda saat ini. Kami akan menjelaskan cara mengubahnya di bagian kalibrasi dari tutorial.
Langkah 9: Pencetakan 3D untuk Stabilizer
Anda perlu mencetak 3D beberapa bagian untuk proyek ini. Seseorang mungkin dapat membeli suku cadang yang memiliki dimensi/ukuran yang sama dengan suku cadang cetak kami.
- Gunakan file yang disediakan untuk mencetak braket lengan dan penahan untuk GoPro.
- Anda perlu menambahkan perancah ke file.stl.
- Pangkas/bersihkan bagian perancah berlebih setelah dicetak.
- Anda dapat mengganti paku kayu dengan bagian yang dicetak 3D jika diinginkan.
Langkah 10: Merakit Bagian
Ada beberapa bagian untuk merakit stabilizer. Braket yang dibeli dilengkapi dengan 4 sekrup self-tapping dan 4 baut dengan mur. Karena ada 3 servo, salah satu tanduk servo perlu disadap terlebih dahulu agar 2 baut dapat masuk.
- Solder 8 pin ke breakout IMU, 4 di setiap sisi.
- IMU terpasang ke braket penahan cetak 3D untuk GoPro di tengah braket.
- Arahkan braket sehingga lubang pemasangan servo berada di sisi kiri Anda. Tempatkan IMU di tepi terdekat dengan Anda, dengan pin menggantung di tepi. Kemudian, letakkan dudukan GoPro di atas IMU, rekatkan IMU dan dudukan pada braket.
- Pasang HS-5485HB ke braket servo yang terintegrasi ke lengan cetak 3D.
- Pasang braket GoPro ke servo yang terpasang di lengan, pastikan servo diatur sehingga berada di tengah rentang geraknya.
- Selanjutnya, pasang servo HS-5685MH ke braket servo. Kemudian ketuk klakson servo dengan salah satu sekrup. Sekarang pasang servo ke bagian bawah braket servo terakhir.
- Sekarang pasang servo terakhir ke braket tempat servo HS-5685MH disekrup. Kemudian kencangkan lengan ke servo ini, pastikan lengan terpasang sehingga dapat bergerak 90 derajat setiap arah.
- Untuk menyelesaikan konstruksi gimbal, tambahkan sepotong kecil paku kayu untuk menghubungkan antara braket GoPro dan lengan cetak 3D. Anda sekarang telah merakit stabilizer.
- Terakhir, Anda dapat menambahkan pegangan yang terhubung ke braket servo bawah.
Langkah 11: Menghubungkan Zybo ke Stabilizer
Ada beberapa hal yang harus diperhatikan saat melakukan ini. Anda ingin memastikan bahwa 5V dari catu daya tidak pernah masuk ke papan Zybo, karena ini akan menyebabkan masalah dengan papan. Pastikan untuk memeriksa ulang jumper Anda untuk memastikan tidak ada kabel yang dialihkan.
- Untuk memasang Zybo ke stabilizer, Anda membutuhkan 15 jumper pria ke pria dan 4 jumper pria ke wanita.
- Pertama, sambungkan dua jumper ke catu daya 5V Anda di sepanjang rel + dan - papan tempat memotong roti. Ini akan memasok daya ke servos.
- Kemudian, sambungkan 3 pasang jumper ke rel + dan - papan tempat memotong roti. Ini akan menjadi kekuatan untuk masing-masing servos.
- Pasang ujung lain dari + dan - jumper ke masing-masing servos.
- Hubungkan jumper antara - rel breadboard dan salah satu pin GND pada Zybo JE Pmod (Lihat gambar Langkah 5). Ini akan menciptakan kesamaan antara papan Zybo dan catu daya.
- Selanjutnya sambungkan kabel sinyal ke pin 1, pin 2, dan pin 3 dari JE Pmod. Pin 1 memetakan ke servo bawah, pin 2 memetakan ke servo di ujung lengan, dan pin 3 memetakan ke servo tengah.
- Colokkan 4 kabel female ke pin GND, VDD, SDA dan SCL dari breakout IMU. GND dan VDD dicolokkan ke GND dan 3V3 pada pin JF. Colokkan pin SDA ke pin 8 dan SCL ke pin 7 pada JF (Lihat gambar Langkah 5).
- Terakhir, sambungkan komputer ke board menggunakan kabel micro usb. Ini akan memungkinkan komunikasi uart dan memungkinkan Anda memprogram papan Zybo.
Langkah 12: Koreksi Utara Sejati
Kalibrasi magnetometer di IMU penting untuk pengoperasian perangkat yang benar. Deklinasi magnetik, yang mengoreksi utara magnet ke utara sebenarnya.
- Untuk mengoreksi perbedaan dari utara magnet dan utara sejati, Anda perlu menggunakan kombinasi dua layanan, Google Maps dan kalkulator medan magnet NOAA.
- Gunakan Google Maps untuk menemukan garis lintang dan bujur dari lokasi Anda saat ini.
- Ambil bujur dan lintang Anda saat ini dan hubungkan ke kalkulator medan magnet.
- Apa yang dikembalikan adalah deklinasi magnetik. Masukkan perhitungan ini ke dalam kode pada baris 378 dari "iic_main_thread.c". Jika deklinasi Anda adalah timur, maka kurangi dari nilai yaw, jika barat maka tambahkan ke nilai yaw.
*foto diambil dari panduan sambungan MPU 9250 Sparkfun, ditemukan di sini.
Langkah 13: Menjalankan Program
Saat yang Anda tunggu-tunggu! Bagian terbaik dari proyek ini adalah melihatnya bekerja. Satu masalah yang kami perhatikan adalah bahwa ada penyimpangan dari nilai yang dilaporkan dari IMU. Filter low-pass dapat membantu memperbaiki penyimpangan ini, dan mengotak-atik magnetometer, akselerasi, dan kalibrasi gyro juga akan membantu memperbaiki penyimpangan ini.
- Pertama, build semua di SDK, ini bisa dilakukan dengan menekan Ctrl + B.
- Pastikan catu daya menyala dan diatur ke 5V. Periksa kembali apakah semua kabel menuju ke tempat yang benar.
- Kemudian, untuk menjalankan program, tekan segitiga hijau di tengah atas bilah tugas.
- Saat program berjalan, semua servos akan diatur ulang ke posisi 0, jadi bersiaplah untuk rig bergerak. Setelah program diinisialisasi, servos kemudian akan kembali ke posisi 90 derajat.
- Fungsi kalibrasi magnetometer akan berjalan dan petunjuk arah akan dicetak ke terminal UART, yang dapat Anda sambungkan melalui monitor serial seperti 'dempul' atau monitor serial yang disediakan di SDK.
- Kalibrasi akan membuat Anda memindahkan perangkat dalam angka 8 selama sekitar 10 detik. Anda dapat menghapus langkah ini dengan mengomentari baris 273 dari "iic_main_thread.c". Jika Anda berkomentar, Anda perlu menghapus komentar pada baris 323 - 325 "iic_main_thread.c". Nilai-nilai ini awalnya dikumpulkan dari kalibrasi magnetometer di atas dan kemudian dicolokkan sebagai nilai.
- Setelah kalibrasi, kode stabilisasi akan diinisialisasi dan perangkat akan menjaga kamera tetap stabil.
Direkomendasikan:
Komputer DASAR Genggam: 6 Langkah (dengan Gambar)
Komputer BASIC Genggam: Instruksi ini menjelaskan proses saya membangun komputer genggam kecil yang menjalankan BASIC. Komputer ini dibuat dengan chip ATmega 1284P AVR, yang juga mengilhami nama konyol untuk komputer tersebut (HAL 1284). Build ini SANGAT terinspirasi oleh
MutantC V3 - PC Genggam Modular dan Kuat: 9 Langkah (dengan Gambar)
MutantC V3 - PC Genggam Modular dan Kuat: Platform genggam Raspberry-pi dengan keyboard fisik, Display dan header Ekspansi untuk papan kustom (Seperti Arduino Shield).mutantC_V3 adalah penerus mutantC_V1 dan V2. Lihat mutantC_V1 dan mutantC_V2.https://mutantc.gitlab.io/https://gitla
Lampu Malam Genggam: 7 Langkah (dengan Gambar)
Lampu Malam Genggam: Anak saya yang berusia 5 tahun terus membangunkan kami di malam hari, dan kami terus mengajarinya tentang membiarkan ibu dan ayah tidur, sampai saya menyadari bahwa dia sebenarnya tidak dapat menentukan sendiri apakah itu waktu tidur atau bermain time.Plus, dia akan meminta kita untuk menyalakan lampu
Konsol Genggam Dengan Kontroler dan Sensor Nirkabel (Arduino MEGA & UNO): 10 Langkah (dengan Gambar)
Konsol Genggam Dengan Kontroler dan Sensor Nirkabel (Arduino MEGA & UNO): Yang saya gunakan:- Arduino MEGA- 2x Arduino UNO- Adafruit 3.5" TFT 320x480 Layar Sentuh HXD8357D- Buzzer- Speaker 4Ohm 3W- Lampu LED 5mm- Ultimaker 2+ Printer dengan Filamen PLA Hitam- Pemotong laser dengan kayu MDF- Cat semprot hitam (untuk kayu)- 3x nRF24
Stabilizer Kamera untuk ENV2 atau Ponsel Kamera Lainnya: 6 Langkah
Penstabil Kamera untuk ENV2 atau Ponsel Kamera Lainnya: Pernah ingin membuat video tetapi hanya memiliki ponsel kamera? Pernahkah Anda membuat video dengan ponsel kamera tetapi Anda tidak dapat menahannya? Nah dari ini adalah instruksi untuk Anda