Infrarossi - Generalità
Nella casa di ciascuno di noi ci sono due “oggetti” di uso generale e magari in quantita’ maggiore di uno (sicuramente per quello meno costoso) che, stranamente, non si sono mai avvicinati l’un l’altro pur avendo, come si diceva, una “ricorrenza” molto elevata.
Sto parlando dei telecomandi degli apparecchi televisivi e simili e del PC (magari ora un “mucchio” di persone diranno che esistono decine e decine di interfacce fra loro ma io non sono stato capace di trovarne).
Lo standard degli infrarossi
I telecomandi non seguono uno standard descritto da una qualche specifica pubblica, pero’ e’ indubbio che c’e’ uno standard di fatto tanto che esistono i telecomandi universali che, peraltro, funzionano anche molto bene. Il PC ha diverse interfacce, le seriali, COM o USB che siano, le parallele (ormai desuete), la VGA (sicuramente non adatta ad inviare dati), la LAN… e al suo interno troviamo ancora altre interfacce, una per tutte il PCI. Eppure c’e’ uno standard che ci si aspettava dovesse coprire totalmente il campo degli infrarossi ed e’ l’IRDA, ma, miracolo dell’intelletto umano e’ diverso da quelli dei telecomandi (probabilmente qualcuno voleva salvaguardare il suo orticello, e lo ha fatto nel modo più miope che poteva).
Vediamo in poche parole le differenze:
-
- telecomandi, usano una codifica nota come Manchester, ogni bit e’ composto da due semiperiodi dove ”1” si traduce in primo semiperiodo alto e secondo basso, l”0” e’ l’opposto (prima basso e poi alto).
- IRDA, si propone di risparmiare quanta piu’ energia possibile e quindi traduce “0” in zero potenza e “1” in 3/16 di potenza.
Implementazioni - Infrarossi
Sfruttando le caratteristiche dei componenti programmabili come PIC e/o ARM e’ possibile con poco HW e SW sviluppare queste interfacce perlomeno per i livelli di baud-rate più contenuti. Non c’e’ una UART che presenti un protocollo seriale (livello fisico) compatibile o programmabile per ambedue gli impieghi e quindi l’implementazione potrebbe essere “fastidiosa”.
Io vorrei proporre un metodo che anche se processor time consuming può risolvere il problema. Una trasmissione asincrona prevede che la linea dati sia auto sufficiente per la sua decodifica (in realtà ciò avviene anche per un protocollo come il Manchester ma per il momento possiamo ignorarlo questo fatto), ciò significa che il valore della linea dati associato al bit time definiscono il valore del bit (in realta’ e’ necessario conoscere anche il protocollo).
Bene, se noi ci sincronizziamo sul primo cambiamento della linea dati, ci basterebbe un timer che “campioni” la linea dati misurando la lunghezza dei bit dati, da qui’ potremmo risalire al baud rate e al codice.
E’ possibile, utilizzando un PIC, oppure un ARM se vogliamo “reggere” un baud rate piu’ alto, decodificare linee con baud rate tipico di 9600 0 19200 senza problemi.
Chiaramente il processor impiegato avrà ben poco tempo per potersi dedicare ad altro, ma ormai un pic vale qualche euro e non necessita di altri circuiti per lavorare.
Il mondo degli infrarossi - Conclusioni
Da quanto discusso precedentemente e’ possibile con un HW e SW estremamente contenuti connettere un telecomando ad un pc e per esempio “giocare” senza fili a costo nullo. In realtà il tutto e’ molto più utile per quelle applicazioni di elettronica embedded dove e’ troppo costoso e ingombrante, connettere quest’ultima a qualche forma di controllo remoto.
Si ricordi, inoltre, che la luce (intendo con questo anche l’infrarosso) e’ assolutamente non disturbabile da campi elettromagnetici e non genera a sua volta disturbi che possono pregiudicare l’apparato che si sta usando (immaginiamo un macchina elettromedicale o sistemi di ricezione in RF).
Come banco di prova e’ stato sviluppato un circuito e un FW adatto allo scopo, su PIC, che permette di sperimentare quanto illustrato sopra. Chiunque e’ interessato può contattarci dal sito.