progettare ➲ progettare & costruire di NICOLA DE CRESCENZO CHIAVE Vi presentiamo una semplice chiave elettronica, con la quale potrete azionare svariati sistemi, come ad esempio, una elettro-serratura o un impianto di allarme. Il firmware di controllo vi consentirà di poter modificare con facilità la combinazione durante il funzionamento del circuito, senza alcuna modifica hardware & costruire L o schema proposto, utilizza una minima configurazione hardware costituita da un microcontrollore PIC16F84 e da un flip-flop. Il controllore gestisce una tastiera a matrice, occupandosi della scansione dei tasti attivati, della memorizzazione e del riconoscimento della combinazione numerica. L’integrato 74LS74, che al suo interno contiene due flip-flop di tipo D, funziona in modalità toggle e ad ogni impulso prodotto del PIC, in caso di combinazione inserita, inverte il suo stato. All’uscita del flip-flop è interfacciato, tramite un transistor BJT, un relè elettromeccanico che consente al circuito di pilotare dei carichi di potenza. TASTIERA A MATRICE Il Key logger utilizza una tastiera a matrice 3 x 4 del tipo riportato in figura 2. I collegamenti a matrice dei pulsanti sono riportati sulla parte posteriore della tastiera tramite dei pin con passo 2,54 mm. Lo standard della connessione a matrice è molto utilizzato in quanto consente di ridurre il numero dei cavi necessari per il cablaggio della tastiera: se normalmente per collegare 12 tasti sarebbero necessarie 13 linee (una per ogni tasto più una comune), sfruttando una tastiera a matrice si utilizzano solo 7 linee: 3 per le colonne + 4 per le righe (figura 3). Il principio di funzionamento è molto semplice: si dispongono i tasti secondo p righe e q colonne in modo che, alla pressione del generico tasto p,q, si abbia il collegamento della riga p con la colonna q. Per gestire una tastiera di questo tipo, il principio è il seguente: si invia ciclicamente un particolare livello logico (alto o basso) ad una sola delle colonne e si controllano le righe. Quando una riga presenta quel tale livello si deduce che è stato premuto uno dei tasti di quella particolare riga; sapendo qual’è l’unica colonna attiva in quel momento, si sa quale è il tasto premuto. In figura 4 è riportata la piedinatura del PIC16F84. Il controllore viene utilizzato alimentandolo ad una tensione continua di 5 Volt. L’oscillatore, di tipo XT è realizzato con un quarzo da 4 Mhz e 2 condensatori ceramici da 22 pF. La tastiera a matrice è collegata sui pin RA0÷RA3 del PORTA e i pin RB4÷RB6 del PORTB. L’uscita RB1 attiva un LED di segnalazione che indica la modalità “cambio codice” con scrittura in EEPROM della nuova combinazione. L’uscita RB2 fornisce un segnale di clock che attiva il FF di tipo D nel momento in cui viene inserita la chiave numerica di attivazione. L’uscita RB3 attiva invece un buzzer in corrispondenza della pressione di ogni tasto numerico. In figura 5 è riportata la piedinatura del flip-flpo di tipo D utilizzato. Il relè scelto è del tipo miniaturizzato per circuiti stampati. In figura 6 è riportata la sua piedinatura Come si può osservare, il dispositivo può azionare, a seconda della necessità un contatto NA o NC. Facendo riferimento allo schema di figura 1, la resistenza R4 regola la corrente di base, in modo da garantire il funzionamento del transistor BC107 in modalità on-off, facendolo funzionare tra la zona di interdizione e la zona di saturazione. Il diodo 1N4007 posto in parallelo alla bobina del relè è invece un diodo di ricircolo, la cui funzione è quella di proteggere il transistor dalla sovratensioni che si possono avere sulla bobina durante le commutazioni di apertura e chiusura del circuito di eccitazione. In figura 7 sono invece riportate le piedinature del transistor e del diodo LED. Per quanto riguarda il circuito della chiave elettronica completa, in figura 8 è riportato il prototipo assemblato su bread –board durante la fase di test. In figura 9 è riportato il prototipo assemblato su circuito stampato. UTILIZZO DEL CIRCUITO Attraverso la tastiera a matrice è possibile inserire una combinazione numerica di quattro cifre. La sequenza XXXX seguita dal simbolo # consente di attivare il key logger, nel momento in cui si inserisce la corretta combinazione numerica. La combinazione preimpostata alla prima attivazione del circuito è 1234#, pertanto bisognerà premere in successione in tasti 1,2,3,4 e il tasto # (cancelletto). In corrispondenza della pressione di ogni tasto numerico, il buzzer emetterà un se49 progettare & costruire ➲ progettare & costruire Figura 1: schema elettrico della chiave elettronica. gnale acustico di conferma. L’immissione della combinazione determina l’attivazione del relè interfacciato con il PIC con cui sarà possibile alimentare il dispositivo da controllare. Per disattivare la chiave sarà sufficiente immettere nuovamente la combinazione XXXX#: in questo modo il relè interfacciato al PIC sarà riportato nello stato di riposo. La chiave elettronica permette inoltre di aggiornare la combinazione on board, ovvero durante il funzionamento del circuito: basta inserire la sequenza XXXX * (dove XXXX è la vecchia password) e in questo caso, l’accensione del LED giallo segnalerà la modalità di scrittura in EEPROM della nuova combinazione, che sarà poi salvata scrivendo YYYY#. LISTA COMPONENTI R5 R1 R4 C1 C2 C3 10 KΩ ± 5% ¼ W 330Ω ± 5% ¼ W 1kΩ ± 5% ¼ W 22 pF ceramico 22 pF ceramico 100 nF Poliestere FIRMWARE DI CONTROLLO La figura 10 rappresenta il diagramma di flusso semplificato del firmware di controllo. La prima parte riguarda la confi50 Figura 2: la tastiera a matrice con la relativa piedinatura. U1 U2 Q1 D4 J1 K1 PIC16F84A 74LS74 BC107 1N4007 Quarzo 4 Mhz Mini Relè 5,6 VCC Figura 7: il buzzer, il LED ed il transistor. Figura 5: la piedinatura del flip-flpo di tipo D utilizzato. Figura 3: il principio di funzionamento della tastiera. Figura 4: pinout del PIC16F84. Figura 6: il relè con la relativa piedinatura. Figura 8: il prototipo realizzato su breadboard. gurazione del dispositivo: in questa sezione, oltre alla definizione dei parametri fondamentali per il funzionamento del controllore (come ad esempio il tipo di oscillatore, il settaggio dei fuses, la mappatura della ram etc), i pin RA0- RA3 vengono definiti come uscite e i pin RB4RB6 sono invece definiti come ingressi; vengono inoltre abilitati via software i pull-up interni del PORTB. Successivamente vengono dichiarate le variabili di programma ed in particolare, per la memorizzazione del codice letto da input, vengono riservati 4 byte della memoria ram. La parte principale del firmware è quella relativa alla procedura di scansione della tastiera a matrice. La scansione viene eseguita selezionando una riga alla volta ed andando poi ad interrogare in successione lo stato delle colonne. Il firmware implementa anche delle procedure antibounce al fine di sopprimere l’effetto dei rimbalzi dei contatti in fase di lettura, ed inoltre, se nessun tasto è premuto per un certo tempo, manda in “sleep” il controllore: con questa caratterista di funzionamento si attiva lo stato di basso consumo, con tutti i circuiti interni che assorbono il minimo di corrente. I dati letti dalla tastiera, vengono memorizzati temporaneamente nella RAM e vengono confrontati da una apposita subroutine, con i valori scritti nella EEPROM; nel firmware sono previste due possibilità operative di funzionamento: “no match” (ovvero codice letto diverso da codice memorizzato), che fa entrare il controllore in un loop infinito di lettura (da cui si esce solo quando viene immessa la corretta sequenza di attivazione) e “match” se invece viene riscontrata la corrispondenza, cifra per cifra, tra codice letto e codice memorizzato. In quest’ultimo caso, a seconda del carattere di conferma ricevuto (* o #), viene rispettivamente attivata la chiave, oppu51 progettare & costruire ➲ progettare & costruire Figura 9: la chiave elettronica assemblata sul circuito stampato. Figura 10: diagramma di flusso del firmware di controllo. 52 re la modalità cambio codice. Il codice predefinito alla prima attivazione del programma è “1234”. Una apposita subroutine si occupa invece dell’aggiornamento, ovvero della memorizzazione del nuovo codice di accesso, quando viene attivata dall’utente l’apposita sequenza per il cambio chiave: in questo caso, quindi, il nuovo codice numerico di attivazione, viene scritto dal firmware all’interno della memoria EEPROM. La memoria dati EEPROM del PIC16F84 ha una capacità di 64 byte e ben si presta per essere impiegata per la memorizzazione di valori numerici che devono essere conservati anche se l’integrato non è alimentato: infatti ciascuna locazione della memoria EEPROM dati può essere letta o scritta durante il normale funzionamento del PIC senza necessità di utilizzare il circuito di programmazione del microcontrollore. La memorizzazione dei dati nella EEPROM è fondamentale nella nostra applicazione, per salvare il codice di attivazione, che necessita di essere conservato anche se, per qualsiasi motivo, viene a mancare tensione all’integrato. Il costruttore garantisce che sulla memoria EEPROM dati si possono effettuare fino a 10 milioni di scritture/letture e che i dati possono essere mantenuti in memoria per oltre 40 anni. Le procedure software relative alla scrittura e alla lettura nella EEPROM dati si basano essenzialmente sull’utilizzo del registro di controllo EECON1 insieme all’altro registro EECON2, gestito dal PIC. Tali operazioni richiedono anche l’utilizzo di due registri speciali per la memorizzazione dei dati: il registro EEADR, allocato all’indirizzo 09H del File Register, che contiene l’indirizzo di una delle 64 locazioni di memoria EEPROM su cui operare; ed il registro EEDATA, allocato all’indirizzo 08H del File Register, che è impiegato per inviare alla EEPROM dati il byte da scrivere, oppure per ricevere un byte in una operazione di lettura dalla EEPROM dati. Il firmware di controllo è disponibile nella sezione download del sito www.farelettronica.com. ❏ CODICE MIP 2756737 CODICE MIP 2753547