tx dati con controllo se i dati in rx sono veramente quelli inviati dal tx

So’ che il titolo dell’argomento è un po’ ingarbugliato… ma c’e’ il modo di fare una qualche sorta di codifica per esser sicuro che i dati che ricevo sull’arduino RX (via radio usando virtualwire) sono quelli che invio con l’arduino TX?
Avete qualche consiglio da darmi?
Grazie

sì, semplicemente devi crearti un protocollo di trasmissione, più il protocollo è complesso e più è affidaile la verifica.
Un banale esempio, per mandare una qulsiasi stringa puoi usare il carattere "$" come inizio, il carattere "#" come fine, seguito dal numero di caratteri che compongono la stringa. Se devi trasmettere "prova" scrivi "$prova#5". Ovviamente il firmware di ricezione deve essere addestrato a prendere tutto ciò che trova tra $ e # e verificare che effettivamente sia lungo 5 caratteri, in caso positivo risponde con un "OK" codificato in un qualche modo, in caso contrario invia un carattere "%" che avrebbe l significato di "ricezione errata, ripeti trasmissione".
Non so se il concetto è chiaro, l'esempio è ovviamente banale, ma il concetto è quello.

gelholder:
So' che il titolo dell'argomento è un po' ingarbugliato... ma c'e' il modo di fare una qualche sorta di codifica per esser sicuro che i dati che ricevo sull'arduino RX (via radio usando virtualwire) sono quelli che invio con l'arduino TX ?
...

Oltre a quanto consigliatoti da Michele, direi che potresti aggiungere un controllo CRC sul blocco trasmesso. Qui trovi un paio di moduli per fare il calcolo del CRC16 e del CRC32 : Librerie per il calcolo del CRC16 e CRC32 - Software - Arduino Forum :wink:

Guglielmo

Vi ringrazio.
ho letto tutto il forum Librerie per il calcolo del CRC16 e CRC32 - Software - Arduino Forum , non è che mi sia tutto chiaro... ma farò un po' di esperimenti.
Sapete se c'è in giro anche qualche tutorial che in particolare abbini la codifica CRC alla trasmissione radio sui 433mhz? Io non so programmare in C, ma sto arduino mi piace un sacco!
Grazie

gelholder:
...
Sapete se c'è in giro anche qualche tutorial che in particolare abbini la codifica CRC alla trasmissione radio sui 433mhz?
...

IL CRC non è una codifica, è un "Codice di controllo" (Cyclic Redundancy Check) calcolato su un blocco di dati.

Tu hai un blocco di bytes (indipendentemente da come sono fatte le variabili che lo compongono), calcoli il CRC del blocco e ti viene un numero X. Trasmetti al tuo corrispondente sia i tuoi dati che il numero X. Il tuo corrispondete che riceve, prende il blocco dei dati, calcola anche lui il CRC e ... se tutto è giusto deve venire anche a lui X, lo confronta con il valore X che tu gli hai inviato e, essendo uguali capisce che il blocco è corretto. Se invece a lui viene un numero Y diverso da X che tu gli hai mandato ... chiaramente c'è stato un errore di trasmissione, ti avverte e tu devi rispedirgli il blocco. :wink:

Guglielmo