Taula de continguts:

Photobooth de Raspberry Pi: 5 passos
Photobooth de Raspberry Pi: 5 passos

Vídeo: Photobooth de Raspberry Pi: 5 passos

Vídeo: Photobooth de Raspberry Pi: 5 passos
Vídeo: Weekend Project: Raspberry Pi Photo Booth 2024, Juliol
Anonim
Photobooth de Raspberry Pi
Photobooth de Raspberry Pi

El propòsit:

  • Obteniu informació sobre com codificar i instal·lar una càmera Pi
  • Utilitzant instruccions define i if a la codificació
  • Aprendre a utilitzar noves tecnologies com els LED RGB

Pas 1: què necessiteu

El que necessitareu
El que necessitareu
El que necessitareu
El que necessitareu
El que necessitareu
El que necessitareu
  • 1 Raspberry Pi 3
  • Taula de pa
  • Saltadors
  • 1 resistència dependent de la llum
  • 1 condensador
  • 1 polsador
  • 6 resistències de 220 Ohm
  • 2 LED RGB
  • 1 càmera Raspberry Pi

Pas 2: Connexió del mòdul de càmera

Connexió del mòdul de càmera
Connexió del mòdul de càmera

Primer de tot, amb el Pi apagat, haureu de connectar el mòdul de càmera al port de la càmera del Raspberry Pi i, a continuació, engegueu el Pi i assegureu-vos que el programari està habilitat.

  1. Localitzeu el port de la càmera que hi ha entre el port HDMI i el port de 3,5 mm
  2. Estireu el clip de la càmera per les vores de plàstic fins que el clip quedi en diagonal
  3. Ara introduïu el cable de les càmeres amb el color blau cap al port de 3,5 mm

Pas 3: Configuració de la càmera

Configuració de la càmera
Configuració de la càmera
Configuració de la càmera
Configuració de la càmera

Obrir l'eina de configuració de Raspberry Pi des del menú principal i desactivar i habilitar totes les interfícies anteriors

Al menú principal, obriu el terminal i escriviu les línies de codi següents:

Sudo Raspi-config

A partir d'aquí, utilitzeu les tecles de fletxa per funcionar a través del sistema i feu clic a l'opció Connexió perifèrica i des del seu clic a Càmera P1 i activeu la càmera i seleccioneu Finalitza. Tornant al tipus de terminal a les següents línies de codi:

pip instal·la picamera

o Sudo pip instal·la Picamera

Pas 4: proveu el mòdul de la càmera

Prova del mòdul de càmera
Prova del mòdul de càmera

A partir d’aquí podem provar si la càmera funciona o no perquè tenim tot el programari i maquinari habilitat.

Obriu Python 3 al menú

Des d'allà, obriu un fitxer nou des de l'intèrpret d'ordres i deseu-lo com a cameratest.py.

Introduïu el codi següent:

a partir de la importació de la càmera: el mòdul PiCamera #imported creat a partir del comandament pip install pi de la càmera, des de la importació del temps sleep #imported sleep per assegurar-nos que la nostra càmera es mantingui a la càmera = PiCamera () #Setup for the camera

camera.start_preview () # posa en marxa la càmera i us mostra l'aspecte de la sortida de la càmera

sleep (10) # deixa activada la previsualització durant 10 segons

camera.stop_preview () # finalment surt de la previsualització

Executeu el codi per F5

Si rep aquest error en executar el codi:

(mmal: mmal_vc_component_create: no s'ha pogut crear el component 'vc.ril.camera' (1: ENOMEM)

mmal: mmal_component_create_core: no s'ha pogut crear el component 'vc.ril.camera' (1) Traceback (última trucada més recent): fitxer "", línia 1, a Fitxer "/usr/lib/python2.7/dist-packages/picamera /camera.py ", línia 257, a _init_ self._init_camera () Fitxer" /usr/lib/python2.7/dist-packages/picamera/camera.py ", línia 288, a _init_camera prefix =" No s'ha pogut crear la càmera component ") Fitxer" /usr/lib/python2.7/dist-packages/picamera/exc.py ", línia 112, en mmal_check augmentar PiCameraMMALError (estat, prefix) picamera.exc. PiCameraMMALError: no s'ha pogut crear el component de la càmera: fora de memòria)

Aneu a la configuració de Raspberry Pi, aneu a la columna de rendiment i augmenteu la memòria de la GPU fins que l’error hagi desaparegut (heu de reiniciar).

Ara, per crear una foto que es desarà a l'escriptori, utilitzarem el codi següent:

des de la importació de la càmera El mòdul PiCamera #Imported creat a partir de la comanda pip install pi de la càmera a partir de la importació del temps sleep #Imported sleep per assegurar-nos que la nostra càmera es manté encesa

camera = PiCamera () #Configuració de la càmera

camera.start_preview () # Inicia la previsualització (5) # Deixa activada la previsualització durant 5 segons

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

camera.stop_preview () # Atura la vista prèvia

Pas 5: Creació del circuit amb codi

Creació del circuit amb codi!
Creació del circuit amb codi!
Creació del circuit amb codi!
Creació del circuit amb codi!
Creació del circuit amb codi!
Creació del circuit amb codi!

Com es veu més amunt als diagrames de circuits, hem de configurar un botó, un LDR i, finalment, dos LED RGB. En primer lloc, configurarem el botó a la part inferior esquerra de la taula de treball. Durant la configuració del botó, utilitzarem les línies de ferrocarril habituals, és a dir, connectarem el nostre 3.3V en positiu i el terra en negatiu. Un cop hàgiu acabat la configuració del circuit només per al botó.

Provarem el nostre circuit per veure si podem fer-ho de manera que si es prem el botó encenem el led mitjançant el següent codi:

#Mòduls importats des de la importació gpiozero Botó de la importació de càmeres PiCamera des de la importació del temps de suspensió

#Configuració

Càmera = PiCamera () Botó = Botó (22)

Funció #Photo taking, he decidit posar-la en una funció de definició, ja que ens ajuda a netejar el codi principal

photocap def ():

Camera.start_preview ()

sleep (5) Camera.capture ('/ home / pi / Desktop / image.jpg') print ("S'ha fet la foto") Camera.stop_preview ()

#Codi principal:

mentre és cert: si Button.is_pressed: print ("Es va prémer el botó") photocap ()

#Per què funciona: el codi principal funciona igual que tot el que estem fent és utilitzar l'ordre if button.is_pressed en una sentència true mentre que s'actualitza constantment quan es prem el botó per fer la foto

Ara configurarem 2 LED RGB fins a la part superior del circuit i els separarem al mig de la taula de treball i farem que sigui simètric. Si no teniu resistències de 220 ohm per a aquest projecte, podeu configurar-les en paral·lel en funció de la vostra resistència per a les resistències que tingueu. El segon pin del LED RGB de 4 pins (el més llarg s’ha de connectar a terra a través del ferrocarril. Els altres pins han d’estar tots connectats als seus propis pins GPIO. (Primer pin = vermell, Segon pin = terra, Tercer Pin = verd, Quart pin = blau).

Provarem un dels nostres LED RGB al nostre circuit de botons amb el codi següent:

#Mòduls importats des de la importació de gpiozero Botó d'importació de càmera PiCamera

des de la importació gpiozero RGBLED

a partir del temps importació de son

#Configuració

Càmera = PiCamera () Botó = Botó (22)

TimedLED = RGBLED (vermell = 21, verd = 20, blau = 16)

Funció de presa de fotos amb LED RGB, he decidit posar-la en una funció de definició, ja que ens ajuda a netejar el codi principal

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

timedled.color (1, 0, 0)

dormir (2)

timedled.color (0, 1, 0)

dormir (1)

Camera.capture ('/ home / pi / Desktop / image.jpg') print ("S'ha fet la foto") Camera.stop_preview ()

#Codi principal:

mentre que és cert:

si Button.is_pressed:

imprimir ("Es va prémer el botó") photocap ()

#Per què funciona: la raó per la qual aquest codi funciona és perquè ara hem aconseguit que el RGBLED funcioni com a temporitzador de quan es farà la foto

Ara configureu la resistència Light Dependent a la part inferior dreta de la taula de treball utilitzant el diagrama fins a la part superior i els ferrocarrils comuns comentats abans. Recordeu que les dues potes llargues del LDR i del capicitator han d’estar connectades al pin GPIO.

Després de connectar el LDR, utilitzarem el codi següent:

# Mòduls importats

des del botó d'importació gpiozero

d'importació de càmera PiCamera d'importació gpiozero RGBLED

des de la importació de gpiozero LightSensor

a partir del temps importació de son

#Configuració

Càmera = PiCamera () Botó = Botó (22) TimedLED = RGBLED (vermell = 21, verd = 20, blau = 16)

LightSensor = LightSensor (23)

Funció de presa de fotos amb LED RGB, he decidit posar-la en una funció de definició, ja que ens ajuda a netejar el codi principal

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

#Codi principal:

mentre que és cert:

si Button.is_pressed: print ("Es va prémer el botó") photocap ()

si Button.is_pressed i Lightsensor.when_dark:

imprimir ("Es va prémer el botó")

imprimir ("És fosc")

fotocapa ()

#Per què funciona: La manera com he afegit el sensor de llum al meu codi és mitjançant una altra sentència if que conté la funció importada del sensor de llum.

Ara el darrer pas d’aquest projecte seria activar l’altre RGBLED simètric a l’altre perquè funcioni com una llum de flaix, El codi final:

des del botó d'importació gpiozero

d'importació de càmeres d'imatges PiCamera

des de la importació gpiozero RGBLED

des de la importació de gpiozero LightSensor

a partir del temps importació de son

#Configuració

Càmera = PiCamera ()

Botó = Botó (22)

TimedLED = RGBLED (vermell = 21, verd = 20, blau = 16)

FlashLED = RGBLED (vermell = 19, verd = 13, blau = 6)

LightSensor = LightSensor (23)

Funció #Photo taking amb LED RGB, he decidit posar-la en una funció de definició, ja que ens ajuda a netejar el codi principal 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') print ("S'ha fet la foto") Camera.stop_preview () # Codi principal: while True: if Button.is_pressed:

imprimir ("Es va prémer el botó")

fotocapa ()

si Button.is_pressed i Lightsensor.when_dark:

imprimir ("Es va prémer el botó") imprimir ("És fosc")

FlashLED.color (1, 1, 1)

fotocapa ()

#Per què funciona: la forma en què he afegit la meva llanterna és mitjançant l'ús del led RGB per generar el color blanc que és 1, 1, 1 i només ho fa si la sentència if és certa.

Recomanat: