Tartalomjegyzék:

A számítógéprendszer automatikus lezárása: 4 lépés
A számítógéprendszer automatikus lezárása: 4 lépés

Videó: A számítógéprendszer automatikus lezárása: 4 lépés

Videó: A számítógéprendszer automatikus lezárása: 4 lépés
Videó: Windows 10 gyorsítása - 4 műküdő és egyszerű tipp! 2024, Július
Anonim
Image
Image
Összeszerelés és feltöltés
Összeszerelés és feltöltés

Ebben az oktatóanyagban megvizsgáljuk a számítógép képernyőzárának biztonságát. Az operációs rendszerek konfigurálható időtúllépéssel rendelkeznek, amely lezárja a képernyőt, ha a felhasználó nem érintette meg az egeret vagy a billentyűzetet.

Az alapértelmezett érték általában egy perc. Ha ezt az alapértelmezettet követi, és forgalmas környezetben hagyja számítógépét, akkor valaki elérheti a számítógépet abban a percben, amíg a képernyő le nem zár. Ha néhány másodpercre állítja, nagyon gyakran megjelenik a lezárási képernyő, amikor nem érinti meg a billentyűzetet, és ez bosszantó…

Egy nap egy kolléganőm megkérdezte tőlem, hogy tudom -e "kijavítani" ezt a problémát valamilyen eszközzel, amely lezárja a számítógépet, amikor nincs ott, és elfogadtam a kihívást:)

A fejemben több lehetőséget is megvizsgáltam, mint például az arduinos és az infravörös hőmérő, a PIR -érzékelő, vagy esetleg az arcfelismerés használata a számítógépen, de egy egyszerűbb módszer mellett döntöttem:

Az Arduino Leonardo HID funkciót (a billentyűzet emulálása) és az ultrahangos távolságérzékelőt kombináljuk annak érzékelésére, hogy valaki használja -e a számítógépet, ha nem, akkor az eszköz billentyűkombinációt küld USB -n keresztül a számítógép lezárásához.

1. lépés: Alkatrészek

Mivel ez a koncepció bizonyítéka, a készüléket egy kenyérsütő táblára építjük

Szükséged lesz:

1. Arduino Leonardo (fontos a Leonardo használata, mert emulálni tudja a billentyűzetet)

2. HC-SR04 ultrahangos távolságérzékelő

3. 2 x 10 K változó ellenállás

4. kenyeretábla, kenyeretábla vezetékek

5. USB kábel

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

2. lépés: Összeszerelés és feltöltés

Összeszerelés és feltöltés
Összeszerelés és feltöltés

Először ellenőrizze, hogy rendelkezik -e az összes szükséges összetevővel és Arduino IDE -vel. Röviden átmegyek a csatlakozási lépésekre, és mindig megnézheti a mellékelt fritázó vázlatot

Összeszerelés

1. Tegye a Leonardo -t a kenyérpadra, és tartsa a helyén egy gumiszalaggal

2. tegye a két változó ellenállást, az OLED kijelzőt és az ultrahangos érzékelőt a kenyérsütő táblára

3. csatlakoztassa az alapokat és a vcc -ket

4. csatlakoztassa az ellenállások középső csapjait az arduino A0 és A1 -hez

5. csatlakoztassa a kijelző SDA -ját és SCL -jét a Leonardo -n megjelölt SDA és SCL -hez

6. Csatlakoztassa az ultrahangos érzékelő kioldó- és visszhangcsapját a Leonardo 12, 13 digitális csapjához

7. csatlakoztassa az USB -t a számítógéphez

Feltöltés

Először is le kell töltenie és telepítenie kell a szükséges arduino könyvtárakat:

1. GOFi2cOLED könyvtár:

2. Ultrahangos-HC-SR04 könyvtár:

Ha nem tudja, hogyan kell telepíteni az arduino könyvtárakat, nézze meg ezt az oktatóanyagot.

Miután letöltötte és telepítette a fenti könyvtárakat, klónozhatja vagy letöltheti az itt található arduino táromat: https://github.com/danionescu0/arduino, és ezt a vázlatot használjuk: https://github.com/danionescu0 /arduino/tree/master…

Vagy másolja és illessze be az alábbi kódot:

/ * * A projekt által használt könyvtárak: * * 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;

Ultrahangos ultrahangos (12, 13);

const bájt távolságPot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int aktuálisDistance; előjel nélküli hosszú maxDistanceDetectionTime; bool lockTimerStarted = hamis;

üres beállítás ()

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

üres hurok ()

{clearDisplay (); ténylegesTávolság = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("zárolási időzítő indul"); } else if (! shouldEnableLockTimer ()) {Serial.println ("zárolási időzítő letiltva"); lockTimerStarted = hamis; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Zárolt képernyő"); } késleltetés (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int lubatudDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && tényleges távolság - getDistance ()> megengedett távolság; }

void writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "Aktuális távolság:", Karakterlánc (tényleges távolság)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String message = ""; if (shouldLockScreen ()) {message = "zár elküldve"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "no"; } setDisplayText (1, "Zárolás:", üzenet); }

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 távolságSzám = 0; for (byte i = 0; i <10; i ++) {distanceSum+= ultrahangos. Távolság (CM); }

visszatérési távolságSum / 10;

}

int getDistance ()

{visszatérési térkép (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{return map (analogRead (distancePot), 0, 1024, 0, 20); }

void lockScreen ()

{Serial.println ("megnyomás"); Keyboard.press (KEY_LEFT_CTRL); késleltetés (10); Keyboard.press (KEY_LEFT_ALT); késleltetés (10); Keyboard.write ('l'); késleltetés (10); Keyboard.releaseAll (); }

Végül csatlakoztassa az arduino -t a számítógéphez az USB -kábellel, és töltse fel a vázlatot az arduino -ba.

3. lépés: Az eszköz használata

A készülék használata
A készülék használata

Ha az arduino csatlakoztatva van a számítógéphez, akkor folyamatosan figyelni fogja az érzékelő előtti távolságot, és ha a távolság növekszik, elküldi a "zár" képernyő billentyűkombinációt.

A készülék néhány konfigurációval rendelkezik:

1. Normál távolság, a távolság az A0 -hoz csatlakoztatott változó ellenállás segítségével konfigurálható. A távolság az OLED kijelzőn is megjelenik. Amikor a távolság 25% -kal növekszik a beállított távolságtól, megkezdődik a visszaszámlálás

2. Időtúllépés (visszaszámlálás). Az időkorlát másodpercben az A1 -hez csatlakoztatott ellenállásból is konfigurálható. Amikor az időtúllépés lejár, a zár parancs elküldésre kerül

3. Zár billentyűkombináció. Az alapértelmezett zár billentyűkombináció Ubuntu Linux 18 (CTRL+ALT+L) esetén működik. A kombináció megváltoztatásához módosítania kell a vázlatot az operációs rendszernek megfelelően:

4. Időtúllépés és távolságvédelem. Mivel ez egy olyan eszköz, amely a billentyűzetet emulálja, jó ötlet, ha van egy mechanizmusa a billentyűzet funkcióinak kikapcsolására. A vázlatomban úgy döntöttem, hogy az időtúllépésnek és a távolságnak nagyobbnak kell lennie, mint "1". (tetszés szerint módosíthatja a kódban)

Keresse meg és módosítsa a "lockScreen ()" funkciót

void lockScreen () {Serial.println ("megnyomás"); Keyboard.press (KEY_LEFT_CTRL); késleltetés (10); Keyboard.press (KEY_LEFT_ALT); késleltetés (10); Keyboard.write ('l'); késleltetés (10); Keyboard.releaseAll (); }

Az arduino speciális kulcsok teljes listáját itt találja:

4. lépés: Más megközelítések

A megvalósítás előtt néhány más megvalósítást is fontolóra vettem:

1. Infravörös hőmérő (MLX90614 https://www.sparkfun.com/products/10740). Az infravörös hőmérő egy olyan eszköz, amely méri a hőmérsékletet a távoli tárgy által kibocsátott infravörös sugárzás elemzésével. Volt egy fekvőhelyem, és arra gondoltam, hogy talán felismerhetem a hőmérséklet -különbséget a számítógép előtt.

Csatlakoztattam, de a hőmérséklet különbség nagyon kicsi volt (ha elöl voltam vagy sem) 1-2 fok, és azt hittem, hogy ez nem lehet olyan megbízható

2. PIR érzékelő. (https://www.sparkfun.com/products/13285) Ezeket az olcsó érzékelőket "mozgásérzékelőként" forgalmazzák, de valóban érzékelik az infravörös sugárzás változásait, így elméletileg működhet, amikor egy személy elhagyja a számítógépet, amelyet az érzékelő észlelne Ezeket az érzékelőket is beépített időkorlát és érzékenységgombok. Szóval összekapcsoltam egyet és játszottam vele, de úgy tűnik, hogy az érzékelő nem közelről készült (széles látószögű), mindenféle téves riasztást adott.

3. Arcfelismerés a webkamera segítségével. Ez a lehetőség nagyon érdekesnek tűnt, mivel ezzel a számítógépes mezővel játszottam más projektjeimben, például: https://github.com/danionescu0/robot-camera-platfo… és https://github.com/danionescu0/image-processing- pr…

Ez egy sütemény volt! De volt néhány hátránya: a laptop fényképezőgépét nem lehetett más célokra használni, amikor a program futott, és ehhez néhány számítógépes erőforrás szükséges. Szóval ezt az ötletet is elvetettem.

Ha van további ötlete, hogyan lehetne ezt megvalósítani, ossza meg velünk, köszönöm!

Ajánlott: