Мазмуну:
- 1 -кадам: Компоненттер
- 2 -кадам: Орнотуу жана Жүктөө
- 3 -кадам: Түзмөктү колдонуу
- 4 -кадам: Башка ыкмалар
Video: Auto Lock Computer System: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул үйрөткүчтө биз компьютердин экран кулпусунун коопсуздугун изилдейбиз. Операциондук системалардын конфигурацияланган убакыты бар, эгерде колдонуучу чычканга же клавиатурага тийбесе, анда экранды кулпулап коет.
Адатта, демейки бир мүнөттүн тегерегинде. Эгер сиз бул демейки эрежени аткарып, компьютериңизди бош эмес чөйрөдө калтырсаңыз, экран кулпуланганга чейин кимдир бирөө сиздин компьютериңизге кириши мүмкүн. Эгер сиз муну бир нече секундага койсоңуз, клавиатурага тийбей турганда кулпуланган экранды көп аласыз жана бул кыжырды келтирет …
Бир күнү кесиптешим менден бул маселени ал жокто компьютерди кулпулап турган кандайдыр бир түзмөк аркылуу чече аламбы деп сурады, мен бул көйгөйдү көтөрдүм:)
Мен башымда ардуино жана инфракызыл термометр сенсорун, PIR сенсорун колдонуу же компьютерде жүздү аныктоону колдонуу сыяктуу бир нече варианттарды изилдедим, бирок мен жөнөкөй ыкмага көндүм:
Биз Arduino Leonardo HID функциясын (клавиатураны тууроо) ультрадыбыштуу аралык сенсору менен айкалыштырабыз, эгерде адам компьютерди колдонуп жаткандыгын аныктоо үчүн, эгерде түзүлүш компьютерди кулпулоо үчүн USB аркылуу ачкычтардын айкалышын жөнөтөт.
1 -кадам: Компоненттер
Анткени бул - биз аппаратты нан үстүнө курабыз деген түшүнүктүн далили
Сага керек болот:
1. Ардуино Леонардо (Леонардону колдонуу маанилүү, анткени ал клавиатураны туурай алат)
2. HC-SR04 УЗИ аралык сенсор
3. 2 х 10 К өзгөрмөлүү резисторлор
4. нан плитасы, нан зымдары
5. USB кабели
6. OLED дисплейи (https://www.adafruit.com/product/931)
2 -кадам: Орнотуу жана Жүктөө
Алгач сизде бардык керектүү компоненттер жана Arduino IDE бар -жогун текшериңиз. Мен кыскача туташуу кадамдарына барайын деп жатам, жана сиз дайыма тиркелген фризинг схемасын карай аласыз
Ассамблея
1. Леонардону нандын үстүнө коюп, резина боосу менен кармаңыз
2. эки өзгөрмөлүү резисторлорду, OLED дисплейди жана УЗИ сенсорун нан тактасына коюңуз
3. аянтчаларды жана vcc'терди туташтыруу
4. резисторлордун орто казыктарын arduino A0 жана A1 туташтырыңыз
5. дисплейдин SDA жана SCL'ин Леонардодо белгиленген SDA жана SCLге туташтырыңыз
6. УЗИ сенсорунун триггерин жана жаңырык пинин Леонардонун 12, 13 санарип казыктарына туташтырыңыз
7. USB'ди компьютерге туташтыруу
Жүктөө
Биринчиден, сиз керектүү arduino китепканаларын жүктөп алып, орнотушуңуз керек:
1. GOFi2cOLED китепканасы:
2. УЗИ-HC-SR04 китепканасы:
Эгерде сиз arduino китепканаларын кантип орнотууну билбесеңиз, бул окуу куралын караңыз.
Жогорудагы китепканаларды жүктөп, орноткондон кийин, бул жерде жайгашкан менин arduino репозиторийимди клондоштуруп же жүктөп алсаңыз болот: https://github.com/danionescu0/arduino, биз бул эскизди колдонобуз: https://github.com/danionescu0 /arduino/дарак/мастер…
Же төмөнкү кодду көчүрүп, чаптап койсоңуз болот:
/ * * Бул долбоордо колдонулган китепканалар: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include "Keyboard.h" #"Wire.h" кошуу #"GOFi2cOLED.h" кошуу #"Ultrasonic.h" кошуу
GOFi2cOLED GOFoled;
УЗИ УЗИ (12, 13);
const байт аралыгыPot = A0;
const байт timerPot = A1; const float процентMaxDistanceChangedAllowed = 25; int actualDistance; кол коюлбаган узак maxDistanceDetectionTime; bool lockTimerStarted = false;
жараксыз орнотуу ()
{Serial.begin (9600); Keyboard.begin (); initializeDisplay (); }
боштук цикл ()
{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = миллис (); Serial.println ("кулпулоо таймери башталат"); } else if (! shouldEnableLockTimer ()) {Serial.println ("кулпу таймери өчүрүлгөн"); lockTimerStarted = false; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Кулпуланган экран"); } кечиктирүү (100); }
bool shouldLockScreen ()
{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }
bool shouldEnableLockTimer ()
{int allowedDistance = процентMaxDistanceChangedAllowed / 100 * getDistance (); getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> allowedDistance; }
Void writeStatusData ()
{setDisplayText (1, "MinDistance:", String (getDistance ()))); setDisplayText (1, "Таймер:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (миллис () - maxDistanceDetectionTime) / 1000; String message = ""; if (shouldLockScreen ()) {message = "кулпу жөнөтүлдү"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "no"; } setDisplayText (1, "Locking:", билдирүү); }
void initializeDisplay ()
{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
void setDisplayText (байт fontSize, String label, String data)
{GOFoled.setTextSize (fontSize); GOFoled.println (label + ":" + data); }
жараксыз doDisplay ()
{GOFoled.display (); }
Void clearDisplay ()
{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }
int getActualDistance ()
{int distanceSum = 0; for (байт 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); }
void lockScreen ()
{Serial.println ("басуу"); Keyboard.press (KEY_LEFT_CTRL); кечигүү (10); Keyboard.press (KEY_LEFT_ALT); кечигүү (10); Keyboard.write ('l'); кечигүү (10); Keyboard.releaseAll (); }
Акыры, USB кабелин колдонуп, ардуинону компьютерге туташтырып, эскизин arduinoго жүктөңүз.
3 -кадам: Түзмөктү колдонуу
Ардуино компьютерге туташканда, ал сенсордун алдындагы аралыкты тынымсыз көзөмөлдөп турат жана эгер аралык көбөйсө, "кулпу" экран баскычтарынын комбинациясын компьютерге жөнөтөт.
Түзмөктүн конфигурациялары бар:
1. Кадимки аралык, аралыкты A0го туташкан өзгөрмө резистордун жардамы менен конфигурациялоого болот. Алыстык OLEDде да көрсөтүлөт. Качан аралык 25% га көбөйгөндө, артка саноо башталат
2. Тайм -аут (артка саноо). Секунддардагы күтүү убактысы A1ге туташкан резистордон конфигурацияланат. Күтүү мөөнөтү бүткөндө, кулпу буйругу жөнөтүлөт
3. Lock key комбинациясы. Демейки кулпу баскычтарынын айкалышы Ubuntu Linux 18 (CTRL+ALT+L) үчүн иштөө үчүн орнотулган. Айкалышты өзгөртүү үчүн эскизди операциялык системага жараша өзгөртүү керек:
4. Тайм -аут жана аралыктан коргоо. Бул клавиатураны эмуляциялоочу түзүлүш болгондуктан, клавиатуранын иштешин өчүрүү механизмине ээ болуу жакшы. Эскизимде мен күтүү убактысы жана аралык "1ден" чоңураак болушу керектигин тандадым. (эгер кааласаңыз, муну коддон өзгөртө аласыз)
"LockScreen ()" функциясын табыңыз жана өзгөртүңүз
void lockScreen () {Serial.println ("басуу"); 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- пр…
Бул торттун бир бөлүгү болчу! Бирок кээ бир кемчиликтери бар болчу: ноутбук камерасы программа иштеп турганда башка максаттарда колдонулбайт, ал үчүн кээ бир компьютердик ресурстар талап кылынат. Ошентип, мен да бул идеядан баш тарттым.
Эгерде сизде муну кантип жасоо жөнүндө көбүрөөк ойлоруңуз болсо, анда аларды бөлүшүңүз, рахмат!
Сунушталууда:
RFID Home Made Door Lock: 4 кадам
RFID Home Made Door Lock: RFID Door Lock түзмөгү - бул күнүмдүк жашооңузда колдоно турган практикалык түзмөк. Ачкыч картаңызды сканерлегенде, эшиктин кулпусун ача аласыз. Мен бул веб-сайттан долбоорду өзгөрттүм: https://atceiling.blogspot.com/2017/05/arduino-rfid.html?m=1Yo
Баскычтоп Servo Lock: 5 кадам
Баскычтоп Servo Lock: Салам баарына, жакшы күн өткөрдүңүз деп үмүттөнөбүз. Эгерде үмүттөнбөсөңүз, анда сиз бул окуу куралына жана кээ бир терапиялык музыкага ачык ой жүгүртүү менен артка кайрыла аласыз. Программалоо кыйын болушу мүмкүн. Бактыга жараша, бул окуу куралы эч кандай кыйынчылык туудурбайт, андыктан сиз аны аткара аласыз
LCD Display Home Lock System: 6 кадам
LCD Display Home Lock System: Бул проект үй кулпусунун ролун аткарат жана үйдүн ичине кирүүнүн бирден бир жолу - туура 3 орундуу кодду басуу. ЖК индивидге туура кодду киргизген -киргизбегенин билдирүү үчүн байланыш каражаты катары иштейт. IR
Portable Solar Auto Tracking System: 9 Кадам (Сүрөттөр менен)
Portable Solar Auto Tracking System: Medomyself Amazon Services LLC Associates Программасынын катышуучусу, өнөктөштүк жарнак программасы, Amazon сайтына жарнак берүү жана шилтеме аркылуу жарнак төлөмдөрүн табуу үчүн каражаттарды камсыз кылуу үчүн иштелип чыккан: Dave Weaver Бул курулуш
Porto-lock: Portable Lock: 5 кадам
Porto-lock: Portable Lock: Салам баарына, ошондуктан бул долбоорго келгенде, мен жөнөкөй нерсени ойлоп тапкым келди, анткени ал жөнөкөй маселени чечет, CR-стонуңузда кулпулар жок. Көпчүлүк мени башында эле кулпуну орнотуу оңой эмеспи деп жазып коюшту. Бул