תוכן עניינים:

Raspberry Pi Photobooth: 5 שלבים
Raspberry Pi Photobooth: 5 שלבים

וִידֵאוֹ: Raspberry Pi Photobooth: 5 שלבים

וִידֵאוֹ: Raspberry Pi Photobooth: 5 שלבים
וִידֵאוֹ: Raspberry Pi PhotoBooth with Printer Tutorial 2024, נוֹבֶמבֶּר
Anonim
Raspberry Pi Photobooth
Raspberry Pi Photobooth

המטרה:

  • למד כיצד לקוד ולהתקין מצלמת פי
  • שימוש בהצהרות defin ו- if בקידוד
  • לומדים להשתמש בטכנולוגיה חדשה כמו נוריות RGB

שלב 1: מה שאתה צריך

מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
  • 1 פטל פטל 3
  • לוח לחם
  • מגשרים
  • 1 התנגדות תלויה באור
  • 1 קבלים
  • 1 כפתור לחיצה
  • 6 220 נגדים אוהם
  • 2 נוריות RGB
  • מצלמה אחת של פטל פטל

שלב 2: חיבור מודול המצלמה

חיבור מודול המצלמה
חיבור מודול המצלמה

קודם כל, כאשר ה- Pi כבוי, יהיה עליך לחבר את מודול המצלמה ליציאת המצלמה של Raspberry Pi, ולאחר מכן להפעיל את ה- Pi ולוודא שהתוכנה מופעלת.

  1. אתר את יציאת המצלמה שנמצאת בין יציאת HDMI ויציאת 3.5 מ"מ
  2. משוך כלפי מעלה את קליפ המצלמה בקצוות הפלסטיק עד שהקליפ יהיה באלכסון
  3. כעת הכנס את כבל המצלמות כשהכחול פונה ליציאת 3.5 מ"מ

שלב 3: הגדרת המצלמה

הגדרת המצלמה
הגדרת המצלמה
הגדרת המצלמה
הגדרת המצלמה

פתיחת כלי התצורה של Raspberry Pi מהתפריט הראשי והשבתה והפעלת כל הממשקים שלמעלה

מהתפריט הראשי פתח את הטרמינל והקלד את שורות הקוד הבאות:

סודו Raspi-config

כעת מכאן השתמש במקשי החצים שלך כדי לפעול דרך המערכת ולחץ על אפשרות החיבור ההיקפי ומהלחץ שלהם על מצלמת P1 והפעל את המצלמה, ולאחר מכן בחר סיום. נחזור לסוג הטרמינל בשורות הקוד הבאות:

pip להתקין picamera

או Sudo pip להתקין את Picamera

שלב 4: בדיקת מודול המצלמה

בדיקת מודול המצלמה
בדיקת מודול המצלמה

מכאן נוכל לבדוק אם המצלמה פועלת או לא מכיוון שכל התוכנה והחומרה מופעלת אצלנו.

פתח את Python 3 מהתפריט

משם פתח קובץ חדש מהקליפה ושמור אותו cameratest.py.

הזן את הקוד הבא:

מ picamera יבוא PiCamera #מודול מיובא שנוצר מהפקודה התקנת pi מצלמה מהזמן יבוא שינה #ייבוא שינה על מנת לוודא שהמצלמה שלנו נשארת במצלמה = PiCamera () #התקנה למצלמה

camera.start_preview ()#מפעיל את המצלמה ומראה לך כיצד נראה פלט המצלמה

sleep (10)#משאיר את התצוגה המקדימה למשך 10 שניות

camera.stop_preview ()#סוף סוף עוזב את התצוגה המקדימה

הפעל את הקוד לפי F5

אם אתה מקבל שגיאה זו בעת הפעלת הקוד:

(mmal: mmal_vc_component_create: נכשל ביצירת רכיב 'vc.ril.camera' (1: ENOMEM)

mmal: mmal_component_create_core: לא יכול היה ליצור רכיב 'vc.ril.camera' (1) Traceback (השיחה האחרונה האחרונה): קובץ "", שורה 1, בקובץ "/usr/lib/python2.7/dist-packages/picamera /camera.py ", שורה 257, ב- _init_ self._init_camera () קובץ" /usr/lib/python2.7/dist-packages/picamera/camera.py ", שורה 288, בקידומת _init_camera =" יצירת מצלמה נכשלה רכיב ") קובץ" /usr/lib/python2.7/dist-packages/picamera/exc.py ", שורה 112, ב- mmal_check להעלות PiCameraMMALError (סטטוס, קידומת) picamera.exc. PiCameraMMALError: נכשל יצירת רכיב מצלמה: Out של זיכרון)

אנא עבור לתצורת Raspberry Pi כנס לעמודה לביצועים והגביר את זיכרון ה- GPU שלך עד שהשגיאה תיעלם (עליך לאתחל מחדש).

כעת על מנת ליצור תמונה שתשמור על שולחן העבודה נשתמש בקוד הבא:

מ picamera יבוא PiCamera #מודול מיובא שנוצר מהפקודה להתקין pi מצלמה מהזמן לייבא שינה #ייבוא שינה על מנת לוודא שהמצלמה שלנו נשארת דולקת

מצלמה = PiCamera () #הגדרת המצלמה

camera.start_preview () #הפעלת התצוגה המקדימה שינה (5) #משאירה את התצוגה המקדימה למשך 5 שניות

camera.capture ('/home/pi/Desktop/image.jpg')# מתוך

camera.stop_preview ()#מפסיק את התצוגה המקדימה

שלב 5: יצירת המעגל עם קוד

יצירת המעגל עם קוד!
יצירת המעגל עם קוד!
יצירת המעגל עם קוד!
יצירת המעגל עם קוד!
יצירת המעגל עם קוד!
יצירת המעגל עם קוד!

כפי שניתן לראות למעלה מתרשימי המעגלים עלינו להגדיר כפתור, LDR ולבסוף שני נוריות RGB. ראשית אנו הולכים להגדיר את הכפתור בצד השמאלי התחתון של לוח הלחם. במהלך הגדרת הכפתור נשתמש בקווי הרכבת המשותפים, כלומר אנו נחבר את 3.3V שלנו לחיובי ולקרקע לשלילה. לאחר שסיימת את הגדרת המעגל לכפתור בלבד.

נבדוק את המעגל שלנו כדי לבדוק אם נצליח לגרום לכך שאם לוחצים על הכפתור אנו מדליקים את הלייד באמצעות הקוד הבא:

#מודולים מיובאים מכפתור הייבוא של gpiozero מ- picamera יבוא PiCamera מעת ייבוא שינה

#להכין

מצלמה = לחצן PiCamera () = לחצן (22)

#פונקציית צילום תמונות, החלטתי להכניס אותה לפונקציה מוגדרת מכיוון שהיא עוזרת לנו לנקות את הקוד הראשי

def photocap ():

Camera.start_preview ()

sleep (5) Camera.capture ('/home/pi/Desktop/image.jpg') הדפסה ("התמונה צולמה") Camera.stop_preview ()

#קוד ראשי:

בעוד שזה נכון: אם הכפתור.is_pressed: הדפס ("לחצן נלחץ") photocap ()

#מדוע זה עובד: הקוד הראשי פועל שכן כל מה שאנו עושים הוא שימוש בפקודה if button.is_pressed תוך זמן מה משפט אמיתי כך שהוא מתעדכן כל הזמן כאשר לוחצים על הלחצן כדי לצלם את התמונה

כעת אנו הולכים להתקין 2 נוריות RGB עד לראש המעגל ולהפריד אותן באמצע לוח הלחם ולהפוך את הסימטרי. אם אין לך נגדים של 220 אוהם לפרויקט זה אתה יכול להגדיר אותם במקביל בהתאם להתנגדות שלך לנגדים שיש לך. הסיכה השנייה של LED 4 פינים RGB (הארוך ביותר צריך להיות מחובר לקרקע דרך המסילה. כל הסיכות האחרות צריכות להיות מחוברות לסיכות GPIO משלהן. (סיכה ראשונה = אדום, סיכה שנייה = אדמה, סיכה שלישית = ירוק, סיכה רביעית = כחול).

נבדוק את אחת מנורות ה- RGB שלנו במעגל הכפתורים שלנו עם הקוד שלהלן:

#מודולים מיובאים מכפתור הייבוא של gpiozero מ- picamera יבוא PiCamera

מ- gpiozero ייבוא RGBLED

מפעם לפעם ייבוא שינה

#להכין

מצלמה = לחצן PiCamera () = לחצן (22)

TimedLED = RGBLED (אדום = 21, ירוק = 20, כחול = 16)

#פונקציית צילום תמונות עם RGB LED, החלטתי להכניס אותה לפונקציה מוגדרת מכיוון שהיא עוזרת לנו לנקות את הקוד הראשי

def photocap (): Camera.start_preview () שינה (4)

timedled.color (1, 0, 0)

שינה (2)

timedled.color (0, 1, 0)

לישון (1)

הדפסה של Camera.capture ('/home/pi/Desktop/image.jpg') ("התמונה צולמה") Camera.stop_preview ()

#קוד ראשי:

בעוד שזה נכון:

אם לחצן.is_ לחוץ:

הדפס ("לחצו על הכפתור") photocap ()

#מדוע זה עובד: הסיבה לכך שהקוד הזה פועל היא מכיוון שעכשיו קיבלנו את ה- RGBLED לעבודה כטיימר למועד הצילום

כעת הגדר את הנגד תלוי תלוי בצד ימין התחתון של לוח הלחם באמצעות התרשים לאורך כל הדרך למעלה והרכבות המשותפות שנדונו קודם לכן. זכור ששתי הרגליים הארוכות של ה- LDR ושל הכובש חייבות להיות מחוברות לסיכת GPIO.

לאחר שחיברנו את ה- LDR אנו הולכים להשתמש בקוד הבא:

#מודולים מיובאים

מכפתור הייבוא של gpiozero

מייבוא picamera PiCamera מ- gpiozero יבוא RGBLED

מ- gpiozero יבוא LightSensor

מפעם לפעם ייבוא שינה

#להכין

מצלמה = לחצן PiCamera () = לחצן (22) TimedLED = RGBLED (אדום = 21, ירוק = 20, כחול = 16)

LightSensor = LightSensor (23)

#פונקציית צילום תמונות עם RGB LED, החלטתי להכניס אותה לפונקציה מוגדרת מכיוון שהיא עוזרת לנו לנקות את הקוד הראשי

def photocap (): Camera.start_preview () sleep (4) timedled.color (1, 0, 0) sleep (2) timedled.color (0, 1, 0) sleep (1) Camera.capture ('/home/ pi/Desktop/image-j.webp

#קוד ראשי:

בעוד שזה נכון:

if Button.is_pressed: print ("לחצו על לחצן") photocap ()

if Button.is_pressed ו- Lightsensor.whan_dark:

print ("לחצו על הכפתור")

הדפס ("חשוך")

מכונת צילום ()

#מדוע זה עובד: הדרך שבה הוספתי את חיישן האור לקוד שלי היא באמצעות הצהרה אחרת של if המכילה את הפונקציה המיובאת של חיישן אור. כאשר חושך מגדיר אותנו בצורה מושלמת לשלב הבא שלנו

כעת השלב האחרון בפרויקט זה יהיה להפעיל את הסימטרי השני של RGBLED לשני כדי לעבוד כנורת הבזק, הקוד הסופי:

מכפתור הייבוא של gpiozero

מייבוא picamera PiCamera

מ- gpiozero ייבוא RGBLED

מ- gpiozero יבוא LightSensor

מפעם לפעם ייבוא שינה

#להכין

מצלמה = PiCamera ()

לחצן = כפתור (22)

TimedLED = RGBLED (אדום = 21, ירוק = 20, כחול = 16)

FlashLED = RGBLED (אדום = 19, ירוק = 13, כחול = 6)

LightSensor = LightSensor (23)

#פונקציית צילום תמונות עם RGB LED, החלטתי להכניס אותה לפונקציה מוגדרת מכיוון שהיא מסייעת לנו לנקות את הקוד הראשי def photocap (): Camera.start_preview () sleep (4) timedled.color (1, 0, 0) sleep (2) timedled.color (0, 1, 0) sleep (1) Camera.capture ('/home/pi/Desktop/image.jpg') הדפסה ("התמונה צולמה") Camera.stop_preview () # קוד ראשי: בעוד נכון: אם הכפתור.is_pressed:

print ("לחצו על הכפתור")

מכונת צילום ()

if Button.is_pressed ו- Lightsensor.whan_dark:

הדפס ("לחצו על לחצן") הדפס ("חשוך")

FlashLED.color (1, 1, 1)

מכונת צילום ()

#מדוע זה עובד: הדרך שבה הוספתי את הפנס שלי היא באמצעות ה- RGB שהוביל לפלט הצבע הלבן שהוא 1, 1, 1 וזה עושה את זה רק אם הצהרת ה- if נכונה.

מוּמלָץ: