Spagnolo Inglese
11139 Users    

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

codici telecomando

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).

Schema elettrico ricevitore codici telecomando

ipercode_sch.png

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 16x2 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

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 16x2

Tutta la documentazione gratis in PDF la trovate nella sezione DOWNLOAD (per accedere bisogna essere registrati)

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 un 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.

ipercode_ml.jpg

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!
ipercode_ht.jpg

Il progetto 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, è in vendita qui --->> IPERCODE_FULL.ZIP

Commenta!Feed Rss

Salve

Salve
mi piacerebbe approfondire la cosa dal punto di vista software, pero' mi trovo impacciato con l'hardware, non e' possibile trovare il tutto anche in kit di montaggio?
Grazie

La soluzione più rapida e'

La soluzione più rapida e' quella di acquistare una demoboard Microchip
Ne può acquistare una su Farnell

http://it.farnell.com/jsp/Semiconductors/Development+Tools+&+Programming...

Con o senza ICD2 (necessario per la programmazione)

Poi dovete aggiungere la parte radio,
potete ad esempio acquistare un modulo radio Aurel con relativo telecomando
operante a 433Mhz (ovviamente Rolling Code)

Un distributore dell'Aurel e' Futura Elettronica

Saluti
Emanuele

ciao non riesco piu' a

ciao non riesco piu' a trovare la demoboard su farnell ..dove posso trovarne una ..? grazie
S

Demo baord Microchip per PICmicro

Ciao, puoi utilizzare qualsiasi demoboard per picmicro, adattando, se necessario, il firmware.
Comunque quella usata nell'esempio è la demo board microchip PICDEM2
http://it.farnell.com/microchip/dm163022/scheda-dimostrativa-picdem2-plus/dp/3992925

Vorrei realizzare questo

Vorrei realizzare questo progetto per ricevere comandi da un telecomando... e vorrei emulare poi un telecomando, tuttavia ho scoperto che quasi tutti i moduli aurel sono a 9600bps (e non ne esistono da 2400, come lo stadio ricevente). Come posso fare per comunicare dal modulo a 9600 con quello a 2400?

Grazie mille,
Alessio Periloso

Ciao, cosa significa che i

Ciao, cosa significa che i moduli Aurel sono da 9600 e non ne esistono da 2400 come lo stadio ricevente?
Comunque la velocità di ricezione dei moduli e' quella massima, quindi possono ricevere anche a velocità inferiori.

Emanuele

ciao volevo utilizzare il

ciao volevo utilizzare il progetto come "ponte" per aprire e chiudere un cancello di servizio dall'abitazione. allo scopo vorrei sapere se il dispositivo oltre a ricevere e decodificare il comando "rolling-code" di Microchip lo ritrasmette rielaborato ( ovvero il codice successivo ) o se trasmette sempre lo stesso codice.
ti ringrazio e ti chiedo scusa per il disturbo.

Ciao,

Ciao,
il dispositivo IPERCODE non trasmette, riceve solamente.
Per trasmettere ha bisogno di un modulo TX e per tramettere il codice Rolling successivo, si deve implementare l'algoritmo di encoder Keeloq con relativa manifacture key

Emanuele

Poiché non sono molto

Poiché non sono molto esperto nel settore dei moduli radio rx mi viene un dubbio...sul sito di Futura Elettronica alla voce moduli radio -> rx supereattivi am 433mhz , ci sono molti modelli di ricevitori descritti con la voce "ottimizzati per la famiglia hcsxxx della microchip".Ma l'uscita del ricevitore radio può essere direttamente connessa anche ad un pic come nel progetto ipercode oppure sto sbagliando modello?Se sono fuori strada per favore qualcuno può consigliarmi quale prendere per connettere l'uscita del modulo direttamente al pic dove (come da progetto) viene implementata la decodifica del keeloq.
grazie a tutti.

Decodifica codice MC145026

Salve,
mi interesserebbe implementare in un PIC la decodifica del codice generato da un MC145026. Ho guardato i sorgenti .ASM che hai scritto, ma non trovo dove è la parte che mi serve... la trasmissione è fatta sulla stessa linea di comunicazione sia a 38400 Hz che a 76800 Hz (una parte dei codici è inviata a una velocità, una parte a un'altra). Per il momento mi servono solo i dati che vengono inviati a 76800 Hz. In effetti, se si vuole guardare la cosa sotto un altro punto di vista, si potrebbe quasi pensare che sia una trasmissione a 76800 baud, dove si hanno 1 start bit, 6 bit di dati e 1 stop bit e in totale 18 bytes (da 6 bit l'uno, che possono valere '111111' oppure '000000'). Quello che dovrei arrivare a fare è "tirar fuori" la sequenza completa di questi 19 bytes (o degli 8 trit).
Puoi aiutarmi pf?
Grazie mille,
Stefano

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

Articoli di elettronica correlati

  • Tastiera capacitiva a 16 TASTI
    Questa tastiera elettronica (capacitiva) è stata realizzata per essere utilizzata come pulsantiera nascosta a bordo monitor. Infatti la scheda è stata inserita in una fessura nel legno, quindi a scomparsa, e l'attivazione dei tasti avviene per effetto capacitivo ad una distanza di 1 cm (spessore del legno utilizzato). La segnalazione elettronica del tasto premuto (sulla tastiera) viene inviata ad un ulteriore dispositivo di elaborazione, sia in formato SPI che in UART (da convertire in RS232 per leggere il tasto premuto direttamente sul PC con Hyperterminal).

  • Ricevitore per TELECOMANDI Rolling Code ed altre codifiche
    Realizzando questo progetto, potrete ricevere il segnale da un TELECOMANDO per poi elaborarlo, e visualizzare il CODICE sul display LCD o inviarlo al PC. I telecomandi accettati devono essere della stessa frequenza del modulo RICEVITORE inserito nel Vs. progetto. Le codifiche utilizzate più comuni sono Rolling Code Keeloq, National MM53200 UM3750, Motorola MC145026 MC145027 MC145028.

  • Chiave antifurto a microcontrollore monozona. Come la IperKey ma con un circuito più piccolo. Infatti questa chiave elettronica ad autoapprendimento ha solo 1 relè di uscita, più che sufficiente per applicazioni di chiave antifurto.

  • Questo ascolto ambientale o microspia, trasmette sulla frequenza di 160MHz (se usiamo un quarzo da 40MHz) e quindi ascoltabile tramite un ricevitore con la frequenza di ricezione impostabile. Con il circuito è possibile sperimentare anche la trasmissione su frequenza diverse, ad esempio la banda FM 88-108 provando a modificare i valori, tra cui il quarzo (25MHz)

  • Chiave elettronica semplice ed economica, con codice sequenziale da 7 cifre; attivazione relè, visione ottica tramite LED.

Commenti recenti

Nuovi utenti

  • GUTENBERG
  • ciapalon
  • red_dragon88
  • sp01896
  • Beta91
  • barbara de Siena
  • picabin7gmail
  • ferro.fiore

Chi è online

Ci sono attualmente 3 utenti e 43 visitatori collegati.

Utenti online

  • GUTENBERG
  • blind
  • alexdon