HOME


       
Sorry, english translation is in progress. Come back soon!
Alternately try free on-line automatic translation tools (like Google language tools) for a computer-generated translation from italian
 

Il Basic Stamp diventa un telecomando via radio

Accendere luci e apparecchi a distanza


Il Robot entra in una stanza e come per incanto si accendono le luci e la TV. Fantascienza? No, semplice tecnologia!
Per ottenere questo risultato è sufficiente trasformare il Robot in un telecomando programmabile, in grado di comandare le luci e molti altri apparecchi elettrici. Vediamo come.

Schema a blocchi

Un sistema di telecomando è sempre formato da un circuito trasmettitore e un circuito ricevente.

Ecco i componenti chiave di tutto il processo, partendo dal Robot per arrivare all'interruttore che accende l'apparecchio desiderato:



ROBOT: crea gli impulsi che codificano i vari comandi, grazie ad un apposito programma Pbasic


MODULO TRASMITTENTE: usa gli impulsi per modulare un segnale radio, che trasmette nello spazio

<<< >>>



MODULO RICEVENTE: riceve i segnali irradiati, ritrasformandoli in impulsi

NUTCHIP: separa gli impulsi dal rumore di fondo e li decodifica, accendendo e spegnendo le uscite


RELE: è l'interruttore elettronico che accende le luci ed altri elettrodomestici.

Un Robot trasmittente

I moduli trasmittenti trovano largo impiego in elettronica, e si possono acquistare in varie frequenze. Per l'Italia e i Paesi europei la frequenza di trasmissione consentita è di 433 MHz.
Lo schema qui a lato mostra come collegare al Robot il modulo TX-SAW433SZ prodotto dalla Aurel (TX1). In pratica bisogna collegare i piedini marcati GND al negativo (Vss), il piedino 15 al positivo (Vdd).

Collegate le alimentazioni, dobbiamo fornire il segnale di modulazione (il nostro codice) al piedino di ingresso del modulo (IN, 3). Con il programma che vi forniamo il Basic Stamp genera il codice tramite il piedino P0.

Abbiamo aggiunto un condensatore (C1) per filtrare l'alimentazione dai picchi presenti ad alte frequenze.
Il tramettitore necessita anche di una antenna esterna, da collegare al pin 11. La Aurel produce delle bellissime antenne flessibili, adatte per uso professionale; nel nostro caso, potrà bastare anche una semplice antenna a stilo, che ci costruiremo con del filo di rame.

 

Come collegare il modulo trasmittente al Robot

 

Realizzazione sulla breadboard del robot

Il modulo trasmettitore si monta facilmente sulla breadboard del Robot.
Inseritelo delicatamente, come mostrato nella foto, senza fare troppa forza e facendo attenzione a non piegarne i piedini. Il condensatore C1 deve essere inserito molto vicino al modulo, per potere esercitare tutta la sua azione filtrante.

Dovremo poi usare dei pezzetti di gilo di rame per completare i collegamenti: meglio seguire la convenzione di usare filo rosso per il positivo (chiamato anche Vcc, Vdd, +5V), e nero per il negativo (Vss, GND).
Notate che abbiamo collegato TUTTE le piste del modulino marcate GND con i fili neri, attenzione a non dimenticarne nessuna. Abbiamo poi usato il giallo per il segnale di modulazione proveniente dal pin P0 del Basic Stamp, ed un filo verde per l'antenna.

L'antenna è molto importante: è il tramite che permette alle onde radio di passare dal circuito allo spazio circostante e viceversa. Migliore è l'antenna, migliore sarà il rendimento del circuito, e maggiore la portata.

In commercio esistono antenne appositamente progettate per queste frequenze (433 MHz), ma a scopi sperimentali possiamo iniziare con uno spezzone di filo di rame. Il diametro non ha importanza, la lunghezza invece sì: deve essere 16,5 cm.
Stendetelo con le mani affinchè sia ben diritto, e piazzatelo verticalmente sulla breadboard.

 

Il trasmettitore montato sulla breadboard. Notate l'antenna, in pratica un pezzo di filo di rame rigido messo verticalmente (filo verde).


Attenzione a non invertire il modulo! Questo disegno mostra la posizione del pin 1, a sinistra osservando il circuito dal lato con i componenti.


Il programma Pbasic, commentato riga per riga

Il programma che vi proponiamo trasmette due codici, il numero 1111 ed il numero 2222, a distanza di mezzo secondo l'uno dall'altro:

1111 (mezzo secondo) 2222 (mezzo secondo) 1111 (mezzo secondo) 2222 (mezzo secondo) 1111...


Nel seguito vi mostreremo anche un circuito ricevente che capterà il segnale trasmesso dal Robot.
Il circuito ricevente contiene un Nutchip che accende un LED se riceve il codice 1111, e lo spegne se riceve il codice 2222: perciò quando il Nutchip sarà nell'area di azione del Robot, vedremo il LED accendersi e spegnersi continuamente!!!

Quando avrete capito come funziona questo esempio, potrete usarlo come punto di partenza e modificarlo per ottenere qualsiasi tipo di azione da fare compiere al Robot ed al Nutchip.


Ma torniamo al programma in Pbasic per il Robot. E' diviso in due parti:

programma Pbasic
Spiegazione

tx_pin var out0

Il trasmettitore è pilotato dall'uscita 0 del Basic Stamp; campiate questa riga se volete usare un piedino diverso.

remote_code var word
n var word
i var byte

La variabile "remote_code" conterrà il codice da trasmettere; la routine di trasmissione inoltre usa "n" per metterci i risultati intermedi, ed "i" per contare il numero di volte per cui ripetere la trasmissione.

output tx_pin
low tx_pin

Settiamo il pin in uscita e predisponiamolo basso.
again: Qui inizia il ciclo principale del programma, ripetuto in continuazione!

remote_code = 1111 gosub tx_remote_code pause 500

Per trasmettere il codice 1111, lo mettiamo nella variabile "remote_code"...
...e chiamiamo la routine di trasmissione "tx_remote_code".
Poi faremo una pausa di mezzo secondo.
Nota: se volete cambiare codice, basta scriverlo al posto di 1111. I codici validi vanno da 1 a 4095.

remote_code = 2222
gosub tx_remote_code
pause 500

goto again

Adesso trasmettiamo il codice 2222, allo stesso modo del precedente.
E di nuovo una pausa da mezzo secondo.
Infine riprendiamo daccapo in un ciclo senza fine....
 

PARTE 2    La parte seguente è la subroutine che trasmette il codice. Basta copiarla all'interno del vostro programma, senza modificarla.

 

tx_remote_code:

 

Routine di trasmissione di un codice radio.

for i=1 to 10

La trasmissione del codice viene ripetuta 10 volte, per essere sicuri che il codice venga ricevuto bene anche in presenza dei disturbi (sempre presenti nell'etere).

n = 4095 - remote_code

Per la trasmissione i bit del codice ci servono invertiti; lo facciamo ora, mettendo il risultato nella variabile n.

tx_pin = 1
tx_pin = 1

Accendiamo il trasmettitore: questo primo impulso si chiama "bit di start"

tx_pin = 0
tx_pin = 0
tx_pin = n.bit11
tx_pin = n.bit11
tx_pin = 1
tx_pin = 1

Il bit di start è seguito da 12 bit di dati. Ogni bit viene trasmesso preceduto da bit bassi e seguito da bit alti.

Si comincia con l'undicesimo bit...

tx_pin = 0
tx_pin = 0
tx_pin = n.bit10
tx_pin = n.bit10
tx_pin = 1
tx_pin = 1

Si prosegue con il decimo bit del codice...

tx_pin = 0
tx_pin = 0
tx_pin = n.bit9
tx_pin = n.bit9
tx_pin = 1
tx_pin = 1

Poi il nono.....

tx_pin = 0
tx_pin = 0
tx_pin = n.bit8
tx_pin = n.bit8
tx_pin = 1
tx_pin = 1

Poi l'ottavo, e così via, a ritroso, fino al bit meno significativo, cioè il bit zero

tx_pin = 0
tx_pin = 0
tx_pin = n.bit7
tx_pin = n.bit7
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit6
tx_pin = n.bit6
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit5
tx_pin = n.bit5
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit4
tx_pin = n.bit4
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit3
tx_pin = n.bit3
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit2
tx_pin = n.bit2
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit1
tx_pin = n.bit1
tx_pin = 1
tx_pin = 1

tx_pin = 0
tx_pin = 0
tx_pin = n.bit0
tx_pin = n.bit0
tx_pin = 1
tx_pin = 1

Come potete vedere, la tecnica è la stessa per tutti i bit: si mette l'uscita bassa per due volte, poi per due volte l'uscita è messa alta o bassa a seconda del codice, ed infine si rimette l'uscita ad 1 per due volte ancora.

Probabilemnete vi state chiedendo per quale motivo mettiamo l'uscita alta o bassa per ben due volte: non basterebbe farlo una sola volta?

In effetti, la seconda volta che si pone un pin uguale a zero (o uguale ad uno) il pin non cambia, e quindi sembrerebbe che abbiamo fatto uno sforzo inutile!

Ma in realtà, se eliminassimo la seconda ripetizione, il telecomando non funzionerebbe perchè gli impulsi trasmessi sarebbero troppo veloci. Infatti la durata di ogni singolo impulso alto o basso è stabilita dagli standard di codifica. Impulsi con i livelli alti e bassi corretti, ma con una cadenza troppo rapida o troppo lenta, non rispettano lo standard di trasmissione ed il ricevitore del telecomando rifiuta il segnale!!!

Con il trucco mettere l'uscita alta o bassa due volte, invece, otteniamo i tempi giusti per ogni singolo bit.

A qualcuno sarà venuto in mente di usare una PAUSE come modo alternativo per stabilire i tempi di ogni singolo impulso trasmesso. Purtroppo i tempi di attesa richiesti sono molto più brevi di un milliseceondo (che è il tempo minimo che possiamo utilizzare per la PAUSE).

Qunidi, il miglior trucco che abbiamo trovato è stato quello di ripetere due volte tutte le operazioni di modifica di un bit. Ovviamente la seconda ripetizione non ha alcun effetto (perchè si mette alta un'uscita già alta, o bassa un'uscita già bassa), ma in questo modo il programma è molto uniforme e soprattutto si ottengono i tempi giusti per la trasmissione di ogni singolo impulso.

Avrete quindi capito che la routine di trasmissione non deve essere modificata, altrimenti cessa di funzionare.

Ad esempio, se mettessimo una DEBUG a metà fra la trasmissione di un bit ed un altro, la tempistica degli impulsi ne sarebbe stravolta ed il segnale trasmesso non verrà più riconosciuto da decodificatore del telecomando.

tx_pin = 0

pause 10

Il treno di impulsi è stato trasmesso. Spegniamo il trasmettitore ed aspettiamo 10 millesimi di secondo prima di ritrasmettere il segnale.
Nota: non confondete questa pausa con la pausa da 500 millisecondi inserita nella prima parte del programma.

next

La ripetizione si fa 10 volte....

return

Dopodichè la routine di trasmissione è completata!!!

 

 

Un ricevitore con il Nutchip

Per ricevere il segnale trasmesso dal Robot ci serve un ricevitore per telecomando.Utilizzeremo la scheda descritta nell'articolo:

Infatti questa scheda possiede tutte le caratteristiche che ci servono: ricevitore, antenne, LED ed un relè con cui azionare ciò che ci piace. Troverete lo schema, la descrizione del funzionamento ed anche il circuito stampato nella pagina dedicata a questo progetto. Prima di proseguire con la lettura però ricordate sempre che il collegamento di questo e di altri circuiti alla rete elettrica, a lampade e a qualsiasi altro apparecchio, richiede sempre l'intervento di un elettricista professionista ed il rispetto delle norme vigenti. Non farlo può causare guai seri, e danni gravi alle persone e alle cose. Con la corrente elettrica non si scherza!