Sommario:
- Forniture
- Passaggio 1: apprendere il protocollo di telemetria Spektrum
- Passaggio 2: selezionare l'hardware
- Passaggio 3: scrivere il software
- Passaggio 4: cablare il circuito
- Passaggio 5: compilazione senza bootloader
- Passaggio 6: flash MCU con J-Link
- Passaggio 7: Ricompilare senza il cristallo esterno
Video: Altimetro aereo RC (compatibile con la telemetria Spektrum): 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Ho realizzato questo altimetro in modo che il pilota potesse sapere che sono al di sotto del limite di 400 piedi sugli aerei RC negli Stati Uniti. Il mio amico era preoccupato perché non poteva dire con certezza di essere sempre sotto i 400 piedi e voleva l'ulteriore sicurezza che avrebbe fornito un sensore con dati di telemetria. Sì, puoi acquistare un sensore da Spektrum, ma puoi costruire questo progetto per meno di $ 20 con schede breakout (che sono già gonfiate nel prezzo). Se hai già il programmatore J-link, puoi costruirlo su una scheda personalizzata per pochi dollari. Per non parlare del fatto che una volta compreso il protocollo Xbus, puoi realizzare uno qualsiasi degli altri sensori supportati! Ma mi limiterò a coprire un altimetro in questo progetto…
Elenco delle parti:
-
Ho usato una scheda microcontrollore Seeeduino XIAO per questo progetto poiché è minuscola, utilizza un processore M0 che ha molta potenza per questo progetto, ha sia I2C che SPI pronti per uscire dalla scatola e utilizza la logica 3.3v, quindi nessun cambiamento di livello è necessario.
https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…
-
Per il rilevamento della pressione dell'aria, ho acquistato una scheda breakout BMP388 da Adafruit. La scheda ha sia I2C che SPI e può funzionare con logica 3.3v o 5v.
https://www.adafruit.com/product/3966
- Scheda prototipi per il cablaggio del circuito
- Saldatore/saldatore
- Intestazioni pin maschio/femmina in modo da poter staccare facilmente il sensore/microcontrollore.
- Bottone piccolo. Lo uso per reimpostare l'altitudine di partenza.
- Resistenza da 10k per un pull-down sul pulsante.
- Connettore femmina JST-XH a 4 pin da collegare alla porta di telemetria del ricevitore Spektrum
-
Programmatore SEGGER J-Link EDU per eseguire il flashing di M0 senza bootloader.
https://www.adafruit.com/product/3571
-
Scheda breakout Adafruit SWD a 10 pin
www.adafruit.com/product/2743
Forniture
- Ho anche stampato in 3D un piccolo involucro per il mio altimetro, ma non è necessario.
-
Oscilloscopio: se non ne hai uno, ti consiglio vivamente questo:
https://store.digilentinc.com/analog-discovery-2-1…
Passaggio 1: apprendere il protocollo di telemetria Spektrum
Questo è stato fatto principalmente per me da Raymond Domingo. Avevano già realizzato un altimetro compatibile con Spektrum, quindi seguire quel codice sorgente ha davvero aiutato. Il foglio dati della telemetria Spektrum ha colmato il resto delle lacune. La misurazione dei livelli di dati dal ricevitore ha mostrato che avrei avuto bisogno della logica 3.3v.
Il destinatario invia l'indirizzo del dispositivo e quindi si aspetta una risposta a 16 byte. La scheda tecnica mostra le strutture per tutti i vari sensori. Anche se la struttura non è lunga 16 byte, il ricevitore si aspetta 16 byte indietro ogni volta.
Scheda tecnica Spektrum:
www.spektrumrc.com/ProdInfo/Files/SPM_Tele…
Il progetto di Raymond Domingo:
www.aerobtec.com/download/altisSpektrumInte…
Passaggio 2: selezionare l'hardware
Ho usato una scheda breakout BMP388 di Adafruit per il rilevamento della pressione. Il breakout fornisce breakout I2C e SPI e funziona con logica 3.3v o 5v. Adafruit fa sempre un ottimo lavoro con le sue breakout board, quindi l'ho acquistata. Ho usato invece una scheda DFRobot Gravity BMP388 nella mia build poiché la mia scheda Adafruit era già in uso.
Dato che il dispositivo I2C host utilizza la logica 3.3v, avevo bisogno di un microcontrollore 3.3v e volevo che fosse piccolo. Stavo per usare un Adafruit Trinket M0, ma sono relativamente costosi e non hanno molti pin spezzati. Poi ho trovato la scheda Seeeduino XIAO. È una scheda M0 con sia I2C che SPI pronti all'uso, con un connettore USB-C. Inoltre è davvero minuscolo! Nel complesso mi piace molto questa scheda (anche se il cristallo di avvio lento mi ha impiegato un'eternità per capirlo).
Spektrum utilizza un connettore maschio a 4 pin di dimensioni JST-XH sul ricevitore per la porta "Xbus" a cui attingeremo. Ho usato una spina femmina JST-XH a 4 pin sull'altimetro e ha funzionato perfettamente.
Passaggio 3: scrivere il software
Ho usato l'IDE Arduino per scrivere tutto il codice. Ho copiato il protocollo di telemetria Spektrum dal loro foglio dati e l'ho aggiunto alla mia libreria Arduino. Dato che Adafruit ha sempre delle belle librerie per i suoi breakout, ho usato la loro libreria BMP3XX per il sensore BMP388.
I principali punti da trarre dal mio design sono:
- Imposta l'I2C in modo che si comporti come un dispositivo client e risponda all'indirizzo dell'altimetro Spektrum (0x12).
- Leggi il barometro BMP388 tramite SPI.
- Salva i dati di altitudine in due buffer diversi in modo che una richiesta I2C dal ricevitore non danneggi i dati e si alterni tra i due buffer durante il recupero dei dati. Questo assicura che i dati inviati al destinatario siano sempre completi.
- Utilizza un pulsante per azzerare l'altimetro.
Per maggiori dettagli e analisi del codice, guarda il video.
Passaggio 4: cablare il circuito
Ho usato la scheda prototipi, ma se vuoi dedicare del tempo a progettare una scheda fresata personalizzata, potresti rendere il circuito molto più pulito.
Ho collegato il connettore JST-XH ai pin I2C dello XIAO. Poiché il ricevitore emette 5 volt al bus di telemetria, il positivo dal bus è andato al pin VCC dello XIAO. In questo modo il regolatore di bordo da 3,3 V viene utilizzato per alimentare il sensore BMP388.
Passaggio 5: compilazione senza bootloader
-
Trova il tuo file board.txt (per qualunque scheda tu stia utilizzando).
Nel mio caso, si trovava qui: C:\Users\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.7.7\boards.txt
-
Copia la tua scheda e rinomina la prima chiave per specificare una versione senza bootloader. Ho appena aggiunto _nbl al nome originale.
- Vecchio: seed_XIAO_m0
- Novità: seed_XIAO_m0_nbl
-
Modifica il valore.name:
- Vecchio: seed_XIAO_m0_nbl.name=Seeeduino XIAO
- Novità: seeed_XIAO_m0_nbl.name=Seeeduino XIAO nessun bootloader
-
Modifica il linker in flash senza il bootloader cambiando lo script ld del builder:
- Vecchio: seeed_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
- Novità: seeed_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with out _bootloader.ld
- Riavvia l'IDE Arduino.
- Seleziona la nuova scheda "Seeeduino XIAO No Bootloader" dal menu delle schede.
- Seleziona "Esporta binario compilato"
- Una volta compilato, il file.bin sarà nella cartella del progetto Arduino.
Passaggio 6: flash MCU con J-Link
Adafruit ha una fantastica guida sulla riprogrammazione di un bootloader su un dispositivo M0/M4. Nel nostro caso, vogliamo sbarazzarci del bootloader, ma funziona allo stesso modo.
learn.adafruit.com/how-to-program-samd-boo…
Una volta fatto ciò, non sarai in grado di caricare il codice tramite USB. Puoi seguire la guida sopra per ripristinare il bootloader sul dispositivo per caricare nuovamente il codice tramite USB come hai fatto in fabbrica.
La guida di Adafruit è molto approfondita, ma questi sono i passaggi fondamentali:
-
Saldare i ponticelli sul retro della scheda XIAO.
- La guida di Adafruit non diceva che il pin RST sulla scheda breakout 2x5 doveva essere collegato al pin di ripristino sulle schede Adafruit. Ma per lo XIAO, dovevo collegarmi a tutti e quattro i pad sul retro della scheda.
- Il pin VREF deve essere collegato al pin XIAO 3.3v. Questo dice al debugger che la logica del dispositivo è 3.3v. Senza di essa, se selezioni l'opzione sbagliata, potresti danneggiare il microcontrollore.
- Collegare i cavi dei ponticelli al J-Link.
- Accendi la scheda XIAO con un cavo USB.
- Apri Atmel Studio.
- Seleziona Strumenti Programmazione dispositivo
- Seleziona la tua scheda M0. In questo caso, l'ATSAMD21G18A
- Seleziona SWD.
- Leggere la configurazione dal target.
- Se stai utilizzando EDU J-Link, accetta i termini di utilizzo (se stai rispettando i termini di utilizzo).
- Verificare che la lettura della tensione sia corretta nell'angolo in alto a destra. Se non è 3.3v, potresti rompere la tua scheda!
- Cancella il fusibile di protezione dell'avvio (imposta la dimensione del bootloader su 0 byte), quindi seleziona il programma.
- Nella sezione delle memorie, seleziona il file.bin o.hex compilato e seleziona il programma.
Risoluzione dei problemi:
Quando leggi la configurazione del dispositivo, se ricevi un errore di tensione fuori range, assicurati che l'MCU sia collegato all'alimentazione e che il pin VREF J-Link sia collegato a 3,3 volt
Passaggio 7: Ricompilare senza il cristallo esterno
La scheda XIAO ha un cristallo esterno che impiega molto tempo per avviarsi. Il ricevitore Spektrum esegue un rilevamento del dispositivo sul bus di telemetria 350 millisecondi dopo l'accensione, quindi dobbiamo dire al compilatore di utilizzare invece l'oscillatore interno che renderà l'avvio quasi istantaneo.
- Trova il file board.txt che hai modificato in precedenza (sì, avrei potuto salvarti questo passaggio prima, ma questo è stato un processo di apprendimento per me)
- Aggiungi "-DCRYSTALLESS" alla stringa seed_XIAO_m0_nbl.build.extra_flags. Questo dirà al compilatore di usare l'oscillatore interno.
- Ricompilare il codice.
- Ricaricare l'MCU.
- Verificare che il tempo di avvio sia sufficientemente rapido utilizzando un oscilloscopio.
Come puoi vedere dall'immagine, il canale 1 giallo è l'alimentatore. Il canale ciano 2 è il pin pronto sul microcontrollore. Circa 10 millisecondi dopo l'accensione, il canale due viene tirato in alto dal microcontrollore che indica che si trova nel ciclo di configurazione. Una volta completata l'installazione, l'MCU è codificato per abbassare il pin, indicando che il ciclo principale sta iniziando. L'ambito mostra che l'installazione richiede circa 3 millisecondi. Nel complesso il microcontrollore impiega 13 millisecondi dopo l'accensione per essere pronto.
Consigliato:
Radio FM con Inviot U1, una scheda compatibile con Arduino: 3 passaggi
Radio FM utilizzando Inviot U1, una scheda compatibile con Arduino: TEA5767 è facile da usare con un arduino. Sto usando un modulo di TEA5767 e una scheda InvIoT U1 di InvIoT.com
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino - Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero - Elicottero Rc - Aereo RC con Arduino: 5 passaggi (con immagini)
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino | Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero | Elicottero Rc | Aereo radiocomandato con Arduino: per far funzionare un'auto radiocomandata | Quadricottero | Drone | Aereo RC | Barca RC, abbiamo sempre bisogno di un ricevitore e trasmettitore, supponiamo che per RC QUADCOPTER abbiamo bisogno di un trasmettitore e ricevitore a 6 canali e quel tipo di TX e RX è troppo costoso, quindi ne faremo uno sul nostro
Clonazione fai-da-te compatibile con Arduino: 21 passaggi (con immagini)
Clone fai-da-te compatibile con Arduino: Arduino è lo strumento definitivo nell'arsenale del produttore. Dovresti essere in grado di costruire il tuo! All'inizio del progetto, intorno al 2005, il design prevedeva tutte le parti a foro passante e la comunicazione avveniva tramite un cavo seriale RS232. I file sono ancora un
Robot da disegno economico e compatibile con Arduino: 15 passaggi (con immagini)
Robot di disegno a basso costo, compatibile con Arduino: Nota: ho una nuova versione di questo robot che utilizza un circuito stampato, è più facile da costruire e ha il rilevamento degli ostacoli IR! Dai un'occhiata a http://bit.ly/OSTurtleHo progettato questo progetto per un workshop di 10 ore per ChickTech.org il cui obiettivo è quello di i
Stazione di saldatura compatibile con Hakko T12 fai da te: 5 passaggi (con immagini)
Stazione di saldatura compatibile con Hakko T12 fai da te: in questo progetto sto costruendo un kit di saldatore fai-da-te, in questo caso una stazione di saldatura compatibile con Hakko T12. Se stai pensando di acquistare tutte le parti mostrate qui, il costo totale sarà di circa $ 42, ma potresti ottenere un costo inferiore se hai già