תוכן עניינים:
- שלב 1: חיישן תנועה PIR
- שלב 2: הגדרת חיישן תנועה של PIR
- שלב 3: מודול מצלמה והגדרת פטל פטל
- שלב 4: שלב את חיישן התנועה של PIR ואת מודול המצלמה
- שלב 5: הגדרת בקבוק
- שלב 6: תוצאה
וִידֵאוֹ: גלאי אנושי Raspberry Pi + מצלמה + בקבוק: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
במדריך זה אעבור על השלבים של פרוייקט IoT Raspberry Pi שלי - שימוש בחיישן תנועה PIR, במודול מצלמת פטל לבניית מכשיר אבטחה פשוט וגישה ליומן האיתור באמצעות Flask.
שלב 1: חיישן תנועה PIR
PIR מייצג "אינפרא אדום פסיבי" וחיישן תנועה זה קולט תנועות על ידי צפייה בתצוגה האינפרא אדומה וקליט את השינויים האינפרא אדומים. לכן, כאשר עלה ואדם עובר את החיישן, הוא מזהה רק בני אדם מכיוון שאנו כבני אדם מייצרים חום ובכך פולט קרן אינפרא אדום. מכאן שחיישן התנועה הוא בחירה טובה לאיתור תנועות אנושיות.
שלב 2: הגדרת חיישן תנועה של PIR
ישנם שלושה סיכות לחיישן תנועה PIR, כוח, פלט וקרקע. מתחת לסיכות אתה יכול לראות את התוויות, VCC for Power, Out for Output ו- GND for ground. כאשר החיישן מזהה תנועות, סיכת הפלט תוציא אות גבוה לסיכה של Raspberry Pi שאיתה אתה מחבר את החיישן. עבור Power pin, אתה רוצה לוודא שהוא מתחבר לסיכה של 5V ב- Raspberry Pi לצורך הספק. עבור הפרויקט שלי, אני בוחר לחבר את סיכת הפלט עם Pin11 ב- Pi.
לאחר חיבור הכל, תוכל לשלוח לחיישן שלך הודעות טקסט על ידי הפעלת סקריפטים כמו זה להלן:
ייבא RPi. GPIO כ- GPIO ייבוא זמן GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #פלט קריאה מחיישן תנועה PIR בפין 11 בעוד True: i = GPIO.input (11) אם i == 0: #כאשר הפלט מחיישן התנועה הוא הדפסה נמוכה "אין זיהוי", i time.sleep (0.1) elif i == 1: #כאשר הפלט מחיישן התנועה הוא הדפסה גבוהה " תנועה זוהתה ", i time.sleep (0.1)
הפעל את התסריט על ה- Pi שלך והנח את הידיים או את חברך מול החיישן כדי לבדוק אם החיישן מרים את התנועה.
שלב 3: מודול מצלמה והגדרת פטל פטל
האדם פולט קרן אינפרא אדום בגלל החום, וכך גם עצמים עם טמפרטורות. לכן, בעלי חיים או חפצים חמים יכולים להפעיל גם את חיישן התנועה. אנחנו צריכים דרך לבדוק אם הגילוי תקף. ישנן דרכים רבות ליישם, אך בפרויקט שלי אני בוחר להשתמש במודול המצלמה של Raspberry Pi כדי לצלם תמונות כאשר חיישן התנועה קולט תנועות.
כדי להשתמש במודול המצלמה, תחילה עליך לוודא שהסיכות מחוברות לחריץ המצלמה ב- Pi. סוּג
sudo raspi-config
ב- Pi שלך כדי לפתוח את ממשק התצורה, ולאפשר את המצלמה ב'אפשרויות הממשק '. לאחר אתחול מחדש, תוכל לבדוק אם ה- Pi אכן מחובר למצלמה על ידי הקלדה
vcgencmd get_camera
וזה יראה לך את הסטטוס. השלב האחרון הוא התקנת מודול פיקמרה על ידי הקלדה
pip להתקין picamera
לאחר כל ההגדרות, תוכל לבדוק את המצלמה שלך על ידי הפעלת סקריפטים כמו זו שלמטה:
מייבוא picamera PiCamera
מזמן ייבוא מצלמת שינה = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()
התמונה תישמר בתור 'image.jpg' בספרייה זהה לתסריט של מצלמת התצלום שלך. שימו לב, אתם רוצים לוודא ש'שינה (2) 'נמצאת שם והמספר גדול מ -2 כך שלמצלמה יהיה מספיק זמן להתאים את מצב האור.
שלב 4: שלב את חיישן התנועה של PIR ואת מודול המצלמה
הרעיון של הפרויקט שלי הוא שחיישן התנועה והמצלמה יפנו לאותו כיוון. בכל פעם שחיישן התנועה קולט תנועות, המצלמה תצלם תמונה כדי שנוכל לבדוק מה גורם לתנועות לאחר מכן.
התסריט:
ייבוא RPi. GPIO כ- GPIO מזמן הייבוא של datetime מייבוא משעת Picamer יבוא PiCamera
GPIO.cleanup ()
GPIO.setwarnings (שקר) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #פלט קריאה מהודעת חיישן תנועה של PIR = מונה 'התחל' = 0 log_f = פתוח ('static/log.txt', 'w') log_f.close ()
מצלמה = PiCamera ()
pic_name = 0
camera.start_preview ()
time.sleep (2)
בעוד שזה נכון:
i = GPIO.input (11) אם i == 0: #כאשר הפלט מחיישן התנועה נמוך אם מונה> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' א ') הודעה = הודעה +'; סוף ב- ' + סוף +' / n 'הדפס (הודעה) log_f.write (הודעה) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (סופי) counter = 0 הדפסה "אין פולשים", i time.sleep (0.1) elif i == 1: #כאשר הפלט מחיישן התנועה גבוה אם counter == 0: current = str (datetime.now ()) הודעה = 'בן אדם זוהה:' + 'התחל ב' + מונה זרם = מונה + הדפסה אחת "פולש זוהה", i time.sleep (0.1) camera.stop_preview ()
הספריות של 'log.txt' והתמונות הן 'סטטיות', וזה הכרחי כדי ש- Flask יפעל.
שלב 5: הגדרת בקבוק
Flask היא מסגרת מיקרו אינטרנט הכתובה ב- Python ומבוססת על ערכת הכלים Werkzeug ומנוע התבניות Jinja2. קל ליישום ולתחזוקה. לקבלת הדרכה טובה יותר עבור Flask, אני ממליץ על הקישור הזה: Taskorial Mega Tutorial
התסריט הראשי, 'routes.py', של הפרויקט שלי:
מייבוא יישום תיקייה appFlask מתוך בקבוק ייבוא render_template, הפניה מחדש של מערכת הייבוא
APP_ROOT = os.path.dirname (os.path.abspath (_ קובץ_)) # מתייחס ל application_top
APP_STATIC = os.path.join (APP_ROOT, 'סטטי')
@appFlask.route ('/', method = ['GET', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = לכניסות יומנים: final_logs.append (log. strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)
קובץ ה- HTML 'view.html' נמצא בסרגל העליון (כי כשאני מעתיק את קודי ה- HTML לכאן, הוא למעשה הופך ל- HTML FORMAT …)
ומבנה הפרויקט צריך להיראות כמו משהו למטה (אבל כמובן שיש יותר קבצים מאלו):
iotproject / appfolder / routes.py תבניות / view.html סטטי / log.txt 0-j.webp
שלב 6: תוצאה
ליישום זה, לאחר שהכל יוגדר כהלכה, אתה אמור להיות מסוגל לגשת ל- Raspberry Pi שלך על ידי הקלדת כתובת ה- IP שלו בדפדפן, והתוצאה אמורה להיראות כמו תמונה בסרגל העליון בשלב זה.
מוּמלָץ:
הכינו מצלמה חד-פעמית משלכם עם פקק-בקבוק: 3 שלבים
הכינו מצלמה חד-פעמיים עם פקק פקק: הדרכה זו היא כל כך קלה לביצוע וגם מאוד זולה. כל מה שאתה צריך להצלחה הוא בורג חצובה באורך 6 מ"מ (1/4 ") ופקק בקבוק. חָשׁוּב. לשם כך עליך להחזיק את החוט המדויק על הבורג, אחרת תהרוס את חוט המצלמות שלך