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