Informatii generale
- Categorie: Utilitar
- Judetul: Cluj Alba
Descriere
M5Tally este o solutie dezvoltata pentru a adresa lipsa sistemelor de tally light in productiile de livestream cu buget redus, in special in combinatie cu mixerele video Blackmagic ATEM. Proiectul foloseste dispozitive M5Stack pentru a oferi indicatori vizuali clari pentru cameramani (live, preview, idle), dar si pentru a permite comunicarea directa cu echipa tehnica prin display si buton dedicate, impreuna cu numeroasele modele si variatii de mixere video disponibile de la Blackmagic.
Aplicatia desktop M5Tally Client afiseaza in timp real starea fiecarui dispozitiv M5, permite trimiterea de mesaje catre acestea si ofera functionalitati de actualizare automata atat pentru software-ul clientului, cat si pentru dispozitivele M5, printr-un flasher dedicat. Configurarea initiala e simplificata, utilizatorul trebuind doar sa introduca datele Wi-Fi, IP-ul ATEM si indexul camerei.
Proiectul a pornit dintr-o nevoie reala si s-a dovedit a fi o solutie cu potential pentru echipele tehnice din productiile video moderne, atat amatori, cat si profesionisti.
Pe langa functionalitatea de tally light, majoritatea dispozitivelor M5Stack dispun de un display led pe care se pot afisa caractere, utile pentru comunicarea cu cameramanii din partea tehnicului, in situatiile in care aceasta nu este intotdeauna posibila. Pentru comunicarea cameramanilor cu tehnicul, dispozitivele dispun de un buton integrat in display-ul lor, acesta trimitand un semnal catre aplicatia desktopa, M5Tally Client.
Desi dispozitivele pot opera si singure, aplicatia de companie ofera o interfata usoara de inteles si de folosit, care permite afisarea dispozitivelor M5 active, cat si statusul lor, alaturi de un panou cu informatiile utile. M5Tally Client ofera, de asemenea, posibilitatea de a trimite mesaje catre dispozitivul M5 selectat.
Dispozitivele M5 nu vin din fabrica scrise cu software-ul pentru aceasta functionalitate, prin urmare am creat un flasher care sa faca acest lucru. Flasher-ul accepta datele retelei de internet, impreuna cu IP-ul mixerului ATEM pentru a se conecta la el, si cu indexul camerei pe care o va acompania. Software-ul este mai apoi scris pe dispozitivele M5, oferind o experienta cat mai placuta si usoara de inteles utilizatorului.
Aplicatia M5Tally Client dispune si de server-side software checking pentru dispozitivele conectate, afisand o notificare atunci cand apare o versiune noua, invitand utilizatorul sa foloseasca flasher-ul pentru a scrie noua versiune asupra dispozitivului.
Aplicatia in sine dispune si ea de un software updater, care ruleaza la fiecare pornire a aplicatiei si ofera optiunea utilizatorului sa isi descarce noua versiune si sa o instaleze.
Tehnologii
Este necesar ca toate componentele (dispozitive M5, mixer ATEM, aplicatia M5Tally Client) sa fie in acelasi subnet IP, cu conditia sa poata comunica liber intre ele, fara restrictii firewall.
Aplicatia desktop utilizeaza protocolul UDP pentru a se conecta la dispozitivele M5 disponibile. Acestea trimit periodic un semnal de discovery, care transporta numarul camerei pe care o insoteste, care serveste si ca ID-ul dispozitivului, impreuna cu versiunea software-ului pe care il are.
Atunci cand este descoperit un nou dispozitiv, aplicatia trimite un request catre endpoint-ul /version al unui server operational 24/7, care returneaza ultimele versiuni disponibile atat pentru aplicatie, cat si pentru dispozitive, punct in care se compara cele 2 versiuni, si daca este cazul, se afiseaza o notificare pentru actualizarea firmware-ului.
In cazul in care dispozitivul nu transmite o versiune, cum este in cazul celor cu un firmware mai vechi, inainte de a implementa update checking-ul, acestea sunt tratate ca avand firmware “Legacy”, oferind de asemenea utilizatorului optiunea de a le aduce la ultima versiune disponibila.
Flasher-ul care este responsabil cu scrierea ultimei versiuni detecteaza toate dispozitivele conectate la calculator prin USB, identificandu-le ca porturi COM. Se ofera optiunea utilizatorului de a alege pe care dintre porturile COM sa se scrie software-ul, iar acel port este mai apoi utilizat de catre ESPFlasher pentru a scrie noul firmware.
Cel mai important aspect al acestui proiect este server-side flashing-ul. Deoarece aceste dispositive au date variabile, acestea nu mai pot fi hard-codate in firmware intr-un mod obisnuit. Totodata, nedorind sa oferim codul dispozitivelor, acesta fiind unic si gasit doar aici, trimitem datele preluate (SSID-ul, parola de internet, IP-ul ATEM-ului si ID-ul camerei) printr-un GET HTTP catre un server dedicat acestui proiect. Acest process elimina nevoia utilizatorului de a isi instala Arduino IDE, alaturi de toate dependentele pentru dispozitivele M5, rezolvand de asemenea problema timpului excesiv de compilare pentru fiecare dispozitiv, scazandu-l de la timpul testat de 20-30 de minute per dispozitiv pe un calculator high-tier la maxim 10 minute pe serverul care foloseste Arduino CLI Compiler.
La primirea datelor, serverul returneaza aplicatie un task ID unic, generat aleator pentru acest build specific. Serverul ia mai apoi fisierul binar compilat si il salveaza intr-un folder cu numele task ID-ului.
Pentru a detecta atunci cand serverul termina de compilat build-ul, flasher-ul trimite constant requesturi catre endpoint-ul /status/{TASK-ID}, care returneaza fie incomplete, fie complete. Atunci cand aplicatia primeste statusul de complete, trimite inca un request la endpoint-ul /download/{TASK-ID}, de unde descarca fisierul binar necesar pentru a il scrie pe portul COM selectat anterior. Dupa ce termina descarcarea, este trimis POST-ul catre /cancel/{TASK-ID}, care totodata poate anula operatiunea de build prin butonul de cancel, cat si curate fisierele ramase din timpul build-ului, asigurand un workspace curat pentru server.
Atat M5Client, M5Flasher, cat si serverul au fost concepute in python datorita versatilitatii limbajului.
Serverul a fost facut utilizand tehnologia Flask, ruland pe un port specific pentru a reduce sansele traficului nedorit pe portul default. Pentru compilare, are instalat Arduino IDE CLI, pentru a utiliza compilatorul integrat in acesta, cel mai bun pentru acest proiect.
Interfata aplicatiei M5Flasher a fost create cu ajutorul modulului TKinter, cel mai popular modul pentru interfete grafice usoare de utilizat, necesitand complexitate minimala. Pentru scriere, acesta foloseste modulul ESPFlasher, impreuna cu pyserial pentru a detecta dispozitivele conextate prin USB si pentru a stabili o legatura cu ele.
Programul principal, M5Client, foloseste PyQT5 pentru a isi crea interfata, datorita multitudinii de optiuni pe care il are acesta, impreuna cu flexibilitatea pe care o aduce cand e vorba de customizare. Conectarea catre serverul de build are loc printr-un socket, o modalitate sigura si usoara de utilizat in python.
Cerinte sistem
Procesor 64-bit x86
100MB RAM
80MB Spatiu stocare
64-bit Windows 10+ (netestat, dar ar putea functiona pana la XP)
Realizatori
Eduard Balasea
- Scoala: Liceul Teoretic Mihai Eminescu
- Clasa: 11
- Judet: Cluj
- Oras: Cluj-Napoca
Rareș Bogdan Cazan
- Scoala: Liceul Teoretic Mihai Eminescu
- Clasa: 11
- Judet: Alba
- Oras: Cluj Napoca