Inhaltsverzeichnis:
- Schritt 1: Komponenten
- Schritt 2: Zusammenbau & Hochladen
- Schritt 3: Verwenden des Geräts
- Schritt 4: Andere Ansätze
Video: Computersystem mit automatischer Sperre - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
In diesem Tutorial werden wir die Sicherheit der Computerbildschirmsperre untersuchen. Betriebssysteme haben ein konfigurierbares Timeout, das Ihren Bildschirm sperrt, wenn der Benutzer die Maus oder Tastatur nicht berührt hat.
Normalerweise beträgt der Standardwert etwa eine Minute. Wenn Sie diese Vorgabe befolgen und Ihren Computer in einer geschäftigen Umgebung lassen, könnte in dieser Minute jemand auf Ihren Computer zugreifen, bis der Bildschirm gesperrt wird. Stellt man es auf wenige Sekunden, kommt der Sperrbildschirm sehr oft, wenn man die Tastatur nicht berührt und das nervt…
Eines Tages fragte mich ein Arbeitskollege, ob ich dieses Problem mit einer Art Gerät "beheben" kann, das den Computer sperrt, wenn er nicht da ist, und ich nahm die Herausforderung an:)
Ich habe in meinem Kopf mehrere Optionen erkundet, wie die Verwendung von Arduinos und einem Infrarot-Thermometersensor, PIR-Sensor oder vielleicht die Gesichtserkennung auf dem Computer, aber ich habe mich für eine einfachere Methode entschieden:
Wir werden die Arduino Leonardo HID-Funktionalität (Tastatur emulieren) mit einem Ultraschall-Abstandssensor kombinieren, um zu erkennen, ob eine Person den Computer verwendet. Wenn nicht, sendet das Gerät eine Tastenkombination über USB, um den Computer zu sperren.
Schritt 1: Komponenten
Da dies ein Proof of Concept ist, bauen wir das Gerät auf einem Steckbrett
Du brauchst:
1. Arduino Leonardo (es ist wichtig, Leonardo zu verwenden, da es die Tastatur emulieren kann)
2. HC-SR04 Ultraschall-Abstandssensor
3. 2 x 10 K variable Widerstände
4. Steckbrett, Steckbrettdrähte
5. USB-Kabel
6. OLED-Display (https://www.adafruit.com/product/931)
Schritt 2: Zusammenbau & Hochladen
Überprüfen Sie zuerst, ob Sie alle benötigten Komponenten und eine Arduino-IDE haben. Ich gehe kurz auf die Anschlussschritte ein, und Sie können jederzeit einen Blick auf den beigefügten Fritzing-Schema werfen
Montage
1. Setzen Sie den Leonardo auf das Steckbrett und halten Sie ihn mit einem Gummiband fest
2. Legen Sie die beiden variablen Widerstände, das OLED-Display und den Ultraschallsensor auf das Steckbrett
3. Masse und VCCs verbinden
4. Verbinden Sie die mittleren Pins der Widerstände mit dem Arduino A0 und A1
5. Verbinden Sie SDA und SCL des Displays mit den auf dem Leonardo markierten SDA und SCL
6. Verbinden Sie den Trigger- und Echo-Pin des Ultraschallsensors mit den 12, 13 digitalen Pins des Leonardo
7. Verbinden Sie den USB mit dem Computer
Hochladen
Zunächst müssen Sie die erforderlichen Arduino-Bibliotheken herunterladen und installieren:
1. GOFi2cOLED-Bibliothek:
2. Ultraschall-HC-SR04-Bibliothek:
Wenn Sie nicht wissen, wie Sie Arduino-Bibliotheken installieren, lesen Sie dieses Tutorial.
Nachdem Sie die obigen Bibliotheken heruntergeladen und installiert haben, können Sie mein Arduino-Repository klonen oder herunterladen, das sich hier befindet: https://github.com/danionescu0/arduino, und wir verwenden diese Skizze: https://github.com/danionescu0 /arduino/baum/meister…
Oder Sie können den folgenden Code kopieren und einfügen:
/* * Von diesem Projekt verwendete Bibliotheken: * * 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;
Ultraschall Ultraschall (12, 13);
const byte distancePot = A0;
const Byte TimerPot = A1; const float ProzentMaxDistanceChangedAllowed = 25; int tatsächliche Distanz; unsigned long maxDistanceDetectionTime; bool lockTimerStarted = false;
Void-Setup ()
{ Serial.begin (9600); Tastatur.begin(); initializeDisplay(); }
Leere Schleife ()
{ clearDisplay(); aktueller Abstand = getActualDistance(); writeStatusData(); doDisplay(); if (!lockTimerStarted && shouldEnableLockTimer()) { lockTimerStarted = true; maxDistanceDetectionTime = millis(); Serial.println ("Sperrzeitgeber beginnen"); aufrechtzuerhalten. Sonst if (!shouldEnableLockTimer ()) { Serial.println ("Sperrtimer deaktiviert"); lockTimerStarted = false; aufrechtzuerhalten. Wenn (sollteLockScreen()) {lockScreen(); Serial.println ("Sperrbildschirm"); } Verzögerung (100); }
bool sollteLockScreen()
{ return lockTimerStarted && (millis() - maxDistanceDetectionTime) / 1000 > getTimer(); }
bool sollteEnableLockTimer()
{ int allowDistance = ProzentMaxDistanceChangedAllowed / 100 * getDistance(); return getTimer() > 1 && getDistance() > 1 && aktuelleDistance - getDistance() > erlaubtDistance; }
void writeStatusData()
{ setDisplayText(1, "MinDistance:", String(getDistance())); setDisplayText(1, "Timer:", String(getTimer())); setDisplayText(1, "ActualDistance:", String(actualDistance)); int countDown = getTimer() - (millis() - maxDistanceDetectionTime) / 1000; String-Nachricht = ""; if (shouldLockScreen()) { message = "Sperre gesendet"; } else if (shouldEnableLockTimer() && countDown >= 0) { message = ".." + String(countDown); } Else { Nachricht = "Nein"; } setDisplayText(1, "Sperren:", Nachricht); }
void initializeDisplay()
{ GOFoled.init(0x3C); GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
void setDisplayText(byte fontSize, String label, String data)
{ GOFoled.setTextSize (fontSize); GOFoled.println(Label + ":" + Daten); }
void doDisplay()
{ GOFoled.display(); }
void clearDisplay()
{ GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
int getActualDistance()
{ int AbstandSumme = 0; für (Byte i=0;i<10;i++) { DistanceSum += Ultraschall. Ranging (CM); }
RückwegSumme / 10;
}
int getDistance()
{ Karte zurückgeben (analogRead (timerPot), 0, 1024, 0, 200); }
int getTimer()
{ Karte zurückgeben (analogRead (distancePot), 0, 1024, 0, 20); }
void lockScreen()
{ Serial.println ("drücken"); Keyboard.press(KEY_LEFT_CTRL); Verzögerung(10); Tastatur.press(KEY_LEFT_ALT); Verzögerung(10); Keyboard.write('l'); Verzögerung(10); Keyboard.releaseAll(); }
Schließen Sie schließlich das Arduino mit dem USB-Kabel an den Computer an und laden Sie die Skizze in das Arduino hoch.
Schritt 3: Verwenden des Geräts
Wenn das Arduino mit dem Computer verbunden ist, überwacht es kontinuierlich die Entfernung vor dem Sensor und sendet eine Tastenkombination für den Bildschirm "Sperren" an den Computer, wenn die Entfernung zunimmt.
Das Gerät hat einige Konfigurationen:
1. Normaler Abstand, der Abstand kann mit dem an A0 angeschlossenen variablen Widerstand konfiguriert werden. Die Entfernung wird auch auf dem OLED angezeigt. Wenn die Distanz um 25 % von der eingestellten Distanz zunimmt, beginnt ein Countdown
2. Zeitüberschreitung (Countdown). Der Timeout in Sekunden ist auch über den an A1 angeschlossenen Widerstand konfigurierbar. Nach Ablauf des Timeouts wird der Sperrbefehl gesendet
3. Tastenkombination sperren. Die Standard-Sperrtastenkombination ist für Ubuntu Linux 18 (STRG+ALT+L) eingerichtet. Um die Kombination zu ändern, müssen Sie Ihre Skizze entsprechend Ihrem Betriebssystem ändern:
4. Timeout- und Distanzschutz. Da dies ein Gerät ist, das die Tastatur emuliert, ist es eine gute Idee, einen Mechanismus zum Deaktivieren der Tastaturfunktionalität zu haben. In meiner Skizze habe ich gewählt, dass das Timeout und der Abstand größer als "1" sein müssen. (Sie können das im Code ändern, wenn Sie möchten)
Suchen und ändern Sie die Funktion "lockScreen()"
Void lockScreen () {Serial.println ("drücken"); Keyboard.press(KEY_LEFT_CTRL); Verzögerung(10); Tastatur.press(KEY_LEFT_ALT); Verzögerung(10); Keyboard.write('l'); Verzögerung(10); Keyboard.releaseAll(); }
Eine vollständige Liste der Arduino-Sondertasten finden Sie hier:
Schritt 4: Andere Ansätze
Vor dieser Implementierung habe ich auch einige andere Implementierungen in Betracht gezogen:
1. Infrarot-Thermometer (MLX90614 https://www.sparkfun.com/products/10740). Ein Infrarot-Thermometer ist ein Gerät, das die Temperatur misst, indem es Infrarotstrahlung analysiert, die von einem Objekt in der Ferne emittiert wird. Ich hatte einen herumliegen und dachte, vielleicht kann ich den Temperaturunterschied vor dem Computer erkennen.
Ich habe es angeschlossen, aber der Temperaturunterschied war sehr gering (wenn ich vorne war oder nicht) 1-2 Grad und ich dachte, es könnte nicht so zuverlässig sein
2. PIR-Sensor. (https://www.sparkfun.com/products/13285) Diese billigen Sensoren werden als "Bewegungssensoren" vermarktet, aber sie erkennen wirklich Veränderungen der Infrarotstrahlung, so dass es theoretisch funktionieren könnte, wenn eine Person den Computer verlässt, würde der Sensor erkennen dass.. Auch diese Sensoren haben einen eingebauten Timeout- und Empfindlichkeitsregler. Also habe ich einen angeschlossen und damit gespielt, aber es scheint, dass der Sensor nicht für den Nahbereich geeignet ist (er hat einen Weitwinkel), er gab alle Arten von Fehlalarmen aus.
3. Gesichtserkennung mit der Webcam. Diese Option schien sehr interessant, da ich in meinen anderen Projekten mit diesem Computerfeld gespielt habe wie: https://github.com/danionescu0/robot-camera-platfo… und https://github.com/danionescu0/image-processing- pr…
Das war ein Kinderspiel! Aber es gab einige Nachteile: Die Laptop-Kamera konnte während des Programmlaufs nicht für andere Zwecke verwendet werden, und dafür wären einige Computerressourcen erforderlich. Also ich habe diese Idee auch fallen gelassen.
Wenn Sie weitere Ideen haben, wie dies geschehen könnte, teilen Sie diese bitte mit, danke!
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Automatischer Anrufbeantworter V1.0: 17 Schritte (mit Bildern)
Automated Answering System V1.0: Manchmal habe ich einfach keine Lust, ans Telefon zu gehen. Okay, okay… die meiste Zeit ist es mir wirklich egal, ans Telefon zu gehen. Was soll ich sagen, ich bin ein beschäftigter Mann. Ich habe mir schon lange ein System gewünscht, das dem ähnlich ist, das die Telefongesellschaft für die
Automatischer Sucher: 4 Schritte
Auto-Searcher: Also las ich eines Tages Fanfiction in meinem Bett, um meinen Stress abzubauen. Aber ich hatte das Gefühl, dass es ein bisschen mühsam war, die Seite weiter zu scrollen, um weiterzulesen. Ich muss auch klicken, um das nächste Kapitel zu sehen und das Ganze vorher suchen
Automatischer Gartenbewässerer - 3D gedruckt - Arduino: 10 Schritte (mit Bildern)
Automatischer Gartenbewässerer | 3D gedruckt | Arduino: Ich bin ein begeisterter Gärtner, aber Ihre Pflanzen während Trockenperioden von Hand zu gießen, dauert einige Zeit. Dieses Projekt befreit mich vom Gießen, damit ich an meinen anderen Projekten arbeiten kann. Es ist auch großartig, sich um den Garten zu kümmern, während Sie nicht zu Hause sind, und die Pflanze