Obsah:

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

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

Video: Automatický zámek 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, Listopad
Anonim
Image
Image
Sestavení a nahrání
Sestavení a nahrání

V tomto kurzu prozkoumáme zabezpečení zámku obrazovky počítače. Operační systémy mají konfigurovatelný časový limit, který uzamkne vaši obrazovku, pokud se uživatel nedotkl myši nebo klávesnice.

Výchozí hodnota je obvykle kolem jedné minuty. Pokud dodržíte toto výchozí nastavení a necháte počítač v rušném prostředí, někdo může do té minuty přistupovat k vašemu počítači, dokud se obrazovka nezamkne. Pokud ji nastavíte na několik sekund, obrazovka zámku se vám bude zobrazovat velmi často, když se nedotknete klávesnice, a to je nepříjemné …

Jednoho dne se mě kolega z práce zeptal, zda mohu tento problém „vyřešit“nějakým zařízením, které uzamkne počítač, když tam není, a já jsem výzvu přijal:)

V hlavě jsem prozkoumal několik možností, jako je použití arduinos a infračerveného čidla teploměru, PIR čidla nebo možná pomocí detekce obličeje na počítači, ale rozhodl jsem se pro jednodušší metodu:

Zkombinujeme funkcionalitu Arduino Leonardo HID (emulace klávesnice) s ultrazvukovým senzorem vzdálenosti, abychom zjistili, zda osoba používá počítač, pokud ne, zařízení odešle kombinaci klíčů přes USB k uzamčení počítače.

Krok 1: Součásti

Protože toto je důkaz koncepce, postavíme zařízení na prkénko

Budeš potřebovat:

1. Arduino Leonardo (je důležité používat Leonardo, protože dokáže emulovat klávesnici)

2. Ultrazvukový snímač vzdálenosti HC-SR04

3. 2 x 10 K variabilní odpory

4. prkénko na krájení, dráty na prkénko

5. USB kabel

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

Krok 2: Sestavení a nahrání

Sestavení a nahrání
Sestavení a nahrání

Nejprve zkontrolujte, zda máte všechny potřebné součásti a IDE Arduino. Stručně se podívám na kroky připojení a vždy se můžete podívat na přiložené schematické schéma

Shromáždění

1. Položte Leonardo na prkénko a držte jej na místě gumičkou

2. umístěte dva variabilní odpory, OLED displej a ultrazvukový senzor na prkénko

3. propojte uzemnění a virtuální počítače

4. připojte střední piny rezistorů k arduino A0 a A1

5. připojte SDA a SCL displeje k SDA a SCL označeným na Leonardu

6. Připojte spouštěcí a ozvěnový kolík ultrazvukového senzoru k 12, 13 digitálním pinům Leonarda

7. připojte USB k počítači

nahrát

Nejprve si musíte stáhnout a nainstalovat potřebné arduino knihovny:

1. Knihovna GOFi2cOLED:

2. Knihovna Ultrasonic-HC-SR04:

Pokud nevíte, jak nainstalovat knihovny arduino, podívejte se na tento tutoriál.

Poté, co si stáhnete a nainstalujete výše uvedené knihovny, můžete klonovat nebo stáhnout můj arduino repozitář umístěný zde: https://github.com/danionescu0/arduino a použijeme tento náčrt: https://github.com/danionescu0 /arduino/strom/pán…

Nebo můžete zkopírovat a vložit níže uvedený kód:

/ * * Knihovny používané tímto projektem: * * 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);

vzdálenost konstant bajtůPot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int skutečná vzdálenost; bez znaménka dlouhý maxDistanceDetectionTime; bool lockTimerStarted = false;

neplatné nastavení ()

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

prázdná smyčka ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = milis (); Serial.println ("časovač zámku začíná"); } else if (! shouldEnableLockTimer ()) {Serial.println ("časovač zámku deaktivován"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println („Zamykací obrazovka“); } zpoždění (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int povolená vzdálenost = procentaMaxDistanceChangedAllowed / 100 * getDistance (); vrátit getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowDistance; }

neplatné writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "Skutečná vzdálenost:", Řetězec (skutečná vzdálenost)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Řetězcová zpráva = ""; if (shouldLockScreen ()) {message = "lock sent"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "ne"; } setDisplayText (1, "Zamykání:", zpráva); }

void initializeDisplay ()

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

void setDisplayText (byte fontSize, String label, String data)

{GOFoled.setTextSize (fontSize); GOFoled.println (štítek + ":" + 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+= ultrasonic. Ranging (CM); }

návratová vzdálenostSum / 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 ("stisknutí"); Keyboard.press (KEY_LEFT_CTRL); zpoždění (10); Keyboard.press (KEY_LEFT_ALT); zpoždění (10); Keyboard.write ('l'); zpoždění (10); Keyboard.releaseAll (); }

Nakonec připojte arduino k počítači pomocí USB kabelu a nahrajte skicu do arduina.

Krok 3: Používání zařízení

Používání zařízení
Používání zařízení

Když je arduino připojeno k počítači, bude nepřetržitě sledovat vzdálenost před senzorem a pokud se vzdálenost zvětší, odešle do počítače kombinaci kláves „zámku“na obrazovce.

Zařízení má několik konfigurací:

1. Normální vzdálenost, vzdálenost lze konfigurovat pomocí variabilního odporu připojeného k A0. Vzdálenost je také zobrazena na OLED. Když se vzdálenost zvýší o 25% od té, která je nastavena, začne odpočítávání

2. Timeout (odpočítávání). Časový limit v sekundách je také konfigurovatelný z odporu připojeného k A1. Po vypršení časového limitu bude odeslán příkaz zámku

3. Kombinace kláves zámku. Výchozí kombinace kláves zámku je nastavena tak, aby fungovala pro Ubuntu Linux 18 (CTRL+ALT+L). Chcete -li změnit kombinaci, musíte upravit svůj náčrt podle svého operačního systému:

4. Časový limit a ochrana na dálku. Protože se jedná o zařízení, které emuluje klávesnici, je vhodné mít mechanismus deaktivace funkcí klávesnice. Ve svém náčrtu jsem zvolil, že časový limit a vzdálenost musí být větší než "1". (můžete to v kódu upravit, pokud chcete)

Vyhledejte a změňte funkci "lockScreen ()"

void lockScreen () {Serial.println ("stisknutí"); Keyboard.press (KEY_LEFT_CTRL); zpoždění (10); Keyboard.press (KEY_LEFT_ALT); zpoždění (10); Keyboard.write ('l'); zpoždění (10); Keyboard.releaseAll (); }

Úplný seznam speciálních klíčů arduino naleznete zde:

Krok 4: Jiné přístupy

Před touto implementací jsem zvažoval i další implementace:

1. Infračervený teploměr (MLX90614 https://www.sparkfun.com/products/10740). Infračervený teploměr je zařízení, které měří teplotu analyzováním infračerveného záření emitovaného objektem na dálku. Ležel jsem tam jeden a říkal jsem si, že možná dokážu zjistit rozdíl teplot před počítačem.

Zapojil jsem to, ale teplotní rozdíl byl velmi malý (když jsem byl vpředu nebo ne) 1-2 stupně a myslel jsem si, že to nemůže být tak spolehlivé

2. Čidlo PIR. (https://www.sparkfun.com/products/13285) Tyto levné senzory jsou prodávány jako „pohybové senzory“, ale skutečně detekují změny v infračerveném záření, takže teoreticky by to mohlo fungovat, když člověk opustí počítač, senzor by detekoval že.. Také tyto senzory mají vestavěný časový limit a knoflíky citlivosti. Zapojil jsem tedy jeden a hrál si s ním, ale zdá se, že senzor není vyroben pro blízký dosah (má široký úhel), dával všechny druhy falešných upozornění.

3. Rozpoznání obličeje pomocí webové kamery. Tato možnost se mi zdála velmi zajímavá, protože jsem s tímto počítačovým polem hrál v mých dalších projektech, jako jsou: https://github.com/danionescu0/robot-camera-platfo… a https://github.com/danionescu0/image-processing- pr…

Tohle byla pecka! Existovaly však určité nevýhody: kameru notebooku nebylo možné použít k jiným účelům, když byl program spuštěn, a byly by k tomu zapotřebí určité počítačové zdroje. Takže jsem tuto myšlenku také zahodil.

Pokud máte další nápady, jak toho dosáhnout, podělte se o ně, díky!

Doporučuje: