giovedì 18 aprile 2013

Trasmettere dati via radio a più di 1 km!!

Banda larga?  Cos'è??
Quando si ha una casa in campagna, anzi nel bosco, dove non c'è assolutamente campo GSM, figuriamoci WiFi o cavi ADSL, come si possono trasmettere dati? Immaginate che l'acqua arrivi alla casa da un serbatoio posto 1 km lontano e che ogni tanto d'estate l'acquedotto interrompe l'erogazione dell'acqua o i consumi siamo superiori al previsto. Diventa vitale sapere con anticipo il livello dell'acqua nel serbatoio in modo da regolarsi nei consumi e non rimanere all'improvviso con lo shampoo nei capelli.
Bene ho sperimentato con successo un telecomando, venduto da Futura Elettronica, che usando la banda degli 869 MHz e una buona antenna direzionale riesce tirare per alcuni chilometri. Il trasmettitore (TX) ha due pulsanti, uno per accendere il relè del ricevitore (RX), l'altro per spegnerlo. L'idea è quella di comandare i due pulsanti nella stessa sequenza di 1 o 0 di un numero binario. Sappiamo che il codice ASCII permette con 8 bit di codificare caratteri e numeri da 0 a 255. Un byte è più che sufficiente quindi per trasmettere il livello dell'acqua in un serbatoio.
Al fine quindi di pilotare il telecomando per trasmettere una sequenza di bit, ho programmato un Arduino che, tramite due dei suoi output digitali, aziona i "pulsanti" acceso e spento.

In realtà i pin di Arduino provvedono a collegare a massa i due ingressi del telecomando, come se si trattasse del contatto dei pulsanti.
Un problema non banale è trovare il tempo ottimale tra i bit da trasmettere. Infatti per ogni bit il TX in realtà invia un treno di impulsi costituito da "preambolo" codice del canale, etc. Non solo, poi occorre aspettare un certo tempo dopo aver trasmesso un bit, perché il canale non può essere occupato al 100% del tempo per problemi di normativa sulle frequenze.

 Morale, alla fine un buon compromesso è la trasmissione di un byte in 72 secondi. Una bella velocità!! Altro che banda larga!! I segnali di fumo degli indiani erano più veloci.  Però è più che sufficiente per trasmettere i dati che servono e che variano con molta lentezza.
L'altra "trovata" è stata quella della ricezione del byte. Infatti RX non ha nessun modo per sincronizzarsi con TX, sta quindi in attesa del primo bit di start e poi si mette in ascolto usando un ritardo tra i bit uguale a quello di TX. Tutto qui. Non solo, ma tra un byte e l'altro è necessario aspettare un po' di tempo in modo da permettere a RX di rimettersi in ascolto senza senza rischiare di mischiare i pezzi di due byte.
Insomma, un bel tam-tam, ma molto utile.

Nessun commento:

Posta un commento