Ich bin Fotograf und werde mich selbst zum Arbeitsgerät machen

Die "Chinesen" machen sehr coole Sachen, auch auf dem Gebiet der Geräte für Fotografen. In den letzten 10 Jahren wurde die Qualität stark verschärft, sie begannen, ihre eigenen einzigartigen Produkte zu entwickeln, die um ein Haar höher sind als die von "namhaften Herstellern". Aber aus irgendeinem Grund hat fast jedes Produkt mindestens ein, aber ein riesiges Fettminus. Es scheint, dass die Entwickler der Elektronik zu Recht in die Mode gekommen sind: "Fliege in der Salbe - mindestens 200 Gramm."

Vor nicht allzu langer Zeit habe ich mich entschlossen, mich mit konstantem Licht zu beschäftigen, und mir ein paar „Leuchtstäbe“ gekauft, yongnuo yn-360. Die Sticks erwiesen sich als einfach magisch, aber natürlich gab es ein fettes Minus - die Android-Anwendung für die Fernbedienung erwies sich als praktisch nicht funktionsfähig. Neben den kleinen Nachteilen der Anwendung ist die Unfähigkeit, mehrere Geräte gleichzeitig zu steuern, die Hauptursache. Dieses Minus machte die Steuerfunktion unbrauchbar, da ich immer noch von Stab zu Stab rennen und das Licht manuell einstellen musste.

Ich hatte Erfahrung in der Programmierung, so dass die Situation für mehrere Abende korrigiert wurde.

Bild

Ein Entwicklungswerkzeug auswählen


Ich bin kein professioneller Entwickler - Programmieren ist mein Hobby und daher bin ich nicht bereit, viel Zeit mit dem Studieren von Technologie zu verbringen. Es ist passiert, dass meine Lieblings-Python-Sprache, aber für die mobile Entwicklung, es nicht sehr gut passt. Natürlich gibt es so wundervolle Projekte wie Kivy, aber es gibt wirklich nicht genug "Batterien", an die ich in Python (und dann in JavaScript) so gewöhnt bin. Infolgedessen fiel die Wahl auf JS mit Apache Cordova, für das ich bereits ein Projekt durchgeführt habe (übrigens, es hängt ein bisschen mit meiner Arbeit zusammen - mit dieser Anwendung habe ich meinen Quadcopter-DJI-Funken „gepumpt“, der von Marketingfachleuten zum Lesen hier abgeschnitten wurde). Von den Vorteilen der Entwicklung auf Cordova ist die Geschwindigkeit und Leichtigkeit der Entwicklung sowie das Vorhandensein von "Batterien".

Wie funktioniert das?


Es ist nicht schwer zu erraten, wie diese Sticks mit einem Smartphone funktionieren - es ist Bluetooth LE. Ich hatte das Glück, dass diese Frage schon jemanden verwirrte und ich fand in wenigen Minuten ein Python-Projekt, in dem ich das Stick-Operations-Protokoll ausspionieren konnte. Es stellte sich heraus, dass es überhaupt nicht kompliziert war. Um mit ble zu arbeiten, fand cordova das Plug-in ble und es dauerte genau einen Abend, um einen funktionierenden Prototyp zu schreiben.

Alles beginnt mit dem Scannen von Bluetooth LE-Geräten. Um jedoch das Unnötige von der Suche auszuschließen (und es gab eine Menge davon), können Sie scannen, indem Sie die UUID des gewünschten Dienstes festlegen. Als nächstes verbinden Sie sich mit ihm und erhalten den Service und die Eigenschaften. Die UUID des gewünschten Dienstes und der gewünschten Merkmale kann beispielsweise mit der Anwendung BLE Scanner ermittelt werden.

All dies führt zu einem einfachen Stück Code:

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'] } ) } 

Nach dem gleichen Prinzip können Sie sich übrigens mit anderen BLE-Geräten verbinden. Ich habe mir eine intelligente Xiaomi-Waage gegönnt, mit der ich zunehmen kann. Ich war auch in der Lage, einen intelligenten Kessel von Redmond einzuschalten (sowie die aktuelle Temperatur herauszufinden).

Danach müssen nur noch Informationen über die Farbe oder Helligkeit des Lichts gesendet werden. Es gibt verschiedene Arten von LEDs in diesen Sticks: kalte 5500k-, warme 3200k- und RGB-Dioden. Es ist so eingestellt, dass Sie entweder die Helligkeit kalt und warm (0-99%) einstellen oder die RGB-Dioden einschalten können.
Wenn Sie die Helligkeit von kalten oder warmen Dioden einstellen müssen, senden wir die folgende Sequenz:

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

Wenn gefärbt:

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

Die Sendefunktion selbst sieht folgendermaßen aus:

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

Bei der weiteren Bearbeitung der Anwendung hat der Stick einen lästigen Fehler gefunden, dessen Erkennung viel Zeit in Anspruch nahm: Wenn Sie beispielsweise „Weiß 50%“ senden, dann „Rot einschalten“ und dann erneut „Weiß 50%“, dann den letzten Befehl Der Stick reagiert nicht mehr. Ich musste für solche Fälle eine Krücke einsetzen und für das letzte Team einer solchen Sequenz zufällig plus / minus 1% senden.

Benutzeroberfläche und "Chips"


Da Sie mit dem Standard-HTML + JS + CSS-Stack arbeiten müssen, stehen Ihnen viele fertige Entwicklungen zur Verfügung. Materialise CSS wurde für die Benutzeroberfläche ausgewählt, und iro.js wurde als Hauptkomponente der Benutzeroberfläche ausgewählt.

Beim Testen der Anwendung ist ein Merkmal separater RGB-Dioden herausgekommen - eine schreckliche Farbmischung. Wenn Sie Rot mindestens 1% einer anderen Farbe hinzufügen, kommt es zu einem merkwürdigen Farbfehler. Die Wahl der Farbe wird in der Regel (einschließlich der offiziellen App) durch den „Farbkreis“ -Standard für solche Dinge umgesetzt, bei denen es sehr schwierig ist, an „reines Rot“ usw. zu gelangen. Ich musste die kanalweise Steuerung von Gruppen von Farbdioden implementieren.

Nun, es wurden auch einige Chips hergestellt, die bei der Arbeit helfen. Zum Beispiel Sticks umbenennen. Sie müssen die Seriennummern nicht im Kopf behalten und herausfinden, welche im Hintergrund steht. Sie können einfach die Namen "Zurück", "Links" usw. eingeben. Nun, es gab einige Voreinstellungen, bei denen Sie das Licht schnell auf eine vorgegebene umstellen mussten.

Bild

Bei der Kommunikation mit einem Kollegen stellte sich heraus, dass diese Sticks nicht bei Fotografen, sondern bei Menschen, die Videos drehen, beliebter sind. Und als er von mir hörte, dass ich eine Anwendung für deren Verwaltung erstellt habe, schrieb er, dass diese Anwendung, wenn Sie eine Funktion implementieren, Budgetsticks in ein Analogon eines Modells eines anderen Herstellers verwandelt, das das Fünffache kostet.

"Animation"


Für Videoaufnahmen benötigen Sie manchmal alle möglichen Lichteffekte, z. B. das „Licht“ eines Polizeiautos im Hintergrund usw. Wenn die Anwendung das Licht "manuell" steuern kann, warum dann nicht die "Animation" implementieren? Am Anfang hatte ich die Idee, 10 bis 20 verschiedene Animationen zu nähen, aber ich war zu faul, um mich darauf zu setzen. Nachdem ich zwei weitere Abende verbracht hatte, erstellte ich einen einfachen webbasierten Animationseditor. Darüber hinaus können Sie bis zu 10 Kanäle bearbeiten und diese dann in der Anwendung auf die Sticks verteilen.

Bild

Der einzige Nachteil dieser Stöcke im Vergleich zu teureren Gegenstücken war die recht langsame Arbeit. Vom Senden eines Befehls bis zum Umschalten der Farben werden 300 bis 400 Millisekunden erreicht, sodass Sie bei höheren Geschwindigkeiten keinen stabileren Betrieb erzielen können.

Total


Infolgedessen wurde über den Abend eine fertige Bewerbung geschrieben und veröffentlicht , die meiner Meinung nach die „offizielle“ Bewerbung eines bekannten Herstellers übertrifft. Wie es funktioniert, zeigte dieses Video:


PS Dies ist nicht mein erster Artikel darüber, wie das Programmieren bei Arbeiten hilft, die nichts mit dem Programmieren zu tun haben. Lesen Sie zu diesem Thema:

Überwinde WiFi. Wir schreiben den Shoot & View-Client für Windows, Mac und Linux .
Linux in der Tasche - im Dienste des Fotografen
Herstellung eines Standalone-Fotoautomaten auf Himbeer-Pi

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


All Articles