Interruttore remoto via
radio.
|
Telecomandi via radio.
Capita che tra il segnale da valutare, o il dispositivo da comandare, ed il
microcontroller non sia possibile stendere dei cavi. In questi casi occorre
provvedere con una comunicazione IR o radio.
Da un certo tempo sono disponibili numerosi moduli trasmettitore-ricevitore
sulle gamme dedicate ai dispositivi LPD (Low Power Device, ovvero dispositivi
di piccola potenza) che, grazie alla produzione orientale, hanno raggiunto dei
costi veramente bassi.
Questi dispositivi sono principalmente nella banda dei 315 o 433MHz e le piccole
dimensioni e il basso costo ne invogliano l'impiego in parecchie ambiti.
Vediamo qui come utilizzare questi moduli in una semplice applicazione.
Trasmissioni a 433MHz.
La gamma dei 433MHz è dedicata essenzialmente a telecontrolli (stazioni
meteo con sensore esterno, sistemi di allarme, ecc.) e a telecomandi (cancelli, serrande,
campanelli wireless,ecc.); ufficialmente, va da 433.000 a 434.800MHz.
Per i dispositivi più economici, si tratta di realizzazioni fin troppo semplici, ma adeguate a comunicazioni su brevi distanze
(decine di metri).
|
I trasmettitori sono di piccola potenza (max. 10mW), realizzati solitamente
come oscillatori a uno o due transistor, stabilizzati da un cristallo o da un
risonatore a onde superficiali (SAW) e previsti per una modulazione modulazione OOK.
Il funzionamento è il seguente: quando l'ingresso dati del trasmettitore
è a livello basso, l'oscillatore è bloccato e il consumo è ridotto (anche
meno di 1uA). Quando l'ingresso dati è a livello alto, l'oscillatore è attivato e
genera una portante alla frequenza stabilita dal risonatore o cristallo. Il
consumo sale a una decina di milliampere.
Il circuito è alimentabile
generalmente tra 3 e 12V: maggiore è la tensione di alimentazione e maggiore
sarà la potenza generata in RF. Con il classico 5V di alimentazione dei
microcontroller la portata, con una antenna minimale, supera generalmente i
20-30m. |
I moduli sono realizzati su piccoli circuiti stampati (10x14mm circa), accessibili
con 3 o 4 pin.
I ricevitori sono del genere eterodina, anch'essi estremamente
semplificati.
Quelli più semplici utilizzano pochi componenti, mentre quelli più complessi
sono basati su circuiti integrati specifici.
Eccone un esempio che utilizza un doppio opamp come elementi di uscita e controllo.
Nella pratica, si tratta anche qui di moduli realizzati in SMD, accessibili
con pin che variano tra 4 e 8 o più. L'alimentazione è prevista a 5V.
Il ricevitore, appena acceso,
si adegua ai segnali presenti nell'ambiente: se nessun trasmettitore è attivo
a breve distanza, esso lavora ad alto guadagno, raccogliendo una ampia fascia di disturbi e di
statica.
|
A lato, l'immagine dell' oscillogramma tipico ottenuto all' uscita di un
modulo ricevente in assenza di portante trasmessa.
Sono presenti impulsi casuali derivati dai disturbi
elettromagnetici emessi da apparecchi presenti nelle vicinanze, oltre
al rumore di fondo generale.
Il ricevitore si sintonizza con il massimo guadagno su questi
segnali di bassa intensità e li rende in uscita come variazioni di
livello tra 0 e 5V. |
Quando si riceve una portante di valore sufficiente, il ricevitore adegua il suo guadagno per
escludere segnali di minore ampiezza e rendere in uscita gli impulsi ricevuti
come dati digitali.
|
A lato, l'immagine della ricezione di un segnale inviato dal
trasmettitore e costituito da 18 bit complessivi. |
La frequenza di trasmissione supportata è al massimo un paio di kHz;
utilizzando questi moduli per una trasmissione seriale, solitamente non si
superano i 1200 baud.
|
E' importante sapere che il ricevitore richiede un minimo tempo per
agganciare il trasmettitore; peraltro, una volta agganciato, mantiene la
situazione del guadagno anche in mancanza di portante per un certo tempo.
Osserviamo nell'immagine a lato come, tra un pacchetto di bit e il
successivo, distanti circa 50ms, non siano presenti disturbi, dato che il ricevitore si è
adattato al segnale più forte. |
E' necessario, quindi, che una trasmissione dati inizi con un
"preambolo", prima di inviare il pacchetto dei dati, per permettere al ricevitore di aggiustare
la ricezione e per agganciarsi al segnale
escludendo i disturbi.
Da notare che questi moduli richiedono la presenza obbligatoria di una
antenna,
anche minima, senza la quale la portata è ridotta in modo drammatico.
Ovviamente, una antenna adeguatamente calcolata influirà in modo sensibile
sulla portata.
Nella forma più semplice potrà essere un tratto di filo qualunque lungo un quarto
d'onda, ovvero 17.3mm circa.
Volendo realizzare qualcosa di meglio si potrà costruire una semplice antenna
accorciata come descritto qui.
Oggetti analoghi si possono trovare facilmente sul WEB a costi irrisori, ma,
seguendo le istruzioni indicate, una discreta antenna si può auto costruire a
costo zero.
Certamente antenne di qualità maggiore aumentano la portata, ma non sono
certo proporzionali alla semplicità del circuito descritto.
Un interruttore radiocomandato.
Abitando in una vecchia casa costruita in mattoni (tra cui primeggiano
quelli definiti nel dialetto locale "brusadin", incredibilmente
duri, e con la possibilità di trovarsi anche qualche sasso di fiume,
l'operazione di ricavare nei muri le scanalature per inserire corrugati per l'
impianto elettrico è quanto mai sgradevole. No problem in fase di
ristrutturazione, ma aggiungere i conduttori per un punto luce in un secondo
tempo non è il massimo.
Da questa considerazione è nata l'idea di remotare il pulsante di accensione
del carico via radio, inserendo nelle placche a muro un piccolo trasmettitore
e collegando il carico ad un ricevitore adeguato.
Il trasmettitore.
Le dimensioni del trasmettitore posso preoccupare, dato che nelle scatole a
muro lo spazio non abbonda, ma, utilizzando uno dei moduli visti prima e un
microcontroller SMD, la cosa è fattibile senza problemi.
L' alimentazione è derivata direttamente dalla rete 230V, attraverso un
alimentatore senza trasformatore. Questo riduce alquanto le dimensioni, in
quanto è sufficiente un condensatore da 0.22uF (C1). Ovviamente sarà il caso di utilizzare un elemento X2.
La semionda, raddrizzata dl diodo D1 sarà limitata in ampiezza dallo zener D2
e alimenterà un microcontroller minimale (PIC10F200/202, SMD in SOT23-5).
Tre jumper consentono di associare il trasmettitore ad un numero
identificativo, in modo da poter disporre di 8 diversi riferimenti che
permetteranno di attivare un uguale numero di ricevitori, quantità più che
sufficiente per un uso domestico.
La presenza dei pin dei jumper, più un ulteriore pin JP2 collegato alla
Vdd,
consente di programmare il microcontroller direttamente sulla schedina (come
descritto più avanti). Non è
quindi necessario programmarlo prima della saldatura, cosa che richiede un
adattatore specifico, ed è possibile
aggiornare il firmware senza dissaldare nulla.
Alla chiusura del pulsante, il circuito è alimentato e il microcontroller
genera un pacchetto di dati che invia al modulo di trasmissione. Questo è del
genere "verticale" a 4 pin, dotato di una breve antenna.
Avvertenza:
- il pinout del PIC nello schema è relativo alle versione SOT23-6 SMD; i pin della
versione DIP8 sono disposti in modo differente.
- il trasmettitore a 433MHz può avere un pinout diverso da quello del
modello qui usato.
Attenzione perchè possono venir scambiati i pin Vcc e GND. Normalmente le funzioni sono è indicate con una serigrafia
sul circuito stampato.
Ad esempio, la sequenza dei pin del modulo JMR-TX-1, usato nei
prototipi, è Vcc-In-Gnd-ant, mentre quella di modelli come Velleman
TWS-A53 o Quasar AM-TX2 è Gnd-In-Vcc-ant, per cui il c.s. va
modificato.
Lista componenti
R1 |
100 ohm |
R2 |
1M 1/2W |
D1 |
1N4007 |
D2 |
4.7/5.1V 1/2W |
C1 |
0.22uF 275Vl X2 |
C2 |
100nF 50V |
C3 |
100uF 16V |
U1 |
PIC10F2xx (vedi testo) |
JP1 |
2x3pin jumper |
JP2 |
1 pin |
CN1 |
connettore 5.08 2 poli |
TX |
modulo 433MHz JMR-TX-1 |
|
Il tutto è realizzato su un circuito stampato di dimensioni minime, tale da
poter essere inserito in un modulo "tappo" (falso polo 1 modulo, L4950) della serie Living
BTicino. Questo consente di inserirlo in una scatola standard incassata a muro assieme
al pulsante di azionamento.
Il circuito stampato è fissato nel modulo Ticino con una goccia di
silicone.
Il condensatore (giallo) è l'elemento più voluminoso ed è di classe X2.
Il microcontroller SMD è saldato sul lato rame.
Il modulo trasmettitore installato è il modello JMR-TX-1.
L'antenna accorciata è quella descritta qui.
Potrà essere piegata per adattarla nella scatola da incasso.
|
Ovviamente è possibile realizzare il circuito anche in qualsiasi altro
modo, dato che non si tratta di un circuito critico. Ad esempio, dove necessario, si potrà anche optare per una alimentazione a
batteria. Lo schema è identico, escludendo i componenti dell'alimentatore in
alternata:
Si potranno utilizzare 3 batterie AA o AAA, per un totale di 4.5V, oppure
un elemento Li-ion da 4.3/4.7V. In questi casi lo zener D2 e la resistenza R1
sono inutili e vanno omessi; saranno richiesti solamente se si usano batterie di maggiore tensione
(ad esempio 6 o 9V); in tal caso occorrerà inserire una resistenza in serie di
valore adeguato e lo zener da 4.7-5.1V. Si possono utilizzare anche batterie a
bottone da 3V (CR2016/CR2032) quando ci sono problemi di dimensione rispetto
alla potenza ottenibile ed alla durata.
In questo caso si userà uno dei tanti contenitori commerciali previsti
per trasmettitori di telecomando, ottenendo un aspetto professionale,
Complicando un poco il circuito si potrà anche alimentare il modulo
trasmettitore a tensione maggiore di quella del microcontroller, per ottenere
la massima potenza.
Il ricevitore.
Il ricevitore soffre di minori problemi dimensionali, ma, comunque, è
stato realizzato in modo da occupare il minimo spazio possibile.
Data la presenza di un relè, che richiede una certa corrente di
mantenimento, l' alimentazione è stata realizzata con un trasformatore
miniatura, da 1-1.5VA, seguito dal classico ponte di Graetz e da un regolatore
tre terminali (78L05) per alimentare il microcontroller e il ricevitore, mentre il relè
dipenderà direttamente dalla tensione non stabilizzata.
Il microcontroller potrà essere PIC10F220/222, dato che serve la funzione
analogica: a causa del basso numero di pin disponibili, l'identificativo è letto attraverso
il convertitore AD che misura la tensione presente al pin GP1.
Questo è collegato ad un partitore con 4 livelli di tensione possibili (Vdd,
2/3Vdd, 1/3Vdd, Vss), ad ognuno dei quali corrisponderà un indirizzo. Le
resistenze del partitore non sono critiche (valore comune 10k), ma devono
essere uguali (5% o meglio), cosa sempre ottenibile con elementi SMD che
solitamente sono all'1%.
La selezione degli indirizzi è la seguente:
Obbligatoriamente va inserito un ponticello, altrimenti
l'ingresso GP1 resta flottante e la conversione può rendere valori casuali.
Il ricevitore, così combinato, consente 4 indirizzi che, associati all'identificatore
fisso (impostabile nel sorgente da 0 a F, per un totale di 64 combinazioni) è
più che adeguato all'uso previsto. Dato che, però, il trasmettitore consente
più indirizzi, dove occorra, si potrà utilizzare un partitore
con più resistori, modificando di conseguenza il sorgente in modo da
individuare più valori dalla conversione AD.
|
Un ulteriore
jumper consente di selezionare il modo di funzionamento, ovvero se il relè agisce in modo monostabile o
bistabile.
Nel primo modo,
una ricezione chiude il relè e la successiva lo riapre (passo-passo).
Nel secondo modo, il segnale ricevuto chiude il relè per 1s. |
Il ricevitore radio è un modello a 8 pin molto comune, come quelli visti
nelle immagini precedenti. Anche qui sarà
necessaria una piccola antenna.
|
Il relè andrà scelto in base al carico. Nei prototipi è stato usato uno Schrack (V23092-A1005),
anche se non economico, per le sue ridotte dimensioni e che consente
una potenza di commutazione sufficiente a comandare direttamente un
piccolo carico in ca, ad esempio una lampada:
Tensione massima di commutazione 400Vca
Corrente massima di commutazione 6A
I valori indicati sono presi dai fogli dati e sono massimi assoluti.
Nell'uso occorre stare molto al di sotto di questi valori per garantire una
durata minima dei contatti.
|
Se occorre una maggior potenza commutabile, oppure è necessario comandare
carichi induttivi (motori, trasformatori) si ricorrerà ad un relè di
dimensioni maggiori, modificando opportunamente lo stampato, che è mono rame,
oppure ricorrendo ad un relè esterno.
La tensione di azionamento potrà essere 12 o 24V e, in corrispondenza, si
utilizzerà un trasformatore col secondario 2x12 o 2x15V, formato EI30 da
1.5-2VA. La presenza di due secondari simmetrici, tipici di questi
trasformatori, consente di rettificare l'alternata a doppia semionda con due
soli diodi.
Da osservare che questi trasformatori in genere sono auto protetti, per cui
non viene previsto un fusibile, che, in ogni caso, sarà sempre possibile
installare esternamente.
Sullo stampato trova spazio anche un LED opzionale, indicatore dello stato
del relè. La resistenza serie dipenderà da tipo di LED usato e dalla
tensione del secondario del trasformatore (indicativamente, per LED da 1-2mA, 6k8-10k per 12V e 15-22k per 24V).
Lista componenti
R1-2-3 |
10k-22k SMD805 |
R4 |
6k8-10k |
R5 |
6k8-15k (vedi testo) |
LD1 |
led 3mm opzionale |
D1-D2 |
1N4007 |
D3 |
1N4148 |
C1 |
100nF 50 smd 1206 |
C2 |
100uF 16V |
C3 |
100uF 35V |
U1 |
PIC10F220 o 222 SOT23-6 |
JP1 |
2x4pin jumper |
JP2 |
2 pin |
CN1 |
connettore 5.08 a vite 4 pin |
RX |
modulo ricevitore 433MHz JMR-RXB6 o QAM-RX2 |
Q1 |
BC547 o simile |
IC1 |
78L05 |
T1 |
trasformatore EI30 1.5-2VA 2x12/2x15 |
K1 |
Relè Schrack V23092 |
Nulla vieta, però, di usare un microcontroller in DIP8 e componenti non SMD,
aumentando in proporzione le dimensioni dello stampato.
|
Nel circuito superiore vediamo una versione con microcontroller in DIP e un economico relè
DS1-M/DS1E (SDS-NAIS).
Ul ricevitore è un QAM-RX2. Non è inserita l' antenna.
Nel circuito inferiore, più compatto, il microcontroller è in SMD,
saldato sul lato
rame e il relè è uno Schrack super sottile.
Il ricevitore è un JMR-RXB6.
L'antenna è quella usata sul trasmettitore; la bobina è fasciata
da una guaina termo stringente per evitare che si deformi. |
Essendo circuiti alimentati dalla rete, è consigliabile, sopratutto per il
trasmettitore, dare una mano di spray isolante sul lato saldature.
Sviluppo dei programmi.
Prima di passare alla versione definitiva, molto miniaturizzata, i circuiti possono essere sperimentati
comodamente sulla LPCuB
con gran semplicità, aggiungendo solamente i ponticelli necessari e
collegando esternamente i moduli di trasmissione e ricezione.
Per il trasmettitore (PIC10F2xx):
Il modulo trasmettitore è collegato con cavetti terminati femmina-femmina.
Il LED 4, collegato a GP2, rende visibile il dato inviato al
trasmettitore.
GP0,1,3, che selezionano l'indirizzo, possono essere collegati a Vss. Lasciati
liberi si trovano a livello 1 a causa
del weak pull up interno.
E per il ricevitore (PIC10F22x):
Il modulo ricevitore è collegato con cavetti terminati femmina-femmina.
Il LED 4, collegato al GP2, indica lo stato dell'uscita.
Senza altre aggiunte, si potranno emulare gli indirizzi 1 e 4 collegando il
GP1 rispettivamente a Vss o Vdd.
Altrettanto per il jumper della selezione del modo di funzionamento, che
potrà essere collegato alla Vss; lasciato libero si trova a livello 1 a causa
del weak pull up interno.
Il programma.
Il trasmettitore, non appena alimentato, genera un impulso di preambolo da
10ms, seguito da un pacchetto dati di 16 bit.
Il dato trasmesso è costituito da 4 bit contenenti un codice di riferimento
che funge da chiave della trasmissione; il ricevitore dovrà identificare
questo byte per attivare il relè. Questo consente di avere più trasmettitori
in una stessa area, ognuno col suo riferimento, che si accoppia solamente con
ricevitori aventi lo stesso codice.
Il secondo nibble è costituito dall'indirizzo selezionato con i jumper: un
ricevitore, per azionare il relè, dovrà ricevere riferimento come fissato
nel firmware e l'indirizzo come stabilito dai jumper.
In aggiunta, il secondo byte trasmesso è il complemento del primo ed è
utilizzato dal ricevitore per verificare la correttezza di quanto ricevuto.
Questa situazione costituisce un sufficientemente elevato grado di sicurezza,
in ambiente non professionale, per evitare azionamenti non desiderati del relè.
La trasmissione utilizza una variazione di lunghezza degli impulsi inviati: i
bit a 0 sono trasmessi come livello alto per 400us e livello basso per 400us.
I bit a 1 sono costituiti da un livello alto per 800us e un livello basso per
400us. Questo consente un accoppiamento tra trasmettitore e ricevitore anche
nel caso in cui i cui
microcontroller abbiano clock un poco diversi.
Ricordiamo che il clock interno dei PIC10F è calibrabile all'avvio del
programma e il costruttore garantisce una tolleranza dell'1% sul valore
nominale (in questo caso 4MHz), il che è più che adeguato per il nostro
scopo.
Ovviamente, è obbligo effettuare questa calibrazione perchè differenze
maggiori nei clock potrebbero impedire la corretta ricezione dei dati.
Da prove fatte è possibile ridurre i tempi di durata degli impulsi, anche
dimezzandoli, ma per l'applicazione prevista la cosa non riveste alcuna
importanza, per cui si è preferito restare su tempi "lunghi" per
maggiore sicurezza di ricezione.
Il trasmettitore può essere realizzato con 10F200/202/204/206/220/222. Dato che non viene utilizzata la funziona
analogica, nè il comparatore, tutti questi chip sono equivalenti.
Il ricevitore è sempre alimentato e il microcontroller riceve i disturbi
casuali captati dall' ambiente. Questi disturbi hanno probabilità assai remote di combinare col sistema di chiavi sopra visto.
Quando il trasmettitore si attiva, il ricevitore si adegua segnale, escludendo i disturbi; il preambolo consente di stabilizzare
la ricezione e garantire che i pacchetti necessaria a completare una trasmissione con successo siano il meno possibile.
Il ricevitore riconosce il preambolo, quindi passa a campionare il segnale in
arrivo dopo 600us da ogni fronte di commutazione basso-alto.
Questo fa si che il campionamento cada con il segnale a livello alto per i
bit a 1 e a livello basso per quelli a zero.
Il fatto di risincronizzarsi sulla transizione in salita di ogni impulso permette una
discriminazione sicura dei bit in arrivo anche se i tempi non sono assolutamente
precisi a causa di una differenza di clock dei microcontroller.
Anche se sono accettate differenze di clock anche del 5%, risulta in ogni caso
necessario calibrare l'oscillatore interno, il che porta il clock generato
entro l'1% del valore nominale, assicurando una corretta ricezione.
Dato che il trasmettitore, fino a che è alimentato, continua ad inviare
pacchetti dati, il ricevitore, una volta azionata l'uscita, si disabilita per
2 secondi, in modo da evitare un indesiderabile sfarfallio del relè.
Questo tempo può essere variato modificando il sorgente.
Dato il basso numero di pin disponibili, l'indirizzo del ricevitore viene
valutato con jumper che collegano GP1, usato come ingresso del modulo
analogico, ad un partitore resistivo. Questo partitore permette, come
visto sopra, 4 livelli di tensione, che il firmware riconosce.
Un ulteriore coppia di pin collegata al GP0 è impiegata per definire se il relè funziona come bistabile
(passo-passo) o come monostabile (tempo di on 1s). Se il jumper non è
inserito, il livello del pin è alto, dato che sono stati abilitati i weak
pull-up.
L'assegnazione di GP0 come ingresso digitale e GP1 come AN1 dipende solo dalla
necessità dello stampato mono faccia.
Il ricevitore richiede 10F220/222, dato che è
necessario il modulo ADC.
Per quanto riguarda i microcontroller, nulla vieta di utilizzarne altri,
come quelli della serie 12F (o qualsiasi altro PIC...). Ovviamente il chip usato per il ricevitore dovrà avere la funzione
analogica.
Anche un eventuale elemento DIP potrà essere impiegato da chi non desidera
montaggi SMD, con il solo aumento della superficie di stampato necessaria.
Programmazione on board.
Tutti i pin necessaria alla programmazione dei chip sono
accessibili dai jumper on board. Quindi è possibile programmare i
microcontroller senza dissaldarli dalla scheda, ovvero senza la necessità
di scriverli prima della saldatura. Questo è assai comodo in quanto,
trattandosi di SOT23, occorre un opportuno adapter che ha un certo costo.
|
La connessione ISCP
tra il Pickit e i circuiti
è facilmente realizzata con cavetti jumper maschio-femmina (ad esempio
MIKROE-512).
Questi cavetti sono disponibili anche con terminazione
maschio-maschio o femmina-femmina e sono indispensabili durante lo
studio dei prototipi, sia su scheda di sviluppo che breadboard.
|
10F2xx possono essere programmati sia con Pickit2 che Pickit3.
Ecco le connessioni sui circuiti stampati:
Durante la scrittura, i circuiti saranno alimentati direttamente dal
Pickit e non dovranno essere collegati alla rete.
Portata e sicurezza.
La portata, che potrebbe essere la massima preoccupazione dell'
utilizzatore, come abbiamo detto, dipende essenzialmente dalla presenza di una
antenna efficiente. Quanto migliore è l'antenna, tanto migliore sarà la
portata.
Va però tenuto conto che all'interno di un ambiente ci possono essere
ostacoli alla trasmissione delle onde radio, come pareti, elementi metallici,
solette in cemento armato, ecc. Quindi la posizione reciproca di TX e RX
all'interno di una casa (e ancor più di una officina o simili) potrà essere
determinante.
Inoltre, la presenza di disturbi elettromagnetici (motori, varialuce,
regolatori di tensione, elettrodomestici, macchine elettriche, ecc), può
essere di intralcio; abbiamo tratteggiato come opera il ricevitore e la sua
struttura non è il massimo per operare in ambienti molto
rumorosi.
Per ultimo, va considerato che non si tratta di una una comunicazione di sicurezza, come potrebbe
essere un Keeloq o rolling code. Quindi potrebbe essere non ideale per chiavi e simili.
Per trasmissioni a rate più elevati o dove è richiesta una diversa qualità o
sicurezza, esistono moduli con tecnologie differenti (con costi che
possono essere assai maggiori), sui quali implementare protocolli di
comunicazione di maggiore complessità.
|