INHOUDSOPGAWE:
- Stap 1: Komponente
- Stap 2: Vergadering en oplaai
- Stap 3: Gebruik die toestel
- Stap 4: Ander benaderings
Video: Auto Lock Computer System: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
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
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
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:
LCD Display Home Lock System: 6 stappe
Lcd -skerm -huisslotstelsel: hierdie projek dien as 'n huisslot, en die enigste manier om die huis binne te kom, is deur op die korrekte driesyferkode te druk. Die LCD sal dien as 'n kommunikasietoestel om die individu in kennis te stel of hy die korrekte kode ingevoer het of nie. Die IR
Smart Central Lock: 6 stappe (met foto's)
Smart Central Lock: Dit voel wonderlik as u die vermoë het om dinge op afstand te beheer. Smart Central lock -toestel vir motorfiets (fiets). Deur hierdie toestel te gebruik, kan u die ontstekingslot van u fietse beheer. u kan dit op afstand sluit/ ontsluit. Kan die enjin ook begin en stop
VBScript Drive Lock: 5 stappe
VBScript Drive Lock: Opdatering: Hierdie program het nou die moontlikheid om die gespesifiseerde geslote skyfies te verberg. hou gebruikers weg
Auto Light System: 4 stappe
Auto Auto Light System: hey ouens, die moderne motor het 'n outomatiese motorligstelsel, wat beteken dat die kopligte outomaties aan en af hang, hang af van die omringende lig, so as dit donker word of as u in 'n tanel ry, word die ligte outomaties aangeskakel. het selfs gedink om te skakel
Arduino Lock Game: 5 stappe
Arduino Lock Game: Hierdie klein slotspel sal 'n getal randomiseer en u toelaat om dit te raai! Die spel word beheer deur 3 knoppies en die nommer is altyd 1-9. Lewer kommentaar op enige aanbevelings of probleme, en ek sal dit probeer oplos