Obsah:

Automatický zámok počítačového systému: 4 kroky
Automatický zámok počítačového systému: 4 kroky

Video: Automatický zámok počítačového systému: 4 kroky

Video: Automatický zámok počítačového systému: 4 kroky
Video: Jak VYPNOUT AUTOMATICKÉ SPOUŠTĚNÍ PROGRAMŮ při ZAPNUTÍ POČÍTAČE | Návod | WIN 10 / PC 2024, Júl
Anonim
Image
Image
Zostavenie a odovzdanie
Zostavenie a odovzdanie

V tomto návode sa budeme zaoberať bezpečnosťou zámku obrazovky počítača. Operačné systémy majú konfigurovateľný časový limit, ktorý uzamkne obrazovku, ak sa používateľ nedotkol myši alebo klávesnice.

Štandardne je predvolená hodnota približne jednu minútu. Ak budete postupovať podľa tohto predvoleného nastavenia a necháte počítač v rušnom prostredí, do tej minúty sa k vám niekto môže dostať, kým sa obrazovka nezamkne. Ak ho nastavíte na niekoľko sekúnd, obrazovku uzamknutia dostanete veľmi často, keď sa nedotýkate klávesnice a to je nepríjemné …

Jedného dňa sa ma kolega z práce spýtal, či môžem tento problém „vyriešiť“pomocou nejakého zariadenia, ktoré uzamkne počítač, keď tam nie je, a ja som výzvu prijal:)

V hlave som preskúmal niekoľko možností, ako je použitie arduinos a infračerveného teplomerového senzora, PIR senzora alebo možno pomocou detekcie tváre v počítači, ale rozhodol som sa pre jednoduchšiu metódu:

Skombinujeme funkciu Arduino Leonardo HID (emulácia klávesnice) s ultrazvukovým senzorom vzdialenosti, aby sme zistili, či človek používa počítač, ak nie, zariadenie odošle kombináciu klávesov cez USB na uzamknutie počítača.

Krok 1: Komponenty

Pretože toto je dôkaz koncepcie, postavíme zariadenie na doske

Budete potrebovať:

1. Arduino Leonardo (je dôležité používať Leonardo, pretože dokáže emulovať klávesnicu)

2. Ultrazvukový snímač vzdialenosti HC-SR04

3. 2 x 10 K variabilné odpory

4. doštička, drôty na dosky

5. USB kábel

6. OLED displej (https://www.adafruit.com/product/931)

Krok 2: Zostavenie a odovzdanie

Zostavenie a odovzdanie
Zostavenie a odovzdanie

Najprv skontrolujte, či máte všetky potrebné súčasti a IDE Arduino. Stručne prejdem na kroky pripojenia a vždy sa môžete pozrieť na priloženú schematickú schému

zhromaždenie

1. Položte Leonardo na dosku a držte ho na mieste gumičkou

2. umiestnite dva variabilné odpory, OLED displej a ultrazvukový senzor na dosku

3. prepojte uzemnenie a vcc

4. spojte stredné kolíky rezistorov s arduino A0 a A1

5. Pripojte SDA a SCL displeja k SDA a SCL označeným na Leonardovi

6. pripojte spúšť a echo kolík ultrazvukového senzora k 12, 13 digitálnym kolíkom Leonarda

7. Pripojte USB k počítaču

Odovzdať

Najprv si musíte stiahnuť a nainštalovať potrebné arduino knižnice:

1. Knižnica GOFi2cOLED:

2. Knižnica Ultrasonic-HC-SR04:

Ak neviete, ako nainštalovať knižnice arduino, prečítajte si tento návod.

Keď si stiahnete a nainštalujete vyššie uvedené knižnice, môžete klonovať alebo stiahnuť moje úložisko arduino, ktoré sa nachádza tu: https://github.com/danionescu0/arduino, a použijeme tento náčrt: https://github.com/danionescu0 /arduino/strom/majster…

Alebo môžete skopírovať a prilepiť kód nižšie:

/ * * Knižnice používané v tomto projekte: * * 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;

Ultrazvukové ultrazvukové (12, 13);

vzdialenosť konštantných bajtovPot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int realDistance; bez znamienka dlhý maxDistanceDetectionTime; bool lockTimerStarted = false;

neplatné nastavenie ()

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

prázdna slučka ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = milis (); Serial.println ("časovač uzamknutia začína"); } else if (! shouldEnableLockTimer ()) {Serial.println ("časovač uzamknutia deaktivovaný"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Uzamknutá obrazovka"); } oneskorenie (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); vrátiť getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowDistance; }

neplatné writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Časovač:", Reťazec (getTimer ())); setDisplayText (1, "Skutočná vzdialenosť:", Reťazec (skutočná vzdialenosť)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Reťazcová správa = ""; if (shouldLockScreen ()) {message = "lock sent"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "nie"; } setDisplayText (1, „Zamykanie:“, správa); }

void initializeDisplay ()

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

void setDisplayText (veľkosť bajtu písma, označenie reťazca, údaje reťazca)

{GOFoled.setTextSize (fontSize); GOFoled.println (štítok + ":" + údaje); }

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+= ultrasonic. Ranging (CM); }

vzdialenosť návratuSum / 10;

}

int getDistance ()

{návratová mapa (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{návratová mapa (analogRead (distancePot), 0, 1024, 0, 20); }

void lockScreen ()

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

Nakoniec pripojte arduino k počítaču pomocou USB kábla a nahrajte náčrt do arduina.

Krok 3: Používanie zariadenia

Používanie zariadenia
Používanie zariadenia

Keď je arduino pripojené k počítaču, bude nepretržite monitorovať vzdialenosť pred senzorom a v prípade zvýšenia vzdialenosti odošle do počítača kombináciu klávesov „uzamknutej“obrazovky.

Zariadenie má niekoľko konfigurácií:

1. Normálna vzdialenosť, vzdialenosť je možné konfigurovať pomocou variabilného odporu pripojeného k A0. Vzdialenosť sa zobrazuje aj na OLED. Keď sa vzdialenosť zvýši o 25% od tej, ktorá je nastavená, začne odpočítavanie

2. Časový limit (odpočítavanie). Časový limit v sekundách je tiež konfigurovateľný z odporu pripojeného k A1. Po vypršaní časového limitu bude odoslaný príkaz na uzamknutie

3. Kombinácia klávesov zámku. Predvolená kombinácia klávesov zámku je nastavená tak, aby fungovala pre Ubuntu Linux 18 (CTRL+ALT+L). Ak chcete zmeniť kombináciu, musíte upraviť svoj náčrt podľa svojho operačného systému:

4. Časový limit a ochrana na diaľku. Pretože sa jedná o zariadenie, ktoré napodobňuje klávesnicu, je vhodné mať mechanizmus na deaktiváciu funkcií klávesnice. Vo svojom náčrte som vybral, že časový limit a vzdialenosť musia byť väčšie ako „1“. (ak chcete, môžete to v kóde zmeniť)

Vyhľadajte a zmeňte funkciu "lockScreen ()"

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

Úplný zoznam špeciálnych kľúčov arduino nájdete tu:

Krok 4: Iné prístupy

Pred touto implementáciou som zvažoval aj ďalšie implementácie:

1. Infračervený teplomer (MLX90614 https://www.sparkfun.com/products/10740). Infračervený teplomer je zariadenie, ktoré meria teplotu analyzovaním infračerveného žiarenia vyžarovaného predmetom na diaľku. Ležal som tam a myslel som si, že možno dokážem zistiť rozdiel v teplote pred počítačom.

Zapojil som to, ale teplotný rozdiel bol veľmi malý (keď som bol vpredu alebo nie) 1-2 stupne a myslel som si, že to nemôže byť také spoľahlivé

2. PIR snímač. (https://www.sparkfun.com/products/13285) Tieto lacné senzory sa predávajú ako „pohybové senzory“, ale skutočne detegujú zmeny v infračervenom žiarení, takže teoreticky by to mohlo fungovať, keď človek opustí počítač, senzor by to zistil že.. Aj tieto senzory majú vstavaný časový limit a gombíky citlivosti. Pripojil som teda jeden a hral som s ním, ale zdá sa, že snímač nie je vyrobený na krátku vzdialenosť (má široký uhol), dával všetky druhy falošných upozornení.

3. Detekcia tváre pomocou webovej kamery. Táto možnosť sa mi zdala veľmi zaujímavá, pretože som sa s týmto počítačovým poľom hrával v ďalších mojich projektoch, ako sú: https://github.com/danionescu0/robot-camera-platfo… a https://github.com/danionescu0/image-processing- pr…

Toto bol kus koláča! Existovali však určité nevýhody: fotoaparát prenosného počítača nebolo možné používať, keď bol program spustený, na iné účely a boli by na to potrebné určité počítačové zdroje. Preto som od tejto myšlienky upustil.

Ak máte ďalšie nápady, ako by sa to dalo urobiť, zdieľajte ich, vďaka!

Odporúča: