Πίνακας περιεχομένων:
- Βήμα 1: Στοιχεία
- Βήμα 2: Συναρμολόγηση και μεταφόρτωση
- Βήμα 3: Χρήση της συσκευής
- Βήμα 4: Άλλες προσεγγίσεις
Βίντεο: Σύστημα αυτόματου κλειδώματος υπολογιστή: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Σε αυτό το σεμινάριο θα διερευνήσουμε την ασφάλεια του κλειδώματος οθόνης του υπολογιστή. Τα λειτουργικά συστήματα έχουν ρυθμιζόμενο χρονικό όριο που θα κλειδώσει την οθόνη σας εάν ο χρήστης δεν έχει αγγίξει το ποντίκι ή το πληκτρολόγιο.
Συνήθως η προεπιλογή είναι περίπου ένα λεπτό. Εάν ακολουθήσετε αυτήν την προεπιλογή και αφήσετε τον υπολογιστή σας σε ένα πολυάσχολο περιβάλλον, κάποιος μπορεί να έχει πρόσβαση στον υπολογιστή σας εκείνο το λεπτό μέχρι να κλειδώσει η οθόνη. Αν το ρυθμίσετε σε λίγα δευτερόλεπτα, θα εμφανίζεται η οθόνη κλειδώματος πολύ συχνά όταν δεν αγγίζετε το πληκτρολόγιο και αυτό είναι ενοχλητικό…
Μια μέρα ένας συνάδελφος εργασίας με ρώτησε αν μπορώ να "διορθώσω" αυτό το ζήτημα με κάποιο είδος συσκευής που κλειδώνει τον υπολογιστή όταν δεν είναι εκεί και πήρα την πρόκληση:)
Έχω διερευνήσει αρκετές επιλογές στο μυαλό μου, όπως χρήση arduinos και αισθητήρα θερμόμετρου υπέρυθρης ακτινοβολίας, αισθητήρα PIR ή ίσως ανίχνευσης προσώπου στον υπολογιστή, αλλά έχω προσαρμοστεί σε μια απλούστερη μέθοδο:
Θα συνδυάσουμε τη λειτουργικότητα Arduino Leonardo HID (εξομοίωση πληκτρολογίου) με έναν υπερηχητικό αισθητήρα απόστασης για να ανιχνεύσουμε εάν κάποιος χρησιμοποιεί τον υπολογιστή, αν όχι η συσκευή θα στείλει έναν συνδυασμό πλήκτρων μέσω USB για να κλειδώσει τον υπολογιστή.
Βήμα 1: Στοιχεία
Επειδή αυτό είναι μια απόδειξη της ιδέας, θα χτίσουμε τη συσκευή σε ένα breadboard
Θα χρειαστείς:
1. Arduino Leonardo (είναι σημαντικό να χρησιμοποιήσετε το Leonardo γιατί μπορεί να μιμηθεί το πληκτρολόγιο)
2. Υπερηχητικός αισθητήρας απόστασης HC-SR04
3. Μεταβλητές αντιστάσεις 2 x 10 K
4. breadboard, σύρματα breadboard
5. Καλώδιο USB
6. Οθόνη OLED (https://www.adafruit.com/product/931)
Βήμα 2: Συναρμολόγηση και μεταφόρτωση
Αρχικά ελέγξτε αν έχετε όλα τα απαραίτητα εξαρτήματα και ένα Arduino IDE. Θα πάω εν συντομία στα βήματα σύνδεσης και μπορείτε πάντα να ρίξετε μια ματιά στο συνημμένο σχηματικό σχήμα
Συνέλευση
1. Βάλτε το Leonardo στο ψωμί και κρατήστε το στη θέση του με ένα λαστιχάκι
2. βάλτε τις δύο μεταβλητές αντιστάσεις, την οθόνη OLED και τον αισθητήρα υπερήχων στο ψωμί
3. Συνδέστε χώρους και vcc's
4. συνδέστε τους μεσαίους πείρους των αντιστάσεων στο arduino A0 και A1
5. συνδέστε το SDA και το SCL της οθόνης με το SDA και το SCL που σημειώνονται στο Leonardo
6. συνδέστε τη σκανδάλη και τον πείρο ηχώ του αισθητήρα υπερήχων στις 12, 13 ψηφιακές ακίδες του Leonardo
7. συνδέστε το USB στον υπολογιστή
Μεταφόρτωση
Πρώτα απ 'όλα θα πρέπει να κατεβάσετε και να εγκαταστήσετε τις απαραίτητες βιβλιοθήκες arduino:
1. Βιβλιοθήκη GOFi2cOLED:
2. Βιβλιοθήκη υπερήχων-HC-SR04:
Εάν δεν ξέρετε πώς να εγκαταστήσετε βιβλιοθήκες arduino, δείτε αυτό το σεμινάριο.
Αφού κατεβάσετε και εγκαταστήσετε τις παραπάνω βιβλιοθήκες, μπορείτε να κάνετε κλωνοποίηση ή λήψη του αποθετηρίου arduino που βρίσκεται εδώ: https://github.com/danionescu0/arduino και θα χρησιμοποιήσουμε αυτό το σκίτσο: https://github.com/danionescu0 /arduino/tree/master…
Or μπορείτε να αντιγράψετε και να επικολλήσετε τον παρακάτω κώδικα:
/ * * Βιβλιοθήκες που χρησιμοποιούνται από αυτό το έργο: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include "Keyboard.h" #include "Wire.h" #include "GOFi2cOLED.h" #include "Ultrasonic.h"
GOFi2cOLED GOFoled;
Υπερήχων υπερήχων (12, 13)?
const byte distancePot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; ανυπόγραφη μεγάλη maxDistanceDetectionTime; bool lockTimerStarted = false;
void setup ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
κενός βρόχος ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); εάν (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("έναρξη χρονοδιακόπτη κλειδώματος"); } else if (! shouldEnableLockTimer ()) {Serial.println ("απενεργοποιήθηκε ο χρονοδιακόπτης κλειδώματος"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Κλείδωμα οθόνης"); } καθυστέρηση (100); }
bool shouldLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool shouldEnableLockTimer ()
{int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); επιστροφή getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> επιτρέπεταιDistance; }
void writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Συμβολοσειρά = ""; if (shouldLockScreen ()) {message = "lock lock sent"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {μήνυμα = "όχι"; } setDisplayText (1, "Κλείδωμα:", μήνυμα); }
void initializeDisplay ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (byte fontSize, String label, String data)
{GOFoled.setTextSize (fontSize); GOFoled.println (ετικέτα + ":" + δεδομένα); }
void doDisplay ()
{GOFoled.display (); }
void clearDisplay ()
{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
int getActualDistance ()
{int distanceSum = 0; για (byte i = 0; i <10; i ++) {distanceSum+= υπερηχητικός. Βαθμός (CM); }
απόσταση επιστροφήςSum / 10;
}
int getDistance ()
{επιστροφή χάρτη (analogRead (timerPot), 0, 1024, 0, 200); }
int getTimer ()
{επιστροφή χάρτη (analogRead (distancePot), 0, 1024, 0, 20); }
void lockScreen ()
{Serial.println ("πατώντας"); Keyboard.press (KEY_LEFT_CTRL); καθυστέρηση (10)? Keyboard.press (KEY_LEFT_ALT); καθυστέρηση (10)? Keyboard.write ('l'); καθυστέρηση (10)? Keyboard.releaseAll (); }
Τέλος, συνδέστε το arduino στον υπολογιστή χρησιμοποιώντας το καλώδιο usb και ανεβάστε το σκίτσο στο arduino.
Βήμα 3: Χρήση της συσκευής
Όταν το arduino είναι συνδεδεμένο με τον υπολογιστή, θα παρακολουθεί συνεχώς την απόσταση μπροστά από τον αισθητήρα και θα στέλνει έναν συνδυασμό πλήκτρων οθόνης "κλειδώματος" στον υπολογιστή εάν αυξηθεί η απόσταση.
Η συσκευή έχει ορισμένες διαμορφώσεις:
1. Κανονική απόσταση, η απόσταση μπορεί να ρυθμιστεί χρησιμοποιώντας τη μεταβλητή αντίσταση που είναι συνδεδεμένη στο A0. Η απόσταση εμφανίζεται επίσης στο OLED. Όταν η απόσταση αυξηθεί κατά 25% από αυτήν που έχει οριστεί, θα αρχίσει μια αντίστροφη μέτρηση
2. Timeout (αντίστροφη μέτρηση). Το χρονικό όριο σε δευτερόλεπτα μπορεί επίσης να διαμορφωθεί από την αντίσταση που είναι συνδεδεμένη στο Α1. Όταν λήξει το χρονικό όριο, θα αποσταλεί η εντολή κλειδώματος
3. Κλείδωμα συνδυασμού πλήκτρων. Ο προεπιλεγμένος συνδυασμός κλειδιών κλειδώματος έχει ρυθμιστεί ώστε να λειτουργεί για το Ubuntu Linux 18 (CTRL+ALT+L). Για να αλλάξετε τον συνδυασμό πρέπει να τροποποιήσετε το σκίτσο σας σύμφωνα με το λειτουργικό σας σύστημα:
4. Timeout και προστασία απόστασης. Επειδή πρόκειται για μια συσκευή που μιμείται το πληκτρολόγιο, είναι καλή ιδέα να έχετε έναν μηχανισμό απενεργοποίησης της λειτουργικότητας του πληκτρολογίου. Στο σκίτσο μου επέλεξα ότι το χρονικό όριο και η απόσταση πρέπει να είναι μεγαλύτερα από το "1". (μπορείτε να το τροποποιήσετε στον κώδικα αν θέλετε)
Εντοπίστε και αλλάξτε τη λειτουργία "lockScreen ()"
void lockScreen () {Serial.println ("πάτημα"); Keyboard.press (KEY_LEFT_CTRL); καθυστέρηση (10)? Keyboard.press (KEY_LEFT_ALT); καθυστέρηση (10)? Keyboard.write ('l'); καθυστέρηση (10)? Keyboard.releaseAll (); }
Για μια πλήρη λίστα ειδικών κλειδιών arduino, ελέγξτε εδώ:
Βήμα 4: Άλλες προσεγγίσεις
Πριν από αυτήν την εφαρμογή, έχω εξετάσει και άλλες εφαρμογές:
1. Υπέρυθρο θερμόμετρο (MLX90614 https://www.sparkfun.com/products/10740). Το θερμόμετρο υπερύθρων είναι μια συσκευή που μετρά τη θερμοκρασία αναλύοντας υπέρυθρες ακτινοβολίες που εκπέμπει ένα αντικείμενο σε απόσταση. Είχα ένα ξαπλωμένο και σκέφτηκα ότι ίσως μπορώ να εντοπίσω τη διαφορά θερμοκρασίας μπροστά στον υπολογιστή.
Το έχω συνδέσει, αλλά η διαφορά θερμοκρασίας ήταν πολύ μικρή (όταν ήμουν μπροστά ή όχι) 1-2 μοίρες και νόμιζα ότι δεν θα μπορούσε να είναι τόσο αξιόπιστο
2. Αισθητήρας PIR. (https://www.sparkfun.com/products/13285) Αυτοί οι φθηνοί αισθητήρες διατίθενται στην αγορά ως "αισθητήρες κίνησης", αλλά ανιχνεύουν πραγματικά αλλαγές στην υπέρυθρη ακτινοβολία, οπότε θεωρητικά θα μπορούσε να λειτουργήσει, όταν ένα άτομο εγκαταλείψει τον υπολογιστή ο αισθητήρας θα ανιχνεύσει ότι.. Επίσης αυτοί οι αισθητήρες διαθέτουν πόμολα χρονισμού και ευαισθησίας. Έτσι, έχω συνδέσει το ένα και το έπαιξα, αλλά φαίνεται ότι ο αισθητήρας δεν είναι φτιαγμένος για κοντινή απόσταση (έχει ευρεία γωνία), έδωσε κάθε είδους ψευδείς ειδοποιήσεις.
3. Ανίχνευση προσώπου με χρήση κάμερας web. Αυτή η επιλογή φάνηκε πολύ ενδιαφέρουσα, καθώς έπαιξα με αυτόν τον τομέα υπολογιστών σε άλλα έργα μου όπως: https://github.com/danionescu0/robot-camera-platfo… και https://github.com/danionescu0/image-processing- πρ…
Αυτό ήταν κομμάτι κέικ! Αλλά υπήρχαν κάποια μειονεκτήματα: η κάμερα του φορητού υπολογιστή δεν μπορούσε να χρησιμοποιηθεί για άλλους σκοπούς κατά την εκτέλεση του προγράμματος, και θα απαιτούνταν ορισμένοι πόροι υπολογιστών για αυτό. Άφησα λοιπόν κι αυτή την ιδέα.
Αν έχετε περισσότερες ιδέες για το πώς θα μπορούσε να γίνει αυτό, μοιραστείτε τις, ευχαριστώ!
Συνιστάται:
Σύστημα Αυτόματου Ελέγχου Πλάκας (HPACS): 3 Βήματα
Σύστημα Αυτόματου Ελέγχου Πλάκας (HPACS): Αυτό το έργο στοχεύει στην παροχή ενός απλού διαισθητικού τρόπου κατανόησης του τρόπου αυτόματης ρύθμισης PID χρησιμοποιώντας θερμάστρα. Αυτό που έχω φτιάξει βασίζεται στη μέθοδο Åström – Hägglund για την εξαγωγή παραμέτρων χρησιμοποιώντας τον έλεγχο κρούσης για να αποκαλύψει τα χαρακτηριστικά του συστήματος
Abellcadabra (Σύστημα κλειδώματος πόρτας αναγνώρισης προσώπου): 9 βήματα
Abellcadabra (Σύστημα κλειδώματος πόρτας αναγνώρισης προσώπου): Περπατώντας κατά τη διάρκεια της καραντίνας, προσπάθησα να βρω έναν τρόπο να σκοτώσω τον χρόνο χτίζοντας αναγνώριση προσώπου για την πόρτα του σπιτιού. Το ονόμασα Abellcadabra - ο οποίος είναι συνδυασμός μεταξύ Abracadabra, μια μαγική φράση με κουδούνι πόρτας την οποία παίρνω μόνο το κουδούνι. ΧΑΧΑΧΑ
Σύστημα κλειδώματος οθόνης LCD οθόνης: 6 βήματα
Σύστημα κλειδώματος οθόνης LCD: Αυτό το έργο θα λειτουργήσει ως κλειδαριά στο σπίτι και ο μόνος τρόπος για να μπείτε μέσα στο σπίτι είναι να πατήσετε το σωστό τριψήφιο κωδικό. Η οθόνη LCD θα λειτουργεί ως συσκευή επικοινωνίας για την ενημέρωση του ατόμου εάν έχει εισαγάγει τον σωστό κωδικό ή όχι. Δικα τους
Σύστημα αυτόματου φωτισμού αυτοκινήτου: 4 βήματα
Σύστημα αυτόματου φωτισμού αυτοκινήτου: ρε παιδιά, το μοντέρνο αυτοκίνητο διαθέτει αυτόματο σύστημα φωτισμού αυτοκινήτου που σημαίνει ότι οι προβολείς ανάβουν και σβήνουν αυτόματα εξαρτάται από το φως του περιβάλλοντος, οπότε όταν σκοτεινιάσει ή οδηγήσετε με ασημί φώτα θα ανάψουν αυτόματα. ακόμη και σκέφτηκα switchi
Σύστημα κλειδώματος RFID χρησιμοποιώντας Arduino: 6 βήματα
RFID Lock System Using Arduino: Γεια σε όλους, Αυτό είναι το πρώτο μου εκπαιδευτικό και παρουσιάστηκε από την Judhi Prasetyo. Το εργαστήριο φιλοξενήθηκε από το Assembly, όπου εργάζομαι ως πρακτικός και είναι ένα από τα καλύτερα μέρη για να δουλέψεις αν είσαι κατασκευαστής. Επιστρέφοντας στο σύστημα κλειδώματος RFID