جدول المحتويات:

نظام القفل التلقائي للكمبيوتر: 4 خطوات
نظام القفل التلقائي للكمبيوتر: 4 خطوات

فيديو: نظام القفل التلقائي للكمبيوتر: 4 خطوات

فيديو: نظام القفل التلقائي للكمبيوتر: 4 خطوات
فيديو: القفل التلقائي للكمبيوتر عند الإبتعاد عنه 2024, يوليو
Anonim
Image
Image
التجميع والتحميل
التجميع والتحميل

في هذا البرنامج التعليمي سنستكشف أمان قفل شاشة الكمبيوتر. تحتوي أنظمة التشغيل على مهلة قابلة للتكوين ستغلق الشاشة إذا لم يلمس المستخدم الماوس أو لوحة المفاتيح.

عادة ما يكون الافتراضي حوالي دقيقة واحدة. إذا اتبعت هذا الإعداد الافتراضي وتركت جهاز الكمبيوتر الخاص بك في بيئة مشغولة ، فقد يقوم شخص ما بالوصول إلى جهاز الكمبيوتر الخاص بك في تلك الدقيقة حتى يتم قفل الشاشة. إذا قمت بتعيينه على بضع ثوانٍ ، فستحصل على شاشة القفل كثيرًا عندما لا تلمس لوحة المفاتيح وهذا أمر مزعج …

في أحد الأيام سألني أحد زملائي في العمل عما إذا كان بإمكاني "إصلاح" هذه المشكلة عن طريق نوع من الأجهزة التي تغلق الكمبيوتر عندما لا يكون موجودًا ، وقد قبلت التحدي:)

لقد استكشفت العديد من الخيارات في رأسي مثل استخدام اردوينو ومستشعر الحرارة بالأشعة تحت الحمراء أو مستشعر PIR أو ربما استخدام اكتشاف الوجه على الكمبيوتر ، لكنني استقرت على طريقة أبسط:

سنقوم بدمج وظيفة Arduino Leonardo HID (محاكاة لوحة المفاتيح) مع مستشعر المسافة بالموجات فوق الصوتية لاكتشاف ما إذا كان الشخص يستخدم الكمبيوتر ، وإذا لم يكن الجهاز سيرسل مجموعة مفاتيح عبر USB لقفل الكمبيوتر.

الخطوة 1: المكونات

لأن هذا دليل على المفهوم ، سنقوم ببناء الجهاز على لوح التجارب

انك سوف تحتاج:

1. Arduino Leonardo (من المهم استخدام Leonardo لأنه يمكنه محاكاة لوحة المفاتيح)

2. جهاز استشعار المسافة بالموجات فوق الصوتية HC-SR04

3. 2 × 10 ك مقاومات متغيرة

4. اللوح ، أسلاك اللوح

5. كبل USB

6. شاشة OLED (https://www.adafruit.com/product/931)

الخطوة 2: التجميع والتحميل

التجميع والتحميل
التجميع والتحميل

تحقق أولاً مما إذا كان لديك جميع المكونات المطلوبة و Arduino IDE. سأنتقل بإيجاز إلى خطوات الاتصال ، ويمكنك دائمًا إلقاء نظرة على مخطط fritzing المرفق

المجسم

1. ضع ليوناردو على اللوح وثبته في مكانه بشريط مطاطي

2. ضع المقاومين المتغيرين ، شاشة OLED وجهاز الاستشعار فوق الصوتي على لوح التجارب

3. ربط الأسباب و vcc's

4. قم بتوصيل المسامير الوسطى للمقاومات بـ arduino A0 و A1

5. قم بتوصيل SDA و SCL للشاشة بـ SDA و SCL المميزين على ليوناردو

6. قم بتوصيل الزناد ودبوس الصدى الخاص بجهاز الاستشعار بالموجات فوق الصوتية بـ 12 ، 13 دبابيس رقمية ليوناردو

7. قم بتوصيل USB بالكمبيوتر

تحميل

بادئ ذي بدء ، ستحتاج إلى تنزيل مكتبات arduino الضرورية وتثبيتها:

1. مكتبة GOFi2cOLED:

2. مكتبة Ultrasonic-HC-SR04:

إذا كنت لا تعرف كيفية تثبيت مكتبات اردوينو ، فراجع هذا البرنامج التعليمي.

بعد تنزيل المكتبات أعلاه وتثبيتها ، يمكنك استنساخ أو تنزيل مستودع اردوينو الخاص بي الموجود هنا: https://github.com/danionescu0/arduino ، وسنستخدم هذا الرسم التخطيطي: https://github.com/danionescu0 / اردوينو / شجرة / سيد …

أو يمكنك نسخ الرمز ولصقه أدناه:

/ * * المكتبات المستخدمة في هذا المشروع: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 * / #include "Keyboard.h" # تتضمن "Wire.h" # تتضمن "GOFi2cOLED.h" #include "Ultrasonic.h"

GOFi2cOLED GOFoled ؛

بالموجات فوق الصوتية (12 ، 13) ؛

مسافة بايت constPot = A0 ؛

const بايت timerPot = A1 ؛ نسبة تعويم const في المئةMaxDistanceChangedAllowed = 25 ؛ المسافة الفعلية maxDistanceDetectionTime طويلة بدون توقيع ؛ bool lockTimerStarted = خطأ ؛

الإعداد باطل()

{Serial.begin (9600) ، Keyboard.begin () ، initializeDisplay () ، }

حلقة فارغة()

{clearDisplay () ، الفعلية = getActualDistance () ؛ writeStatusData () ، doDisplay () ، إذا (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true؛ maxDistanceDetectionTime = مللي () ، Serial.println ("بدء مؤقت القفل") ؛ } else if (! shouldEnableLockTimer ()) {Serial.println ("قفل مؤقت معطل")؛ lockTimerStarted = خطأ ، } if (shouldLockScreen ()) {lockScreen ()؛ Serial.println ("قفل الشاشة") ؛ } تأخير (100)؛ }

يجب boolLockScreen ()

{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer () ؛ }

يجب أن تكون منطقية EnableLockTimer ()

{int allowDistance = percentMaxDistanceChangedAllowed / 100 * getDistance () ؛ إرجاع getTimer ()> 1 && getDistance ()> 1 && activeDistance - getDistance ()> allowedDistance ؛ }

كتابة باطلة

{setDisplayText (1، "MinDistance:"، String (getDistance ())) ؛ setDisplayText (1، "Timer:"، String (getTimer ())) ؛ setDisplayText (1، "ActualDistance:"، String (activeDistance)) ؛ int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000 ؛ رسالة سلسلة = "" ؛ إذا (shouldLockScreen ()) {message = "تم إرسال القفل" ؛ } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown)؛ } آخر {message = "لا" ؛ } setDisplayText (1، "Locking:"، message) ؛ }

تهيئة باطلة

{GOFoled.init (0x3C) ، GOFoled.clearDisplay () ، GOFoled.setCursor (0، 0) ، }

setDisplayText باطلة (حجم الخط البايت ، تسمية السلسلة ، بيانات السلسلة)

{GOFoled.setTextSize (fontSize) ، GOFoled.println (التسمية + ":" + البيانات) ؛ }

عرض باطل ()

{GOFoled.display () ، }

باطل مسح

{GOFoled.clearDisplay () ، GOFoled.setCursor (0، 0) ، }

int getActualDistance ()

{int DistanceSum = 0 ؛ لـ (بايت i = 0 ؛ i <10 ؛ i ++) {مسافة + = ultrasonic. Ranging (سم) ؛ }

مسافة العودة سوم / 10 ؛

}

int getDistance ()

{خريطة العودة (analogRead (timerPot) ، 0 ، 1024 ، 0 ، 200) ؛ }

int getTimer ()

{خريطة العودة (analogRead (مسافة) ، 0 ، 1024 ، 0 ، 20) ؛ }

قفل الشاشة باطل ()

{Serial.println ("الضغط") ؛ Keyboard.press (KEY_LEFT_CTRL) ؛ تأخير (10) ؛ Keyboard.press (KEY_LEFT_ALT) ؛ تأخير (10) ؛ Keyboard.write ('l') ؛ تأخير (10) ؛ Keyboard.releaseAll () ؛ }

أخيرًا ، قم بتوصيل اردوينو بالكمبيوتر باستخدام كابل USB ، وقم بتحميل الرسم التخطيطي في اردوينو.

الخطوة الثالثة: استخدام الجهاز

استخدام الجهاز
استخدام الجهاز

عند توصيل اردوينو بالكمبيوتر ، فإنه يراقب باستمرار المسافة أمام المستشعر ويرسل مجموعة مفاتيح شاشة "قفل" إلى الكمبيوتر إذا زادت المسافة.

الجهاز به بعض التكوينات:

1. المسافة العادية ، يمكن تكوين المسافة باستخدام المقاوم المتغير المتصل بـ A0. يتم عرض المسافة أيضًا على شاشة OLED. عندما تزداد المسافة بنسبة 25٪ من تلك التي تم تعيينها ، سيبدأ العد التنازلي

2. مهلة (العد التنازلي). يمكن أيضًا تكوين المهلة بالثواني من المقاوم المتصل بـ A1. عند انتهاء المهلة ، سيتم إرسال أمر القفل

3. قفل تركيبة المفاتيح. تم إعداد مجموعة مفاتيح القفل الافتراضية للعمل مع Ubuntu Linux 18 (CTRL + ALT + L). لتغيير المجموعة ، تحتاج إلى تعديل مخططك وفقًا لنظام التشغيل الخاص بك:

4. حماية المهلة والمسافة. نظرًا لأن هذا جهاز يحاكي لوحة المفاتيح ، فمن الجيد أن يكون لديك آلية لإلغاء تنشيط وظيفة لوحة المفاتيح. لقد اخترت في الرسم الخاص بي أن تكون المهلة والمسافة أكبر من "1". (يمكنك تعديل ذلك في الكود إذا أردت)

حدد موقع وتغيير وظيفة "lockScreen ()"

void lockScreen () {Serial.println ("press") ؛ Keyboard.press (KEY_LEFT_CTRL) ؛ تأخير (10) ؛ Keyboard.press (KEY_LEFT_ALT) ؛ تأخير (10) ؛ Keyboard.write ('l') ؛ تأخير (10) ؛ Keyboard.releaseAll () ؛ }

للحصول على قائمة كاملة بمفاتيح اردوينو الخاصة ، تحقق هنا:

الخطوة 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- العلاقات العامة …

كانت هذه قطعة من الكعكة! ولكن كانت هناك بعض العيوب: لا يمكن استخدام كاميرا الكمبيوتر المحمول لأغراض أخرى أثناء تشغيل البرنامج ، وستكون هناك حاجة إلى بعض موارد الكمبيوتر لذلك. لذا فقد أسقطت هذه الفكرة أيضًا.

إذا كان لديك المزيد من الأفكار حول كيفية القيام بذلك ، يرجى مشاركتها ، شكرًا!

موصى به: