Un altro telecomando TV per smartphone Android

Sì, l’ho fatto ancora. In un mio precedente articolo descrivevo come costruire una interfaccia da collegare al telefonino per poterlo usare come telecomando per il TV. L’applicazione Android permetteva, in quel caso, di controllare un TV di modello Sony Bravia, che utilizza un protocollo a infrarossi di tipo NEC. Ora non ho più quel televisore ed ho un piccolo Telefunken, che però usa un protocollo a infrarossi di tipo RC5, che è completamente diverso. Allora ho scritto una nuova applicazione, mantenendo sempre la stessa interfaccia hardware. E’ da notare che la distanza di funzionamento di questa versione è inferiore alla precedente. Purtroppo, la frequenza generata col sistema descritto nella pagina citata a inizio articolo è sempre di 38.4 KHz che è molto vicina ai 38 KHz “standard” del protocollo NEC, ma purtroppo è un po’ distante dai 36 KHz canonici del protocollo Philips RC5. Comunque, funziona lo stesso, dato che il notch filter del ricevitore non è proprio così stretto in frequenza, ma ha una “campana” ampia a sufficienza per tollerare questo errore in frequenza… Per la corretta temporizzazione delle fasi di “pieno / vuoto” ho utilizzato i pattern che derivano da 11 bytes di valore 0x5B per il “pieno” (burst di frequenza) e 11 bytes di valore 0x00 per il “vuoto” (pausa). Durante la trasmissione di 11 bytes di valore 0x00 si avranno comunque dei “glitches” di 8.68 uS attivi alti, perché questi sono gli “stop bits” della trasmissione che non posso eliminare. Per fortuna, i circuiti di ricezione presenti nei TV hanno una funzione di “filtro” che elimina questi disturbi. I filtri sono indispensabili perché alcuni tipi di illuminazione domestica (specie i tubi al neon) emettono disturbi nello spettro dell’infrarosso con una potenza notevole (provare per credere). Senza una “ripulita” del segnale, i telecomandi sarebbero poco efficienti. Comunque, i prossimi controlli remoti per TV saranno via radio, con i soliti 2.4GHz che ci stanno rendendo le case simili a forni a microonde… 🙂

Perché il tutto funzioni, è necessario che la versione Android sia in grado di gestire le periferiche USB, naturalmente. Nella figura sottostante potete vedere lo screenshot del programma in funzione.

Il programma in funzione: iRemUSB-RC5

Il programma in funzione: iRemUSB-RC5

La App iRemUSB-RC5.apk è scaricabile gratuitamente dalla mia pagina di Google Play.

Usare lo smartphone come telecomando TV

Qualche tempo fa ho proposto in queste pagine un circuitino basato su un convertitore USB-RS232 da collegare ad un tablet Android per realizzare un telecomando a raggi infrarossi. In quell’occasione il convertitore USB veniva “visto” da Android come una porta seriale ttyUSB5, ma si trattava di una vecchia versione del sistema operativo (la 2.6 se ricordo bene). Nelle nuove versioni, le periferiche USB sono gestite in modo del tutto diverso e così la vecchia applicazione che avevo scritto un paio d’anni fa non funziona sui nuovi dispositivi. A questo punto, ho pensato di riscriverla perché possa funzionare sui nuovi smartphone (o tablets) basati su Android 4.0 e successivi. Nella foto sottostante potete vedere il mio smartphone con la periferica collegata e il programma in funzione.

IRemoteUSB-pic1A parte la gestione dell’interfaccia USB, il principio di funzionamento è lo stesso. Si sfrutta la porta seriale per inviare dati formattati in un modo particolare. Utilizzando la velocità di 115200 BPS, una lunghezza di 7 bits ed 1 stop bit, infatti, si ha la possibilità di generare dei “bursts” di 38.4 KHz che vengono ricevuti molto bene dal sensore IR contenuto nel TV. Nel disegno qui sotto si vede come questo sia possibile:

serial7bitIn questo esempio vediamo la trasmissione seriale di due caratteri di valore 0x5B (hex) ; se però guardiamo la forma d’onda da un punto di vista differente, scorgiamo un burst di 6 impulsi con una frequenza di 38.4 KHz ! Ogni bit, a 115200 BPS, dura infatti 8.68 uS ; noi usiamo 3 bits per definire un periodo della nostra onda rettangolare e così la durata totale è di 26.04 uS che corrisponde appunto alla frequenza di 38.4 KHz. Grazie a questa “fortunata coincidenza”, possiamo usare la porta seriale per emettere una serie di caratteri che formano bursts e pause rispettando il protocollo di trasmissione di un telecomando a raggi infrarossi. La mia applicazione per Android utilizza il protocollo SONY e funziona perfettamente con un televisore di modello “Bravia”. Si possono realizzare senza problemi anche altri protocolli, quali il NEC o il Philips (RC5) ; il programma sarà diverso, ma il principio resta lo stesso.

Ovviamente, non basta usare lo smartphone e scaricare l’applicazione, si deve avere una interfaccia USB-TTL e in più si deve costruire un piccolo circuitino. La figura seguente mostra lo schema elettrico ed il prototipo.

IRemoteUSB-schEsistono moltissimi modelli di interfaccia USB-TTL, io ho comprato quella mostrata in figura presso un “noto negozio on-line” ed ho speso (compresa la spedizione dalla Cina) meno di due Euro. Il circuitino con il transistor serve a dare un po’ di potenza al LED infrarosso ; con questa interfaccia e “mirando” bene verso il sensore del TV, ho raggiunto una distanza utile di oltre tre metri.

L’applicazione per Android è molto semplice: ha solo sei tasti che servono per le funzioni “classiche”, che sono il cambio di canale (CH+ e CH-), la modifica del volume (VOL+, VOL- e MUTE) e l’accensione / spegnimento del TV (POWER).

Screenshot_2014-11-27-13-46-43Se si lancia l’applicazione SENZA aver collegato l’interfaccia USB, si riceve una schermata di errore.

Screenshot_2014-11-27-13-26-26Se invece si lancia l’applicazione con l’interfaccia collegata, viene richiesta l’autorizzazione all’uso di tale periferica da parte del programma.

Screenshot_2014-11-27-13-46-30L’applicazione è disponibile gratuitamente su Google Play , mentre il circuito lo dovete costruire voi… 😉 Buon divertimento.

General purpose infrared remote control receiver with RS232 output

This circuit, based on popular micro ATtiny2313 from Atmel, can receive signals transmitted by an infrared remote control using the NEC protocol (or similar) with 32 bits of data. The received infrared stream is converted to ASCII string and transmitted on the RS232 port with format 19200,N,8,1. Power supply is taken directly from the PC serial port, if you activate the DTR or/and RTS lines. To test the circuit you can use the standard Windows HyperTerminal program.

148pic

The circuit transmits on RS232 three types of informations :
1) the character @ at micro reset and then every 5 seconds of inactivity (no signal received by the infrared sensor)
2) a string of 8 hexadecimal ASCII characters preceded by < and followed by >
3) the character # if you continue to hold down a button on the remote control, with a period given by the repetition rate of the remote control (100/200 mS approx.)

A typical string may be something like this : @@@@<00FF00FF>## where the first 4 characters @ means that there was no activity on the infrared sensor for about 20 seconds, <00FF00FF> is the key code received from remote and ## indicates that the key was pressed for 200/400 milliseconds.

Want to take a look at C source for this program ? Click here

To burn the micro, I used the freeware version of SP12 for WinXP or Win2K.
The batch files to program the micro and the fuses that are included in zip file, are tailored for this software (you can find it easily with a google search).

If you have other tools for micro programming, the fuses configuration for the application described is : Ext = 0xFF High = 0xCB Low = 0xEC

The downloadable file ef148.zip contains :
– schematic.pdf – the electric schematic in PDF format
– top.pdf – the PCB layout in 1:1 scale
– topprint.pdf – the components mounting map
– irrx.hex – the HEX file to burn the micro
– wrFuses.bat – the batch file for micro’s fuses programming
– wrProg.bat – the batch file for micro’s memory programming
– 148pic.jpg – the picture of the working circuit

This circuit was designed and programmed by me on 2008 Nov 08 ; it was published on my old sites, then removed when I closed that sites and now is here (to stay)  😉