120x90 spot

 
 

Home Projects Security and other sensors and detectors iButton electronic lock

 

 

iButton electronic lock

author: Leonid Ridiko, Victor Lapitskiy


Πριν από μερικά χρόνια πρωτοπαρουσιάστηκε το iButton DS1990A της Dallas Semiconductor το οποίο από τότε χρησιμοποιείται σε πολλές διαφορετικές εφαρμογές ασφάλειας και όχι μόνο. Εμείς σε αυτήν την κατασκευή θα χρησιμοποιήσουμε το iButton ως κλειδί για μια ηλεκτρονική κλειδαριά. Η ηλεκτρονική μας κλειδαριά μπορεί να λειτουργήσει με πολλά διαφορετικά iButtons και είναι σε θέση να αποθηκεύει πάνω από 9 διαφορετικά κλειδιά. Ένα από αυτά τα κλειδιά είναι το master και είναι καταχωρημένο μόνιμα στην μνήμη της κλειδαριάς και μόνο με αυτό μπορεί να γίνει προσθήκη και αφαίρεση άλλων κλειδιών.


 

Στην κλειδαριά που θα κατασκευάσουμε μπορεί να χρησιμοποιηθεί οποιοδήποτε iButton που διαθέτουμε, αφού για την λειτουργία της χρησιμοποιείται μόνο ο μοναδικός σειριακός αριθμός που είναι αποθηκευμένος στο εσωτερικό του. Η εντολή για να διαβάσουμε τον σειριακό αριθμό από το κάθε iButton είναι ίδια για όλα τα iButton. Ο κωδικός της οικογένειας, που υπάρχει σε διαφορετικούς τύπους iButton, μπορεί να είναι οποιοσδήποτε και λαμβάνεται ως μέρος του συνολικού σειριακού αριθμού. Τα κλειδιά της σειράς DS1990A αποτελούν την φθηνότερη λύση iButton.


 

 

 

Η ηλεκτρονική κλειδαριά αυτή κατασκευάστηκε για να μπορεί να λειτουργεί αυτόνομα και είναι απλή στην κατασκευή της. Ο χρήστης, αυτό που βλέπει (π.χ έξω από την εξώπορτα) είναι μόνο η υποδοχή του iButton και ένα led. Από το εσωτερικό η πόρτα ανοίγει με την χρήση ενός κουμπιού. Για το κλείδωμα της πόρτας χρησιμοποιείται ένας ηλεκτρομαγνήτης με τάση λειτουργίας 12V. Οι σειριακοί αριθμοί των κλειδιών αποθηκεύονται στη μόνιμη μνήμη του μικροελενκτή και μπορούν να σβηστούν και να προστεθούν καινούριοι από το χρήστη. Ένα κύριο κλειδί χρησιμοποιείται για να επιτευχθεί η λειτουργία αλλαγής ενός κλειδιού. Συνολικά 9 διαφορετικά κλειδιά μπορούν να αποθηκευτούν.

Το σχηματικό διάγραμμα της κατασκευής φαίνεται στο σχήμα 1. Η καρδιά της κατασκευής (U1) είναι ο μικροελενκτής AT89C2051 της Atmel. Στην port 1 (P1) του μικροελενκτή συνδέεται ένα LED display, κοινής ανόδου, που χρησιμοποιείται στην διαδικασία του προγραμματισμού. Για τον ίδιο λόγο προορίζεται και το button SB1 που συνδέεται στην P3.7. Η αποθήκευση των σειριακών αριθμών των κλειδιών γίνεται στην μνήμη EEPROM (U3) τύπου 24C02 που συνδέεται με τις θύρες P3.4 (SDA) και P3.5 (SCL) του U1. Η εξωτερική υποδοχή του iButton συνδέεται με την port P3.3, μέσω του ακροδέκτη XP2. Τα εξαρτήματα VD4, R3, VD5 και VD6 προστατεύουν τις εισόδους του μικροελενκτή. Η pull-up αντίσταση R4 χρησιμοποιείται, όπως επιτάσσει το πρωτόκολλο 1-wire. Επιπλέον το iButton μπορεί εκτός από την εξωτερική υποδοχή να συνδεθεί και την εσωτερική υποδοχή XS1, η οποία χρησιμοποιείται για τον προγραμματισμό των κλειδιών. Το κουμπί ανοίγματος της πόρτας συνδέεται μέσω του συνδετήρα XP1 με την P3.2, με τα ίδια στοιχεία προστασία όπως έχει και ο συνδετήρας XP2. Ο ηλεκτρομαγνήτης που αναλαμβάνει να ασφαλίσει την πόρτα συνδέεται με τον ακροδέκτη XT1. Ο ηλεκτρομαγνήτης αυτός ελέγχεται από ένα MOSFET ισχύος (VT3) τύπου IRF540. Η δίοδος VD7 προστατεύει το MOSFET από τις απότομες αιχμές τάσης, που οφείλονται στην αυτεπαγωγή του πηνίου. Το τρανζίστορ VT3 ελέγχεται από το τρανζίστορ VT2, το οποίο αναστρέφει το σήμα που εμφανίζεται στην θύρα P3.0 έτσι ώστε στην έξοδο του VT3 να έχουμε τις καταστάσεις 0V και 12V. Η αντιστροφή της τάσης αυτής είναι απαραίτητη έτσι ώστε να λειτουργεί το πηνίο με την ονομαστική του τάση των 12V, ανεξάρτητα από τις λογικές στάθμες της εξόδου του μικροελενκτή.

 

 

Σχ.1 Το κύκλωμα της κλειδαριάς

 

Για την ένδειξη της κατάστασης της κλειδαριάς χρησιμοποιείται η φωτοδίοδος led, η οποία ελέγχεται από την ίδια θύρα του μικροελενκτή όπως και ο ηλεκτρομαγνήτης, μέσω του τρανζίστορ TV1. Το led συνδέεται με τον ίδιο ακροδέκτη όπως και η υποδοχή του iButton. Δεδομένου ότι η κλειδαριά πρέπει να λειτουργεί συνεχώς και αξιόπιστα χωρίς επιτήρηση, προστέθηκε το ολοκληρωμένο U2 τύπου ADM1232. Το συγκεκριμένο ολοκληρωμένο έχει ένα εσωτερικό μετρητή παλμών και κυκλώματα ελέγχου της τάσης τροφοδοσίας. Στην θύρα P3.1 ο μικροελενκτής παράγει παλμούς για όλη την διάρκεια που λειτουργεί σωστά. Εάν κολλήσει τότε το U2 αναλαμβάνει να του κάνει reset.

          Η τροφοδοσία του κυκλώματος επιτυγχάνεται με το δικό του τροφοδοτικό, που αποτελείται από τον μετασχηματιστή T1, την γέφυρα ανόρθωσης VD9-VD12 και τον σταθεροποιητή τάσης U4. Επιπλέον χρησιμοποιείται μια συστοιχία μπαταριών NiMH 10 στοιχείων (BT1-BT10) ως εναλλακτική πηγή τροφοδοσίας. Οι μπαταρίες είναι μεγέθους ΑΑ με συνολική χωρητικότητα 800mAH. Όταν το κύκλωμα τροφοδοτείται από το δίκτυο οι μπαταρίες φορτίζονται μέσω της R10 με ένα ρεύμα 20mA περίπου. Το ρεύμα αυτό αποτελεί το 0,025C, δηλαδή αποτελεί πολύ μικρό ρεύμα σε σχέση με την συνολική χωρητικότητα της μπαταρίας. Έτσι συνεχώς η μπαταρία βρίσκεται υπό μικρή φόρτιση ικανή να αντισταθμίζει τις απώλειες φορτίου λόγω αυτοεκφόρτισης και δεν κρίνεται αναγκαία η ανάγκη για παρακολούθηση του τέλους της φόρτισης. Αυτό επιτρέπεται διότι, εφόσον οι μπαταρίες φορτιστούν πλήρως, η επιπλέον ενέργεια καταναλίσκεται σε θερμότητα, που όμως είναι πολύ μικρή ώστε να επιφέρει ζημιά στις μπαταρίες.

          Η όλη κατασκευή έχει διαστάσεις 150х100х60mm. Η πλειοψηφία των εξαρτημάτων, συμπεριλαμβανομένου και του μετασχηματιστή τοποθετούνται επάνω στο τυπωμένο κύκλωμα της κατασκευής. Οι μπαταρίες τοποθετούνται σε κατάλληλες πλαστικές θήκες. Θα μπορούσε να χρησιμοποιηθεί και άλλος τύπος μπαταρίας, όπως οι μπαταρίες μολύβδου (Lead Acid) που έχουν ονομαστική τιμή τάσης 12V. Για τις συνδέσεις με τα διάφορα εξωτερικά εξαρτήματα χρησιμοποιούμε κατάλληλους ακροδέκτες 2 ή 3 επαφών ανάλογα. Δεδομένου ότι τα HG1, SB1 και XS1 χρησιμοποιούνται μόνο κατά την διάρκεια του προγραμματισμού μπορούν να τοποθετηθούν μέσα στο κουτί της κατασκευής, έτσι ώστε να είναι προστατευμένα. Επάνω στο κουτί μπορεί να τοποθετηθεί η δίοδος led VD13, ώστε να δείχνει την σωστή τροφοδοσία του κυκλώματος. Ένα ενδεικτικό διάγραμμα σύνδεσης φαίνεται στο σχήμα 2.

 

Σχ.2 Διάγραμμα σύνδεσης

 

Με το άνοιγμα της πόρτας στον ηλεκτρομαγνήτη θα δοθεί παλμός διάρκειας 3 δευτερολέπτων. Η λογική της λειτουργίας της συσκευής είναι τέτοια, ώστε για την διάρκεια που το κουμπί ανοίγματος της πόρτας είναι πατημένο, στο πηνίο να ασκείται τάση και έτσι η πόρτα να είναι ανοιχτή.

Η κλειδαριά μπορεί να έχει αποθηκευμένα το μέγιστο 9 κλειδιά, συν ένα κύριο κλειδί. Οι σειριακοί αριθμοί είναι αποθηκευμένοι στην εξωτερική μνήμη, κάτω από τους αριθμούς 1 έως 9. Ο σειριακός αριθμός του κύριου κλειδιού είναι αποθηκευμένος στον μικροελενκτή και δεν μπορεί να αλλάξει. Για την προσθήκη ενός νέου κλειδιού ή την κατάργηση κάποιου παλιού θα πρέπει να υπάρχει το κύριο κλειδί. Το κύριο κλειδί θα μπορεί να χρησιμοποιηθεί όπως και τα άλλα κλειδιά για το άνοιγμα της πόρτας.

 

 

Σχ.3 Διαδικασία προγραμματισμού νέου κλειδιού

 

            Τα βήματα προγραμματισμού ενός νέου κλειδιού είναι τα παρακάτω:


1. Πατάμε το κουμπί του προγραμματισμού
2. Στην οθόνη θα εμφανιστεί το γράμμα «
P» που δηλώνει ότι είμαστε σε κατάσταση προγραμματισμού ενός νέου κλειδιού.
3. Βάζουμε το κύριο κλειδί στην υποδοχή.
4. Στην οθόνη θα εμφανιστεί το νούμερο «1» το οποίο δηλώνει τον αριθμό του κλειδιού που προγραμματίζουμε.

5. Πατάμε το κουμπί για να αλλάξουμε την θέση στην οποία θα γίνει η εγγραφή του νέου κλειδιού.
6. Βάζουμε στην υποδοχή το κλειδί που θα καταχωρίσουμε.
7. Ο αριθμός στην οθόνη θα αρχίσει να αναβοσβήνει, που δηλώνει ετοιμότητα για προγραμματισμό.
8. Βάζουμε ξανά στην υποδοχή, το κλειδί το οποίο θέλουμε να καταχωρηθεί στην μνήμη.
9. Αν η καταχώριση γίνει επιτυχώς η οθόνη θα σταματήσει να αναβοσβήνει και θα παραμείνει αναμμένη.
10. Μετά από 5 δευτερόλεπτα, το κύκλωμα θα βγει από την διαδικασία προγραμματισμού μόνο του.

 

Σχηματικά η διαδικασία για τον προγραμματισμό του καινούριου κλειδιού φαίνεται στο σχήμα 3.

Εάν είναι επιθυμητό να καταχωρηθούν περισσότερα από ένα κλειδιά, τότε μπορούμε από το βήμα 9 να πάμε κατευθείαν στο βήμα 5. Αυτά τα βήματα μπορούν να επαναληφθούν όσες φορές το επιθυμούμε.

Εάν μετά το βήμα 7, διαπιστώσουμε ότι επιλέξαμε λάθος αριθμό, και για να μην καταργηθεί το υπάρχον κλειδί, πατάμε το κουμπί ή περιμένουμε 5 δευτερόλεπτα. Στην περίπτωση που πατάμε το κουμπί, ο αριθμός αυξάνεται κατά 1 και το περιεχόμενο την μνήμης δεν έχει αλλάξει. Στην δεύτερη περίπτωση θα γίνει η λήξη της διαδικασίας προγραμματισμού χωρίς να γίνει κάποια αλλαγή στην μνήμη. Γενικά σε κάθε βήμα πραγματοποιείται έξοδος από την διαδικασία προγραμματισμού εάν περιμένουμε 5 δευτερόλεπτα.

Η διαδικασία κατάργησης ενός ήδη καταχωρημένου κλειδιού, είναι παρόμοια με την διαδικασία προγραμματισμού, χρησιμοποιώντας όμως μόνο το κύριο κλειδί. Στην ουσία είναι σαν να προγραμματίζουμε στις κενές θέσεις το κύριο κλειδί. Σχηματικά η διαδικασία κατάργησης ενός κλειδιού φαίνεται στο σχήμα 4.

 

Σχ.4 Διαδικασία κατάργησης ενός κλειδιού

 

Κατά την διαδικασία προγραμματισμού η πόρτα ανοίγει μόνο με το κουμπί και δεν είναι δυνατόν να ανοίξει με ένα iButton. Επιπλέον, εφόσον η εσωτερική και η εξωτερική υποδοχή του iButton είναι συνδεδεμένες παράλληλα, πρέπει να προσέξουμε να μην γίνει ταυτόχρονη επαφή δύο κλειδιών στις δύο υποδοχές.

Ο σειριακός αριθμός του κυρίως κλειδιού γράφεται στην μνήμη προγράμματος του μικροελενκτή, ξεκινώντας από την θέση μνήμης 2FDH. Το μήκος του σειριακού αριθμού είναι 8 bytes. Η ακολουθία των ψηφίων πρέπει να είναι ίδια όπως είναι γραμμένη στην θήκη του iButton, διαβάζοντας από αριστερά προς τα δεξιά. Στην διεύθυνση μνήμης 2FDH καταχωρείται το byte ελέγχου, κατόπιν στις θέσεις 2FEH - 303H καταγράφονται τα έξι bytes του σειριακού αριθμού, ξεκινώντας από το πλέον σημαντικό byte και τέλος στην θέση 304H καταγράφεται το byte που δηλώνει την οικογένεια του iButton. Παραδείγματος χάριν, ο κώδικας συνολικά μπορεί να εμφανίζεται έτσι: 67 00 00 02 D6 85 26 01

Το block διάγραμμα της λειτουργίας του προγράμματος της ηλεκτρονικής κλειδαριάς φαίνεται στο παρακάτω σχήμα 5. Το πρόγραμμα ξεκινάει ρωτώντας εάν έχει εισαχθεί κλειδί. Αν έχει εισαχθεί κλειδί, διαβάζεται ο σειριακός αριθμός του. Στην συνέχεια ελέγχεται αν είναι το κυρίως κλειδί ή κάποιο άλλο κλειδί καταχωρημένο στην μνήμη και αν είναι τότε ανοίγει η κλειδαριά. Επίσης η κατάσταση του κουμπιού ανοίγματος της πόρτας ελέγχεται και είναι πατημένο τότε η πόρτα ανοίγει.

 

Σχ.5 Block διάγραμμα βασικού προγράμματος

 

Για την διαδικασία που σχετίζεται με τον προγραμματισμό ενός κλειδιού, υπάρχουν δύο υποπρογράμματα: το PROGT και το PROGS, των οποίων τα block διαγράμματα φαίνονται στο σχήμα 6. Το πρώτο από αυτά καλείται με την ανάγνωση του σειριακού αριθμού στην φάση του προγραμματισμού και το δεύτερο με το πάτημα του κουμπιού προγραμματισμού. Η διαδικασία του προγραμματισμού γίνεται σε τρεις φάσεις. Όταν πατάμε το κουμπί προγραμματισμού, πραγματοποιείται είσοδος στο πρόγραμμα, δηλαδή έχουμε την πρώτη φάση προγραμματισμού. Στην περίπτωση αυτή στην οθόνη εμφανίζεται το γράμμα «P». Στην συνέχεια γίνεται ανάγνωση της τιμής του κλειδιού και ελέγχεται αν είναι το κυρίως κλειδί, γιατί μόνο με αυτό μπορεί να συνεχίσει η διαδικασία προγραμματισμού. Εάν πρόκειται για το κυρίως κλειδί τότε πάμε στην φάση προγραμματισμού 2. Στην οθόνη τώρα φαίνεται ο αριθμός του τρέχοντος κλειδιού και αλλάζει το πάτημα του κουμπιού. Εάν εισάγουμε το κλειδί στην υποδοχή ξανά τότε θα καταχωρηθεί στην μνήμη και θα πάμε στην φάση προγραμματισμού 3. Αν βάλουμε ακόμη ένα κλειδί στην υποδοχή, τότε αποθηκεύεται και αυτό και περνάμε στην φάση 2. Με το πάτημα του κουμπιού προγραμματισμού μπορούμε να περάσουμε κατευθείαν στην φάση 2 χωρίς να γίνει εγγραφή στην μνήμη.

            Αδράνεια κατά την φάση του προγραμματισμού προκαλεί επανεκκίνηση του χρονομέτρου των 5 δευτερολέπτων που ελέγχει το τέλος του προγράμματος. Εάν μηδενιστεί το χρονόμετρο τότε έχουμε έξοδο από το πρόγραμμα.

Τα block διαγράμματα 5 και 6 είναι πολύ απλοποιημένα, αλλά μας δίνουν την γενική δομή του προγράμματος.

Η κατασκευή αυτή είναι δυνατόν να επεκταθεί και με επιπλέον δυνατότητες αφού είναι ανοιχτού κώδικα ώστε να είναι σε θέσει να αντεπεξέλθει στις ειδικές απαιτήσεις του καθενός.

 

Σχ.6 Block διάγραμμα υποπρογραμμάτων προγραμματισμού κλειδιού

 

Download:


Authors:

Leonid Ridiko - email: wubblick@yahoo.com
Victor Lapitskiy 
- email: victor_lap@yahoo.com

Original project page: http://www.telesys.ru/projects/proj054/

 
 

 
120x90 spot

 

 

Search Site | Advertising | Contact Us
Elektrotekno.com | Free Schematics Search Engine | Electronic Kits