Indholdsfortegnelse:
Video: Autolås computersystem: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I denne vejledning vil vi undersøge sikkerheden ved computerskærmlås. Operativsystemer har en konfigurerbar timeout, der låser din skærm, hvis brugeren ikke har rørt musen eller tastaturet.
Normalt er standard omkring et minut. Hvis du følger denne standard og efterlader din computer i et travlt miljø, kan nogen få adgang til din computer i det minut, indtil skærmen låses. Hvis du indstiller det til et par sekunder, får du låseskærmen meget ofte, når du ikke rører ved tastaturet, og det er irriterende …
En dag spurgte en arbejdskollega mig, om jeg kan "løse" dette problem med en slags enhed, der låser computeren, når han ikke er der, og jeg tog udfordringen:)
Jeg har undersøgt flere muligheder i mit hoved som at bruge arduinos og en infrarød termometersensor, PIR -sensor eller måske bruge ansigtsregistrering på computeren, men jeg har besluttet mig for en enklere metode:
Vi vil kombinere Arduino Leonardo HID -funktionalitet (efterligne tastatur) med en ultralydsafstandssensor for at registrere, om en person bruger computeren, hvis ikke sender en tastekombination via USB for at låse computeren.
Trin 1: Komponenter
Fordi dette er et bevis på koncept, skal vi bygge enheden på et brødbræt
Du skal bruge:
1. Arduino Leonardo (det er vigtigt at bruge Leonardo, fordi det kan efterligne tastatur)
2. HC-SR04 ultralydsafstandssensor
3. 2 x 10 K variable modstande
4. brødbræt, brødbrætstråde
5. USB -kabel
6. OLED -skærm (https://www.adafruit.com/product/931)
Trin 2: Montering og upload
Kontroller først, om du har alle de nødvendige komponenter og en Arduino IDE. Jeg vil kort gå til forbindelsestrinene, og du kan altid tage et kig på den vedlagte fritzing -skematik
montage
1. Læg Leonardo på brødbrættet, og hold den på plads med et gummibånd
2. Sæt de to variable modstande, OLED -displayet og ultralydssensoren på brødbrættet
3. tilslut grunde og vcc'er
4. tilslut de midterste ben på modstandene til arduino A0 og A1
5. tilslut SDA og SCL på displayet til SDA og SCL markeret på Leonardo
6. Slut ultralydssensorens trigger og ekko -pin til Leonardos 12, 13 digitale ben
7. tilslut USB'en til computeren
Upload
Først og fremmest skal du downloade og installere de nødvendige arduino -biblioteker:
1. GOFi2cOLED -bibliotek:
2. Ultrasonic-HC-SR04 bibliotek:
Hvis du ikke ved, hvordan du installerer arduino -biblioteker, kan du tjekke denne vejledning.
Når du har downloadet og installeret bibliotekerne ovenfor, kan du klone eller downloade mit arduino -depot placeret her: https://github.com/danionescu0/arduino, og vi vil bruge denne skitse: https://github.com/danionescu0 /arduino/træ/mester …
Eller du kan kopiere og indsætte koden herunder:
/ * * Biblioteker, der bruges af dette projekt: * * 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;
Ultralyds ultralyd (12, 13);
const byte distancePot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; usigneret lang maxDistanceDetectionTime; bool lockTimerStarted = false;
ugyldig opsætning ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
hulrum ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); hvis (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("låstimer begynder"); } ellers hvis (! shouldEnableLockTimer ()) {Serial.println ("låsetimer deaktiveret"); lockTimerStarted = false; } hvis (shouldLockScreen ()) {lockScreen (); Serial.println ("Låseskærm"); } forsinkelse (100); }
bool shouldLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool shouldEnableLockTimer ()
{int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowDistance; }
void writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Timer:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String besked = ""; if (shouldLockScreen ()) {message = "lock sent"; } ellers hvis (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } andet {message = "no"; } setDisplayText (1, "Låsning:", besked); }
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 distanceSum = 0; for (byte i = 0; i <10; i ++) {distanceSum+= ultralyd. Rangering (CM); }
returafstandSum / 10;
}
int getDistance ()
{returkort (analogRead (timerPot), 0, 1024, 0, 200); }
int getTimer ()
{returkort (analogRead (distancePot), 0, 1024, 0, 20); }
void lockScreen ()
{Serial.println ("trykke"); Keyboard.press (KEY_LEFT_CTRL); forsinkelse (10); Keyboard.press (KEY_LEFT_ALT); forsinkelse (10); Keyboard.write ('l'); forsinkelse (10); Keyboard.releaseAll (); }
Tilslut til sidst arduino computeren ved hjælp af usb -kablet, og upload skitsen til arduinoen.
Trin 3: Brug af enheden
Når arduinoen er tilsluttet computeren, vil den løbende overvåge afstanden foran sensoren og sende en "lås" skærmtastkombination til computeren, hvis afstanden stiger.
Enheden har nogle konfigurationer:
1. Normal afstand, afstanden kan konfigureres ved hjælp af den variable modstand, der er forbundet til A0. Afstanden vises også på OLED. Når afstanden øges med 25% fra den, der er indstillet, begynder en nedtælling
2. Timeout (nedtælling). Tiden i sekunder kan også konfigureres fra modstanden, der er tilsluttet A1. Når timeout'en udløber, sendes låsekommandoen
3. Lås tastaturkombination. Standardlåsetastkombinationen er konfigureret til at fungere til Ubuntu Linux 18 (CTRL+ALT+L). For at ændre kombinationen skal du ændre din skitse i henhold til dit operativsystem:
4. Timeout og afstandsbeskyttelse. Fordi dette er en enhed, der efterligner tastaturet, er det en god idé at have en mekanisme til deaktivering af tastaturfunktionen. I min skitse har jeg valgt, at timeout og afstand skal være større end "1". (du kan ændre det i koden, hvis du vil)
Find og rediger funktionen "lockScreen ()"
void lockScreen () {Serial.println ("trykke"); Keyboard.press (KEY_LEFT_CTRL); forsinkelse (10); Keyboard.press (KEY_LEFT_ALT); forsinkelse (10); Keyboard.write ('l'); forsinkelse (10); Keyboard.releaseAll (); }
For en komplet liste over arduino -specialnøgler, tjek her:
Trin 4: Andre tilgange
Før denne implementering har jeg også overvejet nogle andre implementeringer:
1. Infrarødt termometer (MLX90614 https://www.sparkfun.com/products/10740). Et infrarødt termometer er en enhed, der måler temperatur ved at analysere infrarøde stråler udsendt af et objekt på afstand. Jeg havde en liggende, og jeg tænkte, at jeg måske kunne opdage forskellen i temperatur foran computeren.
Jeg har tilsluttet det, men temperaturforskellen var meget lille (når jeg var foran eller ej) 1-2 grader, og jeg tænkte, at det ikke kunne være så pålideligt
2. PIR sensor. (https://www.sparkfun.com/products/13285) Disse billige sensorer markedsføres som "bevægelsessensorer", men de registrerer virkelig ændringer i infrarød stråling, så i teorien kan det fungere, når en person forlader computeren, ville sensoren registrere at.. Også disse sensorer har en indbygget timeout og følsomhedsknapper. Så jeg har tilsluttet en og leget med den, men det ser ud til, at sensoren ikke er lavet til et nært hold (den har en vidvinkel), den gav alle former for falske advarsler.
3. Ansigtsregistrering ved hjælp af webcam. Denne indstilling virkede meget interessant, da jeg legede med dette computerfelt i mine andre projekter som: https://github.com/danionescu0/robot-camera-platfo… og https://github.com/danionescu0/image-processing- pr…
Dette var et stykke kage! Men der var nogle ulemper: Det bærbare kamera kunne ikke bruges til andre formål, når programmet kørte, og nogle computerressourcer ville være nødvendige for det. Så jeg har også droppet denne idé.
Hvis du har flere ideer til, hvordan dette kan gøres, kan du dele dem, tak!
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)