Tempo di lettura: 6 minuti

La preparazione del software di sistema

E’ necessario disporre di una microSD Card (32GB è già sufficiente). La card va preparata con il sistema operativo Bullseye. Per far questo, occorre utilizzare il Raspberry PiImager (disponibile al sito www.raspberry.com/software), un tool molto semplice da usare.

Una volta installato sul PC/Mac, prima di scrivere l’immagine sulla microSD, vanno configurate le opzioni base (es. Hostname, WiFi/LAN, layout tastiera, time zone, username/password), ma questa configurazione esula dallo scopo di questo articolo. Va detto che il software AllSkyCam non necessita del sistema operativo completo di desktop. La versione “Lite” va più che bene. Anzi, è raccomandata.

Procediamo ora con il primo avvio del sistema. Inseriamo la scheda microSD nel Raspberry Pi, colleghiamo un monitor e, una volta avviato il sistema, procediamo all’aggiornamento del sistema operativo, digitando, al prompt dei comandi:

sudo apt update

sudo apt upgrade(alla eventuale domanda, rispondere y)

Adesso bisogna installare alcuni pacchetti software. E’ necessaria la connessione ad internet.

  • pip (per l’installazione di pacchetti Python, dovrebbe già essere presente nel sistema)

sudo aptinstall python3-pip

  • ImageMagick (libreria pythonper la gestione delle immagini)

sudo apt-get install libmagickwand-dev

  • ffmpeg (software per la generazione video, nel nostro caso, timelapse)

sudo aptinstallffmpeg

Procediamo adesso con la messa a fuoco della camera, digitando:

libcamera-vid -t 100000

Ora vedremo, al monitor locale, il video trasmesso dalla Pi HQ Cam. Possiamo quindi mettere a fuoco ruotando la ghiera della camera, avendo cura di inquadrare il cielo. Possiamo aumentare la durata del video aumentando il valore 100000 della riga di comando. Nota: se non abbiamo un monitor da collegare al Raspberry Pi, possiamo comunque generare uno stream video e renderlo disponibile sulla rete:

libcamera-vid -t 0 —inline —listen -o tcp://0.0.0.0:8888

Dopodiché, da un’altra postazione sulla stessa rete, possiamo usare, ad esempio un client VLC ed aprire il network stream, indicando l’indirizzo IP del Raspberry Pi e la porta sulla quale il Raspberry sta generando lo streaming (es. tcp/h264://raspberrypi.local:8888). La messa a fuoco tramite streaming video non è il massimo. Bisogna tener conto di qualche secondo di ritardo introdotto dalla trasmissione. Per cui bisogna procedere con piccole rotazioni della ghiera di messa a fuoco ed attendere di vedere l’effetto sul client video.

Una volta terminata la messa a fuoco, possiamo inserire nella scatola il sacchetto di silica gel e chiudere la AllSkyCam.

Nota: frankAllSkyCam utilizza il software libcamera (incluso nell’ultimo sistema operativo Raspberry). La versione precedente (raspistill) non è supportata.

Le funzionalità del software frankAllSkyCam

Prima di procedere con l’installazione, mi soffermo sulle funzionalità di questo software, scritto da me (da cui il nome frankAllSkyCam). Oltre a fornire l’immagine del cielo in tempo reale, fornisce le seguenti informazioni:

  • Immagine fase della Luna (fase, %illuminazione, orari di alba e tramonto, prossima luna nuova)
  • Sole (orari di alba e tramonto)
  • Orari di inizio e fine del buio astronomico
  • SQM (calcolato dall’analisi dell’immagine, oppure letto dal lettore SQM-LE, se disponibile)
  • Indicazione dei pianeti principali presenti in cielo, con le rispettive icone
  • Valori provenienti da eventuali sensori sia collegati al Raspberry Pi, sia disponibili tramite rete (es. Temperatura, Umidità, dati di stazioni meteo, …)

Tali dati vengono riportati sull’immagine insieme con 2 loghi a scelta (es. Bussola e logo personale) e nome della location. Le posizioni di queste informazioni, la dimensione del testo, il colore del font (diurno e notturno) sono customizzabili da un file di configurazione.

Ogni mattina, questo software genera automaticamente:

  • Timelapse delle ultime 24 ore
  • Timelapse della notte appena trascorsa
  • Startrail della notte precedente

Inoltre, attraverso l’interfaccia web, visualizza le costellazioni in overlap all’immagine del cielo. In questo modo, accedendo – tramite browser – alla AllSkyCam è possibile vedere, tutte insieme, le informazioni utili a pianificare e gestire una eventuale osservativa.

Altra funzionalità è la gestione automatica anticondensa, ma questa verrà trattata più avanti, in un paragrafo dedicato.

Una nota a parte la merita la misurazione dell’SQM. Il software frankAllSkyCam comunica con un SQM LE leggendo i valori SQM ed adeguando, di conseguenza, il tempo di esposizione dell’immagine del cielo. Qualora non fosse disponibile un SQM-LE, il software fornisce una ottima stima del valore SQM, analizzando i dati del fotogramma. Per raggiungere questo risultato ho scritto un algoritmo “machine learning” addestrato con le letture reali dell’SMQ-LE. Il training è durato una settimana ed i valori di SQM calcolati sono quasi sovrapponibili a quellirilevati dall’SQM-LE.

Se si intende usare il Raspberry Pi anche come server web, è necessario che installare Apache (o altro server web). Per installare Apache, basta digitare questo comando:

sudo aptinstall apache2 -y

dopodiché occorrerà creare la cartella che ospiterà l’immagine allskycam.jpg:

sudo mkdir /var/www/html/img

A questo punto, occorre spostare il file index.html, generato durante l’installazione, nel server web locale:

sudo mv /home/pi/frankAllSkyCam/index.html /var/www/html/

In questo modo, potremo vedere la nostra immagine del cielo usando semplicemente questo indirizzo:

http://<indirizzo_IP raspberry/

Se vogliamo un vero e proprio sito web, questo viene fornito a corredo del software frankAllSkyCam, ed è immediatamente utilizzabile e personalizzabile.Una delle sue particolarità è la possibilità di mostrare l’overlay della mappa celeste sull’immagine del cielo, grazie ad un codice javascript open source disponibile in Rete. Un esempio reale è visibile qui:

http://www.meteobrallo.com/webcam/allsky/

Ultimo punto da considerare: dobbiamo decidere se la nostra AllSkyCam sarà destinata ad essere accessibile da utenti esterni oppure no. Se si, come credo, dovremo scegliere se utilizzare un sito web esterno alla nostra rete locale, oppure se usare il Raspberry Pi come web server pubblico. Nel primo caso, il software frankAllSkyCam esporterà l’immagine del cielo (via FTP) sul sito esterno. Questa soluzione potrebbe essere preferibile, sia per ragioni di sicurezza (in modo da evitare di esporre il Raspberry Pi su una rete pubblica), sia per evitare sovraccarico di richieste http che potrebbero degradare le prestazioni della nostra rete locale. Fare leva su un sito esterno è la mia preferenza personale. Ma comunque, qualora lo volessimo, è ovviamente possibile usare il Raspberry Pi come web server pubblico. In tal caso, sul nostro router, sarebbe necessaria una configurazione di “port forwarding” per esporre il servizio http del Raspberry Pi (su porta 80) su rete pubblica, associandolo ad una porta esterna (es. 8080). Il router si occuperà di reindirizzare le richieste in arrivo sulla porta 8080 verso la AllSkyCam che risponderà sulla porta 80. Dall’esterno bisognerà usare un indirizzo tipo questo:

http://<IP pubblico del mio router>:8080/

al posto dell’indirizzo IP pubblico del mio router è preferibile usare un servizio DNS (dinamico o statico, a seconda della natura del mio IP pubblico.

Naturalmente, frankAllSkyCam è gratuito e presente su GitHub.

Installazione del software frankAllSkyCam

L’installazione è davvero immediata. Assicurarsi di essere connessi ad internet e, dal prompt dei comandi del Raspberry Pi, digitare:

pip3 installfrankAllSkyCam

Se non si rilevano messaggi di errore, l’installazione è terminata, ma è necessario configurare ancora alcuni parametri, in base alle proprie preferenze. Per fare ciò, bisogna avviare il programma digitando:

python3 -m frankAllSkyCam

Verranno create alcune cartelle:

/home/pi/frankAllSkyCam cartella principale del programma
/home/pi/frankAllSkyCam/img cartella delle immagini generate. Conterrà delle sottocartelle, ognuna relativa alle immagini di 24 ore. Il nome delle sottocartelle conterrà la data delle riprese. Queste cartelle verranno automaticamente cancellate dopo un numero “x” di giorni, definito nel file di configurazione
/home/pi/frankAllSkyCam/log

 

Cartella contenente i log del software
/home/pi/frankAllSkyCam/mq

 

Cartella contenente i file di supporto per il calcolo dell’SQM, quando il dispositivo SQM-LE non è disponibile
/home/pi/frankAllSkyCam/png

 

Cartella contenente il proprio logo, la bussola (entrambi personalizzabili), le immagini di luna e pianeti.

 

edalcuni file, tra cui:

/home/pi/frankAllSkyCam/config.txt

/home/pi/frankAllSkyCam/index.html

config.txtcontiene la configurazione di frankAllSkyCam.

index.txt è una pagina web semplice che mostra l’immagine AllSky

Ora non resta che configurare le preferenze.

Configurazione di frankAllSkyCam

È possibile configurare diversi aspetti, dalla risoluzione dell’immaginealla dimensione del font di caratteri, alla posizione del testo sull’immagine, etc. Ma concentriamoci sugli aspetti più importanti, lasciando gli altri settings con i valori predefiniti.

Il file di configurazione è situato in:

/home/pi/frankAllSkyCam/config.txt

Per modificarlo,è possibile utilizzare l’editor nano:

nano /home/pi/frankAllSkyCam/config.txt

Parametri base:

inte = AstroBrallo.com #nome della AllSkyCam

latitude = 44,73#latitudine del sito di osservazione

longitude = 9.31   #longitudine del sito di osservazione

time_zone = Europe/Rome   #time zone

 

nel caso in cui si possegga un SQM-LE, bisogna abilitarlo in questo modo:

use_sqm = y   #y = ho un SQM-LE; n=non ho un SQM-LE

ip_addess = 192.168.1.10 #indirizzoipdel dispositivo SQM_LE

port = 10001  #porta di comunicazione del SQM LE

write_log = n #abilitazione ai log

 

Se si vuole utilizzare un sito web esterno su cui pubblicare l’immagine AllSky, bisogna configurare i seguenti parametri FTP:

isFTP=True   #True = attivo il trasferimento verso sito web esterno. False=no

FTP_server = tuo_ftpserver.com

FTP_login = tuo_nomeutente

FTP_pass = tua_password

FTP_uploadFolder =tua_upload_dir

FTP_filenameAllSkyImgJPG = allskycam   #solo nome file. Non aggiungere “.jpg”

FTP_fileNameStarTrailJPG = /startrails/starTrail.jpg  #nome file startrail

FTP_fileNameTimelapseMP4 = /videos/frankAllSkycam  #cartella dei video timelapse

 

In base alla configurazione di cui sopra, la allskycam, le immagini startrail e i video timelapse verranno caricati su un sito remoto, tramite FTP. Naturalmente, se non si desidera usare un FTP remoto basta impostare isFTP=False

Due ulteriori parametri abilitano/disabilitano la generazione dei timelapse:

nightTL = True   #True = viene generato il timelapse notturno; False = no

fullTL = True#True = viene generato il timelapse 24h; False = no

 

Il file allskycam_night.mp4 mostrerà solo il timelapse notturno, dal tramonto all’alba e verrà generato se nightTL = True

Analogamente, allskycam_24h.mp4 mostrerà le 24 ore e verrà generato se fullTL = True

Ci sono alcune altre opzioni. Il file config.txt è autoesplicativo ed è possibile personalizzare molti aspetti, incluso il logo, l’immagine della bussola, e “dati extra” che potremmo decidere di scrivere sulla nostra immagine AllSkyCam, ad esempio informazioni provenienti da sensori esterni,quali la velocità del vento, l’umidità, la temperatura e/o altro.

Una volta completata la configurazione, è necessario verificare se il tutto funziona. Dalla riga di comando, basta digitare:

python3 -m frankAllSkyCam

Per verificare il funzionamento facciamo attenzione ad eventuali messaggi di errore (quasi sempre sono dovuti ad errori di configurazione. Quindi controlliamo bene il file config.txt)abbiamo diverse opzioni:

  1. tramite browser, provarehttp://<your_raspberry_IP>
  2. Sul disco locale del Raspberry Pi, verificare l’esistenza del file jpeg (nome del file contiene data ed ora): /home/pi/frankAllSkyCam/img/<img_folder_with_date>/
  3. Sul sito web remoto (nel caso sia stato configurato) dovrebbe essere visibile l’immagine AllSkyCam

Se tutto funziona, rendiamo tutto automatico. Basta digitare questo comando:

python3 -m frankAllSkyCam.crontab