Съдържание:
- Стъпка 1: Компоненти
- Стъпка 2: Сглобяване и качване
- Стъпка 3: Използване на устройството
- Стъпка 4: Други подходи
Видео: Компютърна система за автоматично заключване: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В този урок ще изследваме сигурността на заключването на екрана на компютъра. Операционните системи имат конфигурируем таймаут, който ще заключи екрана ви, ако потребителят не е докоснал мишката или клавиатурата.
Обикновено по подразбиране е около една минута. Ако следвате това по подразбиране и оставите компютъра си в натоварена среда, някой може да получи достъп до компютъра ви в тази минута, докато екранът се заключи. Ако го настроите на няколко секунди, ще получавате заключения екран много често, когато не докосвате клавиатурата и това е досадно …
Един ден колега от работа ме попита дали мога да „поправя“този проблем с някакво устройство, което заключва компютъра, когато той не е там, и аз приех предизвикателството:)
Разгледах няколко опции в главата си, като например използване на arduinos и инфрачервен сензор за термометър, PIR сензор или може би използване на разпознаване на лица на компютъра, но се спрях на по -прост метод:
Ще комбинираме функционалността на Arduino Leonardo HID (емулиране на клавиатурата) с ултразвуков сензор за разстояние, за да установим дали човек използва компютъра, ако не, устройството ще изпрати комбинация от клавиши през USB, за да заключи компютъра.
Стъпка 1: Компоненти
Тъй като това е доказателство за концепцията, ние ще изградим устройството на макет
Ще имаш нужда:
1. Arduino Leonardo (важно е да използвате Leonardo, защото може да подражава на клавиатурата)
2. HC-SR04 ултразвуков сензор за разстояние
3. 2 x 10 K променливи резистори
4. макет, проводници за макет
5. USB кабел
6. OLED дисплей (https://www.adafruit.com/product/931)
Стъпка 2: Сглобяване и качване
Първо проверете дали имате всички необходими компоненти и Arduino IDE. Ще отида накратко на стъпките за свързване и винаги можете да разгледате приложената схема за фризиране
Монтаж
1. Поставете Leonardo върху дъската и го задръжте на място с гумена лента
2. поставете двата променливи резистора, OLED дисплея и ултразвуковия сензор на дъската
3. свържете основания и vcc
4. свържете средните щифтове на резисторите към arduino A0 и A1
5. свържете SDA и SCL на дисплея към SDA и SCL, маркирани на Leonardo
6. свържете спусъка и ехоконта на ултразвуковия сензор към 12, 13 цифрови пина на Leonardo
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 * Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include "Keyboard.h" #include "Wire.h" #include "GOFi2cOLED.h" #include "Ultrasonic.h"
GOFi2cOLED GOFoled;
Ултразвуков ултразвуков (12, 13);
const байт разстояниеPot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; unsigned long maxDistanceDetectionTime; bool lockTimerStarted = false;
void setup ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
void loop ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("таймер за заключване започва"); } else if (! shouldEnableLockTimer ()) {Serial.println ("таймерът за заключване е деактивиран"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Заключен екран"); } забавяне (100); }
bool shouldLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool shouldEnableLockTimer ()
{int allowedDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowedDistance; }
void writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Таймер:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Низово съобщение = ""; if (shouldLockScreen ()) {message = "заключване изпратено"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "no"; } setDisplayText (1, "Заключване:", съобщение); }
void initializeDisplay ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (байт шрифт, етикет на низ, данни за низ)
{GOFoled.setTextSize (fontSize); GOFoled.println (етикет + ":" + данни); }
void doDisplay ()
{GOFoled.display (); }
void clearDisplay ()
{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
int getActualDistance ()
{int distanceSum = 0; for (байт i = 0; i <10; i ++) {distanceSum+= ултразвук. Range (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. Таймаут (обратно броене). Времето за изчакване в секунди също може да се конфигурира от резистора, свързан към A1. Когато изтече времето за изчакване, ще бъде изпратена командата за заключване
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 (); }
За пълен списък със специални ключове на arduino проверете тук:
Стъпка 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- пр…
Това беше парче торта! Но имаше някои недостатъци: камерата на лаптопа не можеше да се използва за други цели, докато програмата работи, и за това ще са необходими някои компютърни ресурси. Така че и аз се отказах от тази идея.
Ако имате още идеи как това може да стане, споделете ги, благодаря!
Препоръчано:
Abellcadabra (Система за заключване на врата за разпознаване на лица): 9 стъпки
Abellcadabra (Система за заключване на вратите за разпознаване на лица): Поставяйки се по време на карантината, се опитах да намеря начин да убия времето, като изградих разпознаване на лица за вратата на къщата. Нарекох го Abellcadabra - което е комбинация между Abracadabra, вълшебна фраза с звънец на вратата, на която аз само звъня. LOL
Автоматично заключване на вратата: 5 стъпки
Автоматично заключване на врати: Хей ТАМ !! Това е първият ми инструктаж! Дано всички да ви харесат. В този проект ще изградим автоматична (защитена с парола) брава на вратата. Класическата ключалка е буквално 100 -годишно изобретение и както знаем " промяна
Как да направите безопасно заключване с RFID заключване: 5 стъпки
Как да направите безопасно заключване с RFID заключване: Научете как да направите безопасно заключване с RFID заключване у дома, използвайки Arduino и много основни електронни компоненти. Нека направим безопасно шкафче с RFID заключване, използвайки Arduino и Rfid скенер
WiFi Автоматично захранване на растенията с резервоар - Настройка за отглеждане на закрито/на открито - Водни растения автоматично с дистанционно наблюдение: 21 стъпки
WiFi Автоматично захранване на растенията с резервоар - Настройка за отглеждане на закрито/на открито - Водни растения автоматично с дистанционно наблюдение: В този урок ще демонстрираме как да настроим персонализирана система за захранване на закрито/външно растение, която автоматично полива растенията и може да се наблюдава дистанционно с помощта на платформата Adosia
Компютърна система за водно охлаждане: 10 стъпки
Компютърна система за водно охлаждане: Здравейте. Аз съм корейска жива Корея. Харесва ми да търся толкова много инструкции в този сайт и да си направя свой собствен. днес обичам да представя моята компютърна система за водно охлаждане - това е моят собствен дизайн! Направен е през 2008 г., октомври, нямам никакво доверие в моя E