Per velocizzare e semplificare la regia video a Radio Lombardia ho pensato di centralizzare una serie di funzioni che altrimenti richiederebbero di navigare tra varie schermate: abilitare / disabilitare il picture in picture, variarne il contenuto, avviare / fermare la registrazione, etc…
È vero, esiste già Elgato Stream Deck (https://www.elgato.com/it/stream-deck), non ho inventato l’acqua calda.
Tuttavia questa pulsantiera (oltre a costare la metà) ha la particolarità di comunicare tramite ethernet anzichè USB: questo permette di pilotare più di un dispositivo, ad esempio due computer con due istanze diverse di vMix.
Basata sull’accoppiata Arduino + Ethernet Shield è sostanzialmente un semplicissimo client HTTP che invia richieste GET in funzione di quali tasti vengono premuti.
Nell’esempio che segue premendo il pulsante, il pin digitale 2 viene collegato a massa assumendo valore LOW.
Cominciamo con la parte elettronica:

Non ho inserito resistenze di pull-up perchè ho sfruttato quelle integrate nel chip Atmel, come si vede nel listato del programma:
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { 10, 0, 0, 40 };
EthernetClient client;
const int buttonPin2 = 2;
int buttonState2 = 1;
void setup()
{
Ethernet.begin(mac);
pinMode(buttonPin2, INPUT_PULLUP);
}
void loop()
{
buttonStateA5 = digitalRead(buttonPinA5);
if (buttonStateA5 == LOW) {
client.connect(server, 8088);
client.println("GET /api/?Function=StartStopRecording HTTP/1.0");
client.println();
delay(1000);
client.stop();
}
}
In questo esempio premendo il pulsante si fa alternativamente partire / arrestare la registrazione di un’istanza vMix su un computer con indirizzo IP 10.0.0.40
Chiaramente è possibile replicare il blocco “IF” per ogni funzione desiderata, con il limite del numero di porte dell’Arduino in uso (se non fossero sufficienti quelle presenti sulla scheda è possibile espanderle con uno shift register)
Il supporto per applicare i pulsanti sulla barra rack che si vede in foto l’ho realizzato con la stampante 3D, ecco il file STL: