Sommario:
- Passaggio 1: progettazione dell'hardware
- Passaggio 2: assemblaggio
- Passaggio 3: firmware: programmazione del bootloader
- Passaggio 4: firmware: codice lampeggiante con PlatformIO
- Passaggio 5: firmware: lampeggiamento dell'ancora
- Passaggio 6: andare oltre
Video: Piuma di localizzazione UWB: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
L'Ultra-WideBand Feather incorpora il modulo Decawave DWM1000 e un ATSAMD21 ARM Cortex M0 nel fattore di forma della piuma Adafruit. Il modulo DWM1000 è un modulo wireless conforme a IEEE802.15.4-2011 UWB in grado di eseguire un posizionamento interno di precisione e velocità di trasmissione dati elevate, rendendo questa scheda perfetta per progetti di robotica in cui è richiesta la localizzazione.
Caratteristiche:– Decawave DWM1000 per tracciamento di precisione– ARM Cortex M0 per applicazioni veloci e potenti– Compatibile con Adafruit Feather per l'integrazione con un ampio ecosistema esistente– Interfaccia SWD per applicazioni di programmazione e debugging– Connettore USB-C– Caricabatteria LiPo integrato
Per la stesura completa del progetto e gli aggiornamenti, visualizza questo progetto sul mio sito Prototyping Corner su prototypingcorner.io/projects/uwb-feather
L'hardware e il software di origine per questo progetto sono disponibili nel repository GitHub.
Passaggio 1: progettazione dell'hardware
Come accennato nell'introduzione, l'UWB Feather è costituito da un ATSAMD21 ARM Cortext M0+ per il cervello e un modulo Decawave DWM1000 per il wireless a banda ultra larga, nel fattore di forma piuma. Il design è relativamente semplice e consiste in 20 elementi BoM su un PCB a 2 strati. Pinout è compatibile con Adafruit M0 Feather
La ricarica LiPo è gestita dal controller di gestione della carica a cella singola MCP73831 completamente integrato. La tensione della batteria può essere monitorata su D9, tuttavia è necessario l'accesso a tutti gli IO, JP1 può essere tagliato per liberare questo pin. La regolazione a 3,3 volt è eseguita dal regolatore lineare a bassa caduta di tensione AP2112K-3.3, che fornisce fino a 600 mA.
Pinout è completamente compatibile con la linea di piume Adafruit M0 per una facile portabilità del codice. Le linee IO DWM1000 sono collegate al bus SPI e ai pin digitali 2, 3 e 4 rispettivamente per RST, IRQ e SPI_CS (che non sono esposti tramite l'intestazione). D13 è anche collegato al LED di bordo, come è standard tra molte schede compatibili con Arduino.
La programmazione può essere eseguita tramite l'intestazione SWD o tramite USB se caricata con un bootloader corrispondente come uf2-samdx1 di Microsoft. Vedere il firmware per ulteriori informazioni.
Nota sulla V1.0
Si è verificato un problema con il connettore USB-C sulla versione 1 di questa scheda. L'ingombro che ho usato non includeva il ritaglio richiesto per il metodo di montaggio del ritaglio di questo componente.
La versione 1.1 includerà una correzione per questo oltre all'aggiunta di un connettore micro-b per coloro che lo desiderano. Vedere le considerazioni sulla versione 1.1 di seguito.
Per le considerazioni sulla progettazione della distinta materiali e della versione hardware 1.1, vedere il resoconto del progetto.
Passaggio 2: assemblaggio
Con solo 20 elementi BoM e la maggior parte dei componenti non inferiori a 0603 (i condensatori a cristallo 2x erano 0402), l'assemblaggio manuale di questa scheda è stato facile. Ho avuto il PCB e lo stencil per saldatura prodotti da JLCPCB in nero opaco con finitura superficiale ENIG.
Il costo totale per 5 schede (anche se 10 non avevano alcuna differenza di prezzo) e lo stencil era di $ 68 AUD, tuttavia $ 42 di questi erano di spedizione. L'ordine per la prima volta da JLCPCB e le schede erano di altissima qualità con una bella finitura.
Passaggio 3: firmware: programmazione del bootloader
Il firmware può essere caricato tramite il connettore SWD utilizzando un programmatore come J-Link di Segger. Sopra è mostrato il J-Link EDU Mini. Per iniziare a programmare la scheda, dobbiamo caricare il nostro bootloader, quindi impostare la nostra catena di strumenti.
Userò Atmel Studio per eseguire il flashing del bootloader. Per fare ciò, collega J-Link e apri Atmel Studio. Quindi selezionare Strumenti > Programmazione dispositivo. In Strumento selezionare J-Link e impostare Dispositivo su ATSAMD21G18A, quindi fare clic su Applica.
Collega il J-Link all'intestazione SWD Feather e applica l'alimentazione tramite USB o tramite la batteria. Una volta connesso, in Firma dispositivo fare clic su Leggi. Le caselle di testo Firma dispositivo e Tensione target dovrebbero propagarsi di conseguenza. Se non controllano le connessioni e riprovano.
Per flashare il bootloader dobbiamo prima disabilitare il fusibile BOOTPROT. Per fare ciò selezionare Fusibili > USER_WORD_0. NVMCTRL_BOOTPROT e passare a 0 Byte. Fare clic su Programma per caricare le modifiche.
Ora possiamo eseguire il flashing del bootloader selezionando Memories > Flash e impostando la posizione del bootloader. Assicurarsi che Cancella Flash prima di selezionare la programmazione e fare clic su Programma. Se tutto va bene D13 sulla scacchiera dovrebbe iniziare a pulsare.
Ora dovrai impostare il fusibile BOOTPROT sulla dimensione del bootloader da 8 kB. Per fare ciò selezionare Fusibili > USER_WORD_0. NVMCTRL_BOOTPROT e passare a 8192 Byte. Fare clic su programma per caricare le modifiche.
Ora che il bootloader è stato flashato, D13 dovrebbe lampeggiare e, se collegato tramite USB, dovrebbe apparire un dispositivo di archiviazione di massa. Qui è possibile caricare i file UF2 per la programmazione della scheda.
Passaggio 4: firmware: codice lampeggiante con PlatformIO
Il firmware può essere caricato tramite il protocollo UF2 o direttamente tramite l'interfaccia SWD. Qui useremo PlatformIO per la sua facilità e semplicità. Per iniziare, crea un nuovo progetto PIO e seleziona Adafruit Feather M0 come scheda di destinazione. Quando si carica su SWD con un J-Link, impostare upload_protocol in platformio.ini come mostrato di seguito.
[env:adafruit_feather_m0]platform = scheda atmelsam = adafruit_feather_m0 framework = arduino upload_protocol = jlink
Ora puoi programmare la scheda con la semplicità del framework Arduino.
Passaggio 5: firmware: lampeggiamento dell'ancora
I moduli DWM1000 possono essere configurati per essere ancoraggi o tag. Generalmente le ancore vengono mantenute in posizioni statiche note e i tag utilizzano le ancore per ottenere una posizione relativa ad esse. Per testare il modulo DWM1000 puoi caricare l'esempio DW1000-Anchor dal repository GitHub.
Per eseguire il flashing di questo programma con PlatformIO, da PIO Home, selezionare Open Project, quindi trovare la posizione della cartella DW1000-Anchor nel repository GitHub. Quindi fare clic sul pulsante di caricamento del PIO e troverà automaticamente la sonda di debug collegata (assicurarsi che sia collegata e che la scheda sia alimentata).
Il firmware del tag dovrà essere caricato su un'altra scheda. Quindi il risultato può essere visualizzato in un terminale seriale.
Passaggio 6: andare oltre
Ulteriori miglioramenti a questo progetto includeranno lo sviluppo su una nuova libreria DW1000, la scheda V1.1 cambia altri progetti che utilizzano questa tecnologia. Se c'è un interesse sufficiente, prenderò in considerazione la produzione e la vendita di queste schede.
Grazie per aver letto. Lascia qualsiasi pensiero o critica nei commenti qui sotto e assicurati di dare un'occhiata al progetto su Prototyping Corner
Consigliato:
Testa di manichino con localizzazione del suono con Kinect: 9 passaggi (con immagini)
Testa di manichino con localizzazione del suono con Kinect: ecco Margaret, un manichino di prova per un sistema di monitoraggio della fatica del conducente. Di recente si è ritirata dai suoi doveri e ha trovato la sua strada per il nostro ufficio, e da allora ha attirato l'attenzione di coloro che pensano che sia "inquietante". Nell'interesse della giustizia, ho
Introduzione - Trasforma un Raspberry Pi in un server di localizzazione GPS: 12 passaggi
Introduzione - Trasforma un Raspberry Pi in un server di localizzazione GPS: In questa guida ti mostrerò come installare il software di localizzazione GPS Traccar su un Raspberry Pi che riceverà dati da dispositivi compatibili su Internet, registrando le loro posizioni su una mappa in tempo reale monitoraggio e anche il monitoraggio della riproduzione
La mia prima ala piuma: convertitore analogico-digitale: 5 passaggi
La mia prima ala piuma: convertitore analogico-digitale: Ciao, miei colleghi Makers! L'istruzione di oggi riguarda qualcosa di veramente speciale. Questo dispositivo è LA MIA PRIMA PIUMA, che segue il fattore di forma di Adafruit. È anche il mio PRIMO PCB MONTATO SU SUPERFICIE! Il mio uso più importante di questo scudo è in un dispositivo che mi fa impazzire
WIND - Acceleratore di progetto per la piuma di Adafruit: 9 passaggi (con immagini)
WIND - Acceleratore di progetto per Adafruit Feather: Ho lentamente raccolto i diversi microcontrollori e schede sensori Adafruit Feather che sono disponibili da Adafruit. Rendono la prototipazione e i test super facili e io sono un grande fan del layout della scheda. Da quando mi sono trovata a usare
Episodio 16: La Sveglia Piuma: 3 Passi
Episodio 16: La Sveglia Piuma: Sei stanco di doverti svegliare con quel fastidioso cicalino della sveglia ogni mattina? Vorresti che ci fosse un modo più tranquillo e più dolce per svegliarti? Bene, noi di Stupid Inventions sappiamo come fai Tatto! Ecco perché abbiamo sviluppato il Feather Alar