Мазмұны:

Автоматты түрде құлыптау компьютерлік жүйесі: 4 қадам
Автоматты түрде құлыптау компьютерлік жүйесі: 4 қадам

Бейне: Автоматты түрде құлыптау компьютерлік жүйесі: 4 қадам

Бейне: Автоматты түрде құлыптау компьютерлік жүйесі: 4 қадам
Бейне: Компьютер құпиялары әрбір қазақ білу керек | Ыстық клавишалар 2024, Қараша
Anonim
Image
Image
Жинау және жүктеу
Жинау және жүктеу

Бұл оқулықта біз компьютер экранын құлыптаудың қауіпсіздігін зерттейміз. Операциялық жүйелерде пайдаланушы тінтуірге немесе пернетақтаға тигізбесе, экранды құлыптайтын, реттелетін күту уақыты бар.

Әдетте әдепкі мән шамамен бір минутты құрайды. Егер сіз осы әдепкі бойынша жүрсеңіз және компьютерді бос ортада қалдырсаңыз, экран құлыпталғанша бір минут ішінде біреу сіздің компьютеріңізге кіруі мүмкін. Егер сіз оны бірнеше секундқа қойсаңыз, пернетақтаны ұстамайтын кезде құлыптау экраны жиі шығады және бұл сізді мазалайды …

Бір күні жұмысшы әріптесім бұл мәселені ол жоқ кезде компьютерді құлыптайтын құрылғы арқылы шеше аламын ба деп сұрады, мен оны қабылдадым:)

Мен басымда бірнеше параметрлерді зерттедім, мысалы, ардуино мен инфрақызыл термометр сенсоры, PIR сенсоры немесе компьютерде бетті анықтауды қолдану, бірақ мен қарапайым әдіске көштім:

Біз Arduino Leonardo HID функциясын (пернетақтаны эмуляциялау) ультрадыбыстық қашықтық сенсорымен біріктіреміз, егер адам компьютерді пайдаланып жатқанын анықтайтын болсақ, құрылғы компьютерді құлыптау үшін USB арқылы пернелер тіркесімін жібереді.

1 -қадам: компоненттер

Бұл біз құрылғыны нан тақтасына салатын тұжырымдаманың дәлелі

Сізге қажет:

1. Ардуино Леонардо (Леонардоны қолдану маңызды, себебі ол пернетақтаны еліктей алады)

2. HC-SR04 ультрадыбыстық қашықтық датчигі

3. 2 х 10 К айнымалы резисторлар

4. нан тақтасы, нанға арналған сымдар

5. USB кабелі

6. OLED дисплейі (https://www.adafruit.com/product/931)

2 -қадам: жинау және жүктеу

Жинау және жүктеу
Жинау және жүктеу

Алдымен сізде барлық қажетті компоненттер мен Arduino IDE бар -жоғын тексеріңіз. Мен қосылу қадамдарына қысқаша барамын, және сіз әрқашан бекітілген фризинг схемасын қарай аласыз

Ассамблея

1. Леонардоны нан тақтасына қойып, резеңке таспамен бекітіңіз

2. екі айнымалы резисторды, OLED дисплейін және ультрадыбыстық сенсорды тақтаға қойыңыз

3. алаңдар мен вкч -ты қосу

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/tree/master…

Немесе төмендегі кодты көшіріп, қоюға болады:

/ * * Бұл жоба пайдаланатын кітапханалар: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include «Keyboard.h» #«Wire.h» қосу #«GOFi2cOLED.h» қосу «» Ультрадыбыстық.h «қосу

GOFi2cOLED GOFoled;

Ультрадыбыстық ультрадыбыстық (12, 13);

const байт аралығыPot = A0;

const байт таймеріPot = A1; const float пайызыMaxDistanceChangedAllowed = 25; int actualDistance; белгісіз ұзақ maxDistanceDetectionTime; bool lockTimerStarted = жалған;

жарамсыз орнату ()

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

бос цикл ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! 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 allowedDistance = процентMaxDistanceChangedAllowed / 100 * getDistance (); getTimer ()> 1 && getDistance ()> 1 && actualDistance қайтару - getDistance ()> рұқсат етілген қашықтық; }

жарамсыз writeStatusData ()

{setDisplayText (1, «MinDistance:», String (getDistance ())); setDisplayText (1, «Таймер:», Жол (getTimer ())); setDisplayText (1, «ActualDistance:», String (actualDistance)); int countDown = getTimer () - (миллис () - maxDistanceDetectionTime) / 1000; Жолдық хабар = «»; if (shouldLockScreen ()) {message = «құлып жіберілді»; } else if (shouldEnableLockTimer () && countDown> = 0) {message = «..» + Жол (countDown); } басқа {хабарлама = «жоқ»; } setDisplayText (1, «Құлыптау:», хабар); }

void initializeDisplay ()

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

void setDisplayText (байт fontSize, String жапсырмасы, String деректері)

{GOFoled.setTextSize (fontSize); GOFoled.println (белгісі + «:» + деректер); }

жарамсыз doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

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

int getActualDistance ()

{int distanceSum = 0; for (байт i = 0; i <10; i ++) {distanceSum+= ультрадыбыстық. Ранг (CM); }

қайтару қашықтығыСум / 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 -қадам: құрылғыны пайдалану

Құрылғыны пайдалану
Құрылғыны пайдалану

Ардуино компьютерге қосылған кезде ол сенсор алдындағы қашықтықты үздіксіз бақылап отырады және егер қашықтық ұлғайса, компьютерге «құлыптау» экран пернелерінің комбинациясын жібереді.

Құрылғыда бірнеше конфигурация бар:

1. Қалыпты қашықтық, қашықтықты А0 -ға қосылған айнымалы резистордың көмегімен конфигурациялауға болады. Қашықтық OLED -де де көрсетіледі. Қашықтық 25% -ға артқан кезде кері санақ басталады

2. Күту уақыты (кері санау). А1 -ге қосылған резистордан секунд бойынша күту уақыты да реттеледі. Күту уақыты аяқталғаннан кейін құлыптау пәрмені жіберіледі

3. Құлыптау пернелер тіркесімі. Әдепкі құлыптау пернелерінің комбинациясы Ubuntu Linux 18 (CTRL+ALT+L) үшін жұмыс істеу үшін орнатылған. Комбинацияны өзгерту үшін эскизді операциялық жүйеге сәйкес өзгерту қажет:

4. Күту уақыты мен қашықтықтан қорғау. Бұл пернетақтаны эмуляциялайтын құрылғы болғандықтан, пернетақта функциясын өшіру механизмін қолданған дұрыс. Менің эскизімде мен күту уақыты мен қашықтық «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- пр…

Бұл торттың бір бөлігі болды! Бірақ кейбір кемшіліктер болды: бағдарлама жұмыс істеп тұрған кезде ноутбук камерасын басқа мақсаттарда пайдалану мүмкін болмады, бұл үшін кейбір компьютерлік ресурстар қажет болады. Сондықтан мен де бұл идеядан бас тарттым.

Егер сізде мұны қалай жасауға болатыны туралы қосымша идеялар болса, бөлісіңіз, рахмет!

Ұсынылған: