Агуулгын хүснэгт:

Автоматаар түгжих компьютерийн систем: 4 алхам
Автоматаар түгжих компьютерийн систем: 4 алхам

Видео: Автоматаар түгжих компьютерийн систем: 4 алхам

Видео: Автоматаар түгжих компьютерийн систем: 4 алхам
Видео: Best 9 Tips Windows 11 2024, Долдугаар сарын
Anonim
Image
Image
Угсрах, байршуулах
Угсрах, байршуулах

Энэхүү гарын авлагад бид компьютерийн дэлгэцийн түгжээний аюулгүй байдлыг судлах болно. Үйлдлийн системүүд нь хэрэглэгч хулгана, гартаа хүрээгүй тохиолдолд дэлгэцийг түгжих тохиргоог хийх боломжтой.

Ихэвчлэн анхдагч нь нэг минут орчим байдаг. Хэрэв та энэ өгөгдмөл дүрмийг дагаж, завгүй орчинд компьютерээ орхих юм бол дэлгэц түгжигдэх хүртэл хэн нэгэн таны компьютерт нэвтрэх болно. Хэрэв та үүнийг хэдхэн секундын дотор тохируулбал гарыг хүрэхгүй байх үед түгжээний дэлгэц ихэвчлэн гарч ирдэг бөгөөд энэ нь ядаргаатай байдаг …

Нэг өдөр ажлын хамт олон надаас энэ асуудлыг байхгүй байхад компьютерийг түгждэг төхөөрөмжөөр асуудлыг шийдэж чадах уу гэж асуухад би энэ даалгаврыг хүлээж авлаа:)

Би толгойдоо ардуино, хэт улаан туяаны термометр мэдрэгч, PIR мэдрэгч эсвэл компьютер дээр нүүр илрүүлэх гэх мэт хэд хэдэн сонголтыг судалж үзсэн боловч би илүү энгийн аргыг сонгосон.

Бид Arduino Leonardo HID функцийг (гарыг дуурайх) хэт авианы зайны мэдрэгчтэй хослуулан ашиглах бөгөөд хүн компьютер ашиглаж байгаа эсэхийг илрүүлэх болно.

Алхам 1: бүрэлдэхүүн хэсгүүд

Учир нь энэ нь бид төхөөрөмжийг талхны тавцан дээр бүтээх болно гэсэн ойлголтын нотолгоо юм

Танд хэрэгтэй болно:

1. Ардуино Леонардо (гарыг дуурайж чаддаг тул Леонардог ашиглах нь чухал)

2. HC-SR04 хэт авианы зайн мэдрэгч

3. 2 x 10 K хувьсах эсэргүүцэл

4. талхны хавтан, талхны утас

5. USB кабель

6. OLED дэлгэц (https://www.adafruit.com/product/931)

Алхам 2: Угсрах, байршуулах

Угсрах, байршуулах
Угсрах, байршуулах

Эхлээд танд шаардлагатай бүх бүрэлдэхүүн хэсгүүд болон Arduino IDE байгаа эсэхийг шалгаарай. Би холболтын алхам руу товчхон очих гэж байгаа бөгөөд та хавсаргасан fritzing схемийг үргэлж үзэх боломжтой

Чуулган

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 = худал;

хүчингүй тохиргоо ()

{Serial.begin (9600); Keyboard.begin (); эхлүүлэхDisplay (); }

хоосон давталт ()

{clearDisplay (); actualDistance = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("түгжигч таймер эхлэх"); } if if (! shouldEnableLockTimer ()) {Serial.println ("түгжих цаг хэмжигчийг идэвхгүй болгосон"); lockTimerStarted = худал; } if (shouldLockScreen ()) {lockScreen (); Serial.println ("Түгжих дэлгэц"); } саатал (100); }

bool shouldLockScreen ()

{буцах lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }

bool shouldEnableLockTimer ()

{int allowedDistance = процентMaxDistanceChangedAllowed / 100 * getDistance (); буцах getTimer ()> 1 && getDistance ()> 1 && actualDistance - getDistance ()> Зөвшөөрөгдсөн зай; }

хоосон бичихStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Таймер:", String (getTimer ())); setDisplayText (1, "ActualDistance:", String (actualDistance)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String message = ""; if (shouldLockScreen ()) {message = "түгжээ илгээгдсэн"; } if if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } өөр {мессеж = "үгүй"; } setDisplayText (1, "Locking:", зурвас); }

void initializeDisplay ()

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

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

{GOFoled.setTextSize (fontSize); GOFoled.println (шошго + ":" + өгөгдөл); }

void doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

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

int getActualDistance ()

{int distanceSum = 0; for (byte i = 0; i <10; i ++) {distanceSum+= хэт авианы. 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 (); }

Эцэст нь arduino -г USB кабель ашиглан компьютерт холбож, ноорогоо arduino -д оруулна уу.

Алхам 3: Төхөөрөмжийг ашиглах

Төхөөрөмжийг ашиглах нь
Төхөөрөмжийг ашиглах нь

Arduino компьютерт холбогдсон үед мэдрэгчийн урд талын зайг тасралтгүй хянаж, зай нэмэгдэх тохиолдолд дэлгэц рүү "түгжих" товчлуурыг илгээнэ.

Төхөөрөмж нь хэд хэдэн тохируулгатай байдаг:

1. Ердийн зай, зайг A0 -д холбогдсон хувьсах эсэргүүцэл ашиглан тохируулж болно. Мөн зайг OLED дээр харуулдаг. Зай 25% -иар нэмэгдэхэд тоолох тоолуур эхэлнэ

2. Хугацаа дуусах (тоолох). А1 -т холбогдсон резистороос секундын дотор завсарлага авах боломжтой. Хугацаа дуусахад түгжих командыг илгээх болно

3. Түгжих товчлуурын хослол. Анхдагч түгжээний товчлуурын хослолыг 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 (); }

Arduino тусгай түлхүүрүүдийн бүрэн жагсаалтыг эндээс үзнэ үү:

Алхам 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- пр…

Энэ бол бялуу байсан! Гэхдээ зарим сул талууд байсан: програм ажиллаж байх үед зөөврийн компьютерын камерыг өөр зорилгоор ашиглах боломжгүй байсан бөгөөд үүнд компьютерийн зарим эх үүсвэр шаардлагатай болно. Тиймээс би энэ санаагаа бас орхисон.

Хэрэв танд үүнийг хэрхэн хийх талаар илүү их санаа байвал хуваалцаарай, баярлалаа!

Зөвлөмж болгож буй: