Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Una time lapse camera con Raspberry Pi e Python

Realizzare una camera per i time lapse con Raspberry Pi, il modulo Raspberry Pi Camera Module e un semplice script Python
Realizzare una camera per i time lapse con Raspberry Pi, il modulo Raspberry Pi Camera Module e un semplice script Python
Link copiato negli appunti

Raspberry Pi è una delle board ARM più popolari sul mercato. La sua diffusione ha consentito alla Raspberry Pi Foundation di sviluppatore anche numerosi add-on hardware capaci di estendere le funzionalità di questo mini PC. Tali accessori sono di varia natura e tipologia. Sostanzialmente si tratta di periferiche che aumentano le capacità del device e possono essere comandate tramite la scrittura di appositi script per svolgere innumerevoli task.

Nella guida di oggi andremo a realizzare una semplice time lapse camera sfruttando: il Raspberry Pi Camera Module, Raspberry Pi ed un piccolo programma scritto in Python. Questo tutorial non avrà nulla di particolarmente complicato e può essere seguito anche da chi si sta approcciando per la prima volta al mondo di Raspberry Pi e della programmazione.

Requisiti hardware

Raspberry Pi

Per realizzare una time lapse camera è necessario Raspberry Pi, va bene anche l'ultimo modello, una microSD da almeno 64GB di storage ed un Raspberry Pi Camera Module. Inoltre vi consigliamo di dotarvi anche di un buon battery bank USB visto che il device potrebbe trovarsi in una posizione lontana da una presa di corrente. Fortunatamente Raspberry Pi può essere alimentato per diverse ore tramite una semplice batteria che emetta 5V in corrente continua con una capacità di almeno 3000 mAh.

Abilitare il Python Picamera module su Raspberry Pi OS

Per potersi interfacciare direttamente con il Raspberry Pi Camera Module è necessario sfruttare il Python Picamera module. Tale modulo software però è disabilitato di base nelle ultime edizioni del sistema operativo Raspberry Pi OS, per una questione di compatibilità con altre librerie, ecco perché è necessario eseguire una piccola operazione per riabilitare tale componente.

Apriamo quindi bash, Raspberry Pi OS è basato su Linux, e digitiamo:

sudo raspi-config

raspberry pi camera

Si avvierà quindi un wizard di configurazione nella shell, tramite le frecce direzionali spostiamoci nella sezione "Interface Options" e abilitiamo la voce "Legacy Camera" premendo il tasto "Invio" sulla rispettiva opzione.

rasbperry pi camera

Successivamente sempre tramite le frecce direzionali, spostiamoci sulla voce "Finish". Per rendere operativa tale modifica è necessario un riavvio di Raspberry Pi OS, dunque accettiamo la richiesta del wizard e selezioniamo "Yes" per il reboot del sistema operativo.

In questo tutorial si presume che il Python Picamera module sia già connesso al Raspberry Pi. Dunque non ci dilungheremo sulla configurazione lato hardware della periferica ma andremo dritti all'implementazione della soluzione software.

Per controllare che la camera sia operativa scriviamo questo comando nel terminale:

raspistill -k

Dovremmo quindi poter visualizzare il flusso video della telecamera, per uscire da tale modalità basta tenere premuti i tasti CTRL+C.

Se ricevete un messaggio di errore controllate che il device sia correttamente connesso e abilitato andando su "Menu>Raspberry Pi Configuration>Interface". Da tale pannello verifichiamo che la voce "Camera" sia impostata su "Enabled".

raspberry pi configurazione camera

Se non lo è cliccate sull'opzione "Enabled" e poi "OK" ed eseguite un riavvio del device.

raspberry pi configurazione camera 2

Realizzare lo script Python per eseguire il time lapse

Partiamo realizzando una nuova directory per il nostro script. Torniamo quindi su bash e scriviamo:

mkdir timelapse

Adesso apriamo il programma chiamato Mu presente all'interno del menu di sistema sotto la sezione chiamata "Programming". Si tratta concretamente di un editor per script Python open source pensato per i principianti.

aprire l'editor python mu

Una volta aperto l'applicativo selezioniamo la modalità chiamata "Python 3".

mu configurazione python

Successivamente clicchiamo sull'opzione "save" ed andiamo a generare un file da posizionare all'interno della directory precedentemente creata. Possiamo nominare tale file come timelapse.py.  Ora aggiungiamo queste stringhe di codice nel documento vuoto per realizzare il programma che va a generare il time lapse:

from time import sleep
import picamera
with picamera.PiCamera() as camera:
    camera.resolution = (1024, 768)

Come potete notare abbiamo impostato la risoluzione delle immagini da scattare a 1024x768, se lo desiderate potete modificare tale parametro per avere foto ad una risoluzione più alta. Proseguiamo nel completamente dello script aggiungendo la funzione dedicata alla cattura continua dei fotogrammi:

WAIT_TIME = 30
with picamera.PiCamera() as camera:
    camera.resolution = (1024, 768)
    for filename in camera.capture_continuous('/home/username/timelapse/img{timestamp:%H-%M-%S-%f}.jpg'):
        sleep(WAIT_TIME)

Il primo parametro, WAIT_TIME, stabilisce l'intervallo di tempo tra gli scatti. Mentre la stringa for filename in camera.capture_continuous indica al programma di continuare a scattare finché il programma non viene terminato. Al termine dello script troviamo indicata la posizione della nostra directoy e con l'opzione timestamp si indica allo script di nominare le foto in ordine temporale cosi da poter organizzare le immagini in modo semplice.

A questo punto salviamo nuovamente il file e premiamo il tasto F5 per avviare il programma. Se tutto è andato bene ogni 30 secondi dovremmo poter visualizzare un nuovo scatto dentro la nostra directory chiamata timelapse.

Configurare Raspberry Pi per il time lapse all'avvio

Per non dover avviare manualmente ogni volta lo script Python appena creato possiamo impostare tale software per autoavviarsi non appena il sistema operativo viene eseguito. Cosi facendo non è nemmeno necessario connettere mouse, tastiera e monitor al Raspberry Pi ma unicamente il Raspberry Pi Camera Module.

Avviamo il terminale ed andiamo a modificare il file chiamato autostart presente nella nostra home directory:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

nel file appena aperto tramite l'editor di testo nano aggiungiamo questa stringa al suo termine:

sudo /usr/bin/python3 /home/username/timelapse/timelapse.py

Salviamo con CTRL+O e chiudiamo il documento con CTRL+X

A questo punto la configurazione software è terminata. Adesso possiamo provare ad eseguire un test ed a posizionare Raspberry Pi nel punto in cui intendiamo realizzare il time lapse. Basta appunto connettere il power bank alla porta USB-C della board ARM e puntare la telecamera sul punto desiderato.

Dopo aver atteso un tempo congruo potete connettere il device ad un display e al mouse per controllare se lo script ha funzionato correttamente. Se Raspberry Pi è configurato per connettersi alla rete WIFI, potete accedere tramite SSH e copiare le foto scattate su un altro terminale:

ssh nomeutentedelRaspberryPi@indirizzoIPlocaledelRaspberryPi
cd ~/timelapse
ls

dopo aver  digitato il comando ls dovreste poter vedere dei file .jpg. Quindi per copiare questi file sul vostro computer potete scrivere questo in bash:

scp nomefile.jpg nomeutentedelcomputer@indirizzoIPdelcomputer:~/directorydoveposizionareleimmagini

Ti consigliamo anche