সুচিপত্র:

অটো লক কম্পিউটার সিস্টেম: 4 টি ধাপ
অটো লক কম্পিউটার সিস্টেম: 4 টি ধাপ
Anonim
Image
Image
সমাবেশ এবং আপলোড
সমাবেশ এবং আপলোড

এই টিউটোরিয়ালে আমরা কম্পিউটার স্ক্রিন লকের নিরাপত্তা অন্বেষণ করতে যাচ্ছি। অপারেটিং সিস্টেমে একটি কনফিগারযোগ্য টাইমআউট থাকে যা ব্যবহারকারী মাউস বা কীবোর্ড স্পর্শ না করলে আপনার স্ক্রিন লক করে দেবে।

সাধারণত ডিফল্ট প্রায় এক মিনিট। আপনি যদি এই ডিফল্টটি অনুসরণ করেন এবং আপনার কম্পিউটারকে ব্যস্ত পরিবেশে ছেড়ে দেন তাহলে কেউ স্ক্রিন লক না হওয়া পর্যন্ত সেই মিনিটে আপনার কম্পিউটার অ্যাক্সেস করতে পারে। আপনি যদি এটি কয়েক সেকেন্ডে সেট করেন তবে আপনি যখন আপনি কীবোর্ডটি স্পর্শ করছেন না তখন আপনি প্রায়শই লক স্ক্রিনটি পাবেন এবং এটি বিরক্তিকর…

একদিন একজন কর্মী সহকর্মী আমাকে জিজ্ঞাসা করেছিলেন যে আমি এই সমস্যাটি কোন ধরনের যন্ত্র দ্বারা "ঠিক" করতে পারি যা কম্পিউটারটি লক করে যখন সে সেখানে নেই, এবং আমি চ্যালেঞ্জটি নিয়েছিলাম:)

আমি আমার মাথায় বেশ কয়েকটি বিকল্প অনুসন্ধান করেছি যেমন arduinos এবং একটি ইনফ্রারেড থার্মোমিটার সেন্সর, PIR সেন্সর বা কম্পিউটারে মুখ সনাক্তকরণ ব্যবহার করে, কিন্তু আমি একটি সহজ পদ্ধতিতে স্থির হয়েছি:

আমরা একটি Arduino Leonardo HID কার্যকারিতা (ইমুলেট কীবোর্ড) কে একটি অতিস্বনক দূরত্ব সেন্সরের সাথে একত্রিত করতে যাচ্ছি যে একজন ব্যক্তি কম্পিউটার ব্যবহার করছে কিনা তা সনাক্ত করতে, যদি না হয় তবে ডিভাইসটি কম্পিউটারকে লক করার জন্য USB এর মাধ্যমে একটি কী সমন্বয় পাঠাবে।

ধাপ 1: উপাদান

কারণ এটি ধারণার প্রমাণ আমরা একটি ব্রেডবোর্ডে ডিভাইসটি তৈরি করতে যাচ্ছি

আপনার প্রয়োজন হবে:

1. আরডুইনো লিওনার্দো (লিওনার্দো ব্যবহার করা গুরুত্বপূর্ণ কারণ এটি কীবোর্ড অনুকরণ করতে পারে)

2. HC-SR04 অতিস্বনক দূরত্ব সেন্সর

3. 2 x 10 K পরিবর্তনশীল প্রতিরোধক

4. breadboard, breadboard তারের

5. ইউএসবি কেবল

6. OLED ডিসপ্লে (https://www.adafruit.com/product/931)

ধাপ 2: সমাবেশ এবং আপলোড

সমাবেশ এবং আপলোড
সমাবেশ এবং আপলোড

প্রথমে আপনার সমস্ত প্রয়োজনীয় উপাদান এবং একটি Arduino IDE আছে কিনা তা পরীক্ষা করুন। আমি সংক্ষিপ্তভাবে সংযোগের ধাপগুলিতে যাচ্ছি, এবং আপনি সর্বদা সংযুক্ত ফ্রিজিং পরিকল্পনার দিকে নজর দিতে পারেন

সমাবেশ

1. লিওনার্দোকে রুটিবোর্ডে রাখুন এবং একটি রাবার ব্যান্ড দিয়ে এটিকে ধরে রাখুন

2. দুটি পরিবর্তনশীল প্রতিরোধক, OLED প্রদর্শন এবং অতিস্বনক সেন্সর ব্রেডবোর্ডে রাখুন

3. সংযোগ স্থল এবং vcc এর

4. প্রতিরোধকের মাঝের পিনগুলিকে আরডুইনো A0 এবং A1 এর সাথে সংযুক্ত করুন

5. ডিসপ্লের এসডিএ এবং এসসিএল লিওনার্দোতে চিহ্নিত এসডিএ এবং এসসিএল এর সাথে সংযুক্ত করুন

6. লিওনার্দোর 12, 13 ডিজিটাল পিনের সাথে অতিস্বনক সেন্সরের ট্রিগার এবং ইকো পিন সংযুক্ত করুন

7. কম্পিউটারে ইউএসবি সংযুক্ত করুন

আপলোড করুন

প্রথমে আপনাকে প্রয়োজনীয় আরডুইনো লাইব্রেরি ডাউনলোড এবং ইনস্টল করতে হবে:

1. GOFi2cOLED লাইব্রেরি:

2. অতিস্বনক- HC-SR04 লাইব্রেরি:

আপনি যদি আরডুইনো লাইব্রেরি কিভাবে ইনস্টল করতে জানেন না এই টিউটোরিয়ালটি দেখুন।

আপনি উপরের লাইব্রেরিগুলি ডাউনলোড এবং ইনস্টল করার পরে, আপনি এখানে অবস্থিত আমার arduino সংগ্রহস্থলটি ক্লোন বা ডাউনলোড করতে পারেন: https://github.com/danionescu0/arduino, এবং আমরা এই স্কেচটি ব্যবহার করব: https://github.com/danionescu0 /arduino/গাছ/মাস্টার…

অথবা আপনি নীচের কোডটি কপি এবং পেস্ট করতে পারেন:

/ * * এই প্রকল্পের দ্বারা ব্যবহৃত লাইব্রেরি: "Keyboard.h" #অন্তর্ভুক্ত "Wire.h" #অন্তর্ভুক্ত "GOFi2cOLED.h" #অন্তর্ভুক্ত "Ultrasonic.h"

GOFi2cOLED GOFoled;

অতিস্বনক অতিস্বনক (12, 13);

const বাইট দূরত্ব পট = A0;

const বাইট টাইমারপট = A1; const float percentMaxDistanceChangedAllowed = 25; int প্রকৃত দূরত্ব; স্বাক্ষরবিহীন দীর্ঘ maxDistanceDetectionTime; bool lockTimerStarted = মিথ্যা;

অকার্যকর সেটআপ()

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

অকার্যকর লুপ ()

{clearDisplay (); প্রকৃত দূরত্ব = getActualDistance (); স্ট্যাটাসডাটা লিখুন (); doDisplay (); যদি (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = মিলিস (); Serial.println ("লক টাইমার শুরু"); } অন্যথায় যদি (! shouldEnableLockTimer ()) {Serial.println ("লক টাইমার অক্ষম"); lockTimerStarted = মিথ্যা; } যদি (shouldLockScreen ()) {lockScreen (); Serial.println ("লক স্ক্রিন"); } বিলম্ব (100); }

bool shouldLockScreen ()

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

bool shouldEnableLockTimer ()

{int permissionDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); ফেরত getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowDistance; }

অকার্যকর স্ট্যাটাসডাটা ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "টাইমার:", স্ট্রিং (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; স্ট্রিং বার্তা = ""; যদি (shouldLockScreen ()) {message = "lock sent"; } অন্যথায় যদি (shouldEnableLockTimer () && countDown> = 0) {message = ".." + স্ট্রিং (countDown); } অন্যথায় {বার্তা = "না"; } setDisplayText (1, "লক করা:", বার্তা); }

শূন্য initializeDisplay ()

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

অকার্যকর সেট ডিসপ্লে টেক্সট (বাইট ফন্ট সাইজ, স্ট্রিং লেবেল, স্ট্রিং ডেটা)

{GOFoled.setTextSize (fontSize); GOFoled.println (লেবেল + ":" + ডেটা); }

অকার্যকর doDisplay ()

{GOFoled.display (); }

অকার্যকর পরিষ্কার প্রদর্শন ()

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

int getActualDistance ()

{int distanceSum = 0; জন্য (বাইট i = 0; i <10; i ++) {distanceSum+= ultrasonic. Ranging (CM); }

ফেরার দূরত্ব যোগ / 10;

}

int getDistance ()

{ফেরত মানচিত্র (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{ফেরত মানচিত্র (analogRead (distancePot), 0, 1024, 0, 20); }

অকার্যকর লকস্ক্রিন ()

{Serial.println ("টিপে"); Keyboard.press (KEY_LEFT_CTRL); বিলম্ব (10); Keyboard.press (KEY_LEFT_ALT); বিলম্ব (10); Keyboard.write ('l'); বিলম্ব (10); Keyboard.releaseAll (); }

অবশেষে ইউএসবি কেবল ব্যবহার করে আরডুইনো কম্পিউটারের সাথে সংযুক্ত করুন, এবং স্কেচটি আরডুইনোতে আপলোড করুন।

ধাপ 3: ডিভাইস ব্যবহার করা

ডিভাইস ব্যবহার করে
ডিভাইস ব্যবহার করে

যখন আরডুইনো কম্পিউটারের সাথে সংযুক্ত থাকে তখন এটি সেন্সরের সামনে ক্রমাগত দূরত্ব পর্যবেক্ষণ করবে এবং দূরত্ব বাড়লে কম্পিউটারে একটি "লক" স্ক্রিন কী কম্বিনেশন পাঠাবে।

ডিভাইসটির কিছু কনফিগারেশন রয়েছে:

1. সাধারণ দূরত্ব, দূরত্ব A0 এর সাথে সংযুক্ত পরিবর্তনশীল প্রতিরোধক ব্যবহার করে কনফিগার করা যায়। OLED তে দূরত্বও প্রদর্শিত হয়। যখন দূরত্বটি 25% এর সাথে বাড়বে যা সেট করা আছে তার থেকে একটি কাউন্টডাউন শুরু হবে

2. টাইমআউট (কাউন্টডাউন)। A1 এর সাথে সংযুক্ত প্রতিরোধক থেকে সেকেন্ডের সময়সীমাও কনফিগারযোগ্য। সময়সীমা শেষ হলে লক কমান্ড পাঠানো হবে

3. লক কী সমন্বয়। উবুন্টু লিনাক্স 18 (CTRL+ALT+L) এর জন্য কাজ করার জন্য ডিফল্ট লক কী কম্বিনেশন সেট আপ করা আছে। আপনার অপারেশন সিস্টেম অনুসারে আপনার স্কেচ পরিবর্তন করতে আপনার সমন্বয় পরিবর্তন করতে হবে:

4. সময়সীমা এবং দূরত্ব সুরক্ষা। কারণ এটি এমন একটি ডিভাইস যা কীবোর্ডকে অনুকরণ করে কীবোর্ডের কার্যকারিতা নিষ্ক্রিয় করার একটি পদ্ধতি থাকা ভাল ধারণা। আমার স্কেচে আমি বেছে নিয়েছি যে সময়সীমা এবং দূরত্ব "1" এর চেয়ে বেশি হতে হবে। (আপনি যদি কোডে এটি পরিবর্তন করতে পারেন যদি আপনি চান)

"LockScreen ()" ফাংশনটি সনাক্ত করুন এবং পরিবর্তন করুন

void lockScreen () {Serial.println ("pressing"); Keyboard.press (KEY_LEFT_CTRL); বিলম্ব (10); Keyboard.press (KEY_LEFT_ALT); বিলম্ব (10); Keyboard.write ('l'); বিলম্ব (10); Keyboard.releaseAll (); }

Arduino বিশেষ কীগুলির সম্পূর্ণ তালিকার জন্য, এখানে দেখুন:

ধাপ 4: অন্যান্য পন্থা

এই বাস্তবায়নের আগে আমি কিছু অন্যান্য বাস্তবায়নও বিবেচনা করেছি:

1. ইনফ্রারেড থার্মোমিটার (MLX90614 https://www.sparkfun.com/products/10740)। একটি ইনফ্রারেড থার্মোমিটার এমন একটি যন্ত্র যা একটি বস্তুর দ্বারা নির্গত ইনফ্রারেড বিকিরণ বিশ্লেষণ করে তাপমাত্রা পরিমাপ করে। আমার চারপাশে একজন শুয়ে ছিল এবং আমি ভেবেছিলাম আমি কম্পিউটারের সামনে তাপমাত্রার পার্থক্য সনাক্ত করতে পারি।

আমি এটি সংযুক্ত করেছি, কিন্তু তাপমাত্রার পার্থক্য খুব ছোট ছিল (যখন আমি সামনে ছিলাম বা না ছিলাম) 1-2 ডিগ্রি এবং আমি ভেবেছিলাম এটি এত নির্ভরযোগ্য হতে পারে না

2. পিআইআর সেন্সর। (https://www.sparkfun.com/products/13285) এই সস্তা সেন্সরগুলিকে "মোশন সেন্সর" হিসাবে বাজারজাত করা হয় কিন্তু তারা সত্যিই ইনফ্রারেড বিকিরণের পরিবর্তনগুলি সনাক্ত করে তাই তত্ত্বগতভাবে এটি কাজ করতে পারে, যখন একজন ব্যক্তি কম্পিউটার ছেড়ে চলে যায় তখন সেন্সর সনাক্ত করবে যে.. এছাড়াও এই সেন্সর একটি সময়সীমা এবং সংবেদনশীলতা knobs একটি বিল্ড আছে। তাই আমি একটি আপ hooked এবং এটি সঙ্গে খেলেছি কিন্তু এটা মনে হয় যে সেন্সর এটি একটি বন্ধ পরিসীমা জন্য তৈরি করা হয় না (এটি একটি বিস্তৃত কোণ আছে), এটি সব ধরনের মিথ্যা সতর্কতা দিয়েছে।

3. ওয়েবক্যাম ব্যবহার করে মুখ সনাক্তকরণ। এই বিকল্পটি খুব আকর্ষণীয় মনে হয়েছিল, যেহেতু আমি এই কম্পিউটার ক্ষেত্রের সাথে আমার অন্যান্য প্রকল্পগুলিতে খেলেছি: https://github.com/danionescu0/robot-camera-platfo… এবং https://github.com/danionescu0/image-processing- জনসংযোগ…

এটা ছিল কেকের টুকরো! কিন্তু কিছু ত্রুটি ছিল: প্রোগ্রাম চলাকালীন ল্যাপটপ ক্যামেরা অন্য কাজে ব্যবহার করা যাবে না, এবং এর জন্য কিছু কম্পিউটার সম্পদ প্রয়োজন হবে। তাই আমিও এই ধারণা বাদ দিয়েছি।

এটি কীভাবে করা যেতে পারে সে সম্পর্কে আপনার যদি আরও ধারণা থাকে তবে দয়া করে সেগুলি ভাগ করুন, ধন্যবাদ!

প্রস্তাবিত: