Kami mengontrol fokus atau sejumput C # dan STM32 untuk webcam

Semuanya dimulai dengan sangat lucu. Dua webcam dari pabrikan Logitech (model C525) terhubung ke komputer saya. Kamera yang cukup bagus, tetapi ternyata kemudian, dengan driver yang kualitasnya sangat meragukan. Padahal, ini bukan hanya masalah pabrikan ini. Utilitas konfigurasi mereka menggantikan sistem, tetapi bahkan tidak curiga bahwa komputer mungkin memiliki lebih dari satu kamera model ini. Akibatnya, ketika Anda membuka jendela pengaturan untuk kamera berbeda dari OBS Studio, fokus selalu berubah untuk satu. Kekacauan.


Pada suatu waktu, ia banyak bermain dengan menangkap dan menyiarkan kamera di VLC. Dari antarmuka-nya saya belajar tentang DirectShow . Saya memutuskan untuk berkembang di C #, meskipun kurangnya pengalaman (kami tidak akan mempertimbangkan laboratorium di universitas). Secara harfiah di malam hari, saya membuat sketsa TrackBars untuk semua kamera yang ditemukan, dan untungnya tidak ada batasan. Saya membuang utilitas ke beberapa blogger video yang akrab untuk digunakan pada streaming.



Selanjutnya, mereka menerima permintaan untuk memperluas fungsionalitas. Tambahkan penyesuaian keseimbangan putih. Lalu mengapa tidak membiarkan pengguna memilih parameter yang dia butuhkan? Untuk setiap kamera secara terpisah. Mulai saat ini tab muncul. Yang pertama bersifat umum, dengan parameter yang dipilih, dan tab untuk setiap webcam yang terdeteksi.



Benar, tidak semua parameter didukung oleh kamera. Hanya 3 status: tidak tersedia, hanya penyesuaian manual, penyesuaian manual dan otomatis. Ada juga hanya otomatis, tetapi saya tidak ingat mendapatkannya dari perangkat apa pun. Karenanya, beberapa jalur dimatikan. Untuk kamera laptop, misalnya, setengah dari daftar yang terkait dengan pengaturan pengambilan tidak tersedia. Tetapi koreksi sudah ada di sana.


Selama implementasi "antarmuka tab", muncul pikiran di benak saya: untuk melampirkan encoder. Pada kamera SLR, memutar cincin fokus sangat nyaman. Tetapi mereka tidak mengirimkannya ke webcam. Jadi bayi-bayi STM32F070 terhubung ke proyek. Ini adalah chip terkecil dengan dukungan untuk USB 2.0. Sudah ada artikel bagus tentang Habr tentang Custom HID , sehingga Anda dapat melewati deskripsi terperinci dari item ini. Tata letak perangkat sangat sederhana. Tidak diperlukan pemipaan untuk mikrokontroler ini. Hanya sekarang dia tidak tahu bagaimana memulai generator built-in pada PLL, jadi kuarsa diperlukan. Dari elemen kontrol, selain encoder, ada 4 tombol. Salah satunya dibangun ke dalam encoder. Ini sekarang sangat umum. Soal pengangkatan masing-masing akan sedikit nanti.



Untuk men-debug perangkat lunak, dua instance perangkat HID disolder. Tetapi mereka berkumpul hampir di atas sebuah papan tempat memotong roti. Ini sebenarnya syal untuk Pinboard II. Sia-sia, ketika kabel mereka, saya tidak segera menambahkan port USB dan stabilizer linier. Itu akan terlihat pertanian kolektif kurang (tidak). Pada perangkat yang sudah jadi, direncanakan untuk menempatkan syal di dudukan kamera pada tripod. Tentu saja dicetak pada printer 3D. Agar hanya satu kabel yang mengarah ke kamera, Anda juga dapat menempatkan hub USB di tempat yang sama. Misalnya, FE1.1 tidak lebih besar dari STM32. Tapi jujur ​​480 megabit. Secara umum, penerapan besi masih menjadi pertanyaan terbuka.


Mereka yang ingin mengulang dapat mengunduh sumber dari repositori . Biaya sepotong besi oleh komponen kondisional 100 rubel, 55 di mana mikrokontroler "makan". Dalam kasus saya, kuarsa harganya 20 megahertz, tapi ini "apa yang ada di tempat sampah." Ubah denominasi, tetapi konfigurasi ulang sistem jam sehingga modul USB cocok untuk semuanya.



Sekarang tentang pengangkatan tombol perangkat keras. Encoder bawaan mengembalikan parameter ke mode otomatis, jika memungkinkan. Rotasi diterjemahkan menjadi manual. Karena pengguna dapat menyesuaikan beberapa parameter, Anda perlu beralih di antaranya. Tombol S1 bertanggung jawab untuk perulangan melalui parameter, dan pada S2 dan S3 Anda dapat menetapkan yang spesifik agar tidak terganggu oleh jendela program dengan memeriksa parameter yang dipilih.


Indikasi digunakan untuk mengidentifikasi perangkat. Pada tab kamera, Anda dapat mengikat perangkat HID ke kamera tertentu. LED menyala ketika dipilih dalam daftar drop-down. Diagram menyediakan LED dengan dua kristal dalam satu rumahan, tetapi semua fitur-fiturnya tidak digunakan. Meninggalkan masa depan.


Setiap perangkat HID memiliki nomor seri uniknya sendiri, yang dikirimkan melalui USB. Dialah yang ditampilkan dalam daftar. Keunikan angka dipastikan oleh pengidentifikasi mikrokontroler itu sendiri. Ini adalah tanggal produksi dan tempatnya di atas piring. Metode pembentukan yang sangat lucu. Meskipun bukan nomor seri disimpan dalam file INI, tetapi jalur ke perangkat (berisi VID, PID dan GUID). Semua pengaturan dapat dibaca, sehingga file dapat diedit dengan notepad. Tapi kenapa.


Bilah kamera adalah hal yang buruk. OBS Studio, misalnya, meninggalkan bingkai terakhir. Terkadang Anda tidak segera melihat gangguan. Jadi pemberitahuan helm. Secara umum, pemrosesan menghubungkan perangkat baru dan menghubungkan kembali yang ada adalah tugas yang paling sulit. Webcam dan HID. Pada dasarnya yang pertama. Dipengaruhi oleh kurangnya pengalaman pemrograman di C #. Penting untuk membaca beberapa jenis buku ... Berapa banyak aliran yang dilewati ketika masih berfungsi ... Proses disiarkan di YouTube, di mana pemirsa secara berkala diminta oleh kode dan fungsi aplikasi. Sangat nyaman. Pikiran bersama.


Jadi, karena pengemudi miring, kerajinan seperti itu muncul. Tentu saja, seiring waktu itu akan diperbarui, di-debug, jadi ada tautan ke repositori .

Source: https://habr.com/ru/post/id463595/


All Articles