Daftar Isi:

HackerBox 0024: Misi Visi: 11 Langkah
HackerBox 0024: Misi Visi: 11 Langkah

Video: HackerBox 0024: Misi Visi: 11 Langkah

Video: HackerBox 0024: Misi Visi: 11 Langkah
Video: Hak5 1225.1, оптимизация батареи ноутбука Linux и использование шифрования с Dropbox 2024, November
Anonim
HackerBox 0024: Misi Visi
HackerBox 0024: Misi Visi

Vision Quest - Bulan ini, HackerBox Hacker bereksperimen dengan Computer Vision dan Servo Motion Tracking. Instruksi ini berisi informasi untuk bekerja dengan HackerBox #0024, yang dapat Anda ambil di sini selama persediaan masih ada. Juga, jika Anda ingin menerima HackerBox seperti ini langsung di kotak surat Anda setiap bulan, silakan berlangganan di HackerBoxes.com dan bergabunglah dengan revolusi!

Topik dan Tujuan Pembelajaran HackerBox 0024:

  • Bereksperimen dengan Computer Vision
  • Menyiapkan OpenCV (Computer Vision)
  • Memprogram Arduino Nano dari Arduino IDE
  • Mengontrol Motor Servo dengan Arduino Nano
  • Merakit Rak Mekanik dan Miring
  • Mengontrol Gerakan Pan dan Tilt dengan Mikrokontroler
  • Melakukan Pelacakan Wajah menggunakan OpenCV

HackerBoxes adalah layanan kotak berlangganan bulanan untuk elektronik DIY dan teknologi komputer. Kami adalah penghobi, pembuat, dan eksperimen. Kami adalah pemimpi mimpi. HACK PLANET!

Langkah 1: HackerBox 0024: Isi Kotak

HackerBox 0024: Isi Kotak
HackerBox 0024: Isi Kotak
  • HackerBoxes #0024 Kartu Referensi Koleksi
  • Tiga Braket Pan dan Rakitan Miring
  • Dua Servo MG996R dengan Aksesoris
  • Dua Skrup Servo Melingkar Aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Perakitan Kamera Digital dengan Kabel USB
  • Tiga Lensa dengan Universal Clip Mount
  • Lampu Pena Inspeksi Medis
  • Jumper Dupont Pria/Wanita
  • Kabel MicroUSB
  • Stiker OpenCV Eksklusif
  • Stiker Dia de Muertos Eksklusif

Beberapa hal lain yang akan membantu:

  • Potongan papan kayu kecil untuk alas kamera
  • Besi solder, solder, dan alat solder dasar
  • Komputer untuk menjalankan perangkat lunak

Yang terpenting, Anda akan membutuhkan rasa petualangan, semangat DIY, dan rasa ingin tahu peretas. Elektronik Hardcore DIY bukanlah pengejaran yang sepele, dan kami tidak mempermudahnya untuk Anda. Tujuannya adalah kemajuan, bukan kesempurnaan. Ketika Anda bertahan dan menikmati petualangan, banyak kepuasan dapat diperoleh dari mempelajari teknologi baru dan semoga beberapa proyek berhasil. Kami menyarankan untuk mengambil setiap langkah dengan perlahan, memperhatikan detailnya, dan tidak pernah ragu untuk meminta bantuan.

PERTANYAAN YANG SERING DIAJUKAN: Kami ingin meminta bantuan yang sangat besar kepada semua anggota HackerBox. Harap luangkan beberapa menit untuk meninjau FAQ di situs web HackerBoxes sebelum menghubungi dukungan. Meskipun kami jelas ingin membantu semua anggota sebanyak yang diperlukan, sebagian besar email dukungan kami melibatkan pertanyaan sederhana yang sangat jelas dibahas di FAQ. Terima kasih atas pengertian!

Langkah 2: Visi Komputer

Visi Komputer
Visi Komputer

Visi komputer adalah bidang interdisipliner yang berhubungan dengan bagaimana komputer memperoleh pemahaman tingkat tinggi dari gambar atau video digital. Dari perspektif teknik, visi komputer berusaha untuk mengotomatisasi tugas-tugas yang dapat dilakukan oleh sistem visual manusia. Sebagai disiplin ilmu, visi komputer berkaitan dengan teori di balik sistem buatan yang mengekstrak informasi dari gambar. Data gambar dapat mengambil banyak bentuk, seperti urutan video, tampilan dari beberapa kamera, atau data multi-dimensi dari pemindai medis. Sebagai disiplin teknologi, visi komputer berusaha menerapkan teori dan modelnya untuk konstruksi sistem visi komputer. Sub-domain dari visi komputer termasuk rekonstruksi adegan, deteksi peristiwa, pelacakan video, pengenalan objek, estimasi pose 3D, pembelajaran, pengindeksan, estimasi gerak, dan pemulihan gambar.

Sangat menarik untuk dicatat bahwa visi komputer dapat dianggap kebalikan dari grafik komputer.

Langkah 3: Pemrosesan dan OpenCV

Pemrosesan dan OpenCV
Pemrosesan dan OpenCV

Pemrosesan adalah buku sketsa perangkat lunak yang fleksibel dan bahasa untuk mempelajari cara membuat kode dalam konteks seni visual. Pemrosesan telah mempromosikan literasi perangkat lunak dalam seni visual dan literasi visual dalam teknologi. Ada puluhan ribu mahasiswa, seniman, desainer, peneliti, dan penghobi yang menggunakan Processing untuk belajar dan membuat prototipe.

OpenCV (Open Source Computer Vision Library) adalah open source computer vision dan perpustakaan perangkat lunak pembelajaran mesin. OpenCV dibangun untuk menyediakan infrastruktur umum untuk aplikasi visi komputer dan untuk mempercepat penggunaan persepsi mesin dalam produk komersial. Pustaka OpenCV memiliki lebih dari 2500 algoritme yang dioptimalkan, yang mencakup serangkaian komprehensif visi komputer klasik dan canggih serta algoritme pembelajaran mesin. Algoritma ini dapat digunakan untuk mendeteksi dan mengenali wajah, mengidentifikasi objek, mengklasifikasikan tindakan manusia dalam video, melacak pergerakan kamera, melacak objek bergerak, dan lain sebagainya.

Instal OpenCV di dalam Pemrosesan dari menu File > Contoh dengan memilih “Tambahkan Contoh” dan kemudian di bawah tab Pustaka, instal pustaka Video dan OpenCV. Buka contoh LiveCamTest untuk pelacakan wajah dasar. Lihat beberapa contoh OpenCV untuk Pemrosesan lainnya di sini.

Lebih Banyak Sumber Daya:

Memulai dengan Computer Vision adalah proyek buku yang menyediakan titik masuk yang mudah untuk eksperimen kreatif dengan visi komputer. Ini memperkenalkan kode dan konsep yang diperlukan untuk membangun proyek visi komputer.

Pemrograman Computer Vision dengan Python adalah buku O'Reilly di PCV, modul Python open source untuk visi komputer.

Belajar OpenCV

Visi Komputer: Algoritma dan Aplikasi

Menguasai OpenCV

Stanford Course CS231n Convolutional Neural Networks untuk Pengenalan Visual (16 Video)

Chris Urmson TED Talk Bagaimana mobil tanpa pengemudi melihat jalan

Langkah 4: Platform Mikrokontroler Arduino Nano

Platform Mikrokontroler Arduino Nano
Platform Mikrokontroler Arduino Nano

Kami dapat menggunakan platform mikrokontroler umum apa pun untuk mengontrol servo di dudukan kamera pan dan tilt kami. Arduino Nano adalah papan Arduino mini yang dipasang di permukaan, ramah papan tempat memotong roti, dengan USB terintegrasi. Ini luar biasa berfitur lengkap dan mudah diretas.

Fitur:

  • Mikrokontroler: Atmel ATmega328P
  • Tegangan: 5V
  • Pin I/O Digital: 14 (6 PWM)
  • Pin Input Analog: 8
  • Arus DC per Pin I/O: 40 mA
  • Memori Flash: 32 KB (2KB untuk bootloader)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Kecepatan Jam: 16 MHz
  • Dimensi: 17mm x 43mm

Varian khusus dari Arduino Nano ini adalah desain Robotdyn hitam. Antarmuka menggunakan port MicroUSB on-board yang kompatibel dengan kabel MicroUSB yang sama yang digunakan dengan banyak ponsel dan tablet.

Arduino Nanos memiliki chip jembatan USB/Serial bawaan. Pada varian khusus ini, chip bridge adalah CH340G. Perhatikan bahwa ada berbagai jenis chip jembatan USB/Serial lain yang digunakan pada berbagai jenis papan Arduino. Chip ini memungkinkan port USB komputer Anda untuk berkomunikasi dengan antarmuka serial pada chip prosesor Arduino.

Sistem operasi komputer memerlukan Device Driver untuk berkomunikasi dengan chip USB/Serial. Pengemudi memungkinkan IDE untuk berkomunikasi dengan papan Arduino. Driver perangkat khusus yang diperlukan tergantung pada versi OS dan juga jenis chip USB/Serial. Untuk chip USB/Serial CH340, ada driver yang tersedia untuk banyak sistem operasi (UNIX, Mac OS X, atau Windows). Pembuat CH340 memasok driver tersebut di sini.

Saat Anda pertama kali mencolokkan Arduino Nano ke port USB komputer Anda, lampu daya hijau akan menyala dan segera setelah itu LED biru akan mulai berkedip perlahan. Ini terjadi karena Nano sudah dimuat sebelumnya dengan program BLINK, yang berjalan di Arduino Nano yang baru.

Langkah 5: Lingkungan Pengembangan Terpadu Arduino (IDE)

Lingkungan Pengembangan Terpadu Arduino (IDE)
Lingkungan Pengembangan Terpadu Arduino (IDE)

Jika Anda belum menginstal Arduino IDE, Anda dapat mengunduhnya dari Arduino.cc

Jika Anda menginginkan informasi pengantar tambahan untuk bekerja di ekosistem Arduino, kami sarankan untuk membaca instruksi untuk Lokakarya Pemula HackerBoxes.

Colokkan Nano ke kabel MicroUSB dan ujung kabel lainnya ke port USB di komputer, luncurkan perangkat lunak Arduino IDE, pilih port USB yang sesuai di IDE di bawah alat> port (kemungkinan nama dengan "wchusb" di dalamnya). Pilih juga "Arduino Nano" di IDE di bawah tools>board.

Terakhir, muat sepotong kode contoh:

File->Contoh->Dasar->Blink

Ini sebenarnya adalah kode yang dimuat sebelumnya ke Nano dan harus dijalankan sekarang untuk mengedipkan LED biru secara perlahan. Dengan demikian, jika kita memuat kode contoh ini, tidak ada yang akan berubah. Sebagai gantinya, mari kita ubah kodenya sedikit.

Melihat lebih dekat, Anda dapat melihat bahwa program menyalakan LED, menunggu 1000 milidetik (satu detik), mematikan LED, menunggu satu detik lagi, dan kemudian melakukan semuanya lagi - selamanya.

Ubah kode dengan mengubah kedua pernyataan "delay(1000)" menjadi "delay(100)". Modifikasi ini akan menyebabkan LED berkedip sepuluh kali lebih cepat, bukan?

Mari muat kode yang dimodifikasi ke dalam Nano dengan mengklik tombol UPLOAD (ikon panah) tepat di atas kode yang Anda modifikasi. Perhatikan di bawah kode untuk info status: "mengkompilasi" dan kemudian "mengunggah". Akhirnya, IDE akan menunjukkan "Uploading Complete" dan LED Anda akan berkedip lebih cepat.

Jika demikian, selamat! Anda baru saja meretas bagian pertama dari kode yang disematkan.

Setelah versi fast-blink Anda dimuat dan dijalankan, mengapa tidak melihat apakah Anda dapat mengubah kode lagi untuk menyebabkan LED berkedip cepat dua kali dan kemudian menunggu beberapa detik sebelum mengulanginya? Cobalah! Bagaimana dengan beberapa pola lainnya? Setelah Anda berhasil memvisualisasikan hasil yang diinginkan, mengkodekannya, dan mengamatinya agar berfungsi sesuai rencana, Anda telah mengambil langkah besar untuk menjadi peretas perangkat keras yang kompeten.

Langkah 6: Motor Servo

Motor Servo
Motor Servo

Motor servo umumnya dikendalikan oleh serangkaian pulsa listrik berulang dimana lebar pulsa menunjukkan posisi servo. Sinyal kontrol termodulasi lebar pulsa (PWM) sering dihasilkan oleh mikrokontroler umum seperti Arduino.

Servo hobi kecil, seperti MG996R, dihubungkan melalui koneksi tiga kabel standar: dua kabel untuk catu daya DC dan satu kabel untuk membawa pulsa kontrol. Servo MG996R memiliki tegangan operasi yang mengamuk 4,8-7,2 VDC.

Langkah 7: Merakit Mekanisme Pan dan Tilt

Merakit Mekanisme Pan dan Tilt
Merakit Mekanisme Pan dan Tilt
  1. Tarik kedua servo MG996R dari tasnya dan sisihkan aksesori yang disertakan untuk saat ini.
  2. Pasang sebuah aluminium, servo coupler melingkar ke setiap servo. Perhatikan bahwa skrup datang dalam tas terpisah dari servos. Coupler sangat pas. Mulailah dengan menekan coupler ke ujung output servo dan kemudian masukkan sekrup ke lubang tengah. Kencangkan utas untuk menarik coupler ke output servo.
  3. Perhatikan bahwa ada tiga braket untuk rakitan pan-tilt - dua braket kotak dan satu braket U.
  4. Pasang salah satu braket kotak ke lingkaran aluminium untuk salah satu servos. Kami akan menyebut servo ini sebagai servo pan. Arahkan braket kotak dengan dinding tengahnya ke lingkaran aluminium sehingga dua dinding lainnya dari braket kotak menghadap jauh dari servo pan. Gunakan lubang tengah di dinding tengah braket kotak. Pengaturan ini harus memungkinkan pan servo untuk memutar braket kotak yang terpasang setelah digerakkan.
  5. Posisikan servo lainnya (miring servo) ke dalam kotak-braket yang terpasang pada lingkaran aluminium pan servo. Gunakan setidaknya dua mur dan baut untuk memasang servo miring - satu di setiap sisi.
  6. Sambil memegang braket-U, masukkan "bantalan" kuningan dari bagian dalam U melalui salah satu lubang pemasangan poros besar.
  7. Tempatkan braket-U dengan bantalan ke servo miring yang ada di dalam braket kotak sehingga lubang pemasangan poros besar lainnya (yang tanpa bantalan) sejajar dengan lingkaran aluminium pada servo miring.
  8. Gunakan sekrup untuk memasang braket-U ke lingkaran aluminium di satu sisi braket-U.
  9. Di sisi lain braket-U, kencangkan satu sekrup melalui bantalan dan ke dalam lubang kecil di braket kotak di dalamnya. Ini akan memungkinkan braket-U berputar di sekitar braket kotak nanti saat servo kemiringan digerakkan.

Langkah 8: Memasang Rakitan Pan dan Miring

Memasang Rakitan Pan dan Miring
Memasang Rakitan Pan dan Miring
Memasang Rakitan Pan dan Miring
Memasang Rakitan Pan dan Miring

Braket kotak yang tersisa dapat disekrup ke potongan papan kayu kecil untuk berfungsi sebagai dasar kamera seperti yang ditunjukkan pada gambar. Akhirnya, servo pan dipasang di dalam braket kotak yang tersisa menggunakan setidaknya dua mur dan baut untuk menempelkan servo ke braket - satu di setiap sisi.

Langkah 9: Kawat dan Uji Rakitan Pan dan Miring

Kawat dan Uji Rakitan Pan dan Miring
Kawat dan Uji Rakitan Pan dan Miring

Untuk menyambungkan servos sesuai dengan skema, yang paling cepat adalah dengan memotong konektor betina asli dari servos dan kemudian menggunakan beberapa ujung jumper DuPont betina untuk mendapatkan sinyal dan saluran ground yang terpasang pada pin Nano.

Nano tidak memiliki arus yang cukup pada suplai 5V untuk memberi daya pada servos dari USB, jadi disarankan untuk menggunakan suplai tambahan. Ini bisa apa saja dalam kisaran 4,8-7,2 Volt. Misalnya, empat baterai AA (seri) akan bekerja dengan baik. Pasokan bangku atau kutil dinding juga merupakan pilihan yang baik.

Contoh sederhana kode Arduino yang dilampirkan di sini sebagai PanTiltTest.ino dapat digunakan untuk menguji kontrol dua servos dari monitor serial pada Arduino IDE. Atur baud rate monitor agar sesuai dengan 9600bps yang diatur dalam kode contoh. Memasukkan nilai sudut antara 0 dan 180 derajat akan memposisikan servos yang sesuai.

Terakhir, Modul Kamera USB (atau sensor lainnya) dapat dipasang ke Bracket U dari Rakitan Pan-Tilt untuk digunakan dalam aplikasi pelacakan.

Langkah 10: Pelacakan Wajah Dengan OpenCV

Image
Image
Meretas Planet
Meretas Planet

Sistem pelacakan wajah visi mesin dapat diimplementasikan dengan menggabungkan subsistem seperti yang ditunjukkan pada diagram blok. Sketsa SerialServoControl untuk Arduino dapat ditemukan di tutorial Sparkfun berikut bersama dengan demonstrasi terkait menggunakan OpenCV, Processing, Arduino, Kamera USB, dan Majelis Pan/Tilt untuk melacak wajah manusia. Demo ini menggunakan dua servos untuk memposisikan ulang kamera agar wajah tetap berada di tengah bingkai video bahkan saat pengguna bergerak di sekitar ruangan. Misalnya kode dalam C#, lihat repositori GitHub untuk video CamBot.

Langkah 11: Meretas Planet

Jika Anda menikmati Instrucable ini dan ingin memiliki sekotak proyek elektronik dan teknologi komputer seperti ini yang dikirimkan langsung ke kotak surat Anda setiap bulan, silakan bergabung dengan kami dengan BERLANGGANAN DI SINI.

Jangkau dan bagikan kesuksesan Anda di komentar di bawah atau di Halaman Facebook HackerBoxes. Tentu saja beri tahu kami jika Anda memiliki pertanyaan atau butuh bantuan dengan apa pun. Terima kasih telah menjadi bagian dari HackerBoxes. Harap teruskan saran dan umpan balik Anda. HackerBoxes adalah kotak ANDA. Mari kita membuat sesuatu yang hebat!

Direkomendasikan: