Оглавление:
Видео: Компьютерная система с автоматической блокировкой: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
В этом уроке мы собираемся изучить безопасность блокировки экрана компьютера. Операционные системы имеют настраиваемый тайм-аут, который заблокирует ваш экран, если пользователь не коснулся мыши или клавиатуры.
Обычно значение по умолчанию составляет около одной минуты. Если вы следуете этому параметру по умолчанию и оставляете компьютер в загруженной среде, кто-то может получить доступ к вашему компьютеру в ту минуту, пока экран не заблокируется. Если вы установите его на несколько секунд, вы очень часто будете получать экран блокировки, когда вы не прикасаетесь к клавиатуре, и это раздражает …
Однажды коллега по работе спросил меня, могу ли я «исправить» эту проблему с помощью какого-то устройства, которое блокирует компьютер, когда его нет рядом, и я принял вызов:)
Я мысленно исследовал несколько вариантов, таких как использование arduinos и инфракрасного датчика термометра, датчика PIR или, возможно, использования распознавания лиц на компьютере, но я остановился на более простом методе:
Мы собираемся объединить функциональность Arduino Leonardo HID (эмуляция клавиатуры) с ультразвуковым датчиком расстояния, чтобы определить, использует ли человек компьютер, в противном случае устройство отправит комбинацию клавиш через USB для блокировки компьютера.
Шаг 1: Компоненты
Поскольку это доказательство концепции, мы собираемся построить устройство на макетной плате.
Вам понадобиться:
1. Arduino Leonardo (важно использовать Leonardo, потому что он может эмулировать клавиатуру)
2. Ультразвуковой датчик расстояния HC-SR04.
3. Переменные резисторы 2 x 10 кОм
4. Макет, макет провода
5. USB-кабель.
6. OLED-дисплей (https://www.adafruit.com/product/931)
Шаг 2. Сборка и загрузка
Сначала проверьте, есть ли у вас все необходимые компоненты и IDE Arduino. Я собираюсь вкратце перейти к этапам подключения, и вы всегда можете взглянуть на прилагаемую схему фритзинга.
сборка
1. Поместите Леонардо на макетную плату и закрепите его резинкой.
2. Поместите два переменных резистора, OLED-дисплей и ультразвуковой датчик на макетную плату.
3. подключите заземление и vcc
4. Подключите средние контакты резисторов к Arduino A0 и A1.
5. Подключите SDA и SCL дисплея к SDA и SCL, отмеченным на Leonardo.
6. Подключите триггерный и эхо-контакт ультразвукового датчика к 12, 13 цифровым контактам Леонардо.
7. подключаем USB к компьютеру
Загрузить
Прежде всего вам нужно скачать и установить необходимые библиотеки arduino:
1. Библиотека GOFi2cOLED:
2. Библиотека Ultrasonic-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" #include "Wire.h" #include "GOFi2cOLED.h" #include "Ultrasonic.h"
GOFi2cOLED GOFoled;
Ультразвуковой ультразвуковой (12, 13);
const byte distancePot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int actualDistance; беззнаковое длинное maxDistanceDetectionTime; bool lockTimerStarted = false;
установка void ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
пустой цикл ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); если (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = миллис (); Serial.println («запуск таймера блокировки»); } else if (! shouldEnableLockTimer ()) {Serial.println («таймер блокировки отключен»); lockTimerStarted = false; } если (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; }
недействительным writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, «Таймер:», String (getTimer ())); setDisplayText (1, «ActualDistance:», String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; Строковое сообщение = ""; если (shouldLockScreen ()) {сообщение = "блокировка отправлена"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } еще {сообщение = "нет"; } setDisplayText (1, «Блокировка:», сообщение); }
void initializeDisplay ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (byte fontSize, String label, String data)
{GOFoled.setTextSize (размер шрифта); 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 + = ultrasonic. Ranging (CM); }
return distanceSum / 10;
}
интервал 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- пр…
Это был кусок пирога! Но были и недостатки: камеру ноутбука нельзя было использовать для других целей во время работы программы, и для этого потребовались бы некоторые ресурсы компьютера. Так что я тоже отказался от этой идеи.
Если у вас есть идеи о том, как это можно сделать, поделитесь ими, спасибо!
Рекомендуемые:
Модель автоматической схемы ЭКГ: 4 шага
Автоматическая модель цепи ЭКГ: цель этого проекта - создать модель цепи с несколькими компонентами, которые могут адекватно усиливать и фильтровать входящий сигнал ЭКГ. Три компонента будут смоделированы индивидуально: инструментальный усилитель, активный режекторный фильтр и
Радиокнопки с электронной блокировкой (* улучшено! *): 3 шага
Электронная блокировка радиокнопок (* улучшено! *): Термин «радиокнопки»; исходит из конструкции старых автомобильных радиоприемников, в которых было несколько кнопок, предварительно настроенных на разные каналы и механически связанных друг с другом, так что одновременно можно было нажимать только одну. Я хотел найти кнопку
Как сделать выключатели безопасности с блокировкой для лазерного резака K40: 4 шага (с изображениями)
Как сделать выключатели безопасности с блокировкой для лазерного резака K40: ВАЖНОЕ РЕДАКТИРОВАНИЕ! Пожалуйста, не подключайте свои блокировки к электросети машины. Вместо этого подключите провода к контактам PG на блоке питания. Скоро сделаю полное обновление. -Tony 7 / 30-19 Какой один из первых советов в Интернете, когда ты новенький, (ма
Самодельный паяльник с автоматической подачей для паяльника DIY: 3 шага
Самодельный паяльник с автоматической подачей для паяльника Сделай сам: Привет! В этом руководстве вы узнаете, как сделать паяльную машину с автоматической подачей в домашних условиях из простых компонентов, сделанных своими руками. Требования: - мотор-редуктор постоянного тока - питание от 5 до 15 В постоянного тока - припой - паяльник - ИК-излучатель - ИК-приемник - NPN 13009 - npn 8050- 1 кОм
Компьютерная система водяного охлаждения: 10 шагов
Компьютерная система водяного охлаждения: Здравствуйте. Я кореец, живущий в Корее. Мне нравится смотреть так много инструкций на этом сайте и делать свои собственные. Сегодня я хотел бы представить свою компьютерную систему водяного охлаждения - это моя собственная разработка! Сделано в октябре 2008. Я не верю в свой E