Decodifica Codici Telecomandi (Radiocomandi) Rolling Code Microchip Keeloq, Motorola e National

Decodifica telecomandi - radiocomandi rolling code

Ricevitore RX per Radiocomandi Rolling Code Microchip, National e Motorola

IperCODE è un progetto realizzato per uso didattico, con il quale è possibile realizzare un sistema di acquisizione di codici di telecomandi (radiocomandi) basati sulle codifiche Keeloq Rolling Code Microchip, MM53200 National, UM86409 UM3750 UMC e MC145026 MC145027 Motorola ed avere la possibilità di trasmettere il codice ricevuto sulla seriale RS232, visualizzarlo sul display 16X2 oppure riprodurlo, trasmettendolo via radio. Si potranno quindi sperimentare le periferiche del PIC16F876 quali la UART, il Capture Compare, Il PWM e la gestione della EEPROM interna per il salvataggio del codice telecomando ricevuto. Il progetto è da considerarsi una base per sviluppare, e può facilmente adattarsi alle Vs. esigenze, ad esempio, se la memoria interna non basta per memorizzare tutti i codici del telecomando, si può collegare una memoria I2C o SPI sui pin del micro appositamente tenuti liberi. L’acquisizione del codice avviene tramite il tasto LEARN premuto per più di 5 secondi oppure tenendolo premuto all’accensione, mentre per la trasmissione del codice basta premerlo normalmente (se volete potete aggiungere un tasto supplementare).

Il progetto IperCODE è disponibile per il download a soli 7 euro. Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti.Download Ipercode

Schema elettrico ricevitore codici telecomando

codifica telecomandi keeloq

Lo schema considera una VCC stabilizzata a 5V il cui assorbimento dipende maggiormente dalla retroilluminazione del display, se la usate, altrimenti la corrente richiesta non dovrebbe superare i 100mA. La ricezione radio avviene tramite il modulo CCP1 del PIC, mentre la trasmissione del codice allo stadio RF è gestita dalla periferica CCP2 che in questo caso sarà settata come PWM. Per la trasmissione radio consiglio, per i principianti, l’utilizzo di un modulo trasmettitore radio già fatto, tipo Aurel o Mipot. Inoltre potete notare il collegamento con un driver RS232 per l’interfacciamento con un PC (Hyperterminal sotto Windows oppure Minicom sotto Linux – cliccate sui link se volete approfondire-) e le connessioni al display 16×2 per vedere subito il codice ricevuto dal telecomando. La scelta del display la lascio a Voi, ne esistono molti tipi e sicuramente ne avete qualcuno in laboratorio, quindi datasheet alla mano, verificate se il pinout corrisponde.

Lista parti decodifica codici radiocomandi

Item Qty Reference Part
1 2 ANT1,ANT2 ANTENNA 433.92 (cavo lunghezza 16.5cm)
2 10 C1,C2,C3,C4,C6,C9,C10,C11,C12,C13 100nF
3 1 C5 2.2pF
4 1 C7 100pF
5 1 C8 10pF
6 2 DL1,DL2 LED
7 1 J1 CON5 In Circuit Serial Programming
8 1 P1 CONNECTOR DB9 RS232
9 1 Q1 BFR92
10 1 RX1 RICEVITORE-433.92MHz Aurel-Mipot
11 1 R1 1K TRIMMER
12 2 R2,R4 10K
13 1 R3 100R* Verificare specifiche display
14 1 R5 47
15 1 R6 47K
16 2 R7,R8 680
17 1 R9 220
18 1 R10 10R
19 1 SAW1 R2632 saw filter
20 1 S1 SWITCH
21 1 U1 LCD 2X16 **verificare pinout in base al modello scelto
22 1 U2 PIC16F876
23 1 U3 HIN202CBN
24 1 Y1 4MHz Crystal Resonator (built in capacitor)

Decodifiche RADIOCOMANDI

Le decodifiche radio piu comuni usate dai telecomandi (auto,apricancello etc.) sono la cosiddetta NATIONAL con integrato MM53200 o UM3750, poi la MOTOROLA con integrato MC145026-7-8 ed infine il Microchip Rolling Code generato in genere dagli integrati HCS200 o meglio HCSxxx.

Codice National (MM53200 – UM3750)

Codifica a 12 BIT (on-off) per un totale di 4096 combinazioni anche se gli ultimi 2 BIT in genere sono di segnalazione canale. Il segnale ricevuto presenta 0X1 per ogni BIT trasmesso, dove X è il BIT che ci interessa. I tempi di trasmissione sono 11.52mS per la durata di tutto il pacchetto di 12BIT (WORD) e 0.32 mS per ogni singolo BIT inteso come 0 X 1 ) quindi abbiamo un totale di 0.96 mS a BIT decodificato. Tenete presente che la costante di tempo RC può essere modificata. Essendo una codifica ormai “vecchiotta”, non è facile trovare in rete i datasheet, che allego.

MM53200 DATASHEET

UM3750 DATASHEET

Motorola (MC145026 – MC145027 -MC145028)

Codifica a 9 BIT (on-off-open) ogni bit ha 3 stati per un totale di 19683 possibili codici. Il segnale ricevuto può essere semplificato come 11 per ogni BIT ‘1’ ricevuto 00 per ogni BIT ‘0’ e 10 se ‘Open’, ogni DATA PERIOD avviene in 8 clock (tempo per decodificare un singolo BIT). Il timing potete vederlo dal datasheet a pag.10. Anche in questo integrato, la scelta dei componenti RC è fondamentale per il timing del circuito. Ovviamente RC del trasmettitore = RC del ricevitore!

MC145026 page

Rolling Code Microchip

PREMESSA
Per chi non conoscesse il significato del Rolling Code, faccio un esempio semplice semplice. Ipotizziamo di trasmettere un codice fisso da un trasmettitore ad una ricevente, chiunque sia nei paraggi, può ricevere anche lui il codice, salvarlo e poi riprodurlo! Per ovviare a questo, si trasmette un codice variabile, che varia in base ad un algoritmo noto ovviamente anche al ricevitore. Quindi, per semplificare, se trasmetto il codice 25 e l’algoritmo rolling è +10 , quando ri-premo il telecomando, trasmetterà il nuovo codice 35 e poi 45 e cosi via. Il ricevitore, dopo aver riconosciuto 25 come codice valido, lo elimina dalla memoria e salva 25+10=35 quindi si aspetterà in futuro 35 e cosi via…. A questo punto la domanda nasce spontanea: E se per qualsiasi motivo ho premuto il telecomando lontano dalla ricevente (che non se ne è accorta) quando ri-premo il codice sarà 45 invece del 35 aspettato! La soluzione sta nel creare una finestra entro la quale TX e RX si sincronizzano, nel nostro caso la ricevente si aspetterà 35 ma anche 45,55,65…. (possiamo farlo, abbiamo milioni di combinazioni). Nella codifica Keeloq tutto questo è un tantino (si fa per dire) più complicato!!
La decodifica Rolling Code della Microchip è molto più complessa delle altre, è composta da 66 BIT con la trasmissione 1/3 2/3 (ricevo 110 per il BIT ‘0’ e 100 per il BIT ‘1’).

Di seguito il valore dei BIT:
1 BIT di Batteria scarica trasmettitore
1 BIT Codice ripetuto
4 BIT TASTI
28 BIT Serial Number (in pratica la parte fissa del rolling code)
32 BIT di Codice Rolling (Comprendente discriminante e sincronismo)

Per ulteriori informazioni Vi consiglio il Design Center della Microchip con relativi DataSheet e routine.

KEELOQ DesignCenter

Firmware decodifica codici

Routine di ricezione codice Rolling (Manchester decoder), gestita sotto Interrupt sfrutta la periferica CCP1 (Captrure Compare). Ottimo esempio anche di primitivo Real Time con esecuzione a stati. In pratica durante la ricezione del codice il PIC può eseguire anche altri comandi/routines. La routine deve essere chiamata dall’ISR e può essere facilmente modificata ed adattata alle esigenze del sistema che state progettando. Nel MAIN controllate in polling la flag Flag_RX per sapere se è stato ricevuto un codice valido.

Routine di ricezione UM86409 compatibile con MM53200 e UM3750.
Questa routine è stata realizzata per PIC16C54, a 4MHz (quindi 1uS a ciclo) senza periferica Capture,
il segnale radio è monitorato in polling su PB,0 (RB0) quindi durante la ricezione il PIC è fermo!
Inoltre viene gestito anche il Watchdog.
Sono graditi tutti i commenti che volete, ma tenete conto che:
E’STATO UNO DEI MIEI PRIMI PROGETTI CON IL PIC, 13 ANNI FA’…….ANNO 1995!!

Routine di gestione UART. Trasmette e riceve sotto interrupt sfruttando la periferica. (ricordatevi si settare i PIN TX e RX della UART come INGRESSI!)

Routine di gestione LCD standard 16×2

NOTA: Le routine, benché funzionanti, sono solo a scopo di esempio e DEVONO essere adattate al vostro circuito o allo schema proposto, verificando anche i PIN del PICMICRO usato!

E’ disponibile anche il progetto completo:

IPERCODE_FULL

Ricevitore Rolling Code con visualizzazione del codice su display LCD e trasmissione seriale RS232.
Il progetto software viene fornito in ambiente MLAB completo di sorgente.

decodifiche codici telecomandi

Potete editare il firmware secondo le Vs. esigenze e “debuggare” tramite MPLAB ICD2 oppure programmare direttamente il Vs. microcontroller. Per la realizzazione hardware potete prendere come esempio lo schema precedentemente presentato. Eventuali modifiche allo schema devono essere riportate nel firmware.

Potete utilizzare i microcontroller Microchip PIC che hanno a bordo la periferica seriale UART ed il modulo Capture Compare CCP1.

Il progetto riceve il segnale Rolling Code dal telecomando, lo DECRIPTA tramite algoritmo di decrypt (dovete necessariamente prima, inserire nell’header del programma la MANUFACTURE KEY, fornita dal produttore del telecomando) e ne permette la visualizzazione su display LCD. Allo stesso tempo il codice completo, e poi la parte decodificata, vengono inviati alla seriale UART per poter essere visualizzati anche su PC, tramite il programma Hyperterminal o Minicom sotto Linux.

In quest’ultimo caso potrete avere (ad esempio) un Controllo Accessi ad alta sicurezza, gestito dal Vs. PC!
radiocomandi keeloq

Repost Aprile 2011

Il progetto IperCODE in formato MPLAB completamente testato e funzionante, completo di sorgente comprensivo delle routines di ricezione Rolling Code, decrypt e trasmissione UART/LCD, facilmente adattabile alle Vs. esigenze è disponibile per il download a soli 7 euro. Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti.Download Ipercode

45 Comments

  1. Vittorio Crapella 26 dicembre 2011
  2. info@topdata.biz 2 maggio 2011
  3. Emanuele 3 maggio 2011
  4. Emanuele 3 maggio 2011
  5. VENOX 17 settembre 2011
  6. Emanuele 18 settembre 2011
  7. jonnyno 7 giugno 2011
  8. Dario.Sciortino 3 febbraio 2014
  9. ppboc1 3 maggio 2011
  10. Emanuele 9 giugno 2011
  11. linus 28 aprile 2011
  12. Emanuele 28 aprile 2011
  13. Emanuele 28 aprile 2011
  14. Giovanni Giomini Figliozzi 28 aprile 2011
  15. Emanuele 28 aprile 2011
  16. FlyTeo 28 aprile 2011
  17. jonnyno 9 giugno 2011
  18. giuseppe.agosta 28 aprile 2011
  19. BiGAlex 28 aprile 2011
  20. Emanuele 28 aprile 2011
  21. giuseppe.agosta 28 aprile 2011
  22. Emanuele 28 agosto 2011
  23. ntt 29 aprile 2011
  24. Antonio Mangiardi 29 aprile 2011
  25. megaiver 2 luglio 2011
  26. Emanuele 14 marzo 2012
  27. coronet24 28 aprile 2011
  28. giorgiosotto2 30 maggio 2011
  29. Emanuele 30 maggio 2011
  30. Emanuele 29 aprile 2011
  31. Giovanni Giomini Figliozzi 29 aprile 2011
  32. Emanuele 28 aprile 2011
  33. Emanuele 30 gennaio 2012
  34. Emanuele 30 aprile 2011
  35. Emanuele 30 aprile 2011
  36. Emanuele 30 aprile 2011
  37. Emanuele 30 aprile 2011
  38. SPILLO76 23 dicembre 2013
  39. Emanuele 24 dicembre 2013
  40. fra83 28 aprile 2011
  41. Russo Luigi 21 agosto 2013
  42. Emanuele 6 febbraio 2012
  43. Giovanni Giomini Figliozzi 28 aprile 2011
  44. romolo.fedeli 29 luglio 2011
  45. Emanuele 1 agosto 2011

Leave a Reply