Indholdsfortegnelse:

Autolås computersystem: 4 trin
Autolås computersystem: 4 trin

Video: Autolås computersystem: 4 trin

Video: Autolås computersystem: 4 trin
Video: 9 Windows settings EVERY user should change NOW! 2024, Juli
Anonim
Image
Image
Montering og upload
Montering og upload

I denne vejledning vil vi undersøge sikkerheden ved computerskærmlås. Operativsystemer har en konfigurerbar timeout, der låser din skærm, hvis brugeren ikke har rørt musen eller tastaturet.

Normalt er standard omkring et minut. Hvis du følger denne standard og efterlader din computer i et travlt miljø, kan nogen få adgang til din computer i det minut, indtil skærmen låses. Hvis du indstiller det til et par sekunder, får du låseskærmen meget ofte, når du ikke rører ved tastaturet, og det er irriterende …

En dag spurgte en arbejdskollega mig, om jeg kan "løse" dette problem med en slags enhed, der låser computeren, når han ikke er der, og jeg tog udfordringen:)

Jeg har undersøgt flere muligheder i mit hoved som at bruge arduinos og en infrarød termometersensor, PIR -sensor eller måske bruge ansigtsregistrering på computeren, men jeg har besluttet mig for en enklere metode:

Vi vil kombinere Arduino Leonardo HID -funktionalitet (efterligne tastatur) med en ultralydsafstandssensor for at registrere, om en person bruger computeren, hvis ikke sender en tastekombination via USB for at låse computeren.

Trin 1: Komponenter

Fordi dette er et bevis på koncept, skal vi bygge enheden på et brødbræt

Du skal bruge:

1. Arduino Leonardo (det er vigtigt at bruge Leonardo, fordi det kan efterligne tastatur)

2. HC-SR04 ultralydsafstandssensor

3. 2 x 10 K variable modstande

4. brødbræt, brødbrætstråde

5. USB -kabel

6. OLED -skærm (https://www.adafruit.com/product/931)

Trin 2: Montering og upload

Montering og upload
Montering og upload

Kontroller først, om du har alle de nødvendige komponenter og en Arduino IDE. Jeg vil kort gå til forbindelsestrinene, og du kan altid tage et kig på den vedlagte fritzing -skematik

montage

1. Læg Leonardo på brødbrættet, og hold den på plads med et gummibånd

2. Sæt de to variable modstande, OLED -displayet og ultralydssensoren på brødbrættet

3. tilslut grunde og vcc'er

4. tilslut de midterste ben på modstandene til arduino A0 og A1

5. tilslut SDA og SCL på displayet til SDA og SCL markeret på Leonardo

6. Slut ultralydssensorens trigger og ekko -pin til Leonardos 12, 13 digitale ben

7. tilslut USB'en til computeren

Upload

Først og fremmest skal du downloade og installere de nødvendige arduino -biblioteker:

1. GOFi2cOLED -bibliotek:

2. Ultrasonic-HC-SR04 bibliotek:

Hvis du ikke ved, hvordan du installerer arduino -biblioteker, kan du tjekke denne vejledning.

Når du har downloadet og installeret bibliotekerne ovenfor, kan du klone eller downloade mit arduino -depot placeret her: https://github.com/danionescu0/arduino, og vi vil bruge denne skitse: https://github.com/danionescu0 /arduino/træ/mester …

Eller du kan kopiere og indsætte koden herunder:

/ * * Biblioteker, der bruges af dette projekt: * * 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;

Ultralyds ultralyd (12, 13);

const byte distancePot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; usigneret lang maxDistanceDetectionTime; bool lockTimerStarted = false;

ugyldig opsætning ()

{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }

hulrum ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); hvis (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("låstimer begynder"); } ellers hvis (! shouldEnableLockTimer ()) {Serial.println ("låsetimer deaktiveret"); lockTimerStarted = false; } hvis (shouldLockScreen ()) {lockScreen (); Serial.println ("Låseskærm"); } forsinkelse (100); }

bool shouldLockScreen ()

{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }

bool shouldEnableLockTimer ()

{int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowDistance; }

void writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String besked = ""; if (shouldLockScreen ()) {message = "lock sent"; } ellers hvis (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } andet {message = "no"; } setDisplayText (1, "Låsning:", besked); }

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 + ":" + data); }

void doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }

int getActualDistance ()

{int distanceSum = 0; for (byte i = 0; i <10; i ++) {distanceSum+= ultralyd. Rangering (CM); }

returafstandSum / 10;

}

int getDistance ()

{returkort (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{returkort (analogRead (distancePot), 0, 1024, 0, 20); }

void lockScreen ()

{Serial.println ("trykke"); Keyboard.press (KEY_LEFT_CTRL); forsinkelse (10); Keyboard.press (KEY_LEFT_ALT); forsinkelse (10); Keyboard.write ('l'); forsinkelse (10); Keyboard.releaseAll (); }

Tilslut til sidst arduino computeren ved hjælp af usb -kablet, og upload skitsen til arduinoen.

Trin 3: Brug af enheden

Brug af enheden
Brug af enheden

Når arduinoen er tilsluttet computeren, vil den løbende overvåge afstanden foran sensoren og sende en "lås" skærmtastkombination til computeren, hvis afstanden stiger.

Enheden har nogle konfigurationer:

1. Normal afstand, afstanden kan konfigureres ved hjælp af den variable modstand, der er forbundet til A0. Afstanden vises også på OLED. Når afstanden øges med 25% fra den, der er indstillet, begynder en nedtælling

2. Timeout (nedtælling). Tiden i sekunder kan også konfigureres fra modstanden, der er tilsluttet A1. Når timeout'en udløber, sendes låsekommandoen

3. Lås tastaturkombination. Standardlåsetastkombinationen er konfigureret til at fungere til Ubuntu Linux 18 (CTRL+ALT+L). For at ændre kombinationen skal du ændre din skitse i henhold til dit operativsystem:

4. Timeout og afstandsbeskyttelse. Fordi dette er en enhed, der efterligner tastaturet, er det en god idé at have en mekanisme til deaktivering af tastaturfunktionen. I min skitse har jeg valgt, at timeout og afstand skal være større end "1". (du kan ændre det i koden, hvis du vil)

Find og rediger funktionen "lockScreen ()"

void lockScreen () {Serial.println ("trykke"); Keyboard.press (KEY_LEFT_CTRL); forsinkelse (10); Keyboard.press (KEY_LEFT_ALT); forsinkelse (10); Keyboard.write ('l'); forsinkelse (10); Keyboard.releaseAll (); }

For en komplet liste over arduino -specialnøgler, tjek her:

Trin 4: Andre tilgange

Før denne implementering har jeg også overvejet nogle andre implementeringer:

1. Infrarødt termometer (MLX90614 https://www.sparkfun.com/products/10740). Et infrarødt termometer er en enhed, der måler temperatur ved at analysere infrarøde stråler udsendt af et objekt på afstand. Jeg havde en liggende, og jeg tænkte, at jeg måske kunne opdage forskellen i temperatur foran computeren.

Jeg har tilsluttet det, men temperaturforskellen var meget lille (når jeg var foran eller ej) 1-2 grader, og jeg tænkte, at det ikke kunne være så pålideligt

2. PIR sensor. (https://www.sparkfun.com/products/13285) Disse billige sensorer markedsføres som "bevægelsessensorer", men de registrerer virkelig ændringer i infrarød stråling, så i teorien kan det fungere, når en person forlader computeren, ville sensoren registrere at.. Også disse sensorer har en indbygget timeout og følsomhedsknapper. Så jeg har tilsluttet en og leget med den, men det ser ud til, at sensoren ikke er lavet til et nært hold (den har en vidvinkel), den gav alle former for falske advarsler.

3. Ansigtsregistrering ved hjælp af webcam. Denne indstilling virkede meget interessant, da jeg legede med dette computerfelt i mine andre projekter som: https://github.com/danionescu0/robot-camera-platfo… og https://github.com/danionescu0/image-processing- pr…

Dette var et stykke kage! Men der var nogle ulemper: Det bærbare kamera kunne ikke bruges til andre formål, når programmet kørte, og nogle computerressourcer ville være nødvendige for det. Så jeg har også droppet denne idé.

Hvis du har flere ideer til, hvordan dette kan gøres, kan du dele dem, tak!

Anbefalede: