Daftar Isi:

Sistem Komputer Kunci Otomatis: 4 Langkah
Sistem Komputer Kunci Otomatis: 4 Langkah

Video: Sistem Komputer Kunci Otomatis: 4 Langkah

Video: Sistem Komputer Kunci Otomatis: 4 Langkah
Video: Cara Setting Lock Screen Windows 10 (Kunci Otomatis) 2024, Juli
Anonim
Image
Image
Perakitan & Unggah
Perakitan & Unggah

Dalam tutorial ini kita akan mengeksplorasi keamanan kunci layar komputer. Sistem operasi memiliki batas waktu yang dapat dikonfigurasi yang akan mengunci layar Anda jika pengguna belum menyentuh mouse atau keyboard.

Biasanya defaultnya sekitar satu menit. Jika Anda mengikuti standar ini dan meninggalkan komputer Anda di lingkungan yang sibuk, seseorang mungkin mengakses komputer Anda pada menit itu hingga layar terkunci. Jika Anda menyetelnya ke beberapa detik, Anda akan sering mendapatkan layar kunci saat Anda tidak menyentuh keyboard dan itu mengganggu…

Suatu hari seorang rekan kerja bertanya kepada saya apakah saya dapat "memperbaiki" masalah ini dengan semacam perangkat yang mengunci komputer ketika dia tidak ada di sana, dan saya menerima tantangannya:)

Saya telah menjelajahi beberapa opsi di kepala saya seperti menggunakan arduino dan sensor termometer inframerah, sensor PIR atau mungkin menggunakan deteksi wajah di komputer, tetapi saya telah memilih metode yang lebih sederhana:

Kami akan menggabungkan fungsionalitas Arduino Leonardo HID (emulasi keyboard) dengan sensor jarak ultrasonik untuk mendeteksi apakah seseorang menggunakan komputer, jika tidak, perangkat akan mengirimkan kombinasi tombol melalui USB untuk mengunci komputer.

Langkah 1: Komponen

Karena ini adalah bukti konsep, kami akan membuat perangkat di atas papan tempat memotong roti

Kamu akan membutuhkan:

1. Arduino Leonardo (penting menggunakan Leonardo karena bisa meniru keyboard)

2. Sensor jarak ultrasonik HC-SR04

3. resistor variabel 2 x 10 K

4. papan tempat memotong roti, kabel papan tempat memotong roti

5. Kabel USB

6. Layar OLED (https://www.adafruit.com/product/931)

Langkah 2: Perakitan & Unggah

Perakitan & Unggah
Perakitan & Unggah

Pertama periksa apakah Anda memiliki semua komponen yang dibutuhkan dan Arduino IDE. Saya akan pergi ke langkah-langkah koneksi secara singkat, dan Anda selalu dapat melihat skema fritzing terlampir

perakitan

1. Letakkan Leonardo di papan tempat memotong roti dan tahan dengan karet gelang

2. letakkan dua resistor variabel, layar OLED dan sensor ultrasonik pada papan tempat memotong roti

3. sambungkan ground dan vcc

4. sambungkan pin tengah resistor ke arduino A0 dan A1

5. sambungkan SDA dan SCL layar ke SDA dan SCL yang ditandai pada Leonardo

6. sambungkan pin pemicu dan gema sensor ultrasonik ke 12, 13 pin digital Leonardo

7. sambungkan USB ke komputer

Mengunggah

Pertama-tama Anda harus mengunduh dan menginstal pustaka arduino yang diperlukan:

1. Pustaka GOFi2cOLED:

2. Perpustakaan Ultrasonic-HC-SR04:

Jika Anda tidak tahu cara menginstal perpustakaan arduino, lihat tutorial ini.

Setelah Anda mengunduh dan menginstal pustaka di atas, Anda dapat mengkloning atau mengunduh repositori arduino saya yang terletak di sini: https://github.com/danionescu0/arduino, dan kami akan menggunakan sketsa ini: https://github.com/danionescu0 /arduino/pohon/master…

Atau Anda dapat menyalin dan menempelkan kode di bawah ini:

/* * Library yang digunakan oleh proyek 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 persenMaxDistanceChangedAllowed = 25; int jarak aktual; maxDistanceDetectionTime panjang yang tidak ditandatangani; bool lockTimerStarted = salah;

batalkan pengaturan()

{ Serial.begin(9600); Keyboard.mulai(); inisialisasi Tampilan(); }

lingkaran kosong()

{ clearDisplay(); jarak aktual = getActualDistance(); writeStatusData(); tampilkan(); if (!lockTimerStarted && shouldEnableLockTimer()) { lockTimerStarted = true; maxDistanceDetectionTime = milis(); Serial.println("mengunci timer dimulai"); } else if (!shouldEnableLockTimer()){ Serial.println("lock timer dinonaktifkan"); lockTimerStarted = salah; } if (shouldLockScreen()) { lockScreen(); Serial.println("Kunci layar"); } penundaan(100); }

bool shouldLockScreen()

{ kembali lockTimerStarted && (milis() - maxDistanceDetectionTime) / 1000 > getTimer(); }

bool shouldEnableLockTimer()

{ int AllowedDistance = persenMaxDistanceChangedAllowed / 100 * getDistance(); kembali getTimer() > 1 && getDistance() > 1 && actualDistance - getDistance() > allowDistance; }

batal tulisStatusData()

{ setDisplayText(1, "Jarak Minimum:", String(getDistance())); setDisplayText(1, "Pewaktu:", String(getTimer())); setDisplayText(1, "Jarak Aktual:", String(Jarak Aktual)); int countDown = getTimer() - (millis() - maxDistanceDetectionTime) / 1000; String pesan = ""; if (shouldLockScreen()) { pesan = "kunci terkirim"; } else if (shouldEnableLockTimer() && countDown >= 0) { message = ".." + String(countDown); } else { pesan = "tidak"; } setDisplayText(1, "Mengunci: ", pesan); }

batal inisialisasi Tampilan()

{ GOFoled.init(0x3C); GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }

void setDisplayText(byte fontSize, label String, data String)

{ GOFoled.setTextSize(ukuran font); GOFoled.println(label + ":" + data); }

batalkan tampilan()

{ GOFoled.display(); }

batal hapus tampilan()

{ GOFoled.clearDisplay(); GOFoled.setCursor(0, 0); }

int getActualDistance()

{ int jarakJumlah = 0; for (byte i=0;i<10;i++) { distanceSum += ultrasonik. Raning(CM); }

jarak kembaliJumlah / 10;

}

int getJarak()

{ kembali peta(analogRead(timerPot), 0, 1024, 0, 200); }

int getTimer()

{ kembali peta(analogRead(jarakPot), 0, 1024, 0, 20); }

layar kunci batal()

{ Serial.println("menekan"); Keyboard.tekan(KEY_LEFT_CTRL); penundaan (10); Keyboard.tekan(KEY_LEFT_ALT); penundaan (10); Keyboard.write('l'); penundaan (10); Keyboard.releaseAll(); }

Terakhir sambungkan arduino ke komputer menggunakan kabel usb, dan upload sketch ke arduino.

Langkah 3: Menggunakan Perangkat

Menggunakan Perangkat
Menggunakan Perangkat

Ketika arduino terhubung ke komputer maka akan terus memantau jarak di depan sensor dan mengirim kombinasi tombol layar "mengunci" ke komputer jika jaraknya bertambah.

Perangkat memiliki beberapa konfigurasi:

1. Jarak normal, jarak dapat dikonfigurasi menggunakan resistor variabel yang terhubung ke A0. Jarak juga ditampilkan pada OLED. Ketika jarak akan meningkat 25% dari jarak yang ditentukan, hitungan mundur akan dimulai

2. Batas waktu (hitung mundur). Batas waktu dalam detik juga dapat dikonfigurasi dari resistor yang terhubung ke A1. Ketika batas waktu berakhir, perintah kunci akan dikirim

3. Kunci kombinasi tombol. Kombinasi tombol kunci default diatur agar berfungsi untuk Ubuntu Linux 18 (CTRL+ALT+L). Untuk mengubah kombinasi, Anda perlu memodifikasi sketsa Anda sesuai dengan sistem operasi Anda:

4. Batas waktu dan perlindungan jarak. Karena ini adalah perangkat yang mengemulasi keyboard, ada baiknya untuk memiliki mekanisme menonaktifkan fungsionalitas keyboard. Dalam sketsa saya, saya telah memilih bahwa batas waktu dan jarak harus lebih besar dari "1". (Anda dapat memodifikasinya dalam kode jika Anda mau)

Cari dan ubah fungsi "lockScreen()"

void lockScreen(){ Serial.println("menekan"); Keyboard.tekan(KEY_LEFT_CTRL); penundaan (10); Keyboard.tekan(KEY_LEFT_ALT); penundaan (10); Keyboard.write('l'); penundaan (10); Keyboard.releaseAll(); }

Untuk daftar lengkap kunci khusus arduino, periksa di sini:

Langkah 4: Pendekatan Lain

Sebelum implementasi ini saya telah mempertimbangkan beberapa implementasi lain juga:

1. Termometer inframerah (MLX90614 https://www.sparkfun.com/products/10740). Termometer inframerah adalah perangkat yang mengukur suhu dengan menganalisis radiasi inframerah yang dipancarkan oleh suatu objek di kejauhan. Saya punya satu tergeletak di sekitar dan saya pikir mungkin saya bisa mendeteksi perbedaan suhu di depan komputer.

Saya sudah menghubungkannya, tetapi perbedaan suhu sangat kecil (ketika saya di depan atau tidak) 1-2 derajat dan saya pikir itu tidak bisa diandalkan

2. Sensor PIR. (https://www.sparkfun.com/products/13285) Sensor murah ini dipasarkan sebagai "sensor gerak" tetapi mereka benar-benar mendeteksi perubahan radiasi inframerah sehingga secara teori bisa bekerja, ketika seseorang meninggalkan komputer, sensor akan mendeteksi itu.. Juga sensor ini memiliki built in timeout dan tombol sensitivitas. Jadi saya telah menghubungkannya dan memainkannya tetapi tampaknya sensor itu tidak dibuat untuk jarak dekat (memiliki sudut lebar), itu memberikan semua jenis peringatan palsu.

3. Deteksi wajah menggunakan webcam. Opsi ini tampak sangat menarik, karena saya bermain dengan bidang komputer ini di proyek saya yang lain seperti: https://github.com/danionescu0/robot-camera-platfo… dan https://github.com/danionescu0/image-processing- pr…

Ini adalah sepotong kue! Namun ada beberapa kekurangannya: kamera laptop tidak dapat digunakan untuk tujuan lain saat program sedang berjalan, dan beberapa sumber daya komputer akan diperlukan untuk itu. Jadi saya telah menjatuhkan ide ini juga.

Jika Anda memiliki lebih banyak ide tentang bagaimana hal ini dapat dilakukan, silakan bagikan, terima kasih!

Direkomendasikan: