Saya seorang fotografer dan saya akan menjadikan diri saya alat yang berfungsi

"Orang Cina" melakukan hal-hal yang sangat keren, termasuk di bidang perangkat untuk fotografer. Selama 10 tahun terakhir, kualitas telah sangat diperketat, mereka mulai mengembangkan produk unik mereka sendiri, yang lebih tinggi oleh kepala daripada dari "produsen terkemuka". Tetapi, untuk beberapa alasan, hampir setiap produk memiliki setidaknya satu, tetapi minus lemak yang sangat besar. Tampaknya para pengembang elektronik dengan benar menggunakan mode tk: "terbang dalam salep - setidaknya 200 gram."

Belum lama ini, saya memutuskan untuk merawat diri saya dengan cahaya konstan dan membeli beberapa "tongkat cahaya" yongnuo yn-360. Tongkat ternyata hanya ajaib, tetapi tentu saja itu tidak bisa tanpa minus lemak - aplikasi android untuk remote control ternyata praktis tidak berfungsi. Selain kelemahan kecil dari aplikasi - yang utama adalah ketidakmampuan untuk mengontrol beberapa perangkat sekaligus. Minus ini membuat fungsi kontrol tidak berguna, karena saya masih harus berlari dari tongkat ke tongkat dan menyesuaikan cahaya secara manual.

Saya memiliki pengalaman dalam pemrograman, jadi situasinya diperbaiki untuk beberapa malam.

gambar

Memilih alat pengembangan


Saya bukan pengembang profesional - pemrograman adalah hobi saya dan karenanya saya tidak siap menghabiskan banyak waktu mempelajari teknologi. Kebetulan bahasa python favorit saya, tetapi untuk pengembangan ponsel, itu tidak cocok dengan baik. Tentu saja, ada proyek luar biasa seperti kivy, tetapi sebenarnya tidak ada "baterai" yang cukup sehingga saya terbiasa dengan python (dan kemudian dalam JavaScript). Akibatnya, pilihan jatuh pada JS dengan apache cordova, di mana saya sudah melakukan satu proyek (omong-omong, itu sedikit terkait dengan pekerjaan saya - dengan aplikasi ini saya "memompa" percikan dji quadcopter saya, yang dipotong oleh pemasar untuk membaca di sini ). Dari kelebihan pengembangan pada cordova, itu adalah kecepatan dan kemudahan pengembangan dan kehadiran "baterai".

Bagaimana cara kerjanya


Sama sekali tidak sulit untuk menebak bagaimana tongkat ini bekerja dengan smartphone - ini adalah Bluetooth LE. Saya beruntung seseorang sudah bingung dengan pertanyaan ini sebelum saya dan dalam beberapa menit saya menemukan proyek python di mana saya dapat memata-matai protokol operasi tongkat. Ternyata sama sekali tidak rumit. Untuk bekerja dengan ble, cordova menemukan plug-in ble, dan butuh waktu satu malam untuk menulis prototipe yang berfungsi.

Semuanya dimulai dengan pemindaian perangkat LE Bluetooth. Tetapi untuk mengecualikan yang tidak perlu dari pencarian (dan ada banyak di sekitar), Anda dapat memindai dengan menetapkan UUID layanan yang diinginkan. Selanjutnya, terhubung dengan dia dan dapatkan layanan serta karakteristiknya. UUID dari layanan dan karakteristik yang diinginkan dapat ditemukan, misalnya, menggunakan aplikasi BLE Scanner.

Semua ini mengarah pada sepotong kode sederhana:

var devices_dev={}; var devices=[]; var dev_main={}; function start_scan(){ evothings.ble.startScan( function(device) { //       if (! (device.address in devices_dev)){ //      devices_dev[device.address]=1; //  evothings.ble.connectToDevice( device, function(dev) { //  "" var service = evothings.ble.getService(dev, 'f000aa60-0451-4000-b000-000000000000'); //    var characteristic = evothings.ble.getCharacteristic(service, 'f000aa61-0451-4000-b000-000000000000'); //     .      . dev_main[dev.name]=[dev,characteristic]; devices.push(dev.name); } }, function(error) { console.log(error); }, //   UUID ,   . { serviceUUIDs: ['f000aa60-0451-4000-b000-000000000000'] } ) } 

Dengan prinsip yang sama, omong-omong, Anda dapat terhubung ke perangkat BLE lainnya. Saya menikmati timbangan Xiaomi yang cerdas, yang bisa menambah berat badan. Saya juga bisa menyalakan ketel pintar dari redmond (serta mengetahui suhu saat ini).

Setelah itu, tinggal mengirim informasi tentang warna atau kecerahan cahaya. Ada beberapa jenis LED di tongkat ini: dingin 5500k, hangat 3200k dan dioda RGB. Itu dibuat agar Anda dapat mengatur kecerahan dingin dan hangat (0-99%), atau menyalakan dioda RGB.
Jika Anda perlu mengatur kecerahan dioda dingin atau hangat, kami mengirimkan urutan berikut:

 var white=0; //  5500  0-99 var yellow= 50; // 3200  0-99 var data= new Uint8Array([0xAE,0xAA,0x01,white,yellow,0x56]); 

Jika berwarna:

 var RR=255; //   0-255 var GG=0; //   0-255 var BB=; //   0-255 var data=new Uint8Array([0xAE,0xA1,RR,GG,BB,0x56]); 

Fungsi pengiriman itu sendiri terlihat seperti ini:

 evothings.ble.writeCharacteristic( dev, characteristic, data, // Buffer view with data to write function() { console.log('done!'); }, function(errorCode) { console.log('writeCharacteristic error: ' + errorCode); }); 

Dalam proses pengerjaan lebih lanjut pada aplikasi, tongkat menemukan bug yang menjengkelkan, yang membutuhkan banyak waktu untuk mendeteksi: misalnya, jika Anda mengirim "putih 50%", lalu "nyalakan merah", dan sekali lagi "putih 50%", maka perintah terakhir tongkat tidak lagi merespons. Saya harus memasukkan kruk untuk kasus-kasus seperti itu dan mengirim secara acak plus / minus 1% untuk tim terakhir dari urutan ini.

UI dan "chip"


Karena Anda harus bekerja dengan html + js + css stack standar, banyak pengembangan siap pakai tersedia untuk Anda. Materialize css dipilih untuk UI, dan iro.js dipilih sebagai komponen utama UI.

Dalam proses pengujian aplikasi, fitur dioda RGB terpisah keluar - campuran warna yang mengerikan. Jika Anda menambahkan setidaknya 1% dari warna berbeda ke merah, Anda mendapatkan kekacauan warna yang aneh. Pilihan warna biasanya (termasuk aplikasi resmi) diimplementasikan oleh standar "roda warna" untuk hal-hal seperti itu, di mana sangat sulit untuk mendapatkan "merah murni", dll. Saya harus menerapkan kontrol saluran demi saluran dari kelompok dioda warna.

Nah, beberapa chip juga dibuat yang membantu dalam pekerjaan nyata. Misalnya, mengganti nama stik. Anda tidak perlu menyimpan nomor seri mereka di kepala Anda dan mencari tahu mana yang berdiri di latar belakang - Anda cukup menentukan nama "belakang", "kiri", dll. Nah, ada beberapa preset ketika Anda perlu dengan cepat mengubah cahaya ke yang telah ditentukan.

gambar

Dalam proses berkomunikasi dengan seorang kolega, ternyata stik ini lebih populer bukan di kalangan fotografer, tetapi di antara orang yang merekam video. Dan ketika dia mendengar dari saya bahwa saya membuat aplikasi untuk mengelolanya, dia menulis bahwa jika Anda menerapkan satu fitur, aplikasi ini akan mengubah tongkat anggaran menjadi analog model dari produsen lain, yang harganya 5 kali lebih mahal.

"Animasi"


Untuk merekam video, kadang-kadang Anda membutuhkan semua jenis efek pencahayaan yang berbeda, misalnya, "cahaya" mobil polisi di latar belakang, dll. Jika aplikasi dapat mengontrol cahaya "secara manual", maka mengapa tidak menerapkan "animasi". Awalnya, muncul ide untuk menjahit 10-20 animasi yang berbeda, tetapi saya terlalu malas untuk duduk di atasnya, jadi setelah menghabiskan dua malam lagi, saya membuat editor animasi sederhana berbasis web. Selain itu, Anda dapat mengedit hingga 10 saluran, lalu mendistribusikannya di aplikasi di antara tongkat.

gambar

Satu-satunya kelemahan tongkat ini, dibandingkan dengan rekan-rekan yang lebih mahal, adalah pekerjaan yang sangat lambat. Dari mengirim perintah ke pergantian warna, mencapai 300-400 milidetik, sehingga Anda tidak dapat mencapai operasi yang lebih stabil pada kecepatan yang lebih tinggi.

Total


Akibatnya, aplikasi selesai ditulis dan diterbitkan pada malam hari, yang, menurut pendapat saya, adalah potongan di atas yang "resmi" dari produsen terkenal. Cara kerjanya, tunjukkan di video ini:


PS Ini bukan artikel pertama saya tentang bagaimana pemrograman membantu dalam pekerjaan yang sama sekali tidak terkait dengan pemrograman itu sendiri. Baca tentang topik ini:

Transcend WiFi. Kami menulis klien Shoot & View untuk Windows, Mac dan Linux .
Linux di saku Anda - siap melayani fotografer
Membuat booth foto mandiri di raspberry pi

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


All Articles