Isi kandungan:
- Langkah 1: Membina Modul PWM- Fail Sumber
- Langkah 2: Membangun Modul PWM- Persediaan Vivado
- Langkah 3: Membangun Modul PWM- Buat Fail Projek
- Langkah 4: Membina Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (I)
- Langkah 5: Membina Modul PWM- Reka Bentuk Reka Bentuk dan Pengaturan Fail Kekangan (II)
- Langkah 6: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (III)
- Langkah 7: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (IV)
- Langkah 8: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (V)
- Langkah 9: Membangun Modul PWM- Pemasangan Perkakasan
- Langkah 10: Membangun Modul PWM- Hasilkan Bitstream dan Lancarkan SDK
- Langkah 11: Membangun Modul PWM- Buat Aplikasi Baru di Xilinx SDK
- Langkah 12: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (I)
- Langkah 13: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (II)
- Langkah 14: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (III)
- Langkah 15: Membangun Modul PWM- Membungkus Fungsi PWM (I)
- Langkah 16: Membangun Modul PWM- Membungkus Fungsi PWM (II)
- Langkah 17: Membangun Modul PWM- Membungkus Fungsi PWM (III)
- Langkah 18: Membina Modul PWM- Jadikannya Berjalan
- Langkah 19: Menstrimkan Pemprosesan Video di Digilent ZYBO Dengan OV7670
- Langkah 20: Gambarajah Blok Lengkap
- Langkah 21: Sambungkan OV7670 ke ZYBO
- Langkah 22: Buat Reka Bentuk Blok
- Langkah 23: Tambahkan Fail VHDL untuk Kawalan dan Tangkap Kamera OV7670
- Langkah 24: Tambah Fail Kekangan
- Langkah 25: Tambahkan IP Repo untuk IP HLS
- Langkah 26: Tambahkan Modul dan IP
- Langkah 27: Tetapan Konfigurasi IP
- Langkah 28: Tambah dan Konfigurasikan Blok IP PS
- Langkah 29: Bahagian 1. Membangun Modul PWM untuk Servo Motors
- Langkah 30: Sambungan Sisi Input Video (aclk Diserlahkan)
- Langkah 31: Sambungan ke OV7670
- Langkah 32: Sambungan di Bahagian Luar Video
- Langkah 33: Jalankan Automasi Blok dan Sambungan
- Langkah 34: Hasilkan Pembungkus HDL
- Langkah 35: Hasilkan Bitstream, Eksport Perkakasan ke SDK, Lancarkan SDK Dari Vivado
- Langkah 36: SDK (tiada FreeRTOS)
- Langkah 37: Pelaksanaan FreeRTOS
- Langkah 38: Arahan Penggunaan
- Langkah 39: Rujukan dan Pautan
Video: Kamera ZYBO OV7670 Dengan Kawalan Pan / tilt: 39 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Mulakan pada langkah pertama untuk perincian hanya dengan membuat pengawal PWM servo 2 paksi.
Mulakan pada gambarajah blok besar-besaran (Langkah 19) untuk projek penuh.
Penyediaan kamera + Pan / tilt yang kami gunakan:
PmodCON3 dari Digilent digunakan untuk menghubungkan servos.
Langkah 1: Membina Modul PWM- Fail Sumber
Langkah 2: Membangun Modul PWM- Persediaan Vivado
Pertama, muat turun laman web Vivado Design Suite From Xilinx. Pasang semua rangkaian reka bentuk, termasuk Vivado Software Development Kit (SDK). Projek ini menggunakan versi 2017.2.
Sementara itu, Digilent Adept 2 juga harus dipasang sebagai pemacu papan Zybo.
Langkah 3: Membangun Modul PWM- Buat Fail Projek
Sebelum membuat fail projek, anda harus memastikan bahawa anda sudah memasang fail Zybo dengan betul sebagai tutorial di sini:
Versi Vivado 2015.1 dan Pemasangan Fail Papan Kemudian
Buka Vivado 2017.2. Pada Permulaan Pantas, klik Buat Projek -> Seterusnya -> Nama Projek (Namakan nama projek anda di sini) -> Jenis Projek. Pada Jenis Projek, pilih Projek RTL dan tandai pada "Jangan tentukan sumber pada masa ini". Selanjutnya, untuk Bahagian Lalai, pilih "Papan" dan "Zybo" sebagai Nama Paparan. Seterusnya, Klik Selesai untuk memulakan projek.
Langkah 4: Membina Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (I)
Pada Flow Navigator, klik pada "" Buat Blok Reka Bentuk ", kemudian tekan OK. klik tanda "+" untuk menambah IP yang diperlukan. Tambah:
- Sistem Pemprosesan Satu ZYNQ7 Dua Pemasa AXI
- Dua Pemasa AXI
Langkah 5: Membina Modul PWM- Reka Bentuk Reka Bentuk dan Pengaturan Fail Kekangan (II)
Setelah Menambah IP, Jalankan Automasi Blok dan automasi sambungan. Setelah automasi selesai, pada blok "axi_timer_0", klik kanan pada pwm0 -> Buat Luaran. Namakan pin luaran pwm0 sebagai pwm_Xaxis. Juga, ulangi proses di atas pada blok “axi_timer_1” dan namakan pin luaran pwm0 sebagai pwm_Zaxis.
Langkah 6: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (III)
Perhatikan bahawa setiap kali kita menyelesaikan Reka Bentuk Blok di Vivado, kita perlu membuat Pembungkus HDL. Oleh kerana ia akan menjadi modul peringkat teratas untuk setiap projek.
Langkah 7: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (IV)
Sekarang, kita perlu menyediakan fail kekangan kita untuk menetapkan pin yang disambungkan ke rajah blok kita. Tutup tetingkap Reka Bentuk, tab Di Sumber, "Tambah Sumber" -> Tambah atau buat kekangan-> tambahkan Zybo-Master.xdc sebagai fail kekangan kami.
Langkah 8: Membangun Modul PWM- Reka Bentuk Blok dan Tetapan Fail Kekangan (V)
Buka fail kekangan Zybo-Master.xdc dari folder Kekangan, lepaskan port yang ingin kami tentukan sebagai isyarat output dan namakan semula "get_ports {XXXX}", yang XXXX menunjukkan pin luaran yang dinamakan dalam Blok Diagram. Pengaturan fail kekangan ditunjukkan dalam gambar.
Langkah 9: Membangun Modul PWM- Pemasangan Perkakasan
Sambungkan motor servo ke Pmod CON3. TowerPro SG90 adalah model motor servo yang kami gunakan dalam projek ini. Untuk wayar motor servo, wayar oren mewakili isyarat PWM, disambungkan ke pin SIG di Pmod CON3. Vcc wayar merah adalah wayar kuasa yang disambungkan ke pin VS di Pmod CON3. Akhirnya, wayar coklat Gnd adalah wayar tanah yang disambungkan ke pin GND. Seterusnya, masukkan Pmod CON3 ke baris atas port JD di Papan Zybo.
Langkah 10: Membangun Modul PWM- Hasilkan Bitstream dan Lancarkan SDK
1. Di tab Project Navigator, jalankan Hasilkan BitStream.
2. Eksport perkakasan: Fail> Eksport> Eksport Perkakasan-> tanda pada "sertakan bitstream" -> OK 3. Lancarkan SDK: Fail -> Lancarkan SDK.
Langkah 11: Membangun Modul PWM- Buat Aplikasi Baru di Xilinx SDK
Buat aplikasi baru:
Fail> Baru> Projek Aplikasi -> Masukkan nama projek anda -> Selesai
Di bawah Project Explorer, terdapat tiga folder.
Dalam kes ini, "design_1_wrapper_hw_platform_0" adalah folder yang sebelumnya dieksport oleh Vivado. Axis_2_PWM_SDK_bsp adalah folder pakej sokongan papan. Dan Axis_2_PWM_SDK adalah folder projek utama kami di SDK. Anda dapat melihat fail "helloworld.c" di bawah folder "src" Axis_2_PWM_SDK, di mana "helloworld.c" adalah fail utama.
Langkah 12: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (I)
Mari kita periksa beberapa fail di bawah Project Explorer. Pertama, dalam folder "design_1_wrapper_hw_platform_0", buka "system.hdf". Fail ini menunjukkan peta alamat untuk pemproses ps7_cortex9 dan blok IP yang terdapat dalam reka bentuk kami.
Langkah 13: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (II)
Kemudian, periksa fail "sertakan" dan "libsrc" di bawah folder "Axis_2_PWM_SDK_bsp". Fail perpustakaan di sini membolehkan kita berinteraksi dengan peranti perkakasan tanpa daftar "bermain".
Langkah 14: Membangun Modul PWM- Gambaran Keseluruhan Project Explorer (III)
Melalui dokumentasi BSP, xtmrctr.h dijumpai sebagai Perpustakaan Kawalan Pemasa Xilinx yang berkaitan dengan Pemasa AXI. Biasanya, kita dapat menemui fungsi PWM yang diingini di sini. Namun, jika anda membaca dokumentasi "tmrctr_v4_3", ini menunjukkan bahawa pemandu tidak menyokong operasi PWM pada masa ini. Kerana kekurangan fungsi PWM, kita harus menyelesaikan fungsi PWM kita dengan bantuan Panduan Produk IP LogiCORE xtmrctr.h dan AXI Timer v2.0.
Langkah 15: Membangun Modul PWM- Membungkus Fungsi PWM (I)
Kembali ke fail utama "helloworld.c", sertakan fail tajuk berikut:
Langkah 16: Membangun Modul PWM- Membungkus Fungsi PWM (II)
Tentukan alamat asas dua AXI TImer melalui "xparameters.h".
Langkah 17: Membangun Modul PWM- Membungkus Fungsi PWM (III)
Bina fungsi PWM yang diingini.
Duty_val: menukar nilai darjah menjadi kitaran tugas. PWM_Freq_Duty: tetapkan frekuensi dan kitaran tugas yang dikehendaki untuk menghasilkan PWM. Tempoh jam juga harus diberikan.
PWM_START: berikan alamat pendaftaran PWM dan mula menghasilkan PWM.
PWM_STOP: berikan alamat daftar PWM dan berhenti menghasilkan PWM.
Selebihnya kod demo ditunjukkan dalam "helloworld.c" di bawah "Axis_2_PWM_SDK"
Langkah 18: Membina Modul PWM- Jadikannya Berjalan
1. Program FPGA melalui SDK
- Sambungkan Zybo Board melalui port USB ke PC.
- Alat Xilinx -> Program FPGA
2. Jalankan program
Klik pada ikon "Jalankan" dan turunkan menu -> Jalankan Sebagai -> Lancarkan pada Perkakasan
3. Terminal SDK
- Buka Terminal SDK -> Sambungkan ke Serial Port -> OK
- Jalankan program. Sekiranya kod demo berjaya dijalankan, anda akan melihat "Permulaan selesai!" di Terminal SDK.
Langkah 19: Menstrimkan Pemprosesan Video di Digilent ZYBO Dengan OV7670
Fail arkib lengkap dilampirkan.
Langkah 20: Gambarajah Blok Lengkap
Ini menunjukkan gambarajah lengkap semua sambungan dan blok IP dalam projek
Langkah 21: Sambungkan OV7670 ke ZYBO
Buat sambungan untuk memasangkan modul ov7670 ke ZYBO Pmods
Data Pmod ialah Pmod D
Control Pmod ialah Pmod C
Selain itu, sambungkan PmodCON3 dan servo seperti yang dinyatakan pada separuh pertama tutorial ini
Langkah 22: Buat Reka Bentuk Blok
Di Flow Navigator, klik "Buat Reka Bentuk Blok", kemudian tekan OK.
Langkah 23: Tambahkan Fail VHDL untuk Kawalan dan Tangkap Kamera OV7670
Tambahkan fail VHDL yang dilampirkan pada langkah ini ke projek
Langkah 24: Tambah Fail Kekangan
Tambahkan fail kekangan yang dilampirkan ke projek anda.
Langkah 25: Tambahkan IP Repo untuk IP HLS
Ambil fail Zip yang dilampirkan dan unzip ke folder baru yang dinamakan serupa dalam direktori baru (folder) yang disebut "HLS_repo".
Tambahkan repositori IP ke projek anda dengan pergi ke katalog IP dan klik kanan memilih "Tambah Repositori …"
Navigasi ke direktori "HLS_repo" anda dan pilih.
Pilihan: Buat blok pemprosesan video HLS untuk diri anda sendiri!
Langkah 26: Tambahkan Modul dan IP
Tambahkan modul ov7670_axi_stream_capture, debounce dan ov7670_controller ke diagram blok dengan mengklik kanan latar belakang dan memilih "Tambah Modul…"
Begitu juga, tambahkan IP:
- HLS_Video_Track
- Penulisan Bingkai Video Menulis
- Pembacaan Bingkai Video Dibaca
- Pengawal Pemasaan Video
- AXI4-Streaming ke Video Out
- 3 daripada "Potongan"
- Pemalar
- 2 dari Pemasa AXI
Langkah 27: Tetapan Konfigurasi IP
Seperti yang ditunjukkan dalam gambar
Langkah 28: Tambah dan Konfigurasikan Blok IP PS
Tambahkan Sistem Pemprosesan ZYNQ7 ke rajah blok
edit konfigurasi:
-
Konfigurasi PS-PL
-
HP
- Dayakan S HP 0
- Dayakan S HP 1
-
-
Konfigurasi jam
-
Jam Kain PL
- FCLK_0 pada 100MHz
- FCLK_1 pada 25MHz (OutputClock)
- FLCK_2 pada 35MHz (<= 50MHz) (CameraClock)
-
Langkah 29: Bahagian 1. Membangun Modul PWM untuk Servo Motors
Keluarkan axi_timer_0 pwm0 ke port output baru pwm_Xaxis
Keluarkan axi_timer_1 pwm0 ke port output baru pwm_Zaxis
Langkah 30: Sambungan Sisi Input Video (aclk Diserlahkan)
Sambungkan blok IP sisi input video dengan betul
(* sambungan ini harus dibuat dengan memilih pilihan yang tepat semasa automasi sambungan) "aclk" dari axi_stream_capture pergi ke:
- ap_clk pada penampan bingkai video
- ap_clk pada blok pemprosesan aliran video HLS
- * aclk pada AXI smartconnect IP dari Penyangga Bingkai Video Tulis ke S_AXI_HP0
- * aclk sesuai dengan saluran IP Interkoneksi AXI untuk saluran S_AXI dari blok pemprosesan video HLS dan penyangga bingkai video tulis S_AXI_HP0_ACLK pada blok PS
Isyarat aliran video hanya dihubungkan secara bersiri dari blok tangkapan ke antara muka memori Zynq.
- Video beralih dari blok tangkapan ke blok pemprosesan HLS.
- Video yang diproses dari blok HLS menuju ke blok penulisan bingkai penyangga.
- * Blok tulis penyangga bingkai menyambung ke antara muka HP0 pada blok Zynq PS.
- Isyarat m_axis_tuser dari output blok tangkapan secara manual disambungkan ke kedua isyarat input video_in_TUSER pada blok pemprosesan HLS dan isyarat ap_start pada blok yang sama.
Isyarat TUSER (tuser) digunakan oleh protokol aliran video AXI untuk menunjukkan permulaan bingkai video. AP_Start memberitahu blok HLS untuk memulakan pemprosesan. Oleh itu, kami menggunakan tuser untuk mencetuskan blok HLS untuk memproses setiap bingkai kerana ia masuk. Semasa menyambungkan satu isyarat bas dan memisahkannya dengan cara ini, perlu juga menghubungkannya sebagai titik penamatan normal dari bas yang lain. Vivado menganggap bahawa jika anda menyambungkan isyarat secara manual bahawa anda ingin memutuskan sambungannya.
Tetapan konfigurasi blok IP:
Penanda bingkai video menulis:
Format video: RGB8
1 sampel setiap jam Lajur maksimum: 1280 (> = 640) Baris maksimum: 960 (> = 480) Lebar data maksimum: 8
Langkah 31: Sambungan ke OV7670
Pada blok ov7670_axi_stream_capture
- Jadikan semua input luaran (klik kanan pada pin dan pilih dari menu, atau klik kiri-> ctrl + T)
- Tinggalkan nama sebagaimana adanya
Pada blok ov7670_controller
- Jadikan semua output blok menjadi luaran
- Namakan semula port config_finished ke led0
- sambungkan clk ke CameraClock (<= 50MHz) (FCLK_2)
Pada blok debounce
- sambungkan input button1 ke port input luaran yang disebut btn0
- sambungkan out1 ke talian hantar semula di blok IP ov7670_controller
- sambungkan input button2 ke port input luaran yang disebut btn3
- sambungkan out2n ke input ext_reset_in pada IP Reset Sistem Pemproses untuk domain jam tangkap video. (* Ini mungkin perlu dilakukan setelah IP dihasilkan *)
- sambungkan clk ke CameraClock (<= 50MHz) (FCLK_2)
Langkah 32: Sambungan di Bahagian Luar Video
Sambungan untuk blok Video Timing Controller (VTC), AXI4-Stream to Video Out, dan slice
- Gunakan jam 25MHz (FCLK_1) untuk vid_io_out_clk dan VTC clk
- Gunakan jam 100MHz (FCLK_0) untuk aclk pada AXI4-Stream ke Video Out
- vtiming_out to vtiming_in
- Video Frame Buffer Baca m_axis_video menuju ke AXI4-Streaming ke Video Out video_in
- vtg_ce pergi ke gen_clken
- Ikat VTC clken, aclken, vid_io_out_ce ke Constant dout [0: 0]
- Bawa vid_hsync dan vid_vsync ke port output luaran, masing-masing vga_hs dan vga_vs. (tidak bergambar)
Potongan:
-
Potongan harus disiapkan seperti yang ditunjukkan dalam gambar yang dilampirkan
- ganti nama blok menjadi slice_red, slice_green, dan slice_blue
- susunan slice berkisar seperti yang ditunjukkan dalam gambar mengikut nama blok
- sambungkan setiap output slice ke output port luaran seperti yang ditunjukkan dalam gambar.
- vid_data [23: 0] menyambung ke input untuk setiap slice (Din [23: 0])
Langkah 33: Jalankan Automasi Blok dan Sambungan
Jalankan Automasi Blok untuk menghubungkan perkara dari blok ZYNQ7 PS. Seperti yang ditunjukkan oleh gambar.
Jalankan automasi Connection untuk membuat semua IP interkoneksi. Perhatikan semua pilihan dalam setiap gambar.
Pada blok debounce, sambungkan out2n ke domain jam rakaman video Prosesor Sistem Reset input ext_reset_in.
Langkah 34: Hasilkan Pembungkus HDL
Hasilkan Pembungkus HDL untuk reka bentuk blok anda.
Tetapkannya sebagai modul teratas.
Langkah 35: Hasilkan Bitstream, Eksport Perkakasan ke SDK, Lancarkan SDK Dari Vivado
Pastikan memasukkan bitstream dalam eksport.
Penjanaan bitstream mungkin memerlukan masa yang sangat lama.
Kemudian lancarkan SDK
Langkah 36: SDK (tiada FreeRTOS)
Versi ini melakukan segalanya tanpa menggunakan FreeRTOS, memadatkan kodnya dengan baik.
Buat BSP yang berdiri sendiri berdasarkan reka bentuk perkakasan. Pilihan lalai mestilah baik. Pastikan sumber BSP telah dihasilkan.
Buat Aplikasi seperti yang ditunjukkan dalam Gambar. (permohonan kosong)
Padam utama yang dihasilkan secara automatik dan import fail yang dilampirkan.
Langkah 37: Pelaksanaan FreeRTOS
Versi ini menggunakan FreeRTOS. Buat FreeRTOS901 BSP berdasarkan reka bentuk perkakasan. Pilihan lalai mestilah baik. Pastikan sumber BSP telah dihasilkan.
Buat Aplikasi seperti yang ditunjukkan dalam Gambar. (permohonan kosong)
Padam utama yang dihasilkan secara automatik dan import fail yang dilampirkan.
Langkah 38: Arahan Penggunaan
Projek ini agak sukar untuk dijalankan. Ikuti langkah mengikut urutan.
Pastikan ZYBO anda tidak memuat sendiri apa-apa semasa dihidupkan. Ini bermakna LED Selesai tidak boleh menyala. Salah satu cara untuk melakukannya adalah dengan menetapkan jumper sumber but ke JTAG.
Buka projek (FreeRTOS atau tidak) yang ingin anda aturkan dari SDK
- Hidupkan ZYBO anda. LED Selesai tidak boleh menyala.
- Program FPGA dengan fail bit. LED Selesai harus menyala. Led0 tidak boleh menyala.
- Jalankan kod (ingat untuk melewati titik permulaan jika anda melakukannya).
Pada ketika ini anda seharusnya mendapat output pada paparan VGA anda.
Untuk memulakan semula (jika bug atau apa sahaja): ketik butang PS-SRST dengan cepat atau matikan ZYBO dan kemudian hidupkan semula. Teruskan dari langkah 2.
Menghentikan pemproses dengan penyahpepijat akan menyebabkan Kamera menahan kedudukan daripada bergerak. Aliran video akan berterusan.
Langkah 39: Rujukan dan Pautan
Panduan rujukan dan dokumentasi Xilinx:
- PG044 - AXI-Strim ke Video Out
- PG278 - Penyangga Bingkai Video Baca / Tulis
Pautan lain:
- Blog Lauri - input VDMA
- Blog Lauri - OV7670 hingga output VGA menggunakan BRAM
- Wiki Hamsterworks, oleh Mike Fields, sumber asal kod OV7670
- Lembar data yang menunjukkan spesifikasi masa asas
Disyorkan:
Pan Tilt Dikendalikan oleh Telefon Bimbit: 4 Langkah
Pan Tilt Dikendalikan oleh Telefon Bimbit: Halo semua, Dalam projek baru ini, saya akan memperkenalkan kepada anda sebuah Pan-Tilt yang dikendalikan oleh Telefon Bimbit. Semua pergerakan telefon bimbit dihasilkan semula dalam peranti pan-tilt melalui Bluetooth. Pembinaannya sangat mudah menggunakan Arduino R3 (atau serupa) dan
Mekanisme Pan and Tilt untuk Selang Masa DSLR: 7 Langkah (dengan Gambar)
Mekanisme Pan dan Tilt untuk Selang Masa DSLR: Saya mempunyai beberapa motor stepper yang tergeletak dan benar-benar mahu menggunakannya untuk membuat sesuatu yang sejuk. Saya memutuskan bahawa saya akan membuat sistem Pan and Tilt untuk kamera DSLR saya supaya saya dapat membuat kelewatan masa yang sejuk. Item yang anda perlukan: 2x motor stepper -htt
IOT123 - SOLAR TRACKER - TILT / PAN, FRAME PANEL, LDR MOUNTS RIG: 9 Langkah (dengan Gambar)
IOT123 - SOLAR TRACKER - TILT / PAN, FRAME PANEL, LDR MOUNTS RIG: Sebilangan besar reka bentuk DIY untuk pelacak solar dwi paksi " di luar sana " didasarkan pada 9G Micro Servo yang benar-benar dinilai rendah untuk mendorong beberapa Solar Cell, pengawal mikro, bateri dan perumahan. Anda boleh merancang sekitar
Pan-Tilt Multi Servo Control: 11 Langkah (dengan Gambar)
Pan-Tilt Multi Servo Control: Pada tutorial ini, kita akan meneroka cara mengendalikan pelbagai servo menggunakan Python pada Raspberry Pi. Matlamat kami adalah mekanisme PAN / TILT untuk meletakkan kamera (PiCam). Di sini anda dapat melihat bagaimana projek akhir kami akan berfungsi: Uji gelung kawalan Servo kawalan:
Pan and Tilt Head Remote Control: 7 Langkah
Pan dan Tilt Head yang Dikawal Jauh: Saya selalu mahukan pan dan kepala condong yang dikendalikan dengan jarak jauh. Mungkin itu untuk kamera video saya, penembak gelang getah atau penembak pistol air. Tidak penting apa yang anda letakkan di geladak teratas (selagi ia tidak terlalu berat), dengan projek kecil ini