Satura rādītājs:

Automātiska datora sistēmas bloķēšana: 4 soļi
Automātiska datora sistēmas bloķēšana: 4 soļi

Video: Automātiska datora sistēmas bloķēšana: 4 soļi

Video: Automātiska datora sistēmas bloķēšana: 4 soļi
Video: При этом быстрая окупаемость, один клик, ежемесячный налог без налогов // Micloud Redmi 8A Simple 2024, Novembris
Anonim
Image
Image
Montāža un augšupielāde
Montāža un augšupielāde

Šajā apmācībā mēs izpētīsim datora ekrāna bloķēšanas drošību. Operētājsistēmām ir konfigurējams taimauts, kas bloķēs jūsu ekrānu, ja lietotājs nav pieskāries pelei vai tastatūrai.

Parasti noklusējuma vērtība ir aptuveni viena minūte. Ja ievērojat šo noklusējumu un atstājat datoru aizņemtā vidē, šajā minūtē kāds var piekļūt jūsu datoram, līdz ekrāns tiek bloķēts. Ja iestatāt to uz dažām sekundēm, bloķēšanas ekrāns tiks parādīts ļoti bieži, kad nepieskaraties tastatūrai, un tas ir kaitinoši …

Kādu dienu darba kolēģis man jautāja, vai es varu "atrisināt" šo problēmu ar kādu ierīci, kas bloķē datoru, kad viņa tur nav, un es pieņēmu izaicinājumu:)

Es savā galvā esmu izpētījis vairākas iespējas, piemēram, izmantot arduinos un infrasarkano termometra sensoru, PIR sensoru vai varbūt izmantot sejas noteikšanu datorā, taču esmu izvēlējies vienkāršāku metodi:

Mēs apvienosim Arduino Leonardo HID funkcionalitāti (emulācijas tastatūru) ar ultraskaņas attāluma sensoru, lai noteiktu, vai persona izmanto datoru, ja ne, ierīce nosūta taustiņu kombināciju, izmantojot USB, lai bloķētu datoru.

1. darbība: sastāvdaļas

Tā kā tas ir koncepcijas pierādījums, mēs veidosim ierīci uz maizes dēļa

Jums būs nepieciešams:

1. Arduino Leonardo (ir svarīgi izmantot Leonardo, jo tas var atdarināt tastatūru)

2. HC-SR04 ultraskaņas attāluma sensors

3. 2 x 10 K mainīgie rezistori

4. maizes dēlis, maizes dēļa vadi

5. USB kabelis

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

2. darbība: montāža un augšupielāde

Montāža un augšupielāde
Montāža un augšupielāde

Vispirms pārbaudiet, vai jums ir visas nepieciešamās sastāvdaļas un Arduino IDE. Es īsumā apskatīšu savienojuma darbības, un jūs vienmēr varat apskatīt pievienoto fritzes shēmu

Montāža

1. Uzlieciet Leonardo uz maizes dēļa un turiet to vietā ar gumiju

2. ielieciet divus mainīgos rezistorus, OLED displeju un ultraskaņas sensoru uz maizes dēļa

3. savienot pamatus un vcc's

4. savienojiet rezistoru vidējās tapas arduino A0 un A1

5. savienojiet displeja SDA un SCL ar Leonardo atzīmētajiem SDA un SCL

6. savienojiet ultraskaņas sensora sprūdu un atbalss tapu 12, 13 digitālajām Leonardo tapām

7. savienojiet USB ar datoru

Augšupielādēt

Pirmkārt, jums būs jālejupielādē un jāinstalē nepieciešamās arduino bibliotēkas:

1. GOFi2cOLED bibliotēka:

2. Ultraskaņas-HC-SR04 bibliotēka:

Ja jūs nezināt, kā instalēt arduino bibliotēkas, skatiet šo apmācību.

Kad esat lejupielādējis un instalējis iepriekš minētās bibliotēkas, varat klonēt vai lejupielādēt manu arduino krātuvi, kas atrodas šeit: https://github.com/danionescu0/arduino, un mēs izmantosim šo skici: https://github.com/danionescu0 /arduino/koks/meistars…

Vai arī varat nokopēt un ielīmēt tālāk norādīto kodu.

/ * * Šajā projektā izmantotās bibliotēkas: * * 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;

Ultraskaņas ultraskaņa (12, 13);

const baits distancePot = A0;

const baitu taimerisPot = A1; const float percentMaxDistanceChangedAllowed = 25; int factDistance; neparakstīts garš maxDistanceDetectionTime; bool lockTimerStarted = nepatiess;

anulēts iestatījums ()

{Sērijas sākums (9600); Keyboard.begin (); initializeDisplay (); }

tukša cilpa ()

{clearDisplay (); faktiskaisDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = milis (); Serial.println ("sākas bloķēšanas taimeris"); } cits if (! shouldEnableLockTimer ()) {Serial.println ("bloķēšanas taimeris atspējots"); lockTimerStarted = nepatiess; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Bloķēšanas ekrāns"); } kavēšanās (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int atļautsDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); atgriezties getTimer ()> 1 && getDistance ()> 1 && factDistance - getDistance ()> atļautsDistance; }

void writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Taimeris:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (faktiskaisDistance)); int countDown = getTimer () - (milis () - maxDistanceDetectionTime) / 1000; String message = ""; if (shouldLockScreen ()) {message = "slēdzene nosūtīta"; } cits if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } cits {message = "nē"; } setDisplayText (1, "Bloķēšana:", ziņojums); }

void initializeDisplay ()

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

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

{GOFoled.setTextSize (fontSize); GOFoled.println (etiķete + ":" + dati); }

void doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

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

int getActualDistance ()

{int distanceSum = 0; par (baits i = 0; i <10; i ++) {distanceSum+= ultraskaņa. Ranging (CM); }

atgriešanās attālumsSum / 10;

}

int getDistance ()

{atgriešanās karte (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{atgriešanās karte (analogRead (distancePot), 0, 1024, 0, 20); }

void lockScreen ()

{Serial.println ("nospiežot"); Keyboard.press (KEY_LEFT_CTRL); kavēšanās (10); Keyboard.press (KEY_LEFT_ALT); kavēšanās (10); Keyboard.write ('l'); kavēšanās (10); Keyboard.releaseAll (); }

Visbeidzot savienojiet arduino ar datoru, izmantojot USB kabeli, un augšupielādējiet skici arduino.

3. darbība: ierīces lietošana

Ierīces lietošana
Ierīces lietošana

Kad arduino ir pievienots datoram, tas nepārtraukti uzraudzīs attālumu sensora priekšā un nosūtīs datoram bloķēšanas ekrāna taustiņu kombināciju, ja attālums palielinās.

Ierīcei ir dažas konfigurācijas:

1. Normāls attālums, attālumu var konfigurēt, izmantojot mainīgo rezistoru, kas pievienots A0. Attālums tiek parādīts arī OLED. Kad attālums palielināsies par 25% no iestatītā attāluma, sāksies atpakaļskaitīšana

2. Taimauts (atpakaļskaitīšana). Taimauts sekundēs ir konfigurējams arī no pretestības, kas pievienota A1. Kad beidzas taimauts, tiks nosūtīta bloķēšanas komanda

3. Bloķēt taustiņu kombināciju. Noklusējuma bloķēšanas taustiņu kombinācija ir iestatīta darbam Ubuntu Linux 18 (CTRL+ALT+L). Lai mainītu kombināciju, jums ir jāmaina skice atbilstoši operētājsistēmai:

4. Taimauts un attāluma aizsardzība. Tā kā šī ir ierīce, kas atdarina tastatūru, ieteicams izmantot tastatūras funkcionalitātes deaktivizācijas mehānismu. Savā skicē esmu izvēlējies, ka taimautam un attālumam jābūt lielākam par "1". (ja vēlaties, varat to mainīt kodā)

Atrodiet un mainiet funkciju "lockScreen ()"

void lockScreen () {Serial.println ("nospiežot"); Keyboard.press (KEY_LEFT_CTRL); kavēšanās (10); Keyboard.press (KEY_LEFT_ALT); kavēšanās (10); Keyboard.write ('l'); kavēšanās (10); Keyboard.releaseAll (); }

Pilnu arduino īpašo taustiņu sarakstu skatiet šeit:

4. solis: citas pieejas

Pirms šīs ieviešanas es apsvēru arī dažas citas ieviešanas iespējas:

1. Infrasarkanais termometrs (MLX90614 https://www.sparkfun.com/products/10740). Infrasarkanais termometrs ir ierīce, kas mēra temperatūru, analizējot infrasarkano starojumu, ko izstaro objekts no attāluma. Man bija viens, kas gulēja, un es domāju, ka varbūt es varu noteikt temperatūras atšķirību datora priekšā.

Esmu to savienojis, bet temperatūras starpība bija ļoti maza (kad es biju priekšā vai nē) 1-2 grādi, un es domāju, ka tas nevar būt tik uzticams

2. PIR sensors. (https://www.sparkfun.com/products/13285) Šie lētie sensori tiek pārdoti kā "kustības sensori", taču tie patiešām nosaka izmaiņas infrasarkanajā starojumā, tāpēc teorētiski tas varētu darboties, kad cilvēks pamet datoru, sensors to atklātu ka.. Arī šiem sensoriem ir iebūvēts taimauts un jutīguma pogas. Tāpēc es vienu esmu piesaistījis un spēlējis ar to, bet šķiet, ka sensors nav paredzēts tuvam diapazonam (tam ir platleņķis), tas deva visu veidu nepatiesus brīdinājumus.

3. Sejas noteikšana, izmantojot tīmekļa kameru. Šī opcija šķita ļoti interesanta, jo es spēlēju ar šo datora lauku savos citos projektos, piemēram: https://github.com/danionescu0/robot-camera-platfo… un https://github.com/danionescu0/image-processing- pr…

Šis bija kūkas gabals! Bet bija daži trūkumi: klēpjdatora kameru nevarēja izmantot citiem mērķiem, kad programma darbojās, un tam būs nepieciešami daži datora resursi. Tāpēc arī šo ideju esmu atmetis.

Ja jums ir vairāk ideju, kā to izdarīt, lūdzu, dalieties ar tām, paldies!

Ieteicams: