Questo progetto è un autopilota sviluppato su Arduino, progettato per stabilizzare automaticamente un velivolo in volo, mantenendo la quota, la direzione e il rollio attraverso l'uso di sensori, algoritmi di fusione dei dati (Filtro Complementare) e un sistema per il controllo MIMO (Multiple Input Multiple Output) basato su PID (Proportional Integral Derivative).
Componenti principali:
IMU (accelerometro, giroscopio, magnetometro): Misura gli angoli di orientamento (pitch, roll, heading).
Barometro: Monitora la quota barometrica.
LIDAR: Misura l'altitudine rispetto al suolo.
GPS: Fornisce dati su posizione, altitudine e velocità.
Elevoni: Superfici di controllo combinate per regolare pitch e roll.
Timone (Rudder): Superficie di controllo per il movimento angolare (yaw).
Motore: Regola la potenza del velivolo per mantenere la velocità desiderata.
Funzionamento:
Il sistema di autopilota combina i dati dei sensori per stabilizzare automaticamente il volo. Un filtro Complementare integra i dati dell’accelerometro e del giroscopio per determinare con precisione pitch e roll e integra i dati di giroscopio e magnetometro per determinare lo yaw, per derminare l’assetto. Il barometro monitora la quota, il GPS la velocità e la posizione, e il LIDAR misura con precisione la distanza dal suolo.
Un sistema MIMO - PID regola dinamicamente le superfici di controllo (elevoni e timone) e la potenza del motore per minimizzare l’errore tra valori desiderati e valori misurati, garantendo un volo stabile e controllato unendo assieme i dati forniti da multipli sensori e comandando i vari attuatori.
Gli elevoni e il timone regolano automaticamente la direzione del velivolo, mantenendo stabilità e rotta desiderata.
Il sistema Auto-GCAS (Ground Collision Avoidance System) interviene quando il velivolo è troppo vicino al suolo: se il LIDAR rileva una bassa altitudine, il sistema aumenta la potenza del motore e regola gli elevoni per evitare una collisione.
In caso di perdita rapida di altitudine, il sistema di spegnimento automatico del motore disattiva il motore per ridurre il rischio di danni.
L'immagine mostra il concept di un modello di aereo a guida autonoma. Il sistema è composto da un Arduino Nano BLE Sense Rev 2 e un modulo GPS, utilizzati per la navigazione. Sono presenti due servocomandi per il controllo delle superfici aerodinamiche, montati su una struttura in cartone progettata per test preliminari. Questo modello è stato sviluppato con l'obiettivo di creare una piattaforma semplice ed economica, utile per sperimentare sistemi di controllo e navigazione automatizzata, oltre che per validare l'integrazione e il funzionamento dei sensori.
Questo progetto è un sistema di trasmissione dati digitale ottico sviluppato con microcontrollori Arduino, che utilizza un fascio laser per inviare informazioni binarie tra due dispositivi. Il sistema sfrutta la modulazione digitale di ampiezza OOK (On-Off Keying) per rappresentare i bit tramite l’accensione e lo spegnimento del laser, ed è pensato per comunicazioni direzionali sicure su distanze fino a qualche chilometro.
Componenti principali:
Arduino UNO / Nano: Gestisce la generazione e la ricezione del segnale.
Laser KY-008 (650 nm): Trasmettitore ottico a luce rossa visibile.
Fotodiodo BPW34 / Fotoresistore: Ricevitore ottico che converte la luce in segnale elettrico.
Amplificatori operazionali: Condizionano e discretizzano il segnale per la lettura digitale tramite comparatori con isteresi e amplificatori non invertenti.
Funzionamento:
Il microcontrollore trasmettitore invia i dati tramite il laser modulato in OOK. Il ricevitore ottico capta la variazione luminosa, la converte in un segnale elettrico e la discretizza per l’elaborazione digitale. Il protocollo include una fase di sincronizzazione, delimitatori di inizio/fine messaggio e una checksum XOR per la verifica dell’integrità dei dati. Il sistema è stato testato con successo in ambienti a bassa illuminazione e può essere potenziato con ottiche focalizzanti e puntamento meccanico per aumentare distanza e affidabilità.
Questo sistema è progettato per raggiungere altitudini di 30–40 km, raccogliendo dati atmosferici e di posizione in condizioni ambientali estreme. L’intero progetto è sviluppato con particolare attenzione alla ridondanza e affidabilità, sia a livello hardware che software.
Componenti Principali:
BME280 per pressione, quota barometrica, temperatura e umidità,
DS18B20 come sensore di temperatura esterna e backup,
BN880 (GPS) per il tracciamento della posizione e della quota,
SX1278 (LoRa) per la trasmissione telemetrica a lungo raggio,
Modulo SD per salvataggio ridondante dei dati.
Protezione Termica e Meccanica
L’elettronica è racchiusa in una scatola di polistirolo ad alta densità, che garantisce isolamento termico e protezione dagli urti. Il tutto è rivestito con una coperta isotermica, progettata per riflettere la radiazione solare e mantenere stabile la temperatura interna, senza interferire con le comunicazioni radio.
Software Robusto e Autonomo
Il firmware è sviluppato come macchina a stati finiti, completamente basata su funzioni non bloccanti, per garantire l’esecuzione continua del codice.
Un watchdog hardware controlla costantemente il corretto funzionamento del sistema e forza il riavvio automatico in caso di blocco o stallo.
Ogni sensore è gestito da multipli stati indipendenti, in grado di rilevare dati incoerenti, tentare il recupero attraverso re-inizializzazione e, se necessario, escludere temporaneamente (fino ad una nuova misura con dati coerenti) il sensore malfunzionante, evitando che comprometta l’intera missione.
Questo approccio consente al sistema di funzionare in autonomia, anche in presenza di guasti parziali, e di completare con successo la missione garantendo sempre il massimo dei dati recuperabili.
Esempio di un pacchetto trasmesso tramite il protocollo LoRa:
12:56:06 || 45,5901 || 10,0833 || 276 || 279 || 27,8 || 56 || 980,2 || 31,4 || 89
Dati Decodificati:
Tempo = 12:56:06
Latitudine = 45,5901 [°]
Longitudine = 10,0833 [°]
Altitudine Barometrica = 276 [m]
Altitudine GPS = 279 [m]
Temperatura Esterna = 27,8 [°C]
Umidità = 56 [RH%]
Pressione = 980,2 [hPa]
Temperatura Interna = 31,4 [°C]
Percentuale di Carica della Batteria = 82 [%]
Nel corso di una ricerca per comprendere il funzionamento dei radar a modulazione FM ho ricercato le tecniche di modulazione della sinusoide da lì ho deciso di scrivere questo articolo che parla delle varie tecniche di modulazione analogica, dei circuiti modulatori, un analisi del circuito, del segnale che i vari circuiti generano e i vantaggi e svantaggi delle varie tecniche di modulazione.
In questo progetto ho creato una stazione meteo IoT (internet delle cose) utilizzando Arduino UNO R4 WiFi e il sensore DHT11. La stazione misura temperatura e umidità e invia i dati alla piattaforma Arduino Cloud per visualizzarli in tempo reale su una dashboard online.
Componenti:
Arduino UNO R4 WiFi : Microcontrollore Arduino con modulo Wi-Fi integrato.
DHT11: Sensore digitale che misura:
Temperatura (°C) : da 0°C a 50°C con una precisione di ± 2°C
Umidità (%) : da 20% a 90% RH con una precisione di ± 5% RH
Luminosità (Unità) : da 0 a 1023 unità con una precisione di ± 1 Unità
Funzionamento:
L'Arduino si connette con il cloud e legge i dati di temperatura e umidità dal sensore DHT11, utilizzando una fotoresistenza misura la luminosità e li inviano via Internet al cloud per la visualizzazione da remoto. Il tempo di attesa tra le letture è stato impostato a 30 secondi, per limitare i consumi dell'intero circuito la frequenza di aggiornamento del circuito si può impostare a 5 minuti e inserire la funzione di riposo del sensore quando non deve acquisire i dati e del modulo WiFi quando l'Arduino non necessità di trasmettere al cloud. Il circuito è alimentato da una batteria ricaricabile, con la possibilità di aggiungere un pannello solare per renderlo applicabile in modalità off-grid, mantenendo comunque la visualizzazione dei dati da remoto tramite Internet.