33_37.pdf

(443 KB) Pobierz
Uniwersalny zamek szyfrowy - AVT-311
Uniwersalny zamek szyfrowy
P R O J E K T Y
Uniwersalny zamek
szyfrowy
kit AVT-311
Na ³amach EP (EP4/93)
opis zamka szyfrowego by³
ju¿ prezentowany. Oto jego
kolejna wersja, której
konstrukcja zosta³a oparta na
mikrokontrolerze PIC16C84.
Mikrokontroler PIC16C84 po-
s³u¿y³ do konstrukcji prostego
zamka cyfrowego. Cech¹ wyró¿-
niaj¹c¹ go w swej klasie jest re-
programowalnoæ w uk³adzie - pa-
miêæ programu i fragment pamiêci
danych s¹ typu EEPROM. Poza
tym ma on wszystkie cechy cha-
rakterystyczne dla procesorów
PIC16CXX:
-architektura harwardzka, czyli
pamiêæ programu i pamiêci da-
nych s¹ rozdzielone;
-wszystkie rozkazy s¹ wykonywa-
ne w czterotaktowym cyklu;
-uk³ad watchdoga ma niezale¿ny
od systemowego zegar;
-cztery rodzaje oscylatorów zega-
ra systemowego;
-jednopoziomowy uk³ad przerwañ
o priorytetach róde³ ustawia-
nych programowo;
-w pe³ni statyczna logika CMOS;
-szeroki zakres napiêæ zasilania:
2.0V do 6.0V;
-niewielki pobór mocy.
Dodatkowo, oprócz 36 8-bito-
wych rejestrów, dla programisty
dostêpna jest równie¿ nieulotna
64-bajtowa pamiêæ EEPROM.
Wprawdzie producent dostarcza
wersjê co najwy¿ej 10MHz, ale
trzeba pamiêtaæ, ¿e taki zegar
odpowiada zegarowi 30MHz w ar-
chitekturze procesora z rodziny
'51. Do naszych zastosowañ to a¿
nadto.
-prostotê uk³adow¹;
-mo¿liwie du¿¹ liczbê kombinacji
kodowych, a wcale nie musz¹ to
byæ ci¹gi liczbowe, wynosz¹c¹
11 63 ;
-odpornoæ na wy³¹czenie zasila-
nia, polegaj¹c¹ na tym, ¿e kod
otwarcia jest pamiêtany niezale¿-
nie od zasilania uk³adu.
Na rys.1 pokazano schemat
elektryczny zamka szyfrowego.
Sercem urz¹dzenia, i zarazem je-
dynym uk³adem scalonym, jest
mikroprocesor PIC16C84. Zapisa-
ny w nim program steruje ca³ym
urz¹dzeniem. Do linii portów pro-
cesora do³¹czono klawiaturê mat-
rycow¹ 3x4, tranzystor w³¹czaj¹cy
przekanik PK1, piszczyk oraz
dwie diody LED, s³u¿¹ce do syg-
nalizacji stanu zamka. Zasilanie
procesora, diod LED i klawiatury
zapewnia stabilizator typu
LM7805. Zegar procesora jest ty-
pu RC, nie ma bowiem potrzeby
stosowania kwarcu, jeli uk³ad
nie wykonuje precyzyjnych po-
miarów czasu. Na tym w zasadzie
mo¿na zakoñczyæ opis budowy
zamka. Bardziej interesuj¹cy jest
program zapisany w pamiêci mik-
rokontrolera.
Zanim omówimy program za-
mka, skupmy siê na chwilê na
klawiaturze. Jest to klawiatura
membranowa, wykonana w wersji
bez opisu klawiszy. Opis klawiszy
jest spraw¹ u¿ytkownika, czyli
zamiast standardowych napisów
u¿ytkownik mo¿e, w formie pod-
k³adu, przyj¹æ w³asny uk³ad kla-
Opis uk³adu
Nasz zamek posiada nastêpu-
j¹ce walory:
Elektronika Praktyczna 1/97
33
30444288.033.png 30444288.034.png
Uniwersalny zamek szyfrowy
Rys. 1. Schemat elektryczny zamka szyfrowego.
ADR jest modyfikowana oraz
sprawdzane jest, czy jest to kod
klawisza # (rys.2), gdy¿ naciniê-
cie klawisza # oznacza zakoñcze-
nie wprowadzania kodu otwarcia.
Dwukrotne b³yniêcie i ci¹g³e
wiecenie siê diody zielonej oraz
w³¹czenie przekanika jest sygna-
³em, ¿e zamek zosta³ otwarty.
W stanie otwarcia zamka ist-
nieje mo¿liwoæ zmiany kodu ot-
warcia. A¿eby utrudniæ osobom
niepowo³anym tego rodzaju mani-
pulacje, zakodowano równie¿ do-
stêp do procedury szyfruj¹cej.
Tym razem jest to kod sta³y : 1-
5-8-0-*. Podanie takiej sekwencji
znaków spowoduje przeniesienie
sterowania na pocz¹tek programu,
do procedury szyfruj¹cej. Pomy³ka
w jej wprowadzaniu oznacza, ¿e
trzeba bêdzie j¹ powtórzyæ od
pocz¹tku. Sam znak gwiazdki za-
myka zamek.
Je¿eli kod odczytanej komórki
i kod klawisza ró¿ni¹ siê od sie-
bie, program przechodzi do pêtli
obok i w niej oczekuje na naci-
niêcie klawisza #, ju¿ bez porów-
nywania wspomnianych wartoci.
Kiedy ju¿ ten klawisz zostanie
naciniêty, zielona dioda LED o-
miokrotnie zab³ynie i zapali siê
dioda czerwona D1. Taka jest
sygnalizacja podania b³êdnego ko-
du otwarcia. W tym stanie mik-
rokontroler pozostanie a¿ do na-
ciniêcia dowolnego klawisza.
Wtedy program powróci na pocz¹-
tek procedury otwierania zamka,
daj¹c kolejn¹ szansê na jego ot-
warcie.
Opiszemy teraz procedurê szyf-
rowania kodu otwarcia zamka. Jak
to widaæ na rys.4, wejcie do niej
jest sygnalizowane zapaleniem siê
obu diod, czerwonej i zielonej.
Ustawiany jest adres pocz¹tkowy
wiatury. Na rys.2 , dla potrzeb
tego artyku³u, przyjêto uk³ad kla-
wiatury telefonicznej. Dalej poka-
¿emy, jak stworzyæ inny uk³ad
klawiatury.
Zmienna EEADR widoczna na
rys.3 jest zmienn¹ systemow¹
oznaczaj¹c¹ bie¿¹cy adres pamiêci
EEPROM mikrokontrolera. Do niej
zapisuje siê wstêpnie wartoæ od-
powiadaj¹c¹ adresowi najstarszej
komórki pamiêci.
Odczyt klawiatury w tym urz¹-
dzeniu jest sekwencyjny. Klawia-
tura jest matryc¹ w³¹czników 3x4.
Co pewien czas, zale¿ny od we-
wnêtrznego uk³adu timera, spraw-
dzany jest stan klawiszy. Wykry-
cie naciniêcia klawisza powoduje
zapis jego kodu do bufora klawia-
tury. Przy zwolnionych przycis-
kach klawiatury w buforze jest
wpisywany kod 0FFH. Procedura
odczytu klawiatury najpierw ocze-
kuje na naciniêcie klawisza, a po-
tem na jego zwolnienie, zapisuj¹c
kod naciniêtego klawisza do
osobnej komórki pamiêci danych.
Po odczytaniu klawiatury,
w celu potwierdzenia jej naciniê-
cia, dioda koloru zielonego (na
schemacie z rys.1 jest to dioda
D2) b³ynie krótko, a piszczyk
równie krótko zapiszczy (przy-
jmijmy dla uproszczenia opisu, ¿e
jeli dioda D2 b³ynie, to równie¿
odzywa siê piszczyk). Nastêpuje
odczyt komórki pamiêci EEPROM
o adresie zawartym w EEADR. Je-
li kod odczytanej komórki i kod
klawisza s¹ zgodne, zmienna EE-
Algorytm pracy procesora
Algorytm programu pokazano
na rys.3  i  4 . Rys.3 dotyczy algo-
rytmu programu g³ównego, za
rys.4 przedstawia procedurê szyf-
ruj¹c¹ kod otwarcia.
Po restarcie procesora nastêpu-
je sprawdzenie, czy pamiêæ EEP-
ROM nie zawiera kodu. Brak
kodu oznacza, ¿e we wszystkich
64 bajtach pamiêci jest zapisana
liczba 0FFH. Nale¿y wiêc wywo-
³aæ procedurê szyfruj¹c¹ kod ot-
warcia. O procedurze szyfruj¹cej
napiszemy dalej, teraz dokoñczy-
my omawianie programu g³ówne-
go. Po wykryciu zapisu danych
w pamiêci EEPROM procedura
szyfrowania jest omijana i zamek
jest zamykany. W ten sposób
uk³ad broni siê przed prób¹ roz-
kodowania poprzez wy³¹czenie za-
silania.
Po zakoñczeniu kodowania
zamka nastêpuje jego zamkniêcie.
Zrobiono to w celu natychmiasto-
wego sprawdzenia poprawnoci
kodu otwarcia. Przechodzimy za-
tem do w³aciwej procedury ot-
wierania zamka.
Rys. 2. Wygl¹d klawiatury
membranowej.
34
Elektronika Praktyczna 1/97
30444288.035.png 30444288.036.png 30444288.001.png 30444288.002.png 30444288.003.png 30444288.004.png 30444288.005.png 30444288.006.png 30444288.007.png
Uniwersalny zamek szyfrowy
Rys. 3. Algorytm procedury g³ównej zamka szyfrowego.
WR, RD, które s¹ bitami rejestru
EECON1. Zmienna EEADR, jak
ju¿ wy¿ej napisano, pamiêta adres
komórki pamiêci, w zmiennej EE-
DATA zawarto dan¹ przeznaczon¹
do zapisu albo bêdzie tam dana
odczytana z pamiêci EEPROM.
Wskanik RD, poprzez jego
ustawienie, inicjuje odczyt z ko-
mórki pamiêci o adresie zawar-
tym w EEADR. Ustawiony
wskanik WR, po zezwoleniu
przez ustawienie wskanika
WREN, inicjuje zapis do pamiêci
EEPROM. Zapis do niej jest ob-
warowany dodatkowymi warunka-
mi. Przed zapisem w³aciwego
bajtu nale¿y:
-do EEADR wpisaæ w³aciwy ad-
res komórki pamiêci EEPROM;
-do EEDATA wpisaæ dan¹ do
zapisu;
-ustawiæ bit WREN;
-wy³¹czyæ system przerwañ
w mikrokontrolerze;
-do rejestru EECON2 wpisaæ 55H;
-do rejestru EECON2 wpisaæ 0A-
AH;
-w³¹czyæ system przerwañ w mik-
rokontrolerze;
-ustawiæ bit WR inicjuj¹cy zapis.
Tak skomplikowany sposób za-
pisu jest podyktowany chêci¹ za-
pewnienia maksymalnej ochrony
danych przed ich utrat¹. W mo-
mencie zerowania mikrokontrolera
nie mo¿na przewidzieæ, czy przy-
padkiem nie nast¹pi inicjacja za-
pisu poprzez ustawienie bitu WR.
Ustawienie takiej bariery prak-
tycznie uniemo¿liwia taki przypa-
dek. Jeli za³o¿ymy, ¿e taka sek-
wencja rozkazów, jak wy¿ej wy-
mieniona jest mo¿liwa, to przy 14
bitach s³owa procesora i potrzeb-
nych do zapisu co najmniej 6 s³ów
programu, prawdopodobieñstwo
samorzutnego pojawienia siê w³a-
ciwej sekwencji zapisuj¹cej jest
równe 1/(2 14*6 ) = 5.17x10 -26 .
Nale¿y wiedzieæ, ¿e czas trwa-
nia zapisu wynosi ok. 10ms,
dlatego w przypadku próby zapi-
su sekwencji bajtów warto sko-
rzystaæ z systemu przerwañ, który
ma mo¿liwoæ obs³ugi przerwania
od zakoñczenia zapisu do pamiêci
EEPROM. W opisywanym urz¹dze-
niu taka potrzeba nie wystêpowa-
³a ze wzglêdu na d³ugie czasy
odczytu klawiatury, dochodz¹ce
do 1 sekundy. Bit WR jest auto-
matycznie zerowany po zakoñcze-
niu procesu zapisu.
pamiêci EEPROM, nastêpuje od-
czyt klawiatury z jednoczesnym
b³yniêciem diody zielonej.
Zmienna EEADR mo¿e byæ tak
d³ugo dekrementowana (jej war-
toæ jest zmniejszana o 1), a¿
osi¹gnie wartoæ 0, wtedy proce-
dura jest automatycznie zakoñczo-
na. Procedurê szyfrowania mo¿na
zakoñczyæ wczeniej poprzez na-
ciniêcie klawisza # i ten przypa-
dek bêdzie w praktyce czêciej
spotykany, poniewa¿ trudno wy-
obraziæ sobie pracowite
wklepywanie tak wielkiej liczby
znaków. W razie pomy³ki proces
wprowadzania kodu otwarcia na-
le¿y zacz¹æ od pocz¹tku.
Kilku s³ów wyjanienia wyma-
ga zapis i odczyt pamiêci EEP-
ROM. Dostêp do pamiêci EEP-
ROM jest mo¿liwy poprzez jed-
nobajtowe okno, obs³ugiwane
przez trzy rejestry - EECON2,
EEADR i EEDATA - oraz przez
trzy zmienne jednobitowe: WREN,
Elektronika Praktyczna 1/97
35
30444288.008.png 30444288.009.png 30444288.010.png 30444288.011.png 30444288.012.png 30444288.013.png 30444288.014.png 30444288.015.png 30444288.016.png 30444288.017.png 30444288.018.png 30444288.019.png 30444288.020.png
Uniwersalny zamek szyfrowy
szy. Ka¿dy pin ta-
my po³¹czeniowej
klawiatury zosta³
opisany jako ci¹g
znaków pod³¹czo-
nych do danego pi-
nu. A¿eby uzyskaæ
zwarcie po naci-
niêciu konkretnego
klawisza, nale¿y na
rys.6 znaleæ go na
dwóch ró¿nych
nó¿kach opisu z³¹-
cza JP1.
W czasie uru-
chomienia zasilamy
uk³ad ze ród³a na-
piêcia 12V. Przed
w³o¿eniem proce-
sora PIC nale¿y na nó¿kach 14
i 5 podstawki sprawdziæ obecnoæ
napiêcia zasilaj¹cego procesor, wy-
nosz¹cego 5V.
Teraz nale¿y bardzo uwa¿nie
postêpowaæ, aby nie doprowadziæ
do sytuacji, w której nie bêdzie
znany kod otwarcia zamka. Wk³a-
damy procesor w podstawkê, w³¹-
czamy zasilanie. Po pierwszym
w³¹czeniu jest uruchamiana pro-
cedura szyfrowania kodu otwar-
cia, czyli obie diody siê wiec¹.
Za pierwszym razem nale¿y wpro-
wadziæ szyfr jednoznakowy, koñ-
cz¹c go znakiem #. Potem trzeba
go sprawdziæ, próbuj¹c wpisaæ
ten sam szyfr. Zamek powinien
siê otworzyæ, co bêdzie sygnali-
zowane sta³ym wieceniem diody
zielonej.
W stanie otwarcia zamka mo-
¿emy zmieniæ kod na obrany
przez nas. Musimy nacisn¹æ po
kolei klawisze 1-5-8-0-*. Naciniê-
cie ka¿dego z tych klawiszy jest
sygnalizowane jednym piniêciem
piszczyka i jednym b³yniêciem
diody zielonej. Wybranie innego
klawisza lub zmiana kolejnoci
spowoduje dwukrotne piniêcie
piszczyka i dwukrotne b³yniêcie
diody zielonej. Wtedy, chc¹c prze-
kodowaæ zamek, musimy wprowa-
dzaæ od pocz¹tku tê sekwencjê
znaków. Zamkniêcie zamka pole-
ga na przyciniêciu klawisza *.
Wybranie b³êdnego kodu za-
koñczy siê omiokrotnym b³yniê-
ciem diody zielonej i ci¹g³ym
wieceniem diody czerwonej.
Diodê czerwon¹ mo¿na zgasiæ
dowolnym klawiszem i zacz¹æ
wprowadzanie kodu od pocz¹t-
ku.
Rys. 4. Algorytm procedury
szyfruj¹cej.
Inne oznakowanie
klawiatury
Autor celowo przewidzia³ sto-
sowanie klawiatury membranowej
bez opisu. Wprowadzanie kilku-
nastocyfrowych ci¹gów liczb nie
jest wygodne, a tylko takie ci¹gi
zapewni¹ znaczn¹ trudnoæ otwo-
rzenia zamka. Autor proponuje
dwie zasady kodowania. Kiedy,
w nie tak odleg³ych czasach, gdy
komputery by³y marzeniem fan-
tastów, do pamiêtania np. cyfr
liczby pi u¿ywano ³atwych do
zapamiêtania sentencji. Liczba li-
ter poszczególnych s³ów okrela³a
kolejn¹ cyfrê. Np. Daj, o pani,
o boska Mnemozyno, pi liczbê...
W naszym zamku, zamiast pa-
miêtaæ d³ugie ci¹gi cyfr, zapamiê-
tajmy znany nam zwrot, którego
liczba liter poszczególnych s³ów
Proces odczytu nie wymaga tak
skomplikowanej obs³ugi. Wystar-
czy ustawiæ bit RD bajtu kontrol-
nego EECON1. Po zakoñczeniu
transmisji danej do EEDATA, bit
RD zostanie automatycznie wyze-
rowany.
Monta¿ i uruchomienie
Rys.5  przedstawia rozmieszcze-
nie elementów na p³ytce. Projekt
p³ytki drukowanej przedstawiono
na wk³adce wewn¹trz numeru.
Monta¿ p³ytki zaczynamy od wlu-
towania podzespo³ów na swoje
miejsce na p³ytce. Pod mikrokon-
troler proponujemy zastosowaæ
podstawkê. Nie zapomnijmy
o w³aciwym wlutowaniu diod
o odpowiednich kolorach na
swoich miejscach. Pod³¹czamy
klawiaturê do z³¹cza JP1. Uk³ad
po³¹czeñ wewnêtrznych klawiatu-
ry przedstawiono na rys.6 . Tama
wychodz¹ca z klawiatury ma sie-
dem cie¿ek, taka jest bowiem
sumaryczna liczba kolumn i wier-
Rys. 6. Uk³ad po³¹czeñ klawiatury
membranowej 3x4.
36
Elektronika Praktyczna 1/97
Rys. 5. P³ytka drukowana zamka szyfrowego.
30444288.021.png 30444288.022.png 30444288.023.png 30444288.024.png 30444288.025.png 30444288.026.png 30444288.027.png 30444288.028.png 30444288.029.png 30444288.030.png 30444288.031.png
Uniwersalny zamek szyfrowy
WYKAZ ELEMENTÓW
Rezystory
R1, R2, R3, R5: 10k
W
(5,6k
W
÷20k
W
)
R4, R8: 200
W
(180
W
÷300
W
)
W
Kondensatory
C1, C2, C6: 100nF (47nF÷150nF)
C3, C4: 100
m
F/25V
C5: 240pF
Pó³przewodniki
D1: Dioda LED
5 koloru
czerwonego
D2: Dioda LED
5 koloru
zielonego
Q1: BD643, BD645, BD647, BD649
U1: PIC16C84-04/P, PIC16C84-10/P
- zaprogramowany
U2: LM7805, LM78M05
Ró¿ne
JP1: rz¹d siedmiu z³oconych
pinów
JP2, JP3: Z³¹cze ARK2
PK1: przekanik RA2, RA2P, RA2Z,
na napiêcie 12V
Klawiatura membranowa 3x4 bez
opisu albo z opisem klawiatury
telefonicznej
podstawka DIL18
Rys. 7. Wk³adki kodowe dla zwrotów CHRZÊSKRZYBOCZEK i APELAJDA
SÊKLIWA.
bêdzie oznaczaæ cyfry kodu.
Drugim sposobem ³atwiejszego
kodowania jest zakodowanie zwro-
tu, przez zast¹pienie uk³adu do-
tychczas omówionej klawiatury te-
lefonicznej uk³adem liter. Budowa
klawiatury zapewnia ³atw¹ wymianê
wk³adki opisuj¹cej klawisze.
Zakodowany zwrot powinien
byæ na tyle egzotyczny, aby nie
zosta³ ³atwo rozpoznany. Autor
jest mi³onikiem twórczoci Sta-
nis³awa Lema, a jego ksi¹¿ki s¹
pe³ne neologizmów oraz wyrazów
zupe³nie niezrozumia³ych i nie
posiadaj¹cych znaczenia. Poni¿ej
podano dwa przyk³ady takich
zwrotów. S¹ to:
CHRZÊSKRZYBOCZEK
APELAJDA SÊKLIWA
Na rys.7  pokazano uk³ady kla-
wiatury dla obu tych zwrotów.
Przyjemnego kodowania!
Miros³aw Lach, AVT
Elektronika Praktyczna 1/97
37
R6, R7: 100k
f
f
30444288.032.png
Zgłoś jeśli naruszono regulamin