Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci l’esplorazione del Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Accedi in anteprima agli annunci di nuovi prodotti e alle anticipazioni esclusive.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e omaggi festivi: Partecipa a omaggi e promozioni speciali durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

3.1.1 Modulo Fotografico

Introduzione

In questo kit, dotato di un modulo fotocamera, proveremo a scattare una foto con il Raspberry Pi.

Componenti necessari

In questo progetto avremo bisogno dei seguenti componenti.

../_images/photo1.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Modulo Fotocamera

ACQUISTA

Procedura sperimentale

Passo 1: Accedi al desktop del Raspberry Pi. Potresti aver bisogno di uno schermo per un’esperienza migliore, fai riferimento a: Collega il tuo Raspberry Pi. Oppure accedi al desktop del Raspberry Pi da remoto, per un tutorial dettagliato fai riferimento a Desktop Remoto.

Passo 2: Apri un terminale e accedi alla cartella del codice.

cd ~/raphael-kit/python/

Passo 3: Esegui il codice.

sudo python3 3.1.1_PhotographModule.py

Dopo che il codice è stato eseguito, la fotocamera scatterà una foto. Ora puoi vedere la foto chiamata my_photo.jpg nella directory ~.

Nota

Puoi anche aprire 3.1.1_PhotographModule.py nel percorso ~/raphael-kit/python/ con un IDE Python, clicca sul pulsante Run per eseguire e sul pulsante Stop per fermare il codice.

Se desideri scaricare la foto sul tuo PC, fai riferimento a Software FileZilla.

Codice

#!/usr/bin/env python3
from picamera2 import Picamera2, Preview
import os

# Get the current user's login name
user = os.getlogin()
# Get the path to the user's home directory
user_home = os.path.expanduser(f'~{user}')

# Create a Picamera2 instance
camera = Picamera2()
# Retrieve the default preview configuration
preview_config = camera.preview_configuration

try:
    # Set preview size and format
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Start the camera preview in QTGL mode
    camera.start_preview(Preview.QTGL)
    # Start the camera
    camera.start()
    # Capture and save a photo to the user's home directory
    camera.capture_file(f'{user_home}/my_photo.jpg')

except KeyboardInterrupt:
    # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs
    camera.stop_preview()
    pass

Spiegazione del Codice

  1. Importa le classi Picamera2 e Preview dalla libreria picamera2, e il modulo os per le interazioni con il sistema operativo.

    #!/usr/bin/env python3
    from picamera2 import Picamera2, Preview
    import os
    
  2. Recupera il nome dell’utente corrente e il percorso della sua directory home.

    # Ottieni il nome utente corrente
    user = os.getlogin()
    # Ottieni il percorso della directory home dell'utente
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crea un’istanza della classe Picamera2 e recupera la configurazione predefinita dell’anteprima.

    # Crea un'istanza di Picamera2
    camera = Picamera2()
    # Recupera la configurazione di anteprima predefinita
    preview_config = camera.preview_configuration
    
  4. Imposta la dimensione e il formato dell’anteprima della fotocamera. La dimensione è impostata a 800x600 pixel e il formato XRGB8888.

    try:
        # Imposta dimensioni e formato dell’anteprima
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
        ...
    
  5. Avvia l’anteprima della fotocamera in modalità QTGL, un metodo per visualizzare l’anteprima, e quindi avvia la fotocamera.

    try:
        ...
    
        # Avvia l’anteprima della fotocamera in modalità QTGL
        camera.start_preview(Preview.QTGL)
        # Avvia la fotocamera
        camera.start()
    
        ...
    
  6. Cattura un’immagine dalla fotocamera, salvandola nella directory ~/ dell’utente.

    try:
        ...
    
        # Cattura e salva una foto nella directory home dell'utente
        camera.capture_file(f'{user_home}/my_photo.jpg')
    

    Nota

    Puoi utilizzare la funzione camera.capture() insieme a un ciclo for per realizzare scatti continui. Usa la funzione delay per regolare l’intervallo tra gli scatti.

    for i in 5:
        camera.capture(f'{user_home}/my_photo%s.jpg' % i)
    
  7. Questo blocco di codice gestisce un’interruzione da tastiera (come Ctrl+C) interrompendo l’anteprima della fotocamera. L’istruzione pass viene utilizzata per gestire l’eccezione senza altre azioni.

    except KeyboardInterrupt:
        # Ferma l’anteprima della fotocamera se avviene un'interruzione (es. Ctrl+C)
        camera.stop_preview()
        pass