Web Remote Control

Prendiamo una quindicina di decoder, satellitari e terrestri, messi in un rack in uno stanzino all'ultimo piano (vicino alle antenne) e collegati ad un centralino TV per distribuire il segnale televisivo nel palazzo. Mettiamo che l'esigenza sia quella di vedere gli avvenimenti sportivi, tra quelli disponibili sui canali a pagamento, selezionando di volta in volta i canali relativi. Bisognerebbe andare ogni volta nello stanzino, prendere il giusto telecomando, fare un po' di acrobazie per non cambiare contemporaneamente il canale a tutti i decoder dello stesso tipo e controllare, su un televisore di servizio disponibile nello stanzino, il risultato della manovra.
Si potrebbe usare un ripetitore di telecomando commerciale, ma questi, con o senza fili, funzionano solo a distanze limitate e, comunque, vanno bene solo per un singolo dispositivo; sarebbe abbastanza complicato usarli per 15 decoder.
I decoder sono in comodato d'uso e quindi non possono essere manomessi collegando fili all'interno.
L'idea è venuta al mio amico Clemente, che proprio in quel periodo stava sperimentando l'ENC28J60 (Ethernet Network Controller) ed il relativo stack TCP/IP della Microchip.
Perché non realizzare un sistemino che, tramite rete ethernet ed una pagina web, potesse emulare 16 telecomandi da qualsiasi computer connesso in rete? L'idea ci è piaciuta. Ci siamo divisi i compiti, Clemente si è dedicato alla parte web con l'ENC, io a quella software/hardware per pilotare i led infrarossi con i diversi protocolli necessari. Abbiamo deciso insieme l'architettura hardware del sistema, abbiamo concordato un protocollo seriale per far colloquiare le due schede e siamo partiti con lo sviluppo.
Il risultato è quello che si può vedere nell'immagine a lato. È formato da una scheda
eIP-10 della LJCV Electronics e una scheda autocostruita con un PIC18F452.
La eIP-10 contiene un ENC28J60 per la rete e un PIC18F2620 a disposizione. Questo si occupa della gestione delle pagine web e comunica i comandi in seriale alla seconda scheda. Si è reso necessario aggiungere la scheda con il 18F452 per avere a disposizione i 16 pin I/O necessari a collegare i led IR e per garantire la precisione delle temporizzazioni nella ricostruzione dei codici IR.
Nella foto d'insieme si possono notare le 16 staffe porta-led collegate alla board inferiore.
Il primo problema da risolvere è stato proprio quello di collegare i led infrarossi ai diversi tipi di decoder senza manometterli e senza che il segnale emesso dal singolo led andasse ad influenzare gli altri decoder.
Ho montato una boccola porta-led a vite su una staffetta ad L realizzata per l'occasione. Tramite del nastro bi-adesivo si può attaccare la staffa al decoder seza rovinarlo. Spostando la boccola nell'asola si fa coincidere il led con il ricevitore del decoder.
La guarnizione in gomma morbida isola il led dall'esterno in modo che il segnale arrivi solo al ricevitore interessato.
A lato si possono vedere le due schede sovrapposte.
La scheda ethernet è collegata in seriale a quella di controllo IR tramite un flat cable.
Da questo prende anche l'alimentazione a 5V, che sarà abbassata a 3,3V da un regolatore a bordo della scheda.
Altri segnali sono riportati sul connettore per usi futuri.
I led sono molto vicini al ricevitore, non è quindi necessaria una grossa intensità luminosa anzi, questa potrebbe provocare interferenze ai decoder vicini. Non essendo necessari driver di potenza, il circuito diventa molto semplice: per generare la portante IR è sufficiente pilotare i led direttamente con l'uscita CCP2 del PIC. Il PWM interno genera una frequenza fissa di 36KHz con livelli TTL. Mettendo a 0 il pin relativo al led da accendere con la corretta sequenza, si genera semplicemente il comando voluto sul dispositivo scelto. Il software si cura di accendere un LED alla volta per non sovraccaricare il PIC. Il duty-cycle usato di solito varia tra il 25 e il 40%. I valori che ho usato sono riportati nella tabella seguente.
Se fossero necesarie frequenze diverse, per calcolare le impostazioni dei registri relativi al generatore PWM, si può usare questo
Foglio di calcolo del PWM.
MCU Osc.Freq. TMR2 prescaler PR2 ccpr1 25% Duty Cycle PWM Freq.
40MHz 4 68 70 36.231Hz
32MHz 1 221 220 36.036Hz
I protocolli implementati in questa versione sono solo quelli strettamente necessari: Philips RC6 mode 0 e Philips RC6 mode 6A 20

In particolare per quest'ultimo, usato dai decoder SKY, si trova molta poca documentazione in rete. Ho dovuto lavorare molto con l'oscilloscopio a memoria per capirne l'esatto funzionamento e riprodurlo.

Un protocollo molto usato e molto ben documentato è il: Philips RC5

Prosegue intanto lo studio degli altri protocolli usati dai vari produttori, i più noti ed usati sono quello Sony e quello JVC. L'intenzione è quella di ottenere un sistema "general purpose" valido per la maggior parte dei dispositivi in commercio.

Come già detto il circuito è molto semplice. Oltre alla parte di alimentazione, il circuito è appena complicato solo dai connettori necessari a collegare la scheda superiore (JP1), i 16 led (J0-J15) e le ICSP (In Circuit Serial Programmning, J16-J17) dei due PIC. L'altro connettore riporta alcuni contatti del PIC18F2620 per usi futuri. Il tutto rientra quindi nelle dimensioni massime consentite dalla versione free di Eagle (80 x 100mm) su una sola faccia. È quindi facilmente realizzabile con sistemi casalinghi (vedi Bromografo). Chi volesse provarci può scaricare lo schema e il PCB sia in formato Eagle che in formato PDF il "top layer" è composto di sole 4 tracce e può quindi essere realizzato con dei semplici ponticelli.
Qui c'è il
Codice sviluppato in Microchip C18 (compatibile con la versione "student" di questo compilatore).

Go to WRC evolution of 2015
aggiornato il 25 - 12 - 2006