Sou fotógrafo e me tornarei uma ferramenta de trabalho

Os "chineses" estão fazendo coisas muito legais, inclusive no campo de dispositivos para fotógrafos. Nos últimos 10 anos, a qualidade foi muito reduzida, eles começaram a desenvolver seus próprios produtos exclusivos, que são mais altos do que os de "fabricantes eminentes". Mas, por alguma razão, quase todos os produtos têm pelo menos um, mas uma gordura enorme menos. Parece que os desenvolvedores de eletrônicos colocaram corretamente a moda: "voe na pomada - pelo menos 200 gramas".

Há não muito tempo atrás, decidi me tratar de luz constante e comprei alguns "postes de luz" yongnuo yn-360. Os gravetos acabaram sendo mágicos, mas é claro que havia um sinal de menos - o aplicativo Android para controle remoto praticamente não estava funcionando. Além das pequenas desvantagens do aplicativo - a principal é a incapacidade de controlar vários dispositivos ao mesmo tempo. Isso menos fez com que a função de controle fosse inútil, pois eu ainda precisava correr de um bastão para outro e ajustar manualmente a luz.

Eu tinha experiência em programação, então a situação foi corrigida por várias noites.

imagem

Escolhendo uma ferramenta de desenvolvimento


Eu não sou um desenvolvedor profissional - a programação é o meu hobby e, portanto, não estou pronto para gastar muito tempo estudando tecnologia. Aconteceu que minha linguagem python favorita, mas para o desenvolvimento móvel, ela não se encaixa muito bem. É claro que existem projetos maravilhosos como o kivy, mas na verdade não existem "baterias" suficientes, com as quais estou tão acostumado em python (e depois em JavaScript). Como resultado, a escolha recorreu ao JS com o apache cordova, no qual eu já fiz um projeto (a propósito, está um pouco relacionado ao meu trabalho - com esse aplicativo eu "bombeei" meu quadcopter dji spark, que foi cortado pelos profissionais de marketing para ler aqui ). Das vantagens de desenvolver em cordova, é a velocidade e facilidade de desenvolvimento e a presença de "baterias".

Como isso funciona?


Não é difícil adivinhar como essas varas funcionam com um smartphone - é o LE Bluetooth. Tive a sorte de alguém já estar intrigado com essa pergunta diante de mim e em alguns minutos encontrei um projeto python no qual consegui espionar o protocolo de operação do stick. Acabou não sendo nada complicado. Para trabalhar com ble, a cordova encontrou o plug-in ble e levou exatamente uma noite para escrever um protótipo funcional.

Tudo começa com a digitalização de dispositivos LE Bluetooth. Porém, para excluir o desnecessário da pesquisa (e havia muitos deles por aí), você pode digitalizar definindo o UUID do serviço desejado. Em seguida, conecte-se a ele e obtenha o serviço e as características. O UUID do serviço e características desejados pode ser encontrado, por exemplo, usando o aplicativo Scanner BLE.

Tudo isso leva a um simples pedaço de código:

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

Pelo mesmo princípio, a propósito, você pode conectar-se a outros dispositivos BLE. Eu me entreguei a escalas inteligentes da Xiaomi, que eu posso ganhar peso. Também pude ligar uma chaleira inteligente de redmond (além de descobrir a temperatura atual).

Depois disso, resta apenas enviar informações sobre a cor ou o brilho da luz. Existem vários tipos de LEDs nessas varetas: 5500k, 3200k e diodos RGB frios. É feito para que você possa definir o brilho frio e quente (0-99%) ou ativar os diodos RGB.
Se você precisar definir o brilho de diodos frios ou quentes, enviamos a seguinte sequência:

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

Se colorido:

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

A função de envio em si é assim:

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

No processo de trabalho adicional no aplicativo, o stick encontrou um bug irritante, que demorou muito tempo para ser detectado: por exemplo, se você enviar “50% branco”, depois “ligar vermelho” e novamente “50% branco”, então o último comando o bastão não está mais respondendo. Eu tive que inserir uma muleta para esses casos e, para a última equipe dessa sequência, enviar aleatoriamente mais / menos 1%.

UI e "chips"


Como você precisa trabalhar com a pilha html + js + css padrão, muitos desenvolvimentos prontos estão disponíveis para você. Materialize css foi escolhido para a interface do usuário e iro.js foi escolhido como o principal componente da interface do usuário.

No processo de teste do aplicativo, surgiu um recurso de diodos RGB separados - uma terrível mistura de cores. Se você adicionar pelo menos 1% de uma cor diferente ao vermelho, terá uma bagunça estranha. A escolha da cor é geralmente (incluindo o aplicativo oficial) implementada pelo padrão "roda de cores" para essas coisas, nas quais é muito difícil obter o "vermelho puro" etc. Eu tive que implementar o controle canal por canal de grupos de diodos de cores.

Bem, também foram feitos alguns chips que ajudam no trabalho real. Por exemplo, renomear varas. Você não precisa manter os números de série em sua cabeça e descobrir qual deles está em segundo plano - basta especificar os nomes "voltar", "esquerda" etc. Bem, houve algumas predefinições quando você precisa mudar rapidamente a luz para uma predeterminada.

imagem

No processo de comunicação com um colega, descobriu-se que essas varas são mais populares não entre os fotógrafos, mas entre as pessoas que gravam vídeos. E quando ele soube que eu estava fazendo um aplicativo para gerenciá-lo, ele escreveu que, se você implementar um recurso, esse aplicativo transformará os orçamentos em análogos de um modelo de outro fabricante, que custam 5 vezes mais.

"Animação"


Para filmar vídeos, às vezes você precisa de todos os tipos de efeitos de iluminação diferentes, por exemplo, a "luz" de um carro da polícia em segundo plano, etc. Se o aplicativo é capaz de controlar a luz "manualmente", por que não implementar a "animação". Inicialmente, a ideia surgiu para criar 10 a 20 animações diferentes, mas eu estava com preguiça de sentar nelas, então, depois de passar mais duas noites, criei um editor de animação simples, baseado na web. Além disso, você pode editar até 10 canais e distribuí-los no aplicativo entre as varas.

imagem

A única desvantagem desses paus, em comparação com os colegas mais caros, era o trabalho bastante lento. Do envio de um comando à troca de cores, ele atinge 300-400 milissegundos, para que você não possa obter uma operação mais estável em velocidades mais altas.

Total


Como resultado, um pedido finalizado foi escrito e publicado durante a noite, o que, na minha opinião, é um corte acima do “oficial” de um fabricante conhecido. Como funciona, mostrado neste vídeo:


PS: Este não é o meu primeiro artigo sobre como a programação ajuda no trabalho que não tem nenhuma relação com a própria programação. Leia sobre este tópico:

Transcenda o WiFi. Escrevemos o cliente Shoot & View para Windows, Mac e Linux .
Linux no seu bolso - ao serviço do fotógrafo
Fazendo uma cabine de foto autônoma no raspberry pi

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


All Articles