Sommario:

CanSat - Guida per principianti: 6 passaggi
CanSat - Guida per principianti: 6 passaggi

Video: CanSat - Guida per principianti: 6 passaggi

Video: CanSat - Guida per principianti: 6 passaggi
Video: Il cane è stato abbandonato nel bosco con una scatola di pasta. La storia di un cane di nome Ringo. 2024, Novembre
Anonim
CanSat - Guida per principianti
CanSat - Guida per principianti
CanSat - Guida per principianti
CanSat - Guida per principianti
CanSat - Guida per principianti
CanSat - Guida per principianti

L'obiettivo principale di questo tutorial è condividere il processo di sviluppo di un CanSat, passo dopo passo. Ma, prima di iniziare, chiariamo bene cos'è un CanSat, e quali sono le sue principali funzionalità, cogliendo anche l'occasione, presenteremo il nostro team. Questo progetto è iniziato come un progetto di estensione nella nostra università, Universidade Tecnológica Federal do Paraná (UTFPR), campus Cornélio Procópio. Guidati dal nostro advisor, abbiamo sviluppato un piano d'azione con l'intenzione di entrare in CanSats, il che significava studiarne tutti gli aspetti e le caratteristiche, per poterne capire come funziona, che alla fine si tradurrebbe nella costruzione di un CanSat e lo sviluppo di questa guida. Un CanSat è classificato come picosatellite, il che significa che il suo peso è limitato a 1 kg, ma normalmente i CanSat pesano circa 350 g, e la sua struttura è basata su una lattina di soda, un cilindro di 6,1 cm di diametro, alto 11, 65 cm. Questo modello è stato presentato con l'intento di semplificare il processo di sviluppo di un satellite, al fine di consentire l'accesso delle università a queste tecnologie, ottenendo popolarità grazie alle competizioni che hanno adottato questo modello. In generale, i CanSat si basano su 4 strutture, ovvero il sistema di alimentazione, il sistema di rilevamento, il sistema di telemetria e il sistema principale. Quindi diamo un'occhiata più da vicino a ciascun sistema: - Sistema di alimentazione: questo sistema ha il compito di fornire l'energia elettrica agli altri, in base alle sue esigenze. In altre parole, dovrebbe fornire ai sistemi la tensione e la corrente necessarie, rispettandone i limiti. Inoltre, può essere dotato di componenti di protezione, al fine di garantire la sicurezza e il corretto comportamento degli altri sistemi. Comunemente si basa su una batteria e un circuito regolatore di tensione, ma possono essere aggiunte molte altre funzionalità, come tecniche di gestione dell'alimentazione e diversi tipi di protezioni. - Sistema di rilevamento: questo sistema è composto da tutti i sensori e dispositivi che hanno il compito di raccogliere i dati richiesti. può essere collegato al sistema principale in diversi modi, protocolli seriali, protocolli paralleli tra gli altri, ecco perché è davvero importante padroneggiare tutte queste tecniche, per poter determinare quella più conveniente. In generale i protocolli seriali sono quelli che vengono spesso scelti, per il loro minor numero di connessioni e versatilità, di gran lunga i più diffusi sono i protocolli SPI, I2C e UART. - Sistema di telemetria: questo sistema ha il compito di stabilire la comunicazione wireless tra il CanSat e la stazione di controllo a terra, che include il protocollo di comunicazione wireless e l'hardware. - Sistema Principale: questo sistema è responsabile dell'interconnessione di tutti gli altri sistemi, in modo da controllare e sincronizzare anche la loro sequenza di funzionamento come organismo.

Passaggio 1: il sistema principale

Il sistema principale
Il sistema principale

Per molte ragioni abbiamo scelto un microcontrollore basato su ARM® Cortex®-M4F, è un MCU a bassa potenza, che offre una potenza di elaborazione molto più elevata, oltre a diverse caratteristiche che non si vedono comunemente nei microcontrollori RISK, come le funzioni DSP. Queste caratteristiche sono interessanti perché consentono di aumentare la complessità delle funzionalità delle applicazioni CanSat, senza la necessità di cambiare il microcontrollore (naturalmente rispettandone anche i limiti).

Finché il progetto aveva diversi limiti finanziari, anche il microcontrollore scelto doveva essere conveniente, quindi seguendo le specifiche, abbiamo scelto l'MCU TM4C123G basato su ARM® Cortex®-M4F LaunchPad, è un launchpad che ha appena adattato il nostro progetto. Anche la documentazione (schede tecniche e documentazione delle caratteristiche fornita dal fabbricante) e l'IDE dell'MCU erano dei vantaggi da considerare, a patto che aiutassero molto il processo di sviluppo.

In questo Cansat, abbiamo deciso di mantenerlo semplice e svilupparlo semplicemente utilizzando il launchpad, ma ovviamente nei progetti futuri questa non sarà un'opzione, considerando che diverse funzionalità incluse nel launchpad non sono effettivamente necessarie per il nostro progetto, inoltre il suo formato limitava molto il progetto della struttura del nostro CanSat, purché le dimensioni di un CanSat fossero minime.

Quindi, dopo aver scelto il 'cervello' adatto a questo sistema, il passo successivo è stato lo sviluppo del suo software, inoltre per semplicità abbiamo deciso di utilizzare semplicemente un programma sequenziale, che esegue la seguente sequenza alla frequenza di 1Hz:

Letture sensori > memorizzazione dati > trasmissione dati

La parte dei sensori verrà spiegata più avanti nel sistema di rilevamento, così come la trasmissione dei dati verrà spiegata nel sistema di telemetria. Infine, era per imparare a programmare il microcontrollore, nel nostro caso avevamo bisogno di imparare le seguenti funzioni dell'MCU, dei GPIO, del modulo I2C, del modulo UART e del modulo SPI.

I GPIO, o semplicemente input e output per uso generale, sono porte che possono essere utilizzate per eseguire diverse funzioni, purché siano impostate correttamente. Considerando che non stiamo usando nessuna libreria C per i GPIO, nemmeno per gli altri moduli, dovevamo configurare tutti i registri necessari. Per questo motivo abbiamo scritto una guida di base contenente esempi e descrizioni relativi ai registri dei moduli che stiamo utilizzando, che sono disponibili di seguito.

Inoltre, per semplificare e organizzare il codice, sono state create diverse librerie. Quindi, le librerie sono state create per i seguenti scopi:

- Protocollo SPI

- Protocollo I2C

- Protocollo UART

- NRF24L01+ - ricetrasmettitore

Queste librerie sono disponibili anche di seguito, ma ricorda che abbiamo utilizzato l'IDE Keil uvision 5, quindi queste librerie non funzioneranno per il compositore di codice. Alla fine, dopo aver creato tutte le librerie e aver appreso tutte le cose necessarie, il codice finale è stato messo insieme e, come puoi immaginare, è disponibile anche di seguito.

Passaggio 2: il sistema di rilevamento

Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento
Il sistema di rilevamento

Questo sistema è composto da tutti i sensori e dispositivi che hanno il compito di raccogliere informazioni sulle condizioni di funzionamento del CanSat. Nel nostro caso abbiamo scelto i seguenti sensori:

- un accelerometro digitale a 3 assi - MPU6050

- un giroscopio digitale a 3 assi - MPU6050

- un magnetometro digitale a 3 assi - HMC5883L

- un barometro digitale - BMP280

- e un GPS - Tyco A1035D

Le scelte si sono basate principalmente sull'accessibilità, il che significava che finché le caratteristiche meccaniche ed elettriche (protocollo di comunicazione, alimentazione ecc.) erano compatibili con il nostro progetto, non venivano imposti ulteriori parametri alle scelte, anche perché per alcuni sensori la disponibilità di opzioni era limitato. Dopo aver acquisito i sensori, è arrivato il momento di metterli al lavoro.

Quindi il primo ad essere esplorato è stato l'accelerometro e giroscopio digitale a 3 assi, chiamato MPU6050 (si trova facilmente ovunque, purché sia ampiamente utilizzato nei progetti ARDUINO), la sua comunicazione è basata sul protocollo I2C, un protocollo in cui ogni slave possiede un indirizzo che consente il collegamento in parallelo di più dispositivi, considerando che l'indirizzo è lungo 7 bit, allo stesso bus seriale possono essere collegati circa 127 dispositivi. Questo protocollo di comunicazione funziona su due bus, un bus dati e un bus orologio, quindi per scambiare le informazioni, il master deve inviare 8 cicli di clock (tra l'altro l'informazione deve occupare un byte, a patto che questa comunicazione sia basata sulla dimensione del byte) sia in ricezione che in trasmissione. L'indirizzo dell'MPU6050 è 0b110100X, e la X è usata per chiamare (indica) un'operazione di lettura o scrittura (0 indica un'operazione di scrittura e 1 indica un'operazione di lettura), quindi ogni volta che si vuole leggere il sensore basta usare il suo indirizzo come 0xD1 e ogni volta che vuoi scrivere usa il suo indirizzo come 0xD0.

Dopo aver esplorato il protocollo I2C, l'MPU6050 è stato infatti studiato, in altre parole è stato letto il suo datasheet, in modo da ottenere le informazioni necessarie per metterlo in funzione, per questo sensore sono stati necessari solo tre registri da configurare, il power management 1 registro - indirizzo 0x6B (per garantire che il sensore non sia in modalità sleep), il registro di configurazione del giroscopio - indirizzo 0x1B (per configurare il fondo scala per il giroscopio) e infine il registro di configurazione dell'accelerometro - indirizzo 0x1C (in per configurare il fondo scala dell'accelerometro). Ci sono molti altri registri che possono essere configurati, consentendo l'ottimizzazione delle prestazioni del sensore, ma per questo progetto queste configurazioni sono sufficienti.

Quindi, dopo aver configurato correttamente il sensore, ora puoi leggerlo. L'informazione desiderata avviene tra il registro 0x3B e il registro 0x48, ogni valore di asse è composto da due byte che sono codificati in complemento a 2, il che significa che i dati letti devono essere convertiti per essere significativi (queste cose saranno discusso in seguito).

Dopo aver finito con l'MPU6050, è arrivato il momento di far studiare il magnetometro digitale a 3 assi, denominato HMC5883L (anche questo si trova facilmente ovunque, purché sia ampiamente utilizzato nei progetti ARDUINO), e ancora una volta il suo protocollo di comunicazione è il protocollo seriale I2C. Il suo indirizzo è 0b0011110X e la X serve per chiamare (indica) un'operazione di lettura o scrittura (0 indica un'operazione di scrittura e 1 indica un'operazione di lettura), quindi ogni volta che si vuole leggere il sensore basta usare il suo indirizzo come 0x3D e ogni volta che vuoi scrivere basta usare il suo indirizzo come 0x3C.

In questo caso, per inizializzare l'HMC5883L era necessario configurare tre registri, il registro di configurazione A - indirizzo 0x00 (per configurare la velocità di uscita dei dati e la modalità di misura), il registro di configurazione B - indirizzo 0x01 (per configurare il guadagno del sensore) e infine il registro di modalità - indirizzo 0x02 (per configurare la modalità di funzionamento del dispositivo).

Quindi, dopo aver configurato correttamente l'HMC5883L, è ora possibile leggerlo. L'informazione desiderata avviene tra il registro 0x03 e il registro 0x08, ogni valore di asse è composto da due byte che sono codificati in complemento a 2, il che significa che i dati letti devono essere convertiti per essere significativi (queste cose saranno discusso in seguito). In particolare, per questo sensore dovresti leggere tutte le informazioni in una volta, altrimenti potrebbe non funzionare come proposto, a patto che i dati di uscita vengano scritti solo su questi registri quando tutti i registri sono stati scritti. quindi assicurati di leggerli tutti.

Infine, è stato studiato il barometro digitale, altro sensore con protocollo I2C, chiamato anche BMP280 (anche lui facilmente reperibile ovunque, purché ampiamente utilizzato nei progetti ARDUINO). Il suo indirizzo è b01110110X inoltre la X serve per chiamare (indica) un'operazione di lettura o scrittura (0 indica un'operazione di scrittura e 1 indica un'operazione di lettura), quindi ogni volta che si vuole leggere il sensore basta usare il suo indirizzo come 0XEA e ogni volta vuoi scrivere basta usare il suo indirizzo come 0XEB. Ma nel caso di questo sensore l'indirizzo I2C può essere cambiato cambiando il livello di tensione sul pin SDO, quindi se applichi GND a questo pin l'indirizzo sarà b01110110X e se applichi VCC a questo pin l'indirizzo sta andando essere b01110111X, inoltre per abilitare il modulo I2C in questo sensore è necessario applicare un livello VCC sul pin CSB del sensore, altrimenti non funzionerà correttamente.

Per il BMP280 dovevano essere configurati solo due registri per farlo funzionare, il registro ctrl_meas - indirizzo 0XF4 (per impostare le opzioni di acquisizione dati) e il registro config - indirizzo 0XF5 (per impostare la velocità, il filtro e le opzioni di interfaccia per il sensore).

Dopo aver finito con la configurazione, è il momento di ciò che conta davvero, i dati stessi, in questo caso l'informazione desiderata avviene tra i registri 0XF7 e 0XFC. Sia il valore di temperatura che quello di pressione sono composti da tre byte che sono codificati in modo complementare a 2, il che significa che i dati letti devono essere convertiti per essere significativi (queste cose verranno discusse in seguito). Anche per questo sensore, per ottenere una maggiore precisione, ci sono diversi coefficienti di correzione che possono essere utilizzati durante la conversione dei dati, si trovano tra i registri 0X88 e 0XA1, sì ci sono 26 byte di coefficienti di correzione, quindi se la precisione è non è molto importante, dimenticateli, altrimenti non c'è altro modo.

E ultimo ma non meno importante il GPS - Tyco A1035D, questo si basa sul protocollo seriale UART, in particolare alla velocità di 4800 kbps, nessun bit di parità, 8 bit di dati e 1 bit di stop. L'UART, o ricevitore/trasmettitore asincrono universale, è un protocollo seriale in cui la sincronizzazione delle informazioni avviene via software, ecco perchè è un protocollo asincrono, anche per questa caratteristica, la velocità con cui le informazioni vengono trasmesse e ricevute è molto minore. In particolare per questo protocollo i pacchetti devono iniziare con un bit di start, ma il bit di stop è opzionale e le dimensioni dei pacchetti sono lunghe 8 bit.

Nel caso del GPS - Tyco A1035D, erano necessarie due configurazioni, che erano il setDGPSport (comando 102) e il Query/RateControl (comando 103), tutte queste informazioni, più altre opzioni sono disponibili nel manuale di riferimento NMEA, il protocollo utilizzato nella maggior parte dei moduli GPS. Il comando 102 viene utilizzato per impostare la velocità di trasmissione, la quantità di bit di dati e l'esistenza o meno di bit di parità e bit di stop. Il comando 103 serve per controllare l'output dei messaggi NMEA standard GGA, GLL, GSA, GSV, RMC, e VTG, sono descritti con dettaglio nel manuale di riferimento, ma nel nostro caso la scelta è stata la GGA che sta per Global Dati fissi del sistema di posizionamento.

Una volta configurato correttamente il GPS - TycoA1035D, ora è sufficiente leggere la porta seriale e filtrare la stringa ricevuta secondo i parametri scelti, in modo da consentire l'elaborazione delle informazioni.

Dopo aver appreso tutte le informazioni necessarie su tutti i sensori, è bastato uno sforzo in più per riunire tutto nello stesso programma, utilizzando anche le librerie di comunicazione seriale.

Passaggio 3: il sistema di telemetria

Il sistema di telemetria
Il sistema di telemetria

Questo sistema è responsabile di stabilire la comunicazione tra il controllo a terra e il CanSat, oltre ai parametri di progetto, è stato anche limitato in alcuni modi, purché la trasmissione RF sia consentita solo in alcune bande di frequenza, che non sono occupate a causa altri servizi RF, come i servizi mobili. Queste restrizioni sono diverse e possono cambiare da paese a paese, quindi è importante controllare sempre le bande di frequenza consentite per l'uso comune.

Ci sono molte opzioni di radio disponibili sul mercato a prezzi convenienti, tutti questi sistemi offrono diversi modi di modulazione a diverse frequenze, per questo sistema la nostra scelta è consistita in un ricetrasmettitore RF a 2,4 GHz, l'NRF24L01+, poiché aveva già un protocollo di comunicazione ben consolidato, purché sistemi di verifica come il riconoscimento automatico e i sistemi di ritrasmissione automatica. Inoltre, la sua velocità di trasmissione potrebbe raggiungere velocità fino a 2Mbps con un consumo energetico ragionevole.

Quindi, prima di lavorare su questo ricetrasmettitore, conosciamo meglio l'NRF24L01+. Come accennato in precedenza, si tratta di una radio basata su 2,4 GHz, che può essere configurata come ricevitore o trasmettitore. Per stabilire la comunicazione ogni ricetrasmettitore ha un indirizzo, che può essere configurato dall'utente, l'indirizzo può essere lungo da 24 a 40 bit in base alle proprie esigenze. Le transazioni dati possono avvenire in modo singolo o continuo, la dimensione dei dati è limitata a 1 byte e ogni transazione può generare o meno una condizione di riconoscimento in base alle configurazioni del ricetrasmettitore.

Sono possibili anche altre diverse configurazioni, come il guadagno verso l'uscita del segnale RF, l'esistenza o meno di una routine di ritrasmissione automatica (in tal caso si può scegliere il ritardo, il numero di tentativi tra le altre caratteristiche) e molte altre caratteristiche che non sono necessariamente utili per questo progetto, ma sono comunque disponibili nella scheda tecnica del componente, in caso di interesse a riguardo.

L'NRF24L01+ "parla" il linguaggio SPI quando si tratta di comunicazione seriale, quindi ogni volta che vuoi leggere o scrivere questo ricetrasmettitore, vai avanti e usa il protocollo SPI per questo. Lo SPI è un protocollo seriale come detto prima, in cui la selezione degli slave avviene tramite un pin CHIPSELECT (CS), che insieme alla caratteristica full duplex (sia il master che lo slave possono trasmettere e ricevere in modo parallelo) di questo protocollo consente velocità di transazione dati molto più elevate.

Il datasheet di NRF24L01+ fornisce una serie di comandi per leggere o scrivere questo componente, ci sono diversi comandi per accedere ai registri interni, al payload RX e TX tra le altre operazioni, quindi a seconda dell'operazione desiderata, potrebbe essere necessario un comando specifico per eseguirlo. Ecco perché sarebbe interessante dare un'occhiata al datasheet, in cui c'è un elenco che contiene e spiega tutte le possibili azioni sul ricetrasmettitore (non le elencheremo qui, perché non è questo il punto principale di questo istruibile).

Oltre al ricetrasmettitore, un altro componente importante di questo sistema è il protocollo attraverso il quale vengono inviati e ricevuti tutti i dati desiderati, purché il sistema funzioni con più byte di informazioni contemporaneamente, è importante conoscere il significato di ciascun byte, per questo funziona il protocollo, permette al sistema di identificare in modo organizzato tutti i dati ricevuti e trasmessi.

Per semplicità, il protocollo utilizzato (per il trasmettitore) consisteva in un header formato da 3 byte seguito dai dati del sensore, purché tutti i dati dei sensori fossero costituiti da due byte, ad ogni dato del sensore era assegnato un numero identificativo che iniziava da 0x01 e seguendo un ordine crescente, quindi ogni due byte c'è un byte di identificazione, in questo modo la sequenza di intestazione non può essere ripetuta per caso in base alle letture del sensore. Il ricevitore ha finito per essere semplice come il trasmettitore, il protocollo doveva solo riconoscere l'intestazione inviata dal trasmettitore e dopo aver memorizzato solo i byte ricevuti, in questo caso abbiamo deciso di utilizzare un vettore per memorizzarli.

Quindi, dopo aver acquisito tutte le conoscenze necessarie sul ricetrasmettitore e aver determinato il protocollo di comunicazione, è il momento di mettere tutto insieme nello stesso pezzo di codice e finalmente ottenere il firmware CanSat.

Passaggio 4: il sistema di alimentazione

Questo sistema è ritenuto responsabile di fornire agli altri sistemi l'energia di cui hanno bisogno per funzionare correttamente, in questo caso abbiamo deciso di utilizzare semplicemente una batteria e un regolatore di tensione. Quindi, per il dimensionamento della batteria, sono stati analizzati alcuni parametri di funzionamento del CanSat, questi parametri servirebbero a definire il modello e la potenza necessaria per alimentare l'intero sistema.

Considerando che il CanSat doveva poter durare diverse ore acceso, la cosa più opportuna da fare era considerare le situazioni più estreme di consumo energetico, in cui ogni modulo e sistema collegato al CanSat avrebbe consumato la massima corrente possibile. Tuttavia, è anche importante essere ragionevoli a questo punto non sovradimensionare la batteria, il che non è interessante a causa dei limiti di peso del CanSat.

Dopo aver consultato tutte le schede tecniche dei componenti di tutti i sistemi, la corrente totale consumata dal sistema è stata di circa 160mAh circa, considerando un'autonomia di 10 ore, è stata sufficiente una batteria da 1600mAh per garantire al sistema le corrette condizioni di funzionamento.

Dopo aver conosciuto la necessaria carica della batteria, ci sono ulteriori aspetti da considerare nonostante l'autonomia, come le dimensioni, il peso, la temperatura di funzionamento (purché il CanSat sia tenuto all'interno di un razzo), le tensioni e le forze da cui lo stesso è sottoposto, tra gli altri.

Passaggio 5: la struttura

La struttura è molto importante per la sicurezza del CanSat, anche se è stata un po' trascurata in questo progetto (in realtà non c'era molto interesse per lo sviluppo della parte meccanica del CanSat, in quanto tutti i corsi dei soci era legato all'elettronica). Finché il progetto si basava su un modello esistente, il modello CanSat, non è stato necessario pensare molto a come sarebbe stato, quindi dovrebbe essere modellato in un formato cilindrico, con circa 6, 1 cm di diametro e circa 11, alto 65 cm (le stesse misure di una lattina di soda).

Dopo aver realizzato la struttura esterna, l'attenzione è stata tutta focalizzata sul sistema di aggancio, responsabile di trattenere tutte le tavole all'interno della struttura cilindrica, consentendo anche l'assorbimento delle accelerazioni a cui sarebbe stato sottoposto il CanSat, dopo averne discusso, si è deciso di fissare entrambe le strutture mediante stampaggio di schiuma ad alta densità, alle forme desiderate.

La struttura esterna è stata realizzata utilizzando tubi in PVC, del diametro desiderato, per chiudere la struttura sono stati utilizzati dei copritubi in PVC

Passaggio 6: conclusioni e pensieri futuri

Il CanSat deve ancora essere testato in azione, stiamo effettivamente facendo domanda per una competizione missilistica (che si terrà a dicembre), anche dopo aver attraversato tutto l'edificio (in realtà dobbiamo ancora finire alcune cose) e lo sviluppo processo, sono state osservate alcune prospettive e note che abbiamo pensato sarebbe stato interessante condividere con tutti voi, principalmente su lotte, suggerimenti e anche buone esperienze, quindi ecco qui:

- L'inizio del progetto, è diventato il periodo più prolifico di sviluppo dell'intero progetto, purtroppo il gruppo è diventato un po' disinteressato al progetto entro la sua scadenza, forse a causa della mancanza di risultati immediati, o forse solo della mancanza di comunicazione, comunque molte cose buone sono uscite dal progetto

- Ci sono voluti molti sforzi per far funzionare il ricetrasmettitore, dal momento che tutte le librerie sono state sviluppate da zero, anche perché occorrono due programmi e configurazioni diversi per testare questo genere di cose

- Nel nostro caso non è stata la migliore delle idee lavorare su microcontrollori basati su configurazioni di registri, non tutti i membri sono stati in grado di stare al passo con il resto del gruppo, il che ha portato ad alcuni problemi come la divisione dei compiti. Ci sono tonnellate di librerie C decenti per il microcontrollore che stavamo usando, quindi sarebbe stata un'idea molto migliore usare quelle risorse, c'è anche un IDE chiamato Code Composer, che offre anche tonnellate di risorse per quei microcontrollori

- Il CanSat ha ancora bisogno di molti miglioramenti, questa esperienza si basava su tecniche e competenze di base, inoltre diversi problemi non sono stati presi in considerazione, quindi in futuro si spera che una versione di prim'ordine di questo CanSat possa diventare realtà con più impegno e duro lavoro.

Consigliato: