Բովանդակություն:

Auto Lock համակարգչային համակարգ `4 քայլ
Auto Lock համակարգչային համակարգ `4 քայլ

Video: Auto Lock համակարգչային համակարգ `4 քայլ

Video: Auto Lock համակարգչային համակարգ `4 քայլ
Video: 🇦🇿Азербайджанские солдаты и взятые в плен армянские дети 2024, Հուլիսի
Anonim
Image
Image
Հավաքում և վերբեռնում
Հավաքում և վերբեռնում

Այս ձեռնարկում մենք ուսումնասիրելու ենք համակարգչի էկրանի կողպման անվտանգությունը: Օպերացիոն համակարգերն ունեն կարգավորելի ընդմիջում, որը կողպելու է ձեր էկրանը, եթե օգտագործողը ձեռք չի տվել մկնիկին կամ ստեղնաշարին:

Սովորաբար կանխադրվածը մոտ մեկ րոպե է: Եթե հետևեք այս կանխադրվածին և ձեր համակարգիչը թողեք զբաղված միջավայրում, ինչ -որ մեկը կարող է մուտք գործել ձեր համակարգիչ այդ րոպեին, մինչև էկրանի կողպումը: Եթե այն մի քանի վայրկյանի վրա դնեք, շատ հաճախ կողպման էկրան կստանաք, երբ չեք դիպչում ստեղնաշարին, և դա նյարդայնացնում է…

Մի օր աշխատանքային գործընկերը ինձ հարցրեց, թե կարո՞ղ եմ այս խնդիրը «շտկել» ինչ -որ սարքի միջոցով, որը համակարգիչը կողպում է, երբ նա այնտեղ չէ, և ես ընդունեցի մարտահրավերը:)

Ես իմ գլխում մի քանի տարբերակ եմ ուսումնասիրել ՝ օգտագործելով արդուինո և ինֆրակարմիր ջերմաչափի տվիչ, PIR տվիչ կամ գուցե համակարգչում դեմքի հայտնաբերում, բայց ես անցել եմ ավելի պարզ մեթոդի.

Մենք պատրաստվում ենք համատեղել Arduino Leonardo HID ֆունկցիոնալությունը (ընդօրինակել ստեղնաշարը) ուլտրաձայնային հեռավորության սենսորի հետ `պարզելու համար, թե արդյոք մարդը օգտագործում է համակարգիչ, եթե ոչ, սարքը USB- ի միջոցով բանալիների համադրություն կուղարկի` համակարգիչը կողպելու համար:

Քայլ 1: Բաղադրիչներ

Քանի որ սա հասկացության ապացույց է, մենք սարքը կառուցելու ենք սեղանի վրա

Ձեզ անհրաժեշտ կլինի

1. Arduino Leonardo (կարևոր է օգտագործել Լեոնարդոյին, քանի որ այն կարող է ընդօրինակել ստեղնաշարը)

2. HC-SR04 ուլտրաձայնային հեռավորության տվիչ

3. 2 x 10 K փոփոխական ռեզիստորներ

4. հացաթուղթ, տախտակի լարեր

5. USB մալուխ

6. OLED էկրան (https://www.adafruit.com/product/931)

Քայլ 2: Հավաքում և վերբեռնում

Հավաքում և վերբեռնում
Հավաքում և վերբեռնում

Նախ ստուգեք, արդյոք ունեք բոլոր անհրաժեշտ բաղադրիչները և Arduino IDE- ն: Ես հակիրճ կանցնեմ միացման քայլերին, և դուք միշտ կարող եք նայել կցված ցնցող սխեմային

Ժողով

1. Լեոնարդոյին դրեք հացահատիկի վրա և պահեք այն ռետինե ժապավենով

2. երկու փոփոխական դիմադրիչներ ՝ OLED էկրանը և ուլտրաձայնային տվիչը դրեք սեղանի վրա

3. միացրեք հիմքերը և vcc- երը

4. միացրեք դիմադրիչների միջին կապում arduino A0 և A1- ին

5. միացրեք ցուցադրման SDA- ն և SCL- ը Լեոնարդոյի վրա նշված SDA- ին և SCL- ին

6. միացրեք ուլտրաձայնային տվիչի ձգանը և արձագանքման քորոցը Լեոնարդոյի 12, 13 թվային կապումներին

7. USB- ը միացրեք համակարգչին

Վերբեռնել

Առաջին հերթին ձեզ հարկավոր է ներբեռնել և տեղադրել անհրաժեշտ arduino գրադարանները.

1. GOFi2cOLED գրադարան ՝

2. Ուլտրաձայնային-HC-SR04 գրադարան ՝

Եթե չգիտեք, թե ինչպես տեղադրել arduino գրադարանները, դիտեք այս ձեռնարկը:

Վերևի գրադարանները ներբեռնելուց և տեղադրելուց հետո կարող եք կլոնավորել կամ ներբեռնել այստեղ գտնվող իմ arduino պահեստը ՝ https://github.com/danionescu0/arduino, և մենք կօգտագործենք այս ուրվագիծը ՝ https://github.com/danionescu0 /arduino/ծառ/վարպետ…

Կամ կարող եք պատճենել և տեղադրեք ներքևի ծածկագիրը.

/ * * Գրադարաններ, որոնք օգտագործվում են այս նախագծի համար. * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ուլտրաձայնային-HC-SR04 "Keyboard.h" #include "Wire.h" #include "GOFi2cOLED.h" #include "Ultrasonic.h"

GOFi2cOLED GOFoled;

Ուլտրաձայնային ուլտրաձայնային (12, 13);

const բայթ distancePot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; անստորագիր երկար maxDistanceDetectionTime; bool lockTimerStarted = կեղծ;

դատարկ կարգավորում ()

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

դատարկ շրջան ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); եթե (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println («կողպման ժամաչափը սկսվում է»); } else if (! shouldEnableLockTimer ()) {Serial.println ("կողպման ժամաչափն անջատված է"); lockTimerStarted = կեղծ; } if (shouldLockScreen ()) {lockScreen (); Serial.println («Կողպել էկրանը»); } ուշացում (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int թույլատրվում է հեռավորություն = տոկոսային MaxMistanceChangedAllowed / 100 * getDistance (); վերադարձ getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> թույլատրված հեռավորություն; }

void writeStatusData ()

{setDisplayText (1, "MinDistance:", լարային (getDistance ())); setDisplayText (1, «erամաչափ.», լարային (getTimer ())); setDisplayText (1, "ActualDistance:", լարային (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Լարային հաղորդագրություն = ""; if (shouldLockScreen ()) {message = "կողպումն ուղարկված է"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + Լար (countDown); } else {message = "no"; } setDisplayText (1, "Կողպում.", հաղորդագրություն); }

void initializeDisplay ()

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

անվավեր հավաքածու

{GOFoled.setTextSize (fontSize); GOFoled.println (պիտակ + ":" + տվյալներ); }

void doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

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

int getActualDistance ()

{int distanceSum = 0; համար (բայթ i = 0; i <10; i ++) {distanceSum+= ուլտրաձայնային: Տատանում (CM); }

վերադարձի հեռավորություն Sum / 10;

}

int getDistance ()

{վերադարձ քարտեզ (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{վերադարձ քարտեզ (analogRead (distancePot), 0, 1024, 0, 20); }

void lockScreen ()

{Serial.println («սեղմելով»); Keyboard.press (KEY_LEFT_CTRL); ուշացում (10); Keyboard.press (KEY_LEFT_ALT); ուշացում (10); Keyboard.write ('l'); ուշացում (10); Keyboard.releaseAll (); }

Վերջապես միացրեք arduino- ն համակարգչին ՝ օգտագործելով USB մալուխը և տեղադրեք էսքիզը arduino- ում:

Քայլ 3: Սարքի օգտագործումը

Օգտագործելով Սարքը
Օգտագործելով Սարքը

Երբ arduino- ն միանում է համակարգչին, այն անընդհատ կհսկի սենսորի առջևի տարածությունը և հեռավորությունը մեծացնելու դեպքում համակարգչին կուղարկի «կողպեքի» ստեղների համադրություն:

Սարքն ունի որոշ կազմաձևեր.

1. Նորմալ հեռավորությունը, հեռավորությունը կարող է կազմաձևվել ՝ օգտագործելով A0- ին միացված փոփոխական ռեզիստորը: Հեռավորությունը ցուցադրվում է նաև OLED- ով: Երբ հեռավորությունը կավելանա 25% -ով սահմանվածից, հետհաշվարկ կսկսվի

2. Timeout (հետհաշվարկ): Վայրկյանների ընդմիջումը կարող է կարգավորվել նաև A1- ին միացված դիմադրիչից: Theամկետը լրանալուց հետո կողպման հրամանը կուղարկվի

3. Կողպեք ստեղների համադրությունը: Լռելյայն կողպման ստեղնային համադրությունը ստեղծվել է Ubuntu Linux 18 (CTRL+ALT+L) համար աշխատելու համար: Համադրությունը փոխելու համար դուք պետք է փոփոխեք ձեր ուրվագիծը ՝ ըստ ձեր օպերացիոն համակարգի:

4. Timeout և հեռավորության պաշտպանություն: Քանի որ սա ստեղնաշարն ընդօրինակող սարք է, լավ գաղափար է ունենալ ստեղնաշարի գործառույթն անջատելու մեխանիզմ: Իմ ուրվագծում ես ընտրել եմ, որ ժամանակի ընդմիջումը և հեռավորությունը պետք է ավելի մեծ լինեն, քան «1» -ը: (ցանկության դեպքում կարող եք փոփոխել ծածկագրում)

Տեղադրեք և փոխեք «lockScreen ()» գործառույթը

void lockScreen () {Serial.println («սեղմելով»); Keyboard.press (KEY_LEFT_CTRL); ուշացում (10); Keyboard.press (KEY_LEFT_ALT); ուշացում (10); Keyboard.write ('l'); ուշացում (10); Keyboard.releaseAll (); }

Արդուինոյի հատուկ բանալիների ամբողջական ցանկի համար ստուգեք այստեղ ՝

Քայլ 4: Այլ մոտեցումներ

Մինչև այս իրականացումը ես դիտարկել եմ նաև որոշ այլ իրականացումներ.

1. Ինֆրակարմիր ջերմաչափ (MLX90614 https://www.sparkfun.com/products/10740): Ինֆրակարմիր ջերմաչափը սարք է, որը չափում է ջերմաստիճանը ՝ վերլուծելով ինֆրակարմիր ճառագայթները, որոնք արտանետվում են հեռավորության վրա: Ինձ մոտ մեկը պառկած էր, և ես մտածեցի, որ գուցե կարողանամ հայտնաբերել ջերմաստիճանի տարբերությունը համակարգչի առջև:

Ես այն կապեցի, բայց ջերմաստիճանի տարբերությունը շատ փոքր էր (երբ ես առջևում էի, թե ոչ) 1-2 աստիճան, և ես կարծում էի, որ դա այնքան էլ հուսալի չի կարող լինել

2. PIR ցուցիչ: (https://www.sparkfun.com/products/13285) Այս էժան սենսորները վաճառվում են որպես «շարժման տվիչներ», բայց դրանք իսկապես հայտնաբերում են ինֆրակարմիր ճառագայթման փոփոխությունները, այնպես որ տեսականորեն այն կարող է աշխատել, երբ մարդը համակարգչից դուրս գա, սենսորը կբացահայտի այդ.. Նաև այս տվիչներն ունեն ժամանակի ընդմիջման և զգայունության կոճակներ: Այսպիսով, ես միացրել եմ մեկը և խաղացել դրա հետ, բայց թվում է, որ սենսորը այն նախատեսված չէ մոտ տարածության համար (այն ունի լայն անկյուն), այն տալիս է բոլոր տեսակի կեղծ ահազանգեր:

3. Տեսախցիկի միջոցով դեմքի հայտնաբերում: Այս տարբերակը շատ հետաքրքիր թվաց, քանի որ ես համակարգչային այս դաշտի հետ խաղում էի իմ մյուս նախագծերում, ինչպիսիք են ՝ https://github.com/danionescu0/robot-camera-platfo… և https://github.com/danionescu0/image-processing- պր…

Սա տորթի կտոր էր: Բայց կային որոշ թերություններ. Նոութբուքի տեսախցիկը չէր կարող օգտագործվել այլ նպատակների համար, երբ ծրագիրն աշխատում էր, և դրա համար կպահանջվեին որոշ համակարգչային ռեսուրսներ: Այսպիսով, ես նույնպես հրաժարվեցի այս գաղափարից:

Եթե ունեք ավելի շատ գաղափարներ, թե ինչպես դա կարելի է անել, խնդրում ենք կիսել դրանք, շնորհակալություն:

Խորհուրդ ենք տալիս: