Sadržaj:
Video: Računarski sistem automatskog zaključavanja: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
U ovom vodiču ćemo istražiti sigurnost zaključavanja ekrana računara. Operativni sistemi imaju konfigurirano vremensko ograničenje koje će zaključati vaš ekran ako korisnik nije dodirnuo miš ili tastaturu.
Obično je zadana vrijednost oko jedne minute. Ako slijedite ovu zadanu postavku i ostavite računar u užurbanom okruženju, neko bi mogao pristupiti vašem računaru u toj minuti dok se ekran ne zaključa. Ako ga postavite na nekoliko sekundi, vrlo često ćete dobiti zaključani ekran kada ne dodirujete tastaturu, a to je neugodno …
Jednog dana radni kolega me pitao mogu li "riješiti" ovaj problem pomoću neke vrste uređaja koji zaključava računar kada nije tamo, i prihvatio sam izazov:)
U glavi sam istraživao nekoliko opcija, poput upotrebe arduina i infracrvenog senzora termometra, PIR senzora ili možda pomoću detekcije lica na računaru, ali odlučio sam se za jednostavniju metodu:
Kombinirat ćemo Arduino Leonardo HID funkcionalnost (emulirati tipkovnicu) s ultrazvučnim senzorom udaljenosti kako bismo otkrili koristi li osoba računar, ako ne, uređaj će poslati kombinaciju tipki putem USB -a za zaključavanje računara.
Korak 1: Komponente
Budući da je ovo dokaz koncepta, napravit ćemo uređaj na osnovnoj ploči
Trebat će vam:
1. Arduino Leonardo (važno je koristiti Leonarda jer može oponašati tastaturu)
2. HC-SR04 ultrazvučni senzor udaljenosti
3. 2 x 10 K promjenjivih otpornika
4. matična ploča, žice za matičnu ploču
5. USB kabl
6. OLED ekran (https://www.adafruit.com/product/931)
Korak 2: Montaža i učitavanje
Prvo provjerite imate li sve potrebne komponente i Arduino IDE. Kratko ću prijeći na korake povezivanja, a uvijek možete pogledati priloženu shemu fritzinga
Montaža
1. Stavite Leonarda na ploču i držite ga gumicom
2. postavite dva promjenjiva otpornika, OLED ekran i ultrazvučni senzor na ploču
3. spojite uzemljenje i vcc
4. spojite srednje pinove otpornika na arduino A0 i A1
5. povežite SDA i SCL ekrana sa SDA i SCL označenim na Leonardu
6. spojite okidač i eho pin ultrazvučnog senzora na 12, 13 digitalnih pinova Leonarda
7. spojite USB na računar
Upload
Prije svega, trebate preuzeti i instalirati potrebne arduino biblioteke:
1. GOFi2cOLED biblioteka:
2. Ultrazvučna biblioteka-HC-SR04:
Ako ne znate kako instalirati arduino biblioteke, pogledajte ovaj vodič.
Nakon što preuzmete i instalirate gore navedene biblioteke, možete klonirati ili preuzeti moje arduino spremište koje se nalazi ovdje: https://github.com/danionescu0/arduino, a mi ćemo koristiti ovu skicu: https://github.com/danionescu0 /arduino/drvo/gospodar…
Ili možete kopirati i zalijepiti donji kod:
/ * * Biblioteke koje koristi ovaj projekt: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultrazvučni-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include "Keyboard.h" #include "Wire.h" #include "GOFi2cOLED.h" #include "Ultrasonic.h"
GOFi2cOLED GOFoled;
Ultrazvučni ultrazvučni (12, 13);
const byte distancePot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; unsigned long maxDistanceDetectionTime; bool lockTimerStarted = false;
void setup ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
void loop ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("zaključavanje tajmera počinje"); } else if (! shouldEnableLockTimer ()) {Serial.println ("tajmer zaključavanja onemogućen"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Zaključani ekran"); } kašnjenje (100); }
bool shouldLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool shouldEnableLockTimer ()
{int allowedDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowedDistance; }
void writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Tajmer:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Niz poruka = ""; if (shouldLockScreen ()) {message = "zaključavanje poslano"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {poruka = "ne"; } setDisplayText (1, "Zaključavanje:", poruka); }
void initializeDisplay ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (veličina bajta font, oznaka niza, podaci niza)
{GOFoled.setTextSize (fontSize); GOFoled.println (oznaka + ":" + podaci); }
void doDisplay ()
{GOFoled.display (); }
void clearDisplay ()
{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
int getActualDistance ()
{int distanceSum = 0; for (bajt i = 0; i <10; i ++) {distanceSum+= ultrazvuk. Ranging (CM); }
povratna udaljenostSum / 10;
}
int getDistance ()
{povratna karta (analogRead (timerPot), 0, 1024, 0, 200); }
int getTimer ()
{return map (analogRead (distancePot), 0, 1024, 0, 20); }
void lockScreen ()
{Serial.println ("pritiskanje"); Keyboard.press (KEY_LEFT_CTRL); kašnjenje (10); Keyboard.press (KEY_LEFT_ALT); kašnjenje (10); Keyboard.write ('l'); kašnjenje (10); Keyboard.releaseAll (); }
Konačno povežite arduino računalo pomoću USB kabela i prenesite skicu u arduino.
Korak 3: Upotreba uređaja
Kad je arduino spojen na računalo, on će kontinuirano pratiti udaljenost ispred senzora i slati računalu kombinaciju tipki za zaključavanje ekrana ako se udaljenost poveća.
Uređaj ima nekoliko konfiguracija:
1. Normalna udaljenost, udaljenost se može konfigurirati pomoću promjenjivog otpornika spojenog na A0. Udaljenost je takođe prikazana na OLED -u. Kada se udaljenost poveća za 25% od one koja je postavljena, počet će odbrojavanje
2. Vremensko ograničenje (odbrojavanje). Vremensko ograničenje u sekundama također se može konfigurirati s otpornika spojenog na A1. Kada istekne vremensko ograničenje, naredba zaključavanja će biti poslana
3. Zaključaj kombinaciju tipki. Zadana kombinacija ključeva za zaključavanje postavljena je tako da radi za Ubuntu Linux 18 (CTRL+ALT+L). Da biste promijenili kombinaciju, morate izmijeniti svoju skicu u skladu sa svojim operativnim sistemom:
4. Zaštita isteka vremena i udaljenosti. Budući da je ovo uređaj koji oponaša tastaturu, dobra je ideja imati mehanizam za deaktiviranje funkcije tastature. Na mojoj skici sam odabrao da vrijeme čekanja i udaljenost moraju biti veći od "1". (to možete izmijeniti u kodu ako želite)
Pronađite i promijenite funkciju "lockScreen ()"
void lockScreen () {Serial.println ("pritiskanje"); Keyboard.press (KEY_LEFT_CTRL); kašnjenje (10); Keyboard.press (KEY_LEFT_ALT); kašnjenje (10); Keyboard.write ('l'); kašnjenje (10); Keyboard.releaseAll (); }
Za potpunu listu arduino posebnih ključeva provjerite ovdje:
Korak 4: Drugi pristupi
Prije ove implementacije razmatrao sam i neke druge implementacije:
1. Infracrveni termometar (MLX90614 https://www.sparkfun.com/products/10740). Infracrveni termometar je uređaj koji mjeri temperaturu analizirajući infracrveno zračenje koje odašilje objekt na udaljenosti. Imao sam jedan ležati i mislio sam da mogu otkriti razliku u temperaturi ispred računara.
Priključio sam ga, ali je temperaturna razlika bila vrlo mala (kad sam bio ispred ili ne) 1-2 stepena i mislio sam da ne može biti tako pouzdan
2. PIR senzor. (https://www.sparkfun.com/products/13285) Ovi jeftini senzori plasiraju se na tržište kao "senzori pokreta", ali zaista otkrivaju promjene u infracrvenom zračenju pa bi teoretski moglo funkcionirati, kada osoba napusti računar, senzor bi to otkrio to.. Također ovi senzori imaju ugrađeno vremensko ograničenje i tipke za osjetljivost. Pa spojio sam jedan i igrao se s njim, ali čini se da senzor nije napravljen za bliski domet (ima široki kut), davao je sve vrste lažnih upozorenja.
3. Prepoznavanje lica pomoću web kamere. Ova se opcija činila vrlo zanimljivom jer sam se igrao s ovim računarskim poljem u drugim projektima poput: https://github.com/danionescu0/robot-camera-platfo… i https://github.com/danionescu0/image-processing- pr…
Ovo je bila torta! No, bilo je nekih nedostataka: kamera prijenosnog računara nije se mogla koristiti u druge svrhe dok je program bio u radu, a za to bi bili potrebni neki računarski resursi. Tako da sam i ja odustao od ove ideje.
Ako imate više ideja o tome kako bi to moglo biti učinjeno, podijelite ih, hvala!
Preporučuje se:
Abellcadabra (sistem zaključavanja vrata za prepoznavanje lica): 9 koraka
Abellcadabra (Sistem zaključavanja vrata za prepoznavanje lica): Ležeći tokom karantene, pokušao sam pronaći način da ubijem vrijeme izgradnjom prepoznavanja lica za kućna vrata. Nazvao sam ga Abellcadabra - što je kombinacija između Abracadabre, čarobne fraze sa zvonom na vratima koje samo čujem. LOL
Sistem kućnog zaključavanja LCD ekrana: 6 koraka
Sistem kućnog zaključavanja LCD ekrana: Ovaj projekt će djelovati kao kućna brava, a jedini način na koji možete ući u kuću je pritiskom na ispravnu troznamenkastu šifru. LCD će djelovati kao komunikacijski uređaj za obavještavanje pojedinca ako je unijeo ispravan kôd ili ne. IR
Sistem automatskog pranja ruku na bazi Raspberry Pi na dodir za Covid-19: 4 koraka
Besplatni automatski sistem pranja ruku na bazi Raspberry Pi na dodir za Covid-19: To je jednostavan sistem za pranje ruku koji koristi pir senzore i Raspberry pi ploču. Ova je aplikacija uglavnom dizajnirana za higijenske svrhe. Model se može postaviti na javna mjesta, bolnice, trgovačke centre itd
RFID sistem zaključavanja pomoću Arduina: 6 koraka
RFID sistem zaključavanja pomoću Arduina: Pozdrav svima, ovo je moje prvo uputstvo koje je predstavio Judhi Prasetyo. Radionicu je vodila Skupština, gdje radim kao pripravnik i jedno je od najboljih mjesta za rad ako ste proizvođač. Vraćajući se na RFID sistem zaključavanja, ja
EAL-Industry 4.0 sistem automatskog solarnog praćenja: 9 koraka
EAL-Industry 4.0 automatski solarni sistem za praćenje: I dette projekt har vi f å i tg opgave at lave en smart IOT l ø svor, hvor man skal l æ se data en enhed p å en app/hjemmeside og derefter lager denne p å en database. Fraba baza podataka skal det da v æ re muligt at hent