ዝርዝር ሁኔታ:

ራስ -ሰር መቆለፊያ የኮምፒተር ስርዓት -4 ደረጃዎች
ራስ -ሰር መቆለፊያ የኮምፒተር ስርዓት -4 ደረጃዎች

ቪዲዮ: ራስ -ሰር መቆለፊያ የኮምፒተር ስርዓት -4 ደረጃዎች

ቪዲዮ: ራስ -ሰር መቆለፊያ የኮምፒተር ስርዓት -4 ደረጃዎች
ቪዲዮ: ስልክ ሲደወልልዎ እንዳይሰራ ማድረግና እርስዎ መደወል እንዲችሉ ማደግረግ ይቻላል! 2024, ሀምሌ
Anonim
Image
Image
ስብሰባ እና ስቀል
ስብሰባ እና ስቀል

በዚህ መማሪያ ውስጥ የኮምፒተር ማያ ገጽ ቁልፍን ደህንነት እንመረምራለን። ኦፕሬቲንግ ሲስተሞች ተጠቃሚው መዳፊትን ወይም የቁልፍ ሰሌዳውን ካልነካው ማያ ገጽዎን የሚቆልፍ ሊስተካከል የሚችል የእረፍት ጊዜ አላቸው።

ብዙውን ጊዜ ነባሪው ወደ አንድ ደቂቃ አካባቢ ነው። ይህንን ነባሪ ከተከተሉ እና ኮምፒተርዎን ሥራ በሚበዛበት አካባቢ ውስጥ ቢተው ማያ ገጹ እስኪቆለፍ ድረስ በዚያ ሰው ውስጥ ኮምፒተርዎን ሊደርስ ይችላል። ለጥቂት ሰከንዶች ካዋቀሩት የቁልፍ ሰሌዳውን በማይነኩበት ጊዜ ብዙውን ጊዜ የመቆለፊያ ማያ ገጹን ያገኛሉ እና ያ ያበሳጫል…

አንድ ቀን የሥራ ባልደረባዬ ይህንን በማይኖርበት ጊዜ ኮምፒውተሩን በሚቆልፈው አንድ ዓይነት መሣሪያ ይህንን ጉዳይ “ማስተካከል” እችል እንደሆነ ጠየቀኝ እና ተግዳሮቱን ወሰድኩ:)

በራሴ ውስጥ እንደ አርዱኢኖዎች እና የኢንፍራሬድ ቴርሞሜትር ዳሳሽ ፣ የፒአር ዳሳሽ ወይም ምናልባት በኮምፒዩተር ላይ የፊት ለይቶ ማወቅን በመጠቀም ብዙ አማራጮችን መርምሬአለሁ ፣ ግን እኔ ቀለል ባለ ዘዴ እረጋጋለሁ።

አንድ ሰው ኮምፒውተሩን እየተጠቀመ እንደሆነ ለማወቅ አርዱዲኖ ሊዮናርዶ HID ተግባራዊነትን (የቁልፍ ሰሌዳውን መምሰል) ከአልትራሳውንድ የርቀት ዳሳሽ ጋር እናዋህዳለን ፣ ካልሆነ መሣሪያው ኮምፒተርውን ለመቆለፍ በዩኤስቢ በኩል የቁልፍ ጥምር ይልካል።

ደረጃ 1: አካላት

ምክንያቱም ይህ የፅንሰ -ሀሳብ ማረጋገጫ ስለሆነ መሣሪያውን በዳቦ ሰሌዳ ላይ እንገነባለን

ያስፈልግዎታል:

1. አርዱinoና ሊዮናርዶ (የቁልፍ ሰሌዳውን መምሰል ስለሚችል ሊዮናርዶን መጠቀም አስፈላጊ ነው)

2. HC-SR04 ultrasonic ርቀት ዳሳሽ

3. 2 x 10 ኬ ተለዋዋጭ resistors

4. የዳቦ ሰሌዳ ፣ የዳቦ ሰሌዳ ሽቦዎች

5. የዩኤስቢ ገመድ

6. OLED ማሳያ (https://www.adafruit.com/product/931)

ደረጃ 2 - ስብሰባ እና ስቀል

ስብሰባ እና ስቀል
ስብሰባ እና ስቀል

ሁሉም አስፈላጊ ክፍሎች እና አርዱዲኖ አይዲኢ ካለዎት በመጀመሪያ ያረጋግጡ። እኔ በአጭሩ ወደ የግንኙነት ደረጃዎች እሄዳለሁ ፣ እና ሁል ጊዜ በተያያዘው የፍሪቲንግ መርሃግብር ላይ ማየት ይችላሉ

ስብሰባ

1. ሊዮናርዶን በዳቦ ሰሌዳው ላይ ያስቀምጡ እና ከጎማ ባንድ ጋር ያዙት

2. ሁለቱን ተለዋዋጭ resistors ፣ የ OLED ማሳያ እና የአልትራሳውንድ ዳሳሹን በዳቦ ሰሌዳው ላይ ያድርጉ

3. መሬቶችን እና ቪሲሲዎችን ያገናኙ

4. የተቃዋሚዎቹን መካከለኛ ፒኖች ከአርዲኖ A0 እና A1 ጋር ያገናኙ

5. የማሳያውን ኤስዲኤ እና ኤስ.ሲ.ኤልን በሊዮናርዶ ላይ ምልክት ከተደረገበት SDA እና SCL ጋር ያገናኙ

6. የአልትራሳውንድ ዳሳሹን ቀስቅሴ እና አስተጋባ ፒን ከሊዮናርዶ 12 ፣ 13 ዲጂታል ፒኖች ጋር ያገናኙ

7. ዩኤስቢውን ከኮምፒዩተር ጋር ያገናኙ

ስቀል

በመጀመሪያ አስፈላጊዎቹን የአርዱዲኖ ቤተ -ፍርግሞችን ማውረድ እና መጫን ያስፈልግዎታል-

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 */ #ያካትቱ «የቁልፍ ሰሌዳ.

GOFi2cOLED GOFoled;

ለአልትራሳውንድ አልትራሳውንድ (12 ፣ 13);

const byte distancePot = A0;

const byte timerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int ተጨባጭ ርቀት; ያልተፈረመ ረጅም maxDistanceDetectionTime; bool lockTimerStarted = ሐሰት;

ባዶነት ማዋቀር ()

{Serial.begin (9600); የቁልፍ ሰሌዳ.ጀማሪ (); initializeDisplay (); }

ባዶነት loop ()

{clearDisplay (); realDistance = getActualDistance (); StatusData (); doDisplay (); ከሆነ (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = ሚሊስ (); Serial.println ("የመቆለፊያ ሰዓት ቆጣሪ ይጀምራል"); } ሌላ ከሆነ (! shouldEnableLockTimer ()) {Serial.println ("የመቆለፊያ ሰዓት ቆጣሪ ተሰናክሏል"); lockTimerStarted = ሐሰት; } ከሆነ (shouldLockScreen ()) {lockScreen (); Serial.println ("የማያ ቆልፍ"); } መዘግየት (100); }

bool shouldLockScreen ()

{ተመለስ lockTimerStarted && (ሚሊስ () - maxDistanceDetectionTime) / 1000> getTimer (); }

bool አለበት EnableLockTimer ()

{int allowedDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); ተመለስ getTimer ()> 1 && getDistance ()> 1 && exactDistance - getDistance ()> የተፈቀደ ርቀት; }

ባዶ ጽሑፍ StatusData ()

{setDisplayText (1 ፣ “MinDistance:” ፣ String (getDistance ())); setDisplayText (1 ፣ “ሰዓት ቆጣሪ” ፣ ሕብረቁምፊ (getTimer ())); setDisplayText (1 ፣ “ActualDistance:” ፣ String (ትክክለኛው ርቀት)); int countDown = getTimer () - (ሚሊስ () - maxDistanceDetectionTime) / 1000; ሕብረቁምፊ መልእክት = ""; ከሆነ (shouldLockScreen ()) {message = "መቆለፊያ ተልኳል"; } ሌላ ከሆነ (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } ሌላ {message = "no"; } setDisplayText (1 ፣ “መቆለፍ” ፣ መልእክት); }

ባዶነት ማስጀመሪያ ማሳያ ()

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

ባዶ ስብስብ ማሳያ ማሳያ ጽሑፍ

{GOFoled.setTextSize (fontSize); GOFoled.println (መለያ + ":" + ውሂብ); }

ባዶነት ማሳያ ()

{GOFoled.display (); }

ባዶነት ግልጽ ማሳያ ()

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

int getActualDistance ()

{int distanceSum = 0; ለ (byte i = 0; i <10; i ++) {distanceSum+= ultrasonic. Ranging (CM); }

የመመለሻ ርቀት Sum / 10;

}

int getDistance ()

{የመመለሻ ካርታ (analogRead (timerPot) ፣ 0 ፣ 1024 ፣ 0 ፣ 200) ፤ }

int getTimer ()

{የመመለሻ ካርታ (analogRead (distancePot) ፣ 0 ፣ 1024 ፣ 0 ፣ 20) ፤ }

ባዶነት መቆለፊያ ማያ ()

{Serial.println («በመጫን»); የቁልፍ ሰሌዳ.ፕሬስ (KEY_LEFT_CTRL); መዘግየት (10); የቁልፍ ሰሌዳ.ፕሬስ (KEY_LEFT_ALT); መዘግየት (10); የቁልፍ ሰሌዳ። ይፃፉ ('l'); መዘግየት (10); የቁልፍ ሰሌዳ። መልቀቅ ሁሉም (); }

በመጨረሻ የዩኤስቢ ገመድ በመጠቀም አርዱዲኖን ኮምፒተርን ያገናኙ እና ንድፉን ወደ አርዱዲኖ ይስቀሉ።

ደረጃ 3 መሣሪያውን መጠቀም

መሣሪያን በመጠቀም
መሣሪያን በመጠቀም

አርዱዲኖ ከኮምፒውተሩ ጋር በሚገናኝበት ጊዜ በአነፍናፊው ፊት ያለውን ርቀት ያለማቋረጥ ይከታተላል እና ርቀቱ ቢጨምር “ቆልፍ” የማያ ቁልፍ ቁልፍን ወደ ኮምፒዩተሩ ይልካል።

መሣሪያው አንዳንድ ውቅሮች አሉት

1. መደበኛ ርቀት ፣ ርቀቱ ከ A0 ጋር የተገናኘውን ተለዋዋጭ ተከላካይ በመጠቀም ሊዋቀር ይችላል። ርቀቱ በኦሌድ ላይም ይታያል። ርቀቱ ከተደነገገው በ 25% ሲጨምር ቆጠራ ይጀምራል

2. የእረፍት ጊዜ (ቆጠራ)። በሰከንዶች ውስጥ ያለው የእረፍት ጊዜ ከኤ 1 ጋር ከተገናኘው ተከላካይ ሊዋቀር ይችላል። የጊዜ ማብቂያው ሲያልቅ የመቆለፊያ ትዕዛዙ ይላካል

3. የቁልፍ ቁልፍ ጥምረት። ነባሪው የመቆለፊያ ቁልፍ ጥምረት ለኡቡንቱ ሊኑክስ 18 (CTRL+ALT+L) እንዲሠራ ተዋቅሯል። ጥምሩን ለመቀየር በስርዓት ስርዓትዎ መሠረት ንድፍዎን መለወጥ ያስፈልግዎታል-

4. የጊዜ ማብቂያ እና የርቀት ጥበቃ። ይህ የቁልፍ ሰሌዳውን የሚመስል መሣሪያ ስለሆነ የቁልፍ ሰሌዳውን ተግባር የማቦዘን ዘዴ መኖሩ ጥሩ ሀሳብ ነው። በእኔ ንድፍ ውስጥ የጊዜ ማብቂያ እና ርቀቱ ከ “1” የበለጠ መሆን እንዳለበት መርጫለሁ። (ከፈለጉ በኮዱ ውስጥ ያንን መለወጥ ይችላሉ)

የ “lockScreen ()” ተግባርን ያግኙ እና ይለውጡ

ባዶነት መቆለፊያ ማያ ገጽ () {Serial.println (“በመጫን”); የቁልፍ ሰሌዳ.ፕሬስ (KEY_LEFT_CTRL); መዘግየት (10); የቁልፍ ሰሌዳ.ፕሬስ (KEY_LEFT_ALT); መዘግየት (10); የቁልፍ ሰሌዳ። ይፃፉ ('l'); መዘግየት (10); የቁልፍ ሰሌዳ። መልቀቅ ሁሉም (); }

ለሙሉ የአርዱዲኖ ልዩ ቁልፎች ዝርዝር እዚህ ይመልከቱ

ደረጃ 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- ፕ…

ይህ ኬክ ቁራጭ ነበር! ግን አንዳንድ ድክመቶች ነበሩ -ፕሮግራሙ በሚሠራበት ጊዜ የላፕቶ camera ካሜራ ለሌላ ዓላማዎች ጥቅም ላይ ሊውል አይችልም ፣ እና ለዚያ አንዳንድ የኮምፒተር ሀብቶች ያስፈልጋሉ። ስለዚህ እኔ ይህንን ሀሳብ ትቼዋለሁ።

ይህንን እንዴት ማድረግ እንደሚቻል ተጨማሪ ሀሳቦች ካሉዎት እባክዎን ያጋሯቸው ፣ አመሰግናለሁ!

የሚመከር: