Mündəricat:

Raspberry Pi Photobooth: 5 addım
Raspberry Pi Photobooth: 5 addım

Video: Raspberry Pi Photobooth: 5 addım

Video: Raspberry Pi Photobooth: 5 addım
Video: Mein Fotobox-Projekt - Part 1 homeautomation Raspberry Pi münchen smarthome edutoktech technik auto 2024, Noyabr
Anonim
Raspberry Pi Photobooth
Raspberry Pi Photobooth

Məqsəd:

  • Pi Kameranı kodlaşdırmağı və quraşdırmağı öyrənin
  • Kodlaşdırmada defin və if ifadələrinin istifadəsi
  • RGB LED kimi yeni texnologiyadan istifadə etməyi öyrənmək

Addım 1: Nə lazımdır

Ehtiyacınız olacaq
Ehtiyacınız olacaq
Ehtiyacınız olacaq
Ehtiyacınız olacaq
Ehtiyacınız olacaq
Ehtiyacınız olacaq
  • 1 Moruq Pi 3
  • Çörək lövhəsi
  • Tullananlar
  • 1 İşıqdan Rezistor
  • 1 kondansatör
  • 1 Düymə
  • 6 220 Ohm müqavimət
  • 2 RGB LED
  • 1 Raspberry Pi Kamera

Addım 2: Kamera Modulunun qoşulması

Kamera Modulunun Bağlanması
Kamera Modulunun Bağlanması

Hər şeydən əvvəl, Pi söndürüldükdə, Kamera Modulunu Raspberry Pi -nin kamera portuna bağlamalı, sonra Pi -ni işə salmalı və proqramın aktiv olmasını təmin etməlisiniz.

  1. HDMI və 3.5 mm port arasında olan kamera portunu tapın
  2. Klip diaqonal olana qədər kamera kənarını plastik kənarlardan yuxarı çəkin
  3. İndi 3,5 mm porta baxan mavi rəngli kamera kabelini daxil edin

Addım 3: Kameranın qurulması

Kameranın Qurulması
Kameranın Qurulması
Kameranın Qurulması
Kameranın Qurulması

Əsas menyudan Raspberry Pi Konfiqurasiya alətini açın və yuxarıdakı bütün interfeysləri deaktiv edin

Əsas menyudan Terminalı açın və aşağıdakı kod sətirlərini daxil edin:

Sudo Raspi-konfiqurasiya

İndi buradan sistem vasitəsilə işləmək üçün ox düymələrinizdən istifadə edin və Periferik bağlantı seçiminə, P1 Kameraya klikləyib kameranı işə salın və sonra bitirmə seçin. Aşağıdakı kod sətirlərində terminal növünə qayıdın:

pip picamera quraşdırın

və ya Sudo pip Picamera qurun

Addım 4: Kamera Modulunun sınanması

Kamera modulunun sınanması
Kamera modulunun sınanması

Buradan kameranın işlədiyini yoxlaya bilərik, çünki bütün proqram və avadanlıqlar aktivdir.

Menyudan Python 3 -ü açın

Oradan qabıqdan yeni bir fayl açın və cameratest.py -də qeyd edin.

Aşağıdakı kodu daxil edin:

picamera idxalından PiCamera #, idxal edilmiş modul, pip quraşdırma pi kamera əmrindən yaradılmışdır, zaman idxal yuxu #idxal edilmiş yuxu, kameramızın kamerada qalmasını təmin etmək üçün = PiCamera () #Kamera üçün qurulma

camera.start_preview ()#kameranı işə salır və kamera çıxışının necə göründüyünü göstərir

yuxu (10)#önizləməni 10 saniyə ərzində buraxır

camera.stop_preview ()#nəhayət önizləmədən çıxır

Kodu F5 ilə işləyin

Kodu işləyərkən bu xətanı alırsınızsa:

(mmal: mmal_vc_component_create: 'vc.ril.camera' komponenti yaradıla bilmədi (1: ENOMEM)

mmal: mmal_component_create_core: 'vc.ril.camera' komponentini yarada bilmədi (1) İzləmə (ən son zəng): Fayl "", satır 1, Faylda "/usr/lib/python2.7/dist-packages/picamera /camera.py ", satır 257, _init_ self._init_camera () Dosyası" /usr/lib/python2.7/dist-packages/picamera/camera.py ", sətir 288, _init_camera prefiksində =" Kamera yaradıla bilmədi ") Fayl" /usr/lib/python2.7/dist-packages/picamera/exc.py ", 112-ci sətir, mmal_check-də PiCameraMMALError (status, prefiks) picamera.exc. PiCameraMMALError qaldırın: Kamera komponenti yaradıla bilmədi: Çıxdı yaddaş)

Zəhmət olmasa Raspberry Pi konfiqurasiyasına gedin, performans sütununun altına keçin və səhv yox olana qədər GPU yaddaşınızı artırın (yenidən başlamalısınız).

İndi masaüstündə saxlayacaq bir şəkil yaratmaq üçün aşağıdakı kodu istifadə edəcəyik:

picamera idxalından PiCamera #Kameranın işlədiyindən əmin olmaq üçün pip import pi kamera əmrindən yaradılan idxal modulu vaxt idxal yuxudan #İdxal yuxu.

kamera = PiCamera () #Kamera üçün quraşdırma

camera.start_preview () #Önizləmələri yuxuya qoyur (5) #Önizləməni 5 saniyə ərzində tərk edir

camera.capture ('/home/pi/Desktop/image.jpg')#

camera.stop_preview ()#Önizləməni dayandırır

Addım 5: Kodla Dövrə Yarat

Kodla Dövrə Yaratmaq!
Kodla Dövrə Yaratmaq!
Kodla Dövrə Yaratmaq!
Kodla Dövrə Yaratmaq!
Kodla Dövrə Yaratmaq!
Kodla Dövrə Yaratmaq!

Yuxarıdakı sxemlərdən göründüyü kimi bir düymə, bir LDR və nəhayət iki RGB LED qurmalıyıq. Əvvəlcə çörək panelinin sol alt hissəsindəki düyməni quracağıq. Düyməni qurarkən, ümumi dəmir yolu xətlərindən istifadə edəcəyik, yəni 3.3V -ni pozitivə və mənfi tərəfə bağlayacağıq. Yalnız düymə üçün dövrə qurulmasını bitirdikdən sonra.

Dövrümüzü sınayacağıq ki, edə bilərikmi yoxlamaq üçün düyməyə basıldıqda aşağıdakı kodu istifadə edərək farı yandırırıq:

#İdxal Modulları gpiozero idxalından Picamera idxalından Buton idxal PiCamera zaman idxal yuxudan.

#Qurmaq

Kamera = PiCamera () Button = Button (22)

#Şəkil çəkmə funksiyası, əsas kodu təmizləməyimizə kömək etdiyi üçün onu müəyyən edilmiş bir funksiyaya qoymağa qərar verdim

def photocap ():

Camera.start_preview ()

yuxu (5) Camera.capture ('/home/pi/Desktop/image.jpg') çap ("Foto çəkildi") Camera.stop_preview ()

#Ana kod:

while True: əgər Button.is_pressed: print ("Button basıldı") photocap ()

#Niyə bu işləyir: Əsas kod, bir anda doğru ifadədə button.is_pressed if əmrini istifadə etdiyimiz üçün işləyir, buna görə də şəkil çəkmək üçün düyməyə basıldıqda daim yenilənir.

İndi 2 RGB LED -lərini bütün dövrə qədər qurub çörək taxtasının ortasında ayırıb simmetrik edəcəyik. Bu layihə üçün 220 ohm rezistorunuz yoxdursa, malik olduğunuz rezistorlar üçün müqavimətinizdən asılı olaraq onları paralel olaraq qura bilərsiniz. 4 pinli RGB LED -in ikinci pimi (ən uzun olanı dəmir yolu ilə yerə bağlanmalıdır. Digər pinlərin hamısı öz GPIO pinlərinə bağlanmalıdır. (Birinci pin = qırmızı, İkinci pin = torpaq, Üçüncü Pin = yaşıl), Dördüncü pin = mavi).

Aşağıdakı kodla düymə dövrəmizdə RGB LED -lərimizdən birini sınayacağıq:

#İdxal Modullar gpiozero idxalından PiCamera picamera idxalından Button

gpiozero idxalından RGBLED

vaxtdan idxal yuxu

#Qurmaq

Kamera = PiCamera () Button = Button (22)

Zamanlı LED = RGBLED (qırmızı = 21, yaşıl = 20, mavi = 16)

#RGB LED ilə şəkil çəkmə funksiyası, əsas kodu təmizləməyimizə kömək etdiyi üçün onu müəyyən edilmiş bir funksiyaya qoymağa qərar verdim.

def photocap (): Camera.start_preview () yuxu (4)

timedled.color (1, 0, 0)

yatmaq (2)

timedled.color (0, 1, 0)

yuxu (1)

Camera.capture ('/home/pi/Desktop/image.jpg') çap ("Foto çəkildi") Camera.stop_preview ()

#Ana kod:

Doğru halda:

əgər Button.is_pressed:

çap ("Button basıldı") photocap ()

#Niyə bu işləyir: Bu kodun işləməsinin səbəbi, indi RGBLED -in fotoşəkilin nə vaxt çəkiləcəyi üçün bir taymer kimi işləməyimizdir.

İndi yuxarıdakı diaqramı və əvvəllər müzakirə olunan ümumi dəmir yollarını istifadə edərək, çörək bişirmə panelinin sağ alt tərəfindəki İşıqdan asılı rezistoru qurun. Unutmayın ki, həm LDR -nin uzun ayaqları, həm də kapitator GPIO pininə bağlanmalıdır.

LDR -ni bağladıqdan sonra aşağıdakı kodu istifadə edəcəyik:

#İdxal Modulları

gpiozero idxal düyməsindən

picamera idxalından PiCamera gpiozero idxalından RGBLED

LightSensor gpiozero idxalından

vaxtdan idxal yuxu

#Qurmaq

Kamera = PiCamera () Button = Button (22) ZamanlıLED = RGBLED (qırmızı = 21, yaşıl = 20, mavi = 16)

LightSensor = LightSensor (23)

#RGB LED ilə şəkil çəkmə funksiyası, əsas kodu təmizləməyimizə kömək etdiyi üçün onu müəyyən edilmiş bir funksiyaya qoymağa qərar verdim.

def photocap (): Camera.start_preview () yuxu (4) timedled.color (1, 0, 0) yuxu (2) timedled.color (0, 1, 0) yuxu (1) Camera.capture ('/ev/ pi/Masaüstü/image-j.webp

#Ana kod:

Doğru halda:

if Button.is_pressed: print ("Button basıldı") photocap ()

əgər Button.is_pressed və Lightsensor.when_dark:

çap et ("Düymə Basıldı")

çap et ("Qaranlıqdır")

fotokapı ()

#Niyə bu işləyir: İşıq sensoru koduma əlavə etməyimin yolu, idxal olunan işıq sensoru funksiyasını ehtiva edən başqa bir ifadədən keçməkdir.

İndi bu layihənin həyata keçirilməsinin son addımı digər RGBLED -in digərinə fənər kimi işləməsi üçün aktivləşdirilməsi olacaq.

Son kod:

gpiozero idxal düyməsindən

picamera idxalından PiCamera

gpiozero idxalından RGBLED

LightSensor gpiozero idxalından

vaxtdan idxal yuxu

#Qurmaq

Kamera = PiCamera ()

Düymə = Düymə (22)

Zamanlı LED = RGBLED (qırmızı = 21, yaşıl = 20, mavi = 16)

FlashLED = RGBLED (qırmızı = 19, yaşıl = 13, mavi = 6)

LightSensor = LightSensor (23)

#RGB LED ilə fotoşəkil çəkmə funksiyası, əsas kodu def photocap (): Camera.start_preview () yuxu (4) timedled.color (1, 0, 0) yuxu (2) timedled.color (0, 1, 0) yuxu (1) Camera.capture ('/home/pi/Desktop/image.jpg') çap ("Foto çəkildi") Camera.stop_preview () # Əsas kod: True isə: Button.is_pressed:

çap et ("Düymə basıldı")

fotokapı ()

əgər Button.is_pressed və Lightsensor.when_dark:

çap et ("Düymə Basıldı") çap et ("Qaranlıqdır")

FlashLED.rəng (1, 1, 1)

fotokapı ()

#Niyə bu işləyir: Fənərimi əlavə etməyimin yolu RGB -dən istifadə etməklə ağ rəngin 1, 1, 1 olduğunu göstərdi və yalnız if ifadəsinin doğru olduğu halda bunu edir.

Tövsiyə: