Sadržaj:

Računarski sistem automatskog zaključavanja: 4 koraka
Računarski sistem automatskog zaključavanja: 4 koraka

Video: Računarski sistem automatskog zaključavanja: 4 koraka

Video: Računarski sistem automatskog zaključavanja: 4 koraka
Video: 10. KESSY-SUSTAV POKRETANJA I ZAKLJUČAVANJA BEZ KLJUČA 2024, Juli
Anonim
Image
Image
Montaža i učitavanje
Montaža i učitavanje

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

Montaža i učitavanje
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

Korišćenje uređaja
Korišćenje 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: