Je suis photographe et je vais me faire un outil de travail

Les «chinois» font des choses très cool, y compris dans le domaine des appareils pour les photographes. Au cours des 10 dernières années, la qualité s'est considérablement resserrée, ils ont commencé à développer leurs propres produits uniques, qui sont plus élevés d'une tête que ceux de "fabricants éminents". Mais, pour une raison quelconque, presque tous les produits en ont au moins un, mais un énorme inconvénient. Il semble que les développeurs de l'électronique aient à juste titre mis de côté la mode: "voler dans la pommade - au moins 200 grammes".

Il n'y a pas si longtemps, j'ai décidé de m'offrir une lumière constante et je me suis acheté quelques «poteaux lumineux» yongnuo yn-360. Les bâtons se sont révélés être simplement magiques, mais il y avait bien sûr un gros inconvénient - l'application Android pour la télécommande s'est avérée ne pas fonctionner pratiquement. En plus des inconvénients mineurs de l'application - le principal est l'incapacité de contrôler plusieurs appareils à la fois. Ce moins rendait la fonction de contrôle inutile, car je devais encore courir de bâton en bâton et régler manuellement la lumière.

J'avais de l'expérience en programmation, donc la situation a été corrigée pendant plusieurs soirées.

image

Choisir un outil de développement


Je ne suis pas un développeur professionnel - la programmation est mon passe-temps et je ne suis donc pas prêt à passer beaucoup de temps à étudier la technologie. Il se trouve que mon langage python préféré, mais pour le développement mobile, il ne convient pas très bien. Bien sûr, il y a des projets aussi merveilleux que kivy, mais il n'y a vraiment pas assez de «batteries», auxquelles je suis tellement habitué en python (puis en JavaScript). En conséquence, le choix s'est porté sur JS avec Apache Cordova, sur lequel j'ai déjà réalisé un projet (en passant, c'est un peu lié à mon travail - avec cette application, j'ai "pompé" mon étincelle dji quadcopter, qui a été coupé par les spécialistes du marketing pour lire ici ). Des avantages du développement sur cordova, c'est la rapidité et la facilité de développement et la présence de "batteries".

Comment ça marche


Il n'est pas du tout difficile de deviner comment ces bâtons fonctionnent avec un smartphone - c'est le bluetooth LE. J'ai eu de la chance que quelqu'un soit déjà perplexe devant cette question et en quelques minutes, j'ai trouvé un projet python dans lequel j'ai pu espionner le protocole de fonctionnement du bâton. Ce ne fut pas du tout compliqué. Pour travailler avec ble, cordova a trouvé le plug-in ble, et il a fallu exactement une soirée pour écrire un prototype fonctionnel.

Tout commence par la numérisation des appareils Bluetooth LE. Mais afin d'exclure les inutiles de la recherche (et il y en avait beaucoup), vous pouvez numériser en définissant l'UUID du service souhaité. Ensuite, connectez-vous avec lui et obtenez le service et les caractéristiques. L'UUID du service et des caractéristiques souhaités peut être trouvé, par exemple, à l'aide de l'application BLE Scanner.

Tout cela conduit à un simple morceau de 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'] } ) } 

Par le même principe, en passant, vous pouvez vous connecter à d'autres appareils BLE. Je me suis livré à des balances intelligentes Xiaomi, que je peux prendre du poids. J'ai également pu allumer une bouilloire intelligente de redmond (ainsi que connaître la température actuelle).

Après cela, il ne reste plus qu'à envoyer des informations sur la couleur ou la luminosité de la lumière. Il existe plusieurs types de LED dans ces bâtons: des diodes 5500k froides, 3200k chaudes et RVB. Il est conçu pour que vous puissiez régler la luminosité à froid et à chaud (0-99%) ou allumer les diodes RVB.
Si vous devez régler la luminosité des diodes froides ou chaudes, nous envoyons la séquence suivante:

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

Si coloré:

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

La fonction d'envoi elle-même ressemble à ceci:

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

En cours de travail sur l'application, le stick a trouvé un bug gênant, qui a mis beaucoup de temps à détecter: par exemple, si vous envoyez "blanc 50%", puis "allumez rouge", puis à nouveau "blanc 50%", puis la dernière commande le bâton ne répond plus. J'ai dû insérer une béquille pour de tels cas et pour la dernière équipe d'une telle séquence envoyer au hasard plus / moins 1%.

UI et "puces"


Puisque vous devez travailler avec la pile standard html + js + css, de nombreux développements prêts à l'emploi sont à votre disposition. Materialize css a été choisi pour l'interface utilisateur et iro.js a été choisi comme composant principal de l'interface utilisateur.

Au cours du test de l'application, une fonctionnalité de diodes RVB distinctes est sortie - un mélange de couleurs terrible. Si vous ajoutez au moins 1% d'une couleur différente au rouge, vous obtenez un étrange gâchis de couleur. Le choix de la couleur est généralement (y compris l'application officielle) mis en œuvre par la norme «roue chromatique» pour de telles choses, dans laquelle il est très difficile d'arriver au «rouge pur», etc. J'ai dû implémenter un contrôle canal par canal de groupes de diodes couleur.

Eh bien, certains jetons ont également été créés pour faciliter le travail réel. Par exemple, renommer des clés. Vous n'avez pas besoin de garder leurs numéros de série dans votre tête et de déterminer celui qui se trouve en arrière-plan - vous pouvez simplement spécifier les noms "retour", "gauche", etc. Eh bien, il y avait des préréglages lorsque vous devez changer rapidement la lumière en une lumière prédéterminée.

image

En train de communiquer avec un collègue, il s'est avéré que ces bâtons sont plus populaires non pas parmi les photographes, mais parmi les personnes qui tournent des vidéos. Et quand il a entendu parler de moi que je faisais une application pour la gérer, il a écrit que si vous implémentez une fonctionnalité, cette application transformera les bâtons de budget en un analogue d'un modèle d'un autre fabricant, qui coûte 5 fois plus cher.

"Animation"


Pour la prise de vue vidéo, vous avez parfois besoin de toutes sortes d'effets d'éclairage différents, par exemple, la «lumière» d'une voiture de police en arrière-plan, etc. Si l'application est capable de contrôler la lumière "manuellement", alors pourquoi ne pas mettre en œuvre "l'animation". Au départ, l'idée est venue de «coudre» 10 à 20 animations différentes, mais j'étais trop paresseux pour m'asseoir dessus, donc après avoir passé encore deux soirées, j'ai créé un simple éditeur d'animation basé sur le Web. De plus, vous pouvez éditer jusqu'à 10 canaux, puis les répartir dans l'application entre les sticks.

image

Le seul inconvénient de ces bâtons, par rapport à leurs homologues plus chers, était un travail assez lent. De l'envoi d'une commande à la commutation des couleurs, il atteint 300 à 400 millisecondes, vous ne pouvez donc pas obtenir un fonctionnement plus stable à des vitesses plus élevées.

Total


En conséquence, une application terminée a été écrite et publiée au cours de la soirée, ce qui, à mon avis, est supérieur à celui «officiel» d'un fabricant bien connu. Comment cela fonctionne, montré dans cette vidéo:


PS Ce n'est pas mon premier article sur la façon dont la programmation aide dans un travail qui n'est absolument pas lié à la programmation elle-même. Lisez sur ce sujet:

Transcendez le WiFi. Nous écrivons le client Shoot & View pour Windows, Mac et Linux .
Linux dans votre poche - au service du photographe
Faire un photomaton autonome sur Raspberry Pi

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


All Articles