sabato 3 marzo 2012

Capire il segnale IR dei telecomandi Samsung con Arduino

Necessario:
-arduino
-modulo IR ricevente TSOP183X o simile
-telecomando :-)

Parte Hardware:
il TSOP ha tre pin, quello a sinistra è il DATA, il centrale è il GND mentre quello a destra è il 5+.
Bisogna collegare il pin 5+ al PIN11 dell'Arduino e caricare su di esso il file di esempio "IRrecvDump".

Una volta avviato, si preme il solito tasto Serial Monitor e si preme il tasto UNO del telecomando Samsung. Dovrebbe apparire una stringa simile a questa:
Could not decode message
Raw (68): -20600 4550 -4450 600 -1650 600 -1650 600 -1650 600 -500 650 -500 600 -500 650 -500 600 -500 650 -1600 650 -1600 600 -1650 600 -550 600 -500 600 -550 600 -500 600 -550 600 -500 600 -550 600 -1650 600 -500 600 -550 600 -500 600 -550 600 -500 600 -1650 600 -1650 600 -550 600 -1650 600 -1650 600 -1650 600 -1650 600 -1650 600.

 Seguendo le istruzioni di questa pagina:
http://www.arcfn.com/2010/03/understanding-sony-ir-remote-codes-lirc.html
e della pagina LIRC del telecomando samsung:

begin remote

  name  Samsung_BN59-00940A
  bits           16
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       4605  4344
  one           678  1551
  zero          678   436
  ptrail        679
  pre_data_bits   16
  pre_data       0xE0E0
  gap          107626
  toggle_bit_mask 0x0

      begin codes
          Power                    0x40BF
          TV                       0xD827
          1                        0x20DF
          2                        0xA05F
         
Si capisce che il treno di dati è composto da 16 bit di pre-data e 16 bit di data.
Cosa vuol dire? prendiamo i dati ricavati prima:
Raw (68): -20600 4550 -4450 600 -1650 600 -1650 600 -1650 600 -500 650 -500 600 -500 650 -500 600 -500 650 -1600 650 -1600 600 -1650 600 -550 600 -500 600 -550 600 -500 600 -550 600 -500 600 -550 600 -1650 600 -500 600 -550 600 -500 600 -550 600 -500 600 -1650 600 -1650 600 -550 600 -1650 600 -1650 600 -1650 600 -1650 600 -1650 600.

Secondo il LIRC:
  header       4605  4344
  one           678  1551
  zero          678   436
  ptrail        679

Ciò vuol dire che il bit header per la sincronizzazione sarà di circa 4605ms on e 4344ms off, il bit ONE sarà di 678ms ON e 1551ms OFF, mentre lo ZERO sarà 678ms ON e 436ms OFF. E il ptrail? è un bit finale che sarà di 679msON. 
Quindi, mettendo i suddetti dati in colonna ricaviamo:

4600 -4400 Bit di sincronia
700 -1550    1
650 -1600    1
700 -1550    1
700 -400      0
700 -450      0
700 -400      0
700 -450      0
650 -450      0
700 -1550    1
700 -1550    1
700 -1550    1
700 -450      0
650 -450      0
700 -450      0
650 -450     0
700 -450     0
650 -450     0
700 -450     0
650 -1600    1
650 -450     0
700 -450     0
650 -450     0
700 -450     0
650 -450     0
700 -1550    1
700 -1550    1
700 -400      0
700 -1600    1
650 -1600    1
650 -1600    1
650 -1600    1
650 -1600    1

650  ptrail BIT

Quindi avremo questi dati:
1110000011100000 0010000011011111  
Ovvero in HEX:  0xE0E0 e 0x20DF, ovvero ancora, il suddetto PRE_DATA_BIT e il tasto corrispondente, ovvero il tasto UNO!!!

Nessun commento:

Posta un commento