Inhoudsopgave:

Raspberry Pi Photobooth: 5 stappen
Raspberry Pi Photobooth: 5 stappen

Video: Raspberry Pi Photobooth: 5 stappen

Video: Raspberry Pi Photobooth: 5 stappen
Video: Freenove 5MP Camera for Raspberry Pi [Overview] Adjustable Holder 2024, November
Anonim
Raspberry Pi Photobooth
Raspberry Pi Photobooth

Het doel:

  • Leer hoe u een Pi-camera codeert en installeert
  • Definiëren en if-statements gebruiken in codering
  • Nieuwe technologie leren gebruiken, zoals de RGB-leds

Stap 1: Wat heb je nodig?

Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben
  • 1 Framboos Pi 3
  • Breadboard
  • Truien
  • 1 lichtafhankelijke weerstand
  • 1 condensator
  • 1 drukknop
  • 6 220 Ohm Weerstanden
  • 2 RGB-LED's
  • 1 Raspberry Pi-camera

Stap 2: De cameramodule aansluiten

De cameramodule aansluiten
De cameramodule aansluiten

Allereerst, met de Pi uitgeschakeld, moet je de cameramodule aansluiten op de camerapoort van de Raspberry Pi, vervolgens de Pi opstarten en ervoor zorgen dat de software is ingeschakeld.

  1. Zoek de camerapoort die zich tussen de HDMI- en 3,5 mm-poort bevindt
  2. Trek de cameraclip aan de plastic randen omhoog totdat de clip diagonaal is
  3. Plaats nu de camerakabel met de blauwe richting de 3,5 mm-poort

Stap 3: De camera instellen

De camera instellen
De camera instellen
De camera instellen
De camera instellen

De Raspberry Pi-configuratietool openen vanuit het hoofdmenu en alle bovenstaande interfaces in- en uitschakelen

Open vanuit het hoofdmenu de Terminal en typ de volgende regels code in:

Sudo Raspi-config

Gebruik nu vanaf hier uw pijltoetsen om door het systeem te gaan en klik op de optie Perifere verbinding en klik vanaf hun klik op P1 Camera en schakel de camera in, selecteer vervolgens Voltooien. Teruggaan naar het terminaltype in de volgende regels code:

pip installeer picamera

of Sudo pip installeer Picamera

Stap 4: De cameramodule testen

De cameramodule testen
De cameramodule testen

Vanaf hier kunnen we testen of de camera werkt of niet, omdat we alle software en hardware hebben ingeschakeld.

Open Python 3 vanuit het menu

Open vanaf daar een nieuw bestand vanuit de shell en sla het op als cameratest.py.

Voer de volgende code in:

from picamera import PiCamera #imported module gemaakt op basis van de pip install pi camera commandofrom time import sleep #imported sleep om ervoor te zorgen dat onze camera op camera blijft = PiCamera() #Setup voor de camera

camera.start_preview()#start de camera en laat je zien hoe de camera-output eruit ziet

sleep(10)#laat de preview 10 seconden aan

camera.stop_preview()#finally sluit de preview af

Voer de code uit met F5

Als u deze foutmelding krijgt bij het uitvoeren van de code:

(mmal: mmal_vc_component_create: kon component 'vc.ril.camera' niet maken (1:ENOMEM)

mmal: mmal_component_create_core: kon component 'vc.ril.camera' niet maken (1) Traceback (meest recente oproep laatst): Bestand "", regel 1, in bestand "/usr/lib/python2.7/dist-packages/picamera /camera.py", regel 257, in _init_ self._init_camera() Bestand "/usr/lib/python2.7/dist-packages/picamera/camera.py", regel 288, in _init_camera prefix="Kan camera niet maken component") Bestand "/usr/lib/python2.7/dist-packages/picamera/exc.py", regel 112, in mmal_check raise PiCameraMMALError(status, prefix) picamera.exc. PiCameraMMALError: Kan cameracomponent niet maken: Out van geheugen)

Ga naar de Raspberry Pi-configuratie, ga onder de prestatiekolom en boost je GPU-geheugen totdat de fout is verdwenen (je moet opnieuw opstarten).

Om nu een foto te maken die op het bureaublad wordt opgeslagen, gebruiken we de volgende code:

from picamera import PiCamera #Geïmporteerde module gemaakt op basis van de pip install pi camera commandofrom time import sleep #Imported sleep om ervoor te zorgen dat onze camera aan blijft

camera = PiCamera() #Setup voor de camera

camera.start_preview() #Start de previewsleep(5)#Laat de preview 5 seconden aan

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

camera.stop_preview()#Stopt het voorbeeld

Stap 5: Het circuit maken met code

Het circuit maken met code!
Het circuit maken met code!
Het circuit maken met code!
Het circuit maken met code!
Het circuit maken met code!
Het circuit maken met code!

Zoals hierboven uit de schakelschema's te zien is, moeten we een knop, een LDR en ten slotte twee RGB-LED's instellen. Eerst gaan we de knop linksonder op het breadboard instellen. Tijdens uw installatie voor de knop zullen we de gemeenschappelijke spoorlijnen gebruiken, wat betekent dat we onze 3.3V op de positieve en de aarde voor de negatieve zullen aansluiten. Nadat u de circuitconfiguratie voor alleen de knop hebt voltooid.

We zullen ons circuit testen om te zien of we het zo kunnen maken dat als de knop wordt ingedrukt, we de led aanzetten met behulp van de volgende code:

#Geïmporteerde modules van gpiozero import Knop van picamera import PiCamera van time import sleep

#Opstelling

Camera = PiCamera() Knop = Knop (22)

#Foto-opnamefunctie, ik heb besloten om het in een gedefinieerde functie te plaatsen omdat het ons helpt de hoofdcode op te schonen

def fotocap():

Camera.start_preview()

sleep(5) Camera.capture('/home/pi/Desktop/image.jpg') print ("Foto is gemaakt") Camera.stop_preview()

#Hoofd code:

while True: if Button.is_pressed: print ("Knop is ingedrukt") photocap()

#Waarom dit werkt: de hoofdcode werkt omdat we alleen het commando if button.is_pressed in een while true-statement gebruiken, dus het wordt constant bijgewerkt wanneer de knop wordt ingedrukt om de foto te maken

Nu gaan we 2 RGB-LED's helemaal tot aan de bovenkant van het circuit instellen en ze in het midden van het breadboard scheiden en symmetrisch maken. Als je geen 220 ohm-weerstanden hebt voor dit project, kun je ze parallel instellen, afhankelijk van je weerstand voor de weerstanden die je hebt. De tweede pin van de 4-pins RGB-LED (de langste moet via het spoor met aarde worden verbonden. De andere pinnen moeten allemaal worden verbonden met hun eigen GPIO-pinnen. (Eerste pin = rood, tweede pin = aarde, derde pin = groen, Vierde pin = blauw).

We zullen een van onze RGB-LED's in ons knopcircuit testen met de onderstaande code:

#Geïmporteerde modules van gpiozero import Knop van picamera import PiCamera

van gpiozero import RGBLED

van tijd import slaap

#Opstelling

Camera = PiCamera() Knop = Knop (22)

Getimede LED = RGBLED (rood = 21, groen = 20, blauw = 16)

#Foto-opnamefunctie met RGB-LED, ik heb besloten om het in een gedefinieerde functie te plaatsen omdat het ons helpt de hoofdcode op te schonen

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

getimed.kleur(1, 0, 0)

slapen(2)

getimed.kleur(0, 1, 0)

slapen(1)

Camera.capture('/home/pi/Desktop/image.jpg') print ("Foto is genomen") Camera.stop_preview()

#Hoofd code:

terwijl waar:

als Button.is_pressed:

print ("Knop werd ingedrukt") photocap()

#Waarom dit werkt: de reden waarom deze code werkt, is omdat we nu de RGBLED hebben laten werken als een timer voor wanneer de foto wordt gemaakt

Stel nu de Light Dependent-weerstand in de rechterbenedenhoek van het breadboard in met behulp van het diagram helemaal bovenaan en de eerder besproken gemeenschappelijke spoorwegen. Onthoud dat beide lange benen van de LDR en de condensator moeten worden aangesloten op de GPIO-pin.

Nadat we de LDR hebben aangesloten gaan we de volgende code gebruiken:

#Geïmporteerde Modules

van gpiozero import-knop

van picamera import PiCamera van gpiozero import RGBLED

van gpiozero import LightSensor

van tijd import slaap

#Opstelling

Camera = PiCamera() Knop = Knop (22) TimedLED=RGBLED(rood=21, groen=20, blauw=16)

LichtSensor=LichtSensor (23)

#Foto-opnamefunctie met RGB-LED, ik heb besloten om het in een gedefinieerde functie te plaatsen omdat het ons helpt de hoofdcode op te schonen

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 ("Foto is genomen") Camera.stop_preview()

#Hoofd code:

terwijl waar:

if Button.is_pressed: print ("Knop is ingedrukt") photocap()

als Button.is_pressed en Lightsensor.when_dark:

afdrukken ("Knop is ingedrukt")

print("Het is donker")

fotokapje()

#Waarom dit werkt: de manier waarop ik de lichtsensor aan mijn code heb toegevoegd, is via een andere if-instructie die de geïmporteerde functie van lichtsensor bevat. Als het donker is, zijn we perfect voorbereid voor onze volgende stap

Nu zou de laatste stap in dit project zijn om de andere RGBLED symmetrisch aan de andere te activeren om als een flitslicht te werken, De definitieve code:

van gpiozero import-knop

van picamera import PiCamera

van gpiozero import RGBLED

van gpiozero import LightSensor

van tijd import slaap

#Opstelling

Camera = PiCamera()

Knop = Knop (22)

Getimede LED = RGBLED (rood = 21, groen = 20, blauw = 16)

FlashLED = RGBLED (rood = 19, groen = 13, blauw = 6)

LichtSensor=LichtSensor (23)

#Foto-opnamefunctie met RGB-LED, ik heb besloten om het in een definitie-functie te plaatsen omdat het ons helpt de hoofdcode def photocap() op te schonen: 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 ("Foto is genomen") Camera.stop_preview() # Hoofdcode: while True: als Button.is_pressed:

print ("Knop is ingedrukt")

fotokapje()

als Button.is_pressed en Lightsensor.when_dark:

print ("Knop werd ingedrukt") print ("Het is donker")

FlashLED.kleur(1, 1, 1)

fotokapje()

#Waarom dit werkt: De manier waarop ik mijn zaklamp heb toegevoegd, is door de RGB-led te gebruiken om de kleur wit uit te voeren die 1, 1, 1 is en dit doet het alleen als de if-instructie waar is.

Aanbevolen: