INHOUDSOPGAWE:

Auto Lock Computer System: 4 stappe
Auto Lock Computer System: 4 stappe

Video: Auto Lock Computer System: 4 stappe

Video: Auto Lock Computer System: 4 stappe
Video: “Yeah yantra kaise kam karta hai?” #littleglove #ashortaday #shorts #miniglovevlog 2024, November
Anonim
Image
Image
Vergadering en oplaai
Vergadering en oplaai

In hierdie tutoriaal gaan ons die veiligheid van die rekenaarskermslot ondersoek. Bedryfstelsels het 'n instelbare time -out wat u skerm kan sluit as die gebruiker nie met die muis of sleutelbord geraak het nie.

Gewoonlik is die standaard ongeveer een minuut. As u hierdie standaard volg en u rekenaar in 'n besige omgewing laat, kan iemand binne die minuut toegang tot u rekenaar kry totdat die skerm sluit. As u dit op 'n paar sekondes stel, kry u die sluitskerm gereeld as u nie aan die sleutelbord raak nie, en dit is irriterend …

Op 'n dag het 'n kollega my gevra of ek hierdie probleem kan 'regmaak' met 'n toestel wat die rekenaar sluit as hy nie daar is nie, en ek het die uitdaging aangepak:)

Ek het verskeie opsies in my kop ondersoek, soos die gebruik van arduino's en 'n infrarooi termometersensor, PIR -sensor of miskien gesigsopsporing op die rekenaar, maar ek het besluit op 'n eenvoudiger metode:

Ons gaan die Arduino Leonardo HID -funksie (navolg sleutelbord) kombineer met 'n ultrasoniese afstandsensor om vas te stel of iemand die rekenaar gebruik, indien nie, stuur die toestel 'n sleutelkombinasie via USB om die rekenaar te sluit.

Stap 1: Komponente

Omdat dit 'n bewys van die konsep is, gaan ons die toestel op 'n broodbord bou

Jy benodig:

1. Arduino Leonardo (dit is belangrik om Leonardo te gebruik, want dit kan sleutelbord navolg)

2. HC-SR04 ultrasoniese afstandsensor

3. 2 x 10 K veranderlike weerstande

4. broodbord, broodbord drade

5. USB -kabel

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

Stap 2: Vergadering en oplaai

Vergadering en oplaai
Vergadering en oplaai

Kyk eers of u al die nodige komponente en 'n Arduino IDE het. Ek gaan kortliks na die verbindingsstappe, en u kan altyd kyk na die aangehegte skets

Vergadering

1. Sit die Leonardo op die broodbord en hou dit vas met 'n rekkie

2. plaas die twee veranderlike weerstande, die OLED -skerm en die ultrasoniese sensor op die broodbord

3. verbind gronde en vcc's

4. verbind die middelste penne van die weerstande met die arduino A0 en A1

5. verbind die SDA en SCL van die skerm met die SDA en SCL wat op die Leonardo gemerk is

6. koppel die sneller en eggo -pen van die ultrasoniese sensor aan die 12, 13 digitale penne van die Leonardo

7. verbind die USB met die rekenaar

Laai op

Eerstens moet u die nodige arduino -biblioteke aflaai en installeer:

1. GOFi2cOLED -biblioteek:

2. Ultrasonic-HC-SR04 biblioteek:

As u nie weet hoe om arduino -biblioteke te installeer nie, kyk dan na hierdie handleiding.

Nadat u die bogenoemde biblioteke afgelaai en geïnstalleer het, kan u my arduino -bewaarplek hier aflaai: https://github.com/danionescu0/arduino, en ons sal hierdie skets gebruik: https://github.com/danionescu0 /arduino/boom/meester …

Of u kan die onderstaande kode kopieer en plak:

/ * * Biblioteke wat deur hierdie projek gebruik word: * * 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;

Ultrasoniese ultraklank (12, 13);

const byte distancePot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; ongetekende lang maxDistanceDetectionTime; bool lockTimerStarted = vals;

leemte opstelling ()

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

leemte lus ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); as (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("sluit timer begin"); } anders as (! shouldEnableLockTimer ()) {Serial.println ("sluittimer gedeaktiveer"); lockTimerStarted = vals; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Sluitskerm"); } vertraging (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

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

leegte skryfStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String boodskap = ""; if (shouldLockScreen ()) {message = "slot gestuur"; } anders as (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } anders {boodskap = "nee"; } setDisplayText (1, "Sluit:", boodskap); }

leemte initialiseerDisplay ()

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

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

{GOFoled.setTextSize (fontSize); GOFoled.println (label + ":" + data); }

nietig doDisplay ()

{GOFoled.display (); }

leegte duidelik vertoon ()

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

int getActualDistance ()

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

retourafstandSom / 10;

}

int getDistance ()

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

int getTimer ()

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

leemte slotSkerm ()

{Serial.println ("druk"); Sleutelbord.pers (KEY_LEFT_CTRL); vertraging (10); Sleutelbord.pers (KEY_LEFT_ALT); vertraging (10); Sleutelbord.skryf ('l'); vertraging (10); Keyboard.releaseAll (); }

Sluit uiteindelik die arduino aan op die rekenaar met die usb -kabel en laai die skets in die arduino op.

Stap 3: Gebruik die toestel

Die gebruik van die toestel
Die gebruik van die toestel

As die arduino aan die rekenaar gekoppel is, sal dit die afstand voor die sensor deurlopend monitor en 'n 'sluit' skermkombinasie na die rekenaar stuur as die afstand toeneem.

Die toestel het 'n paar konfigurasies:

1. Normale afstand, die afstand kan gekonfigureer word met behulp van die veranderlike weerstand wat aan die A0 gekoppel is. Die afstand word ook op die OLED vertoon. As die afstand met 25% toeneem van die een wat ingestel is, begin 'n aftelling

2. Time -out (aftelling). Die time -out in sekondes kan ook gekonfigureer word vanaf die weerstand wat op die A1 gekoppel is. As die time -out verstryk, word die slotopdrag gestuur

3. Sluit sleutelkombinasie. Die standaard sleutelsleutelkombinasie is ingestel om te werk vir Ubuntu Linux 18 (CTRL+ALT+L). Om die kombinasie te verander, moet u u skets volgens u bedryfstelsel aanpas:

4. Time -out en afstandsbeskerming. Omdat dit 'n toestel is wat die sleutelbord naboots, is dit 'n goeie idee om 'n meganisme te hê om die funksie van die sleutelbord uit te skakel. In my skets het ek gekies dat die time -out en afstand groter moet wees as "1". (u kan dit in die kode verander as u wil)

Soek en verander die funksie "lockScreen ()"

void lockScreen () {Serial.println ("druk"); Sleutelbord.pers (KEY_LEFT_CTRL); vertraging (10); Sleutelbord.pers (KEY_LEFT_ALT); vertraging (10); Sleutelbord.skryf ('l'); vertraging (10); Keyboard.releaseAll (); }

Vir 'n volledige lys van spesiale arduino -sleutels, kyk hier:

Stap 4: Ander benaderings

Voor hierdie implementering het ek ook 'n paar ander implementasies oorweeg:

1. Infrarooi termometer (MLX90614 https://www.sparkfun.com/products/10740). 'N Infrarooi termometer is 'n toestel wat temperatuur meet deur die analise van infrarooi straling wat 'n voorwerp op 'n afstand uitstraal. Ek het een laat lê en ek het gedink ek kan die temperatuurverskil voor die rekenaar opspoor.

Ek het dit aangeskakel, maar die temperatuurverskil was baie klein (as ek voor was of nie) 1-2 grade en ek het gedink dit kan nie so betroubaar wees nie

2. PIR -sensor. (https://www.sparkfun.com/products/13285) Hierdie goedkoop sensors word as 'bewegingsensors' bemark, maar hulle bespeur werklik veranderinge in infrarooi straling, sodat dit in teorie kan werk, as 'n persoon die rekenaar verlaat, sal die sensor dit opspoor dat.. Ook hierdie sensors het 'n ingeboude time -out en sensitiwiteitsknoppe. Ek het dus een aangeskakel en daarmee gespeel, maar dit lyk asof die sensor nie van naby gemaak is nie (dit het 'n wye hoek), maar dit het allerhande valse waarskuwings gegee.

3. Gesigsopsporing met behulp van die webcam. Hierdie opsie het baie interessant gelyk, aangesien ek in hierdie ander projekte met hierdie rekenaarveld gespeel het, soos: https://github.com/danionescu0/robot-camera-platfo… en https://github.com/danionescu0/image-processing- pr…

Dit was 'n stukkie koek! Maar daar was 'n paar nadele: die skootrekenaarkamera kon nie vir ander doeleindes gebruik word terwyl die program aan die gang was nie, en daarvoor sou 'n paar rekenaarbronne nodig wees. So ek het hierdie idee ook laat vaar.

As u meer idees het oor hoe dit gedoen kan word, deel dit asseblief, dankie!

Aanbeveel: