Spisu treści:
- Krok 1: Komponenty
- Krok 2: Montaż i przesyłanie
- Krok 3: Korzystanie z urządzenia
- Krok 4: Inne podejścia
Wideo: System automatycznej blokady komputera: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
W tym samouczku zamierzamy zbadać bezpieczeństwo blokady ekranu komputera. Systemy operacyjne mają konfigurowalny limit czasu, który blokuje ekran, jeśli użytkownik nie dotknął myszy lub klawiatury.
Zwykle wartość domyślna wynosi około jednej minuty. Jeśli zastosujesz się do tego ustawienia domyślnego i pozostawisz komputer w ruchliwym środowisku, ktoś może uzyskać dostęp do Twojego komputera w tej chwili, dopóki ekran się nie zablokuje. Jeśli ustawisz go na kilka sekund, ekran blokady pojawi się bardzo często, gdy nie dotykasz klawiatury, a to jest denerwujące…
Pewnego dnia kolega z pracy zapytał mnie, czy mogę "naprawić" ten problem za pomocą jakiegoś urządzenia, które blokuje komputer, gdy go nie ma, i podjąłem wyzwanie:)
Zbadałem kilka opcji w mojej głowie, takich jak używanie arduino i czujnika termometru na podczerwień, czujnika PIR lub może używanie wykrywania twarzy na komputerze, ale zdecydowałem się na prostszą metodę:
Połączymy funkcjonalność Arduino Leonardo HID (emulacja klawiatury) z ultradźwiękowym czujnikiem odległości, aby wykryć, czy dana osoba korzysta z komputera, jeśli nie, urządzenie wyśle kombinację klawiszy przez USB, aby zablokować komputer.
Krok 1: Komponenty
Ponieważ jest to dowód koncepcji, zbudujemy urządzenie na płytce stykowej
Będziesz potrzebował:
1. Arduino Leonardo (ważne, aby używać Leonardo, ponieważ może emulować klawiaturę)
2. Ultradźwiękowy czujnik odległości HC-SR04
3. Rezystory zmienne 2 x 10 K
4. płytka stykowa, przewody płytki stykowej
5. Kabel USB
6. Wyświetlacz OLED (https://www.adafruit.com/product/931)
Krok 2: Montaż i przesyłanie
Najpierw sprawdź, czy masz wszystkie potrzebne komponenty i Arduino IDE. Pokrótce przejdę do etapów łączenia i zawsze możesz rzucić okiem na załączony schemat fritzowania
montaż
1. Połóż Leonardo na płytce stykowej i przymocuj gumką
2. umieść dwa zmienne rezystory, wyświetlacz OLED i czujnik ultradźwiękowy na płytce stykowej;
3. połącz masy i vcc
4. podłącz środkowe piny rezystorów do arduino A0 i A1
5. podłącz SDA i SCL wyświetlacza do SDA i SCL oznaczonego na Leonardo
6. podłącz spust i pin echa czujnika ultradźwiękowego do 12, 13 cyfrowych pinów Leonardo;
7. podłącz USB do komputera
Wgrywać
Przede wszystkim musisz pobrać i zainstalować niezbędne biblioteki arduino:
1. Biblioteka GOFi2cOLED:
2. Biblioteka Ultrasonic-HC-SR04:
Jeśli nie wiesz, jak zainstalować biblioteki arduino, zapoznaj się z tym samouczkiem.
Po pobraniu i zainstalowaniu powyższych bibliotek możesz sklonować lub pobrać moje repozytorium arduino znajdujące się tutaj: https://github.com/danionescu0/arduino, a my użyjemy tego szkicu: https://github.com/danionescu0 /arduino/drzewo/master…
Możesz też skopiować i wkleić poniższy kod:
/* * Biblioteki używane przez ten projekt: * * 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;
Ultradźwiękowy ultradźwiękowy(12, 13);
const byte distancePot = A0;
const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int rzeczywistaOdległość; unsigned long maxDistanceDetectionTime; bool lockTimerStarted = false;
pusta konfiguracja()
{ Szeregowy.początek(9600); Klawiatura.początek(); zainicjowaćWyświetlanie(); }
pusta pętla()
{ wyczyśćWyświetlacz(); rzeczywistaOdległość = pobierzAktualnąOdległość(); writeStatusData(); doWyświetl(); if (!lockTimerStarted && powinienEnableLockTimer()) { lockTimerStarted = true; maxDistanceDetectionTime = mili(); Serial.println("rozpoczęcie zegara blokady"); } else if (!shouldEnableLockTimer()){ Serial.println("timer blokady wyłączony"); lockTimerStarted = false; } if (shouldLockScreen()) { lockScreen(); Serial.println("Ekran blokady"); } opóźnienie(100); }
bool powinien LockScreen()
{ return lockTimerStarted && (millis() - maxDistanceDetectionTime) / 1000 > getTimer(); }
bool powinienEnableLockTimer()
{ int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance(); return getTimer() > 1 && getDistance() > 1 && currentDistance - getDistance() > allowDistance; }
void zapiszStatusData()
{ setDisplayText(1, "MinDistance:", String(getDistance())); setDisplayText(1, "Zegar:", String(getTimer())); setDisplayText(1, "RzeczywistaOdległość:", String(RzeczywistaOdległość)); int odliczanie = getTimer() - (millis() - maxDistanceDetectionTime) / 1000; Wiadomość ciąg = ""; if (shouldLockScreen()) { komunikat = "blokada wysłana"; } else if (shouldEnableLockTimer() && countDown >= 0) { message = ".." + String(countDown); } else { wiadomość = "nie"; } setDisplayText(1, "Blokowanie: ", wiadomość); }
void zainicjowaćWyświetlanie()
{ GOFoled.init(0x3C); GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
void setDisplayText(byte fontSize, String label, String data)
{ GOFoled.setTextSize(fontSize); GOFoled.println(etykieta + ":" + dane); }
nieważne wyświetlaj()
{ GOFoled.display(); }
nieważne wyczyśćWyświetlacz()
{ GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
int pobierz rzeczywistą odległość()
{ int suma odległości = 0; for (bajt i=0;i<10;i++) { Suma odległości += ultradźwięki. Zakres (CM); }
odległość powrotuSuma / 10;
}
int pobierzOdległość()
{ return map(analogRead(timerPot), 0, 1024, 0, 200); }
int pobierzZegar()
{ return map(analogRead(distancePot), 0, 1024, 0, 20); }
nieważny ekran blokady()
{ Serial.println("naciśnięcie"); Keyboard.press(KEY_LEFT_CTRL); opóźnienie(10); Keyboard.press(KEY_LEFT_ALT); opóźnienie(10); Klawiatura.zapis('l'); opóźnienie(10); Keyboard.releaseAll(); }
Na koniec podłącz arduino do komputera za pomocą kabla usb i prześlij szkic do arduino.
Krok 3: Korzystanie z urządzenia
Gdy arduino jest podłączony do komputera, będzie stale monitorować odległość przed czujnikiem i wysyłać kombinację klawiszy ekranu blokady do komputera, jeśli odległość wzrośnie.
Urządzenie ma kilka konfiguracji:
1. Odległość normalna, odległość można skonfigurować za pomocą rezystora zmiennego podłączonego do A0. Odległość jest również wyświetlana na OLED. Gdy odległość wzrośnie o 25% od ustawionej odległości, rozpocznie się odliczanie
2. Limit czasu (odliczanie). Limit czasu w sekundach jest również konfigurowalny z rezystora podłączonego do A1. Po upływie limitu czasu polecenie blokady zostanie wysłane
3. Zablokuj kombinację klawiszy. Domyślna kombinacja klawiszy blokady jest skonfigurowana do pracy w systemie Ubuntu Linux 18 (CTRL + ALT + L). Aby zmienić kombinację, musisz zmodyfikować swój szkic zgodnie z systemem operacyjnym:
4. Limit czasu i ochrona odległości. Ponieważ jest to urządzenie emulujące klawiaturę, dobrym pomysłem jest posiadanie mechanizmu dezaktywacji funkcjonalności klawiatury. W moim szkicu wybrałem, że limit czasu i odległość muszą być większe niż „1”. (możesz to zmodyfikować w kodzie, jeśli chcesz)
Znajdź i zmień funkcję "lockScreen()"
void lockScreen(){ Serial.println("naciśnięcie"); Keyboard.press(KEY_LEFT_CTRL); opóźnienie(10); Keyboard.press(KEY_LEFT_ALT); opóźnienie(10); Klawiatura.zapis('l'); opóźnienie(10); Keyboard.releaseAll(); }
Pełną listę kluczy specjalnych arduino można znaleźć tutaj:
Krok 4: Inne podejścia
Przed tą implementacją rozważałem też kilka innych implementacji:
1. Termometr na podczerwień (MLX90614 https://www.sparkfun.com/products/10740). Termometr na podczerwień to urządzenie, które mierzy temperaturę, analizując promieniowanie podczerwone emitowane przez oddalony obiekt. Miałem jeden leżący i pomyślałem, że może uda mi się wykryć różnicę temperatur przed komputerem.
Podłączyłem go, ale różnica temperatur była bardzo mała (kiedy byłem z przodu, czy nie) 1-2 stopnie i myślałem, że to nie może być tak niezawodne
2. Czujnik PIR. (https://www.sparkfun.com/products/13285) Te tanie czujniki są reklamowane jako „czujniki ruchu”, ale naprawdę wykrywają zmiany w promieniowaniu podczerwonym, więc teoretycznie może działać, gdy ktoś odejdzie od komputera, czujnik wykryje to.. Również te czujniki mają wbudowane pokrętła timeout i czułości. Podłączyłem więc jeden i bawiłem się nim, ale wygląda na to, że czujnik nie jest przeznaczony do bliskiego zasięgu (ma szeroki kąt), daje wszelkiego rodzaju fałszywe alarmy.
3. Wykrywanie twarzy za pomocą kamery internetowej. Ta opcja wydawała się bardzo interesująca, ponieważ bawiłem się tym polem komputerowym w moich innych projektach, takich jak: https://github.com/danionescu0/robot-camera-platfo… i https://github.com/danionescu0/image-processing- pr…
To była bułka z masłem! Ale były też pewne wady: kamera laptopa nie mogła być używana do innych celów, gdy program był uruchomiony, a do tego potrzebne byłyby pewne zasoby komputera. Więc ja też porzuciłem ten pomysł.
Jeśli masz więcej pomysłów na to, jak można to zrobić, podziel się nimi, dzięki!
Zalecana:
System blokady domowej wyświetlacza LCD: 6 kroków
System blokady domowej wyświetlacza LCD: Ten projekt będzie działał jak blokada domowa, a jedynym sposobem, aby dostać się do domu, jest naciśnięcie prawidłowego 3-cyfrowego kodu. Wyświetlacz LCD będzie działał jako urządzenie komunikacyjne, informujące osobę, czy wprowadziła poprawny kod, czy nie. Ich
WYMIANA PRZYCISKU TYLNEGO BLOKADY BLOKADY TYLNEJ RENAULT SCENIC / MEGANE MONTAŻ: 3 kroki
MONTAŻ WYMIANA PRZYCISKU TYLNEGO BLOKADY TYLNEGO BLOKADY BAGAŻNIKA RENAULT SCENIC / MEGANE: Słabej jakości O-ring, który utrzymuje przycisk bagażnika na miejscu, zużywa się, co prowadzi do utraty przycisku bagażnika z pojazdu. Jedynym rozwiązaniem tego problemu w Renault jest kompletna wymiana mechanizmu zamka bagażnika, który ponownie zawiedzie i będzie kosztować
Inteligentny system automatycznej analizy objętości: 4 kroki
Inteligentny system automatycznej analizy objętości: Celem jest stworzenie prototypu, który może analizować i identyfikować dwa różne kształty oraz wyświetlać ich objętość. Tutaj wybieramy sześcian i cylinder jako dwa różne kształty. Potrafi samodzielnie wykrywać kształty, analizować i obliczać objętość.Praca
System blokady RFID za pomocą Arduino: 6 kroków
System blokowania RFID za pomocą Arduino: Witam wszystkich, to jest mój pierwszy instruktaż i został przedstawiony przez Judhi Prasetyo. Warsztaty poprowadziła firma Assembly, gdzie pracuję jako stażysta i jest to jedno z najlepszych miejsc do pracy, jeśli jesteś twórcą. Wracając do systemu zamków RFID
Skonfiguruj serwer automatycznej aktualizacji ESP8266: 7 kroków
Skonfiguruj serwer automatycznej aktualizacji ESP8266: Wiele osób używa teraz ESP8266 w wielu wersjach (ESP-01S, Wemos D1, NodeMCU, Sonoff itp.) w systemach automatyki domowej. Jeśli napiszesz swój własny kod (tak jak ja), aktualizowanie każdego z nich osobno nawet przez OTA (over the air) staje się nieco nużące.M