Isi kandungan:
- Langkah 1: Komponen
- Langkah 2: Perhimpunan & Muat Naik
- Langkah 3: Menggunakan Peranti
- Langkah 4: Pendekatan Lain
Video: Sistem Komputer Kunci Auto: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Dalam tutorial ini kita akan meneroka keselamatan kunci skrin komputer. Sistem operasi mempunyai batas waktu yang dapat dikonfigurasi yang akan mengunci skrin anda jika pengguna belum menyentuh tetikus atau papan kekunci.
Biasanya lalai adalah sekitar satu minit. Sekiranya anda mengikuti lalai ini dan membiarkan komputer anda dalam persekitaran sibuk seseorang mungkin mengakses komputer anda pada saat itu sehingga skrin terkunci. Sekiranya anda menetapkannya untuk beberapa saat, anda akan mendapat skrin kunci dengan kerap apabila anda tidak menyentuh papan kekunci dan itu menjengkelkan…
Suatu hari rakan kerja bertanya kepada saya jika saya dapat "menyelesaikan" masalah ini dengan beberapa jenis peranti yang mengunci komputer semasa dia tidak berada di sana, dan saya menyahut cabaran:)
Saya telah meneroka beberapa pilihan di kepala saya seperti menggunakan arduino dan sensor termometer inframerah, sensor PIR atau mungkin menggunakan pengesanan wajah di komputer, tetapi saya telah menggunakan kaedah yang lebih mudah:
Kami akan menggabungkan fungsi Arduino Leonardo HID (keyboard emulate) dengan sensor jarak ultrasonik untuk mengesan jika seseorang menggunakan komputer, jika tidak, peranti akan menghantar kombinasi kunci melalui USB untuk mengunci komputer.
Langkah 1: Komponen
Kerana ini adalah bukti konsep kita akan membina peranti di papan roti
Anda memerlukan:
1. Arduino Leonardo (penting untuk menggunakan Leonardo kerana dapat meniru papan kekunci)
2. Sensor jarak ultrasonik HC-SR04
3. Perintang pemboleh ubah 2 x 10 K
4. papan roti, wayar papan roti
5. Kabel USB
6. Paparan OLED (https://www.adafruit.com/product/931)
Langkah 2: Perhimpunan & Muat Naik
Periksa terlebih dahulu jika anda mempunyai semua komponen yang diperlukan dan Arduino IDE. Saya akan pergi ke langkah-langkah sambungan secara ringkas, dan anda selalu dapat melihat skema fritzing yang dilampirkan
perhimpunan
1. Letakkan Leonardo di papan roti dan pegang di tempatnya dengan gelang getah
2. letakkan dua perintang berubah-ubah, paparan OLED dan sensor ultrasonik di papan roti
3. sambungkan tanah dan vcc
4. sambungkan pin tengah perintang ke arduino A0 dan A1
5. sambungkan SDA dan SCL paparan ke SDA dan SCL yang bertanda di Leonardo
6. sambungkan pin pemicu dan echo sensor ultrasonik ke 12, 13 pin digital Leonardo
7. sambungkan USB ke komputer
Muat naik
Pertama sekali, anda perlu memuat turun dan memasang perpustakaan arduino yang diperlukan:
1. Perpustakaan GOFi2cOLED:
2. Perpustakaan ultrasonik-HC-SR04:
Sekiranya anda tidak tahu cara memasang perpustakaan arduino, lihat tutorial ini.
Selepas anda memuat turun dan memasang perpustakaan di atas, anda boleh mengklon atau memuat turun repositori arduino saya yang terdapat di sini: https://github.com/danionescu0/arduino, dan kami akan menggunakan lakaran ini: https://github.com/danionescu0 / arduino / pokok / tuan…
Atau anda boleh menyalin dan menampal kod di bawah:
/ * * Perpustakaan yang digunakan oleh projek ini: * * 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 byte jarakPot = A0;
const byte timerPot = A1; const float peratusMaxDistanceChangedAllowed = 25; int sebenarnya Jarak; maxDistanceDetectionTime max unsigned; bool lockTimerStarted = false;
persediaan tidak sah ()
{Serial.begin (9600); Papan kekunci.begin (); inisialisasiDisplay (); }
gelung kosong ()
{clearDisplay (); sebenarDistance = getActualDistance (); tulisStatusData (); doDisplay (); jika (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("kunci pemasa bermula"); } lain jika (! shouldEnableLockTimer ()) {Serial.println ("kunci pemasa dilumpuhkan"); lockTimerStarted = false; } jika (harusLockScreen ()) {lockScreen (); Serial.println ("Skrin kunci"); } kelewatan (100); }
bool harusLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool harusEnableLockTimer ()
{int allowDistance = peratusMaxDistanceChangedAllowed / 100 * getDistance (); kembali getTimer ()> 1 && getDistance ()> 1 && sebenarDistance - getDistance ()> dibenarkanDistance; }
batal tulisStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Pemasa:", Rentetan (getTimer ())); setDisplayText (1, "ActualDistance:", String (sebenarDistance)); int countDown = getTimer () - (milis () - maxDistanceDetectionTime) / 1000; Mesej rentetan = ""; if (shouldLockScreen ()) {message = "kunci dihantar"; } lain jika (harusEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } lain {message = "tidak"; } setDisplayText (1, "Mengunci:", mesej); }
batal inisialisasi Paparan ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (byte fontSize, String label, String data)
{GOFoled.setTextSize (fontSize); GOFoled.println (label + ":" + data); }
batal doDisplay ()
{GOFoled.display (); }
kosongkan Paparan ()
{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
int getActualDistance ()
{int jarakSum = 0; untuk (byte i = 0; i <10; i ++) {distanceSum + = ultrasonik. Ranging (CM); }
jarak balikSum / 10;
}
int getDistance ()
{peta kembali (analogRead (timerPot), 0, 1024, 0, 200); }
int getTimer ()
{peta kembali (analogRead (jarakPot), 0, 1024, 0, 20); }
kunci kosong Skrin ()
{Serial.println ("menekan"); Papan kekunci.press (KEY_LEFT_CTRL); kelewatan (10); Papan kekunci.press (KEY_LEFT_ALT); kelewatan (10); Keyboard.write ('l'); kelewatan (10); Papan Kekunci.releaseAll (); }
Akhirnya sambungkan komputer arduino menggunakan kabel usb, dan muat naik lakaran ke arduino.
Langkah 3: Menggunakan Peranti
Apabila arduino disambungkan ke komputer, ia akan terus memantau jarak di depan sensor dan menghantar kombinasi kunci skrin "kunci" ke komputer jika jarak meningkat.
Peranti mempunyai beberapa konfigurasi:
1. Jarak normal, jarak dapat dikonfigurasikan dengan menggunakan perintang pemboleh ubah yang dihubungkan ke A0. Jaraknya juga dipaparkan di OLED. Apabila jarak akan meningkat dengan 25% dari jarak yang ditetapkan, undur akan bermula
2. Waktu tamat (undur). Timeout dalam beberapa saat juga boleh dikonfigurasi dari perintang yang disambungkan ke A1. Apabila tamat masa tamat arahan kunci akan dihantar
3. Gabungan kunci kunci. Gabungan kunci kunci lalai disediakan untuk berfungsi untuk Ubuntu Linux 18 (CTRL + ALT + L). Untuk mengubah kombinasi anda perlu mengubah lakaran anda mengikut sistem operasi anda:
4. Perlindungan masa dan jarak. Kerana ini adalah peranti yang meniru papan kekunci, ada baiknya mempunyai mekanisme untuk mematikan fungsi papan kekunci. Dalam lakaran saya, saya telah memilih bahawa masa dan jarak mesti lebih besar daripada "1". (anda boleh mengubahnya dalam kod jika anda mahu)
Cari dan ubah fungsi "lockScreen ()"
void lockScreen () {Serial.println ("menekan"); Papan kekunci.press (KEY_LEFT_CTRL); kelewatan (10); Papan kekunci.press (KEY_LEFT_ALT); kelewatan (10); Keyboard.write ('l'); kelewatan (10); Papan Kekunci.releaseAll (); }
Untuk senarai penuh kunci khas arduino, lihat di sini:
Langkah 4: Pendekatan Lain
Sebelum pelaksanaan ini, saya telah mempertimbangkan beberapa pelaksanaan lain:
1. Termometer inframerah (MLX90614 https://www.sparkfun.com/products/10740). Termometer inframerah adalah alat yang mengukur suhu dengan menganalisis radiasi inframerah yang dipancarkan oleh objek pada jarak jauh. Saya ada yang terbaring dan saya fikir mungkin saya dapat mengesan perbezaan suhu di depan komputer.
Saya mengaitkannya, tetapi perbezaan suhu sangat kecil (ketika saya berada di depan atau tidak) 1-2 darjah dan saya fikir ia tidak boleh dipercayai
2. PIR sensor. (https://www.sparkfun.com/products/13285) Sensor murah ini dipasarkan sebagai "sensor gerakan" tetapi mereka benar-benar mengesan perubahan radiasi inframerah sehingga secara teori ia dapat berfungsi, ketika seseorang meninggalkan komputer, sensor akan mengesan itu.. Juga sensor ini mempunyai kenalan masa tamat dan kepekaan. Oleh itu, saya menyambungkannya dan bermain dengannya tetapi nampaknya sensor itu tidak dibuat untuk jarak dekat (ia mempunyai sudut lebar), ia memberi semua jenis amaran palsu.
3. Pengesanan wajah menggunakan kamera web. Pilihan ini kelihatan sangat menarik, kerana saya bermain dengan bidang komputer ini dalam projek lain seperti: https://github.com/danionescu0/robot-camera-platfo… dan https://github.com/danionescu0/image-processing- pr …
Ini adalah sekeping kek! Tetapi ada beberapa kekurangan: kamera komputer riba tidak dapat digunakan untuk tujuan lain ketika program berjalan, dan beberapa sumber komputer diperlukan untuk itu. Oleh itu, saya juga menjatuhkan idea ini.
Sekiranya anda mempunyai lebih banyak idea mengenai bagaimana ini dapat dilakukan, sila kongsikannya, terima kasih!
Disyorkan:
Abellcadabra (Sistem Kunci Pintu Pengecaman Muka): 9 Langkah
Abellcadabra (Sistem Kunci Pintu Pengecaman Wajah): Berbaring semasa karantina, saya cuba mencari jalan untuk membuang masa dengan membina pengecaman wajah untuk pintu rumah. Saya menamakannya Abellcadabra - yang merupakan gabungan antara Abracadabra, frasa ajaib dengan bel pintu yang saya hanya mengambil loceng. LOL
Sistem Keselamatan Kunci Jari Jari DIY: 8 Langkah
Sistem Keselamatan Kunci Sidik Jari DIY: Aplikasi ini berguna untuk mengamankan kunci (kunci) dari hari ke hari. Kadang kala kita mempunyai beberapa kunci biasa seperti rumah, garaj, tempat letak kereta di antara dua atau lebih orang. Terdapat sebilangan besar sistem metrik bio yang terdapat di pasar, ini
Sistem Kunci Rumah Paparan LCD: 6 Langkah
Sistem Kunci Rumah Paparan LCD: Projek ini akan berfungsi sebagai kunci rumah, dan satu-satunya cara anda boleh masuk ke dalam rumah adalah dengan menekan kod 3 digit yang betul. LCD akan berfungsi sebagai alat komunikasi untuk memberitahu individu tersebut jika mereka telah memasukkan kod yang betul atau tidak. IR
Kunci Basikal Tanpa Kunci: 6 Langkah
Kunci Basikal Tanpa Kunci: Satu perkara yang tidak diketahui oleh banyak orang adalah bahawa jauh lebih mudah memilih kunci basikal daripada yang kelihatannya. Itulah sebabnya pasukan kami mencadangkan reka bentuk kami untuk U-lock basikal berkelayakan RFID. Daripada menggunakan kunci mekanikal kuno, pengguna hanya dapat menahan
Kunci / Buka Kunci PC Windows Menggunakan RFID .: 7 Langkah (dengan Gambar)
Kunci / Buka Kunci PC Windows Menggunakan RFID: Hai! Berapa kerap anda merasa letih untuk menaip kata laluan untuk membuka kunci komputer / komputer riba anda setiap kali ia terkunci? Saya terbiasa menguncinya beberapa kali, setiap hari, dan tidak ada yang lebih menjengkelkan daripada menaip kata laluan / pin over dan ove