İçindekiler:
Video: Otomatik Kilit Bilgisayar Sistemi: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu eğitimde, bilgisayar ekran kilidinin güvenliğini keşfedeceğiz. İşletim sistemleri, kullanıcı fareye veya klavyeye dokunmadıysa ekranınızı kilitleyecek yapılandırılabilir bir zaman aşımına sahiptir.
Genellikle varsayılan değer yaklaşık bir dakikadır. Bu varsayılanı izler ve bilgisayarınızı yoğun bir ortamda bırakırsanız, ekran kilitlenene kadar o dakika içinde birileri bilgisayarınıza erişebilir. Birkaç saniyeye ayarlarsanız, klavyeye dokunmadığınızda çok sık kilit ekranı alırsınız ve bu can sıkıcı bir durum…
Bir gün bir iş arkadaşım, o yokken bilgisayarı kilitleyen bir tür aygıtla bu sorunu "düzeltebilir miyim" diye sordu ve ben de bu zorluğu üstlendim:)
Arduino ve kızılötesi termometre sensörü, PIR sensörü veya belki bilgisayarda yüz algılama kullanmak gibi birkaç seçeneği kafamda araştırdım, ancak daha basit bir yönteme karar verdim:
Bir kişinin bilgisayarı kullanıp kullanmadığını algılamak için Arduino Leonardo HID işlevselliğini (klavyeyi öykünme) bir ultrasonik mesafe sensörü ile birleştireceğiz, değilse cihaz bilgisayarı kilitlemek için USB üzerinden bir tuş kombinasyonu gönderecektir.
Adım 1: Bileşenler
Bu bir kavram kanıtı olduğu için cihazı bir breadboard üzerine kuracağız.
İhtiyacın olacak:
1. Arduino Leonardo (klavyeyi taklit edebildiği için Leonardo kullanmak önemlidir)
2. HC-SR04 ultrasonik mesafe sensörü
3. 2 x 10 K değişken direnç
4. breadboard, breadboard telleri
5. USB kablosu
6. OLED ekran (https://www.adafruit.com/product/931)
2. Adım: Montaj ve Yükleme
Öncelikle gerekli tüm bileşenlere ve bir Arduino IDE'ye sahip olup olmadığınızı kontrol edin. Ben kısaca bağlantı adımlarına geçeceğim ve her zaman ekteki fritzing şemasına göz atabilirsiniz.
toplantı
1. Leonardo'yu devre tahtasına koyun ve bir lastik bantla yerinde tutun
2. iki değişken direnci, OLED ekranı ve ultrasonik sensörü devre tahtasına yerleştirin
3. toprakları ve vcc'leri bağlayın
4. Dirençlerin orta pinlerini arduino A0 ve A1'e bağlayın
5. Ekranın SDA ve SCL'sini Leonardo'da işaretli SDA ve SCL'ye bağlayın
6. Ultrasonik sensörün tetik ve yankı pimini Leonardo'nun 12, 13 dijital pimine bağlayın
7. USB'yi bilgisayara bağlayın
Yüklemek
Öncelikle gerekli arduino kitaplıklarını indirip kurmanız gerekecek:
1. GOFi2cOLED kitaplığı:
2. Ultrasonic-HC-SR04 kütüphanesi:
Arduino kitaplıklarının nasıl kurulacağını bilmiyorsanız bu eğitime göz atın.
Yukarıdaki kütüphaneleri indirip kurduktan sonra, burada bulunan arduino depomu klonlayabilir veya indirebilirsiniz: https://github.com/danionescu0/arduino, biz de şu taslağı kullanacağız: https://github.com/danionescu0 /arduino/ağaç/usta…
Veya aşağıdaki kodu kopyalayıp yapıştırabilirsiniz:
/* * Bu proje tarafından kullanılan kitaplıklar: * * 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;
Ultrasonik ultrasonik(12, 13);
const bayt mesafePot = A0;
const bayt timerPot = A1; const float yüzdeMaxDistanceChangedAllowed = 25; int gerçek Uzaklık; imzasız uzun maxDistanceDetectionTime; bool lockTimerStarted = yanlış;
geçersiz kurulum()
{ Serial.başlangıç(9600); klavye.başla(); initializeDisplay(); }
boşluk döngüsü()
{ clearDisplay(); realDistance = getActualDistance(); writeStatusData(); doDisplay(); if (!lockTimerStarted && shouldEnableLockTimer()) { lockTimerStarted = true; maxDistanceDetectionTime = millis(); Serial.println("kilit zamanlayıcı başlangıcı"); } else if (!shouldEnableLockTimer()){ Serial.println("kilit zamanlayıcı devre dışı"); lockTimerStarted = yanlış; } if (shouldLockScreen()) { lockScreen(); Serial.println("Kilit ekranı"); } gecikme(100); }
bool olmalıdırLockScreen()
{ return lockTimerStarted && (millis() - maxDistanceDetectionTime) / 1000 > getTimer(); }
bool mustEnableLockTimer()
{ int allowDistance = yüzdeMaxDistanceChangedAllowed / 100 * getDistance(); return getTimer() > 1 && getDistance() > 1 && factDistance - getDistance() > allowDistance; }
geçersiz writeStatusData()
{ setDisplayText(1, "MinDistance:", String(getDistance())); setDisplayText(1, "Zamanlayıcı:", String(getTimer())); setDisplayText(1, "Gerçek Mesafe:", String(gerçekMesafe)); int countDown = getTimer() - (millis() - maxDistanceDetectionTime) / 1000; Dize mesajı = ""; if (shouldLockScreen()) { mesaj = "kilit gönderildi"; } else if (shouldEnableLockTimer() && countDown >= 0) { message = ".." + String(countDown); } başka { mesaj = "hayır"; } setDisplayText(1, "Kilitleme: ", mesaj); }
void initializeDisplay()
{ GOFoled.init(0x3C); GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
void setDisplayText(byte fontSize, String etiketi, String verileri)
{ GOFoled.setTextSize(fontSize); GOFoled.println(etiket + ":" + veri); }
geçersiz doDisplay()
{ GOFoled.display(); }
void clearDisplay()
{ GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }
int getActualMesafe()
{ int uzaklıkSum = 0; for (byte i=0;i<10;i++) { DistanceSum += ultrasonic. Ranging(CM); }
dönüş mesafesiToplam / 10;
}
int getDistance()
{ dönüş haritası(analogRead(timerPot), 0, 1024, 0, 200); }
int getTimer()
{ dönüş haritası(analogRead(distancePot), 0, 1024, 0, 20); }
void lockScreen()
{ Serial.println("basma"); Keyboard.press(KEY_LEFT_CTRL); gecikme(10); Keyboard.press(KEY_LEFT_ALT); gecikme(10); klavye.write('l'); gecikme(10); Keyboard.releaseAll(); }
Son olarak usb kablosunu kullanarak arduinoyu bilgisayara bağlayın ve çizimi arduinoya yükleyin.
3. Adım: Cihazı Kullanma
Arduino bilgisayara bağlandığında sensörün önündeki mesafeyi sürekli olarak izleyecek ve mesafe artarsa bilgisayara "kilit" ekran tuş kombinasyonu gönderecektir.
Cihazın bazı konfigürasyonları vardır:
1. Normal mesafe, mesafe, A0'a bağlı değişken direnç kullanılarak yapılandırılabilir. Mesafe ayrıca OLED'de görüntülenir. Mesafe ayarlanandan %25 arttığında geri sayım başlayacaktır.
2. Zaman aşımı (geri sayım). Saniye cinsinden zaman aşımı, A1'e bağlı dirençten de yapılandırılabilir. Zaman aşımı süresi dolduğunda kilit komutu gönderilir
3. Tuş kombinasyonunu kilitleyin. Varsayılan kilit tuşu kombinasyonu, Ubuntu Linux 18 (CTRL+ALT+L) için çalışacak şekilde ayarlanmıştır. Kombinasyonu değiştirmek için çiziminizi işletim sisteminize göre değiştirmeniz gerekir:
4. Zaman aşımı ve mesafe koruması. Bu, klavyeyi taklit eden bir aygıt olduğundan, klavye işlevini devre dışı bırakan bir mekanizmaya sahip olmak iyi bir fikirdir. Çizimimde zaman aşımı ve mesafenin "1" den büyük olması gerektiğini seçtim. (isterseniz bunu kodda değiştirebilirsiniz)
"lockScreen()" işlevini bulun ve değiştirin
void lockScreen(){ Serial.println("basma"); Keyboard.press(KEY_LEFT_CTRL); gecikme(10); Keyboard.press(KEY_LEFT_ALT); gecikme(10); klavye.write('l'); gecikme(10); Keyboard.releaseAll(); }
Arduino özel anahtarlarının tam listesi için burayı kontrol edin:
4. Adım: Diğer Yaklaşımlar
Bu uygulamadan önce başka uygulamaları da düşündüm:
1. Kızılötesi termometre (MLX90614 https://www.sparkfun.com/products/10740). Kızılötesi termometre, uzaktaki bir nesne tarafından yayılan kızılötesi radyasyonları analiz ederek sıcaklığı ölçen bir cihazdır. Etrafta bir tane vardı ve belki bilgisayarın önünde sıcaklık farkını tespit edebilirim diye düşündüm.
Bağladım ama sıcaklık farkı çok küçüktü (öndeyken veya değilken) 1-2 derece ve bu kadar güvenilir olamayacağını düşündüm.
2. PIR sensörü. (https://www.sparkfun.com/products/13285) Bu ucuz sensörler "hareket sensörleri" olarak pazarlanmaktadır, ancak kızılötesi radyasyondaki değişiklikleri gerçekten tespit ederler, bu nedenle teorik olarak işe yarayabilir, bir kişi bilgisayardan ayrıldığında sensör algılar yani.. Ayrıca bu sensörlerde zaman aşımı ve hassasiyet düğmeleri bulunur. Bu yüzden bir tane bağladım ve onunla oynadım ama görünüşe göre sensör yakın bir mesafe için yapılmamış (geniş bir açıya sahip), her türlü yanlış uyarıyı verdi.
3. Web kamerasını kullanarak yüz algılama. Diğer projelerimde bu bilgisayar alanıyla oynadığım için bu seçenek çok ilginç görünüyordu: https://github.com/danionescu0/robot-camera-platfo… ve https://github.com/danionescu0/image-processing- pr…
Bu çocuk oyuncağıydı! Ancak bazı dezavantajlar vardı: Program çalışırken dizüstü bilgisayar kamerası başka amaçlar için kullanılamıyordu ve bunun için bazı bilgisayar kaynakları gerekliydi. Bu yüzden ben de bu fikirden vazgeçtim.
Bunun nasıl yapılabileceği hakkında daha fazla fikriniz varsa lütfen paylaşın, teşekkürler!
Önerilen:
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): 9 Adım
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): Karantina sırasında etrafta yatarak, ev kapısı için yüz tanıma sistemi kurarak zamanı öldürmenin bir yolunu bulmaya çalıştım. Ben ona Abellcadabra adını verdim - bu, sadece zili aldığım kapı zili ile sihirli bir ifade olan Abracadabra'nın birleşimidir. ÇOK KOMİK
LCD Ekran Ev Kilit Sistemi: 6 Adım
LCD Ekranlı Ev Kilit Sistemi: Bu proje bir ev kilidi görevi görecek ve evin içine girmenin tek yolu doğru 3 haneli koda basmaktır. LCD, kişiye doğru kodu girip girmediğini bildiren bir iletişim cihazı görevi görecektir. Onların
Bisiklet Kilit Açma Uyarı Sistemi: 15 Adım
Bisiklet Kilit Açma Uyarı Sistemi: Herkese merhaba…!!Nasılsın? Hepinizin evinde araçlar var. Araç güvenliği herkes için önemlidir. Benzer bir proje ile geri döndüm. Bu projemde GSM Modülü ve Arduino kullanarak bisiklet kilit açma uyarı sistemi yaptım. Bisikletin kilidi açıldığında
Arduino Kullanan RFID Kilit Sistemi: 6 Adım
Arduino Kullanan RFID Kilit Sistemi: Herkese merhaba, Bu benim ilk talimatım ve Judhi Prasetyo tarafından sunuldu. Çalıştay, benim stajyer olarak çalıştığım Assembly ev sahipliğinde gerçekleşti ve eğer bir yapımcıysanız çalışmak için en iyi yerlerden biri. RFID kilit sistemine geri dönersek, ben
Kağıt Dizüstü Bilgisayar Sehpası, Mümkün Olan En Ucuz Dizüstü Bilgisayar Sehpası.: 4 Adım
Kağıt Dizüstü Bilgisayar Sehpası, Mümkün Olan En Ucuz Dizüstü Bilgisayar Sehpası.: Quake3'ü seviyorum ve MacBook'umun dayanıklılığı konusunda oldukça endişeliyim. Bu dizüstü bilgisayar standını fanlarla satın alma fikrine asla sahip değilim, çünkü MacBook'ların altında hiç delik yok. Bu yarım topların dizüstü bilgisayarımı bükebileceğini düşünüyordum