جدول المحتويات:

كشك تصوير Raspberry Pi: 5 خطوات
كشك تصوير Raspberry Pi: 5 خطوات

فيديو: كشك تصوير Raspberry Pi: 5 خطوات

فيديو: كشك تصوير Raspberry Pi: 5 خطوات
فيديو: How to Build a PhotoBooth (Step by Step Guide) 2024, شهر نوفمبر
Anonim
كشك تصوير Raspberry Pi
كشك تصوير Raspberry Pi

الغرض:

  • تعرف على كيفية ترميز وتثبيت كاميرا Pi
  • استخدام عبارات التعريف و if في الترميز
  • تعلم استخدام التكنولوجيا الجديدة مثل RGB LEDs

الخطوة 1: ما سوف تحتاجه

ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
  • 1 Raspberry Pi 3
  • اللوح
  • صداري
  • 1 مقاوم يعتمد على الضوء
  • 1 مكثف
  • 1 زر ضغط
  • 6220 أوم مقاومات
  • عدد 2 RGB LEDs
  • 1 كاميرا Raspberry Pi

الخطوة 2: توصيل وحدة الكاميرا

توصيل وحدة الكاميرا
توصيل وحدة الكاميرا

بادئ ذي بدء ، مع إيقاف تشغيل Pi ، ستحتاج إلى توصيل وحدة الكاميرا بمنفذ كاميرا Raspberry Pi ، ثم بدء تشغيل Pi والتأكد من تمكين البرنامج.

  1. حدد موقع منفذ الكاميرا الموجود بين منفذ HDMI ومنفذ 3.5 ملم
  2. اسحب مشبك الكاميرا لأعلى من الحواف البلاستيكية حتى يصبح المقطع قطريًا
  3. أدخل الآن كابل الكاميرات باللون الأزرق الذي يواجه المنفذ مقاس 3.5 مم

الخطوة الثالثة: إعداد الكاميرا

إعداد الكاميرا
إعداد الكاميرا
إعداد الكاميرا
إعداد الكاميرا

فتح أداة تكوين Raspberry Pi من القائمة الرئيسية وتعطيل كافة الواجهات أعلاه وتمكينها

من القائمة الرئيسية ، افتح Terminal واكتب سطور التعليمات البرمجية التالية:

سودو راسبي التكوين

الآن من هنا ، استخدم مفاتيح الأسهم الخاصة بك للعمل من خلال النظام وانقر على خيار الاتصال المحيطي ومن انقر فوق P1 Camera وقم بتمكين الكاميرا ، ثم حدد إنهاء. العودة إلى نوع المحطة الطرفية في سطور التعليمات البرمجية التالية:

نقطة تثبيت picamera

أو Sudo pip قم بتثبيت Picamera

الخطوة 4: اختبار وحدة الكاميرا

اختبار وحدة الكاميرا
اختبار وحدة الكاميرا

من هنا يمكننا اختبار ما إذا كانت الكاميرا تعمل أم لا لأن لدينا جميع البرامج والأجهزة ممكّنة.

افتح Python 3 من القائمة

من هناك افتح ملفًا جديدًا من الغلاف واحفظه في cameratest.py.

أدخل الرمز التالي:

من picamera ، استيراد PiCamera #imported module التي تم إنشاؤها من أمر pip install pi camera من وقت استيراد السكون # استيراد السكون للتأكد من بقاء الكاميرا على الكاميرا = PiCamera () #Setup للكاميرا

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 (آخر مكالمة أخيرة): File "" ، السطر 1 ، في File "/usr/lib/python2.7/dist-packages/picamera /camera.py "، السطر 257 ، في _init_ self._init_camera () File" /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 #Imported module التي تم إنشاؤها من أمر pip install pi camera من وقت استيراد sleep #Imported sleep للتأكد من بقاء الكاميرا قيد التشغيل

camera = PiCamera () #Setup للكاميرا

camera.start_preview () #Starts the previewsleep (5) #Leaves the preview on for 5 seconds

camera.capture ('/ home / pi / Desktop / image.jpg') # من ملف

camera.stop_preview () # يوقف المعاينة

الخطوة 5: إنشاء الدائرة بالكود

إنشاء الدائرة بالكود!
إنشاء الدائرة بالكود!
إنشاء الدائرة بالكود!
إنشاء الدائرة بالكود!
إنشاء الدائرة بالكود!
إنشاء الدائرة بالكود!

كما رأينا أعلاه من الرسوم البيانية للدائرة ، نحتاج إلى إعداد زر ، و LDR ، وأخيراً مصباحان RGB LED. سنقوم أولاً بإعداد الزر الموجود على الجانب الأيسر السفلي من اللوح. أثناء إعدادك للزر ، سنستخدم خطوط السكك الحديدية المشتركة مما يعني أننا سنقوم بتوصيل 3.3 فولت على الموجب والأرضي بالسالب. بعد الانتهاء من إعداد الدائرة للزر فقط.

سنختبر دائرتنا لمعرفة ما إذا كان بإمكاننا فعلها بحيث إذا تم الضغط على الزر ، فإننا نقوم بتشغيل المصباح باستخدام الكود التالي:

#Imported Modules من زر استيراد gpiozero من picamera استيراد PiCamera من وقت استيراد النوم

#اقامة

الكاميرا = PiCamera () زر = زر (22)

# وظيفة التقاط الصور ، لقد قررت وضعها في وظيفة تعريف لأنها تساعدنا في تنظيف الكود الرئيسي

def photocap ():

Camera.start_preview ()

sleep (5) Camera.capture ('/ home / pi / Desktop / image.jpg') طباعة ("تم التقاط الصورة") Camera.stop_preview ()

#كود الرئيسي:

بينما صحيح: إذا Button.is_pressed: طباعة ("تم الضغط على الزر") صورة فوتوغرافية ()

# لماذا يعمل هذا: يعمل الرمز الرئيسي كما نفعل كل ما نفعله هو استخدام الأمر if button.is_pressed in a while true statement بحيث يتم تحديثه باستمرار عند الضغط على الزر لالتقاط الصورة

سنقوم الآن بإعداد 2 RGB LEDs على طول الطريق حتى الجزء العلوي من الدائرة وفصلها في منتصف اللوح وجعلها متماثلة. إذا لم يكن لديك مقاومات 220 أوم لهذا المشروع ، يمكنك إعدادها بالتوازي اعتمادًا على مقاومتك للمقاومات التي لديك. الدبوس الثاني من 4 طرف RGB LED (يجب توصيل الطرف الأطول بالأرض عبر السكة الحديدية. يجب توصيل جميع المسامير الأخرى بمسامير GPIO الخاصة بها. (الدبوس الأول = أحمر ، الدبوس الثاني = أرضي ، الدبوس الثالث = أخضر ، الدبوس الرابع = أزرق).

سنختبر أحد مصابيح RGB LED الخاصة بنا في دائرة الأزرار الخاصة بنا بالرمز أدناه:

#Imported Modules من زر استيراد 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)

timed.color (0 ، 1 ، 0)

النوم (1)

طباعة Camera.capture ('/ home / pi / Desktop / image.jpg') ("تم التقاط الصورة") Camera.stop_preview ()

#كود الرئيسي:

احيانا صحيح:

إذا Button.is_pressed:

طباعة ("تم الضغط على الزر") صورة فوتوغرافية ()

# لماذا يعمل هذا: السبب في عمل هذا الرمز هو أننا الآن حصلنا على RGBLED للعمل كمؤقت عندما يتم التقاط الصورة

الآن قم بإعداد المقاوم Light Dependent على الجانب الأيمن السفلي من اللوح باستخدام الرسم التخطيطي على طول الطريق في الأعلى وخطوط السكك الحديدية الشائعة التي تمت مناقشتها من قبل. تذكر أنه يجب توصيل كل من الأرجل الطويلة لـ 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) timed.color (1، 0، 0) sleep (2) timed.color (0، 1، 0) sleep (1) Camera.capture ('/ home / طباعة pi / Desktop / image-j.webp

#كود الرئيسي:

احيانا صحيح:

إذا Button.is_pressed: طباعة ("تم الضغط على الزر") صورة فوتوغرافية ()

إذا كان Button.is_pressed و lightensor.when_dark:

طباعة ("تم الضغط على الزر")

print ("إنه مظلم")

فوتوكاب ()

#Why هذا يعمل: الطريقة التي أضفت بها مستشعر الضوء إلى الكود الخاص بي هي من خلال عبارة 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 ، لقد قررت وضعها في وظيفة تعريف لأنها تساعدنا في تنظيف الرمز الرئيسي للصور الفوتوغرافية (): Camera.start_preview () sleep (4) timed.color (1 ، 0 ، 0) sleep (2) timed.color (0، 1، 0) sleep (1) Camera.capture ('/ home / pi / Desktop / image.jpg') طباعة ("تم التقاط الصورة") Camera.stop_preview () # الكود الرئيسي: بينما صحيح: إذا Button.is_pressed:

طباعة ("تم الضغط على الزر")

فوتوكاب ()

إذا كان Button.is_pressed و lightensor.when_dark:

طباعة ("تم الضغط على الزر") طباعة ("إنه مظلم")

FlashLED.color (1، 1، 1)

فوتوكاب ()

#Why هذا يعمل: الطريقة التي أضفت بها مصباح الفلاش الخاص بي هي باستخدام RGB أدى إلى إخراج اللون الأبيض وهو 1 ، 1 ، 1 وهو لا يفعل إلا إذا كانت عبارة if صحيحة.

موصى به: