Mundarija:

Raspberry Pi Photobooth: 5 qadam
Raspberry Pi Photobooth: 5 qadam

Video: Raspberry Pi Photobooth: 5 qadam

Video: Raspberry Pi Photobooth: 5 qadam
Video: DIY Raspberry Pi Photo Booth with DSLR 2024, Noyabr
Anonim
Raspberry Pi fotobooti
Raspberry Pi fotobooti

Maqsad:

  • Pi kamerasini kodlashni va o'rnatishni o'rganing
  • Kodlashda "if" va "if" so'zlaridan foydalanish
  • RGB LED kabi yangi texnologiyalardan foydalanishni o'rganish

1 -qadam: Sizga nima kerak

Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
  • 1 Raspberry Pi 3
  • Non paneli
  • Jumperlar
  • 1 nurga bog'liq qarshilik
  • 1 kondansatör
  • 1 bosish tugmasi
  • 6 220 Ohmli rezistorlar
  • 2 RGB LED
  • 1 Raspberry Pi kamerasi

2 -qadam: Kamera modulini ulash

Kamera modulini ulash
Kamera modulini ulash

Birinchidan, Pi o'chirilgan bo'lsa, siz kamera modulini Raspberry Pi kamerasining portiga ulashingiz kerak, keyin Pi -ni ishga tushiring va dasturiy ta'minot yoqilganligiga ishonch hosil qiling.

  1. HDMI va 3,5 mm portlar orasidagi kamera portini toping
  2. Klip diagonal bo'lguncha kamera qisqichini plastik chetidan torting
  3. Endi kameralar kabelini ko'k rangli 3,5 mm portga qarating

3 -qadam: Kamerani sozlash

Kamerani sozlash
Kamerani sozlash
Kamerani sozlash
Kamerani sozlash

Asosiy menyudan Raspberry Pi konfiguratsiya vositasini oching va yuqoridagi barcha interfeyslarni o'chiring va yoqing

Asosiy menyudan terminalni oching va quyidagi kod satrlarini kiriting:

Sudo Raspi-konfiguratsiyasi

Endi bu erdan o'q tugmalaridan foydalanib, tizimda ishlash va periferik ulanish opsiyasini bosing va P1 kamerani bosing va kamerani yoqing, so'ng tugatish -ni tanlang. Quyidagi kod satrlarida terminal turiga qaytish:

pikamera o'rnatish

yoki Sudo pip Picamera -ni o'rnatadi

4 -qadam: Kamera modulini sinovdan o'tkazish

Kamera modulini sinovdan o'tkazish
Kamera modulini sinovdan o'tkazish

Bu erdan biz kamera ishlayaptimi yoki yo'qligini tekshirib ko'rishimiz mumkin, chunki bizda barcha dasturiy va uskunalar yoqilgan.

Menyudan Python 3 -ni oching

U erdan qobiqdan yangi faylni oching va uni cameratest.py -ga saqlang.

Quyidagi kodni kiriting:

pikamera importidan PiCamera #mimport qilingan modul, pip o'rnatish pi kamera buyrug'idan yaratilgan, bizning kameramiz kamerada qolishiga ishonch hosil qilish uchun, vaqt uyqu #import uyqu = PiCamera () #Kamera uchun sozlash.

camera.start_preview ()#kamerani ishga tushiradi va kamera chiqishi qanday ko'rinishini ko'rsatadi

uxlash (10)#ko'rishni 10 soniya davomida qoldiradi

camera.stop_preview ()#nihoyat oldindan ko'rishni to'xtatadi

Kodni F5 bilan ishlating

Agar siz kodni ishga tushirishda ushbu xatoni qabul qilsangiz:

(mmal: mmal_vc_component_create: 'vc.ril.camera' komponentasini yaratib bo'lmadi (1: ENOMEM)

mmal: mmal_component_create_core: 'vc.ril.camera' komponentasini yaratib bo'lmadi (1) Traceback (oxirgi oxirgi qo'ng'iroq): Fayl "", 1-satr, Faylda "/usr/lib/python2.7/dist-packages/picamera /camera.py ", 257-qator, _init_ self._init_camera () Fayl" /usr/lib/python2.7/dist-packages/picamera/camera.py ", 288-satr, _init_camera prefiksida =" Kamera yaratib bo'lmadi ") Fayl" /usr/lib/python2.7/dist-packages/picamera/exc.py ", 112-qator, mmal_check-da PiCameraMMALError (holat, prefiks) picamera.exc. PiCameraMMALError ko'tariladi: Kamera komponentasini yaratib bo'lmadi: tashqarida xotira)

Iltimos, Raspberry Pi konfiguratsiyasiga o'ting, ishlash ustuniga o'ting va xato yo'qolguncha GPU xotirasini yaxshilang (qayta ishga tushirish kerak).

Endi ish stolida saqlanadigan rasm yaratish uchun biz quyidagi kodni ishlatamiz:

pikamera importidan PiCamera #Kameraning doimiy ishlashiga ishonch hosil qilish uchun pip import pi kamera buyrug'idan yaratilgan vaqt import import uyqu #Import qilingan uyqu.

kamera = PiCamera () #Kamera uchun sozlash

camera.start_preview () #Oldindan ko'rishni boshlaydi (5) #Ko'rib chiqishni 5 soniya davomida qoldiradi

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

camera.stop_preview ()#Ko'rib chiqishni to'xtatadi

5 -qadam: Kod yordamida sxemani yaratish

Kod bilan davrni yaratish!
Kod bilan davrni yaratish!
Kod bilan davrni yaratish!
Kod bilan davrni yaratish!
Kod bilan davrni yaratish!
Kod bilan davrni yaratish!

Yuqorida ko'rsatilgan sxemalardan ko'rinib turibdiki, biz tugmani, LDRni va nihoyat ikkita RGB LEDni sozlashimiz kerak. Birinchidan, biz taxtaning chap pastki qismidagi tugmani o'rnatamiz. Tugmachani sozlash paytida biz umumiy temir yo'l liniyalaridan foydalanamiz, ya'ni biz 3.3V ni ijobiy va negativiga ulaymiz. O'chirish tugagandan so'ng, faqat tugma uchun.

Biz tugmani bosganimizda, biz quyidagi kodni ishlatib, chiroqni yoqamiz, shunday qilib, biz buni qila olamizmi, deb tekshiramiz.

#Import qilingan modullar gpiozero importidan Pikameradan import qilish uyqusidan PiCamera import qilish.

#Sozlash

Kamera = PiCamera () tugmasi = tugmasi (22)

#Suratga olish funktsiyasi, men uni asosiy funktsiyani tozalashga yordam beradigan aniqlangan funktsiyaga kiritishga qaror qildim

def photocap ():

Camera.start_preview ()

uxlash (5) Camera.capture ('/home/pi/Desktop/image.jpg') chop etish ("Rasm olingan") Camera.stop_preview ()

#Asosiy kod:

while True: agar Button.is_pressed: print ("Tugma bosildi") photocap ()

#Nimaga bu ishlaydi: asosiy kod ishlaydi, chunki biz tugmachasi.is_pressed buyrug'ini ishlatamiz, shuning uchun tugma bosilganda u doimo yangilanadi.

Endi biz 2 ta RGB LEDni sxemaning yuqori qismiga qadar o'rnatamiz va ularni taxtaning o'rtasida ajratamiz va nosimmetrik qilamiz. Agar sizda bu loyiha uchun 220 ohmli rezistorlar bo'lmasa, ularni qarshilikka qarab qarshilikka qarab parallel ravishda o'rnatishingiz mumkin. 4 -pinli RGB LED -ning ikkinchi pimi (eng uzun temir yo'l orqali erga ulanishi kerak. Boshqa pinlarning hammasi o'z GPIO pinlariga ulangan bo'lishi kerak., To'rtinchi pin = ko'k).

Biz tugmachamizdagi RGB LED -laridan birini quyidagi kod bilan sinovdan o'tkazamiz:

#Import qilingan modullar gpiozero importidan PiCamera picamera import tugmasi

gpiozero -dan RGBLED importi

vaqtdan boshlab uyqu

#Sozlash

Kamera = PiCamera () tugmasi = tugmasi (22)

Vaqtli LED = RGBLED (qizil = 21, yashil = 20, ko'k = 16)

#RGB LED yordamida suratga olish funktsiyasi, men uni belgilangan funktsiyaga kiritishga qaror qildim, chunki bu bizga asosiy kodni tozalashga yordam beradi.

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

timedled.color (1, 0, 0)

uxlash (2)

timedled.color (0, 1, 0)

uxlash (1)

Camera.capture ('/home/pi/Desktop/image.jpg') chop etish ("Rasm olingan") Camera.stop_preview ()

#Asosiy kod:

rost bo'lsa:

agar Button.is_pressed bo'lsa:

chop etish ("Tugma bosildi") fotokapak ()

#Nima uchun bu ishlaydi: bu kodning ishlashining sababi shundaki, endi biz RGBLED -ni suratga olish vaqtini taymer sifatida ishlashimiz kerak.

Endi yuqoridan yuqoriga qarab chizilgan va umumiy temir yo'llardan foydalanib, non panelining o'ng pastki qismidagi Nurga bog'liq rezistorni o'rnating. Esda tutingki, LDRning uzun oyoqlari va kapitatori GPIO piniga ulangan bo'lishi kerak.

LDR ulanganidan so'ng biz quyidagi kodni ishlatamiz:

#Import qilingan modullar

gpiozero import tugmachasidan

picamera importidan PiCamera gpiozero importidan RGBLED

LightSensor gpiozero importidan

vaqtdan boshlab uyqu

#Sozlash

Kamera = PiCamera () tugmasi = tugmasi (22) Vaqtli LED = RGBLED (qizil = 21, yashil = 20, ko'k = 16)

LightSensor = LightSensor (23)

#RGB LED yordamida suratga olish funktsiyasi, men uni belgilangan funktsiyaga kiritishga qaror qildim, chunki bu bizga asosiy kodni tozalashga yordam beradi.

def photocap (): Camera.start_preview () uyqu (4) vaqtli.rang (1, 0, 0) uyqu (2) vaqtli.rang (0, 1, 0) uyqu (1) Kamera.tasvirga olish ('/uy/ pi/Desktop/image-j.webp

#Asosiy kod:

rost bo'lsa:

if Button.is_pressed: print ("Tugma bosildi") fotokapak ()

agar Button.is_pressed va Lightsensor.when_dark:

chop etish ("Tugma bosildi")

chop etish ("Qorong'i")

qopqoq ()

#Nimaga bu ishlaydi: yorug'lik kodini kodimga qo'shish usuli - yorug'lik sensori import qilingan funktsiyasini o'z ichiga olgan boshqa ifoda orqali.

Endi bu loyihani amalga oshirishning oxirgi bosqichi boshqa RGBLEDni nosimmetrik tarzda yondirib chiroq sifatida ishlash bo'ladi.

Yakuniy kod:

gpiozero import tugmachasidan

pikameradan PiCamera import qilinadi

gpiozero -dan RGBLED importi

LightSensor gpiozero importidan

vaqtdan boshlab uyqu

#Sozlash

Kamera = PiCamera ()

Tugma = tugma (22)

Vaqtli LED = RGBLED (qizil = 21, yashil = 20, ko'k = 16)

FlashLED = RGBLED (qizil = 19, yashil = 13, ko'k = 6)

LightSensor = LightSensor (23)

#RGB LED yordamida suratga olish funktsiyasi, men uni aniqlangan funktsiyaga kiritishga qaror qildim, chunki u asosiy kodni tozalashga yordam beradi defococ (): Camera.start_preview () sleep (4) timedled.color (1, 0, 0)) uyqu (2) timedled.color (0, 1, 0) uyqu (1) Camera.capture ('/home/pi/Desktop/image.jpg') chop etish ("Rasm olingan") Camera.stop_preview () # Asosiy kod: True bo'lsa: Button.is_pressed:

chop etish ("Tugma bosildi")

qopqoq ()

agar Button.is_pressed va Lightsensor.when_dark:

chop etish ("Tugma bosildi") chop etish ("Qorong'i")

FlashLED.rang (1, 1, 1)

qopqoq ()

#Nima uchun bu ishlaydi: Chiroqni qo'shish usuli - RGB yordamida oq rangni chiqarishga olib keldi, bu 1, 1, 1 va agar if iborasi to'g'ri bo'lsa.

Tavsiya: