Software di bordo
Il software di bordo è eseguito su una Raspberry Pi Zero ed è scritto in Python. Durante la discesa del CanSat, il programma legge i dati dai sensori (temperatura, pressione, umidità, GPS, ecc.) e li invia a terra tramite il modulo radio LoRa EBYTE LLCC68 (modello E220-900T22D), operante a 868/915 MHz.
Il codice è strutturato in due fasi principali:
- Setup: Inizializza le librerie, i sensori, la comunicazione seriale e il modulo LoRa.
- Loop principale: Legge periodicamente i dati dai sensori, li organizza in pacchetti e li invia a terra.
Durante lo svolgimento della missione primaria (raccolta e trasmissione dei dati), il software attiva la fotocamera per acquisire immagini NIR e RGB, che vengono salvate localmente per l’elaborazione successiva.
Software di terra
Il software di terra è sviluppato in Python e ha il compito di ricevere i dati via LoRa, salvarli in un file, fare print. La comunicazione avviene tramite un ricevitore LoRa collegato via seriale a un computer. Il programma gestisce:
- Lettura continua dei dati dalla porta seriale
- Parsing dei pacchetti ricevuti
- Salvataggio dei dati in un file .csv strutturato
- Fare il print di dati ricevuti su terminale
4.3 Software di analisi
Inoltre, è previsto un modulo separato per l’elaborazione delle immagini acquisite, che consente di calcolare l’indice NDVI e valutare lo stato di salute della vegetazione.
Il codice segue questi passaggi:
Caricamento immagine: si importa l’immagine acquisita con la camera montata su Cansat;
Visualizzazione dell’immagine sullo schermo;
Nel caso in cui l’immagine sia troppo grande per lo schermo, viene ridimensionata riducendone larghezza e altezza.
Aumento del contrasto: viene applicata una funzione contrast_stretch() che migliora la visibilità dei dettagli regolando dinamicamente i valori di luminosità dei pixel.
Calcolo NDVI:
Funzione calc_ndvi(image): La funzione prende un’immagine come input, estraendo i canali blu, verde e rosso. Calcola il NDVI utilizzando il canale blu e il canale rosso. Viene aggiunta una piccola costante (0.01) per evitare divisioni per zero, che potrebbe verificarsi se la somma data dal denominatore(somma dei valori dei canali rosso e blu) è zero. Il risultato è un’immagine NDVI che rappresenta la differenza tra i due canali, con valori che indicano lo stato della vegetazione.
Elaborazione del NDVI: Dopo il calcolo del NDVI, il risultato viene visualizzato tramite la funzione display(ndvi), che mostra l’immagine grezza del NDVI.
Contrasto dell’NDVI: Successivamente, l’immagine NDVI viene elaborata per aumentare il contrasto attraverso la funzione contrast_stretch(ndvi). Questo miglioramento rende l’immagine più visibile e interpretativa.
Mappatura a colori: per rendere l’indice più leggibile visivamente, applichiamo una mappa di colori (“fastiecm”) che assegna colori specifici a diversi livelli di NDVI (ad es. blu per valori bassi, rosso per valori alti).
Salvataggio delle immagini elaborate: il programma genera immagini in scala di grigi e a colori, utili per l’analisi post-volo.
L’elaborazione delle immagini avviene dopo l'atterraggio. Questo approccio permette un’analisi più avanzata senza compromettere le risorse durante la fase di discesa.

