Trasmissione più variabili modulo 433 Mhz

Questo è il classico problema che si affronta quando c'è di mezzo una trasmissione dati attraverso un mezzo.

La cosa più importante da fare in questi casi è definire un protocollo di comunicazione e soltanto dopo si pensa al come realizzarlo dal punto di vista tecnico.

Ci sono svariate tecniche per comunicare una serie dati da un punto A ad un punto B (a prescindere dal mezzo e dall'hardware selezionato):

  • usare un approccio tipo Comando A -> Azione A (ad esempio salvare la variabile A), Comando B -> Azione B etc etc
  • impacchettare tutti i dati da trasmettere in una struct/union ed inviarli in un colpo solo
  • usare un formato per lo scambio dei dati standard come il JSON e le relative librerie per il parsing
  • usare librerie già fatte da altri
  • etc etc

Tornando al caso specifico, tu stai usando dei moduli radio con una manciata di byte da trasmettere e la seconda soluzione potrebbe essere quella più adeguata.
I dati però non vanno mai trasmessi cosi come sono perché la trasmissione è asincrona e sempre suscettibile di errore (soprattutto nel tuo caso in cui usi un modulo radio).

Un protocollo semplicissimo può essere quello di inviare byte per byte un "telegramma" a lunghezza fissa composto da:
<START> <BYTE_0> <BYTE_1> <BYTE_2> ... <BYTE_N> <STOP> <CRC>

I byte di start/stop ti consentono di sincronizzare con esattezza la trasmissione tra i due device, il byte di CRC ( controllo di ridondanza ciclico o cyclic redundancy check) ti consente di scartare i telegrammi "disturbati" e quindi con errori (il byte di CRC ricevuto non corrisponderebbe a quello calcolato in tal caso).

Nella discussione di cui ho messo il link più su trovi un paio di esempi (post #16, post #19) su dei possibili modi di implementare una trasmissione del genere.