UM2225
Manuale d'uso
Introduzione alla libreria E-Compass in tempo reale MotionEC nell'espansione X-CUBE-MEMS1 per STM32Cube
Introduzione
MotionEC è un componente di libreria middleware del software X-CUBE-MEMS1 e funziona su STM3z2. Fornisce informazioni in tempo reale sull'orientamento del dispositivo e sullo stato del movimento in base ai dati di un dispositivo.
Fornisce i seguenti output: orientamento del dispositivo (quaternioni, angoli di Eulero), rotazione del dispositivo (funzionalità giroscopio virtuale), vettore di gravità e accelerazione lineare.
Questa libreria è destinata a funzionare solo con ST MEMS.
L'algoritmo è fornito in formato libreria statica ed è progettato per essere utilizzato su microcontrollori STM32 basati sulle architetture ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 e ARM® Cortex®-M7.
È costruito sulla tecnologia software STM32Cube per facilitare la portabilità tra diversi microcontrollori STM32.
Il software viene fornito con sampimplementazione in esecuzione sulla scheda di espansione X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 o X-NUCLEO-IKS02A1 su una scheda di sviluppo NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ.
Acronimi e Abbreviazioni
Tabella 1. Elenco degli acronimi
Acronimo | Descrizione |
API | Interfaccia di programmazione dell'applicazione |
BSP | Pacchetto supporto scheda |
Interfaccia grafica | Interfaccia utente grafica |
SALVEZZA | Livello di astrazione hardware |
Ideale per gli amanti | Ambiente di sviluppo integrato |
Libreria middleware MotionEC nell'espansione software X-CUBE-MEMS1 per STM32Cube
2.1 MotionEC suview
La libreria MotionEC amplia le funzionalità del software X-CUBE-MEMS1.
La libreria acquisisce dati dall'accelerometro e dal magnetometro e fornisce informazioni sull'orientamento del dispositivo e sullo stato del movimento in base ai dati provenienti dal dispositivo.
La libreria è progettata solo per ST MEMS. Funzionalità e prestazioni quando si utilizzano altri sensori MEMS non vengono analizzate e possono essere significativamente diverse da quanto descritto nel documento.
COMEampL'implementazione è disponibile sulle schede di espansione X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 e X-NUCLEO-IKS02A1, montate su una scheda di sviluppo NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ.
2.2 Libreria MotionEC
Le informazioni tecniche che descrivono in modo completo le funzioni e i parametri delle API MotionEC sono disponibili nel file HTML compilato MotionEC_Package.chm file situato nella cartella Documentazione.
2.2.1 Descrizione della libreria MotionEC
La libreria MotionEC E-Compass gestisce i dati acquisiti dall'accelerometro e dal magnetometro; presenta:
- orientamento del dispositivo (quaternioni, angoli di Eulero), rotazione del dispositivo (funzionalità giroscopio virtuale), uscite del vettore di gravità e accelerazione lineare
- funzionalità basata solo sui dati dell'accelerometro e del magnetometro
- dati richiesti dell'accelerometro e del magnetometroampfrequenza di ling fino a 100 Hz
- requisiti di risorse:
– Cortex-M0+: 3.7 kB di codice e 0.1 kB di memoria dati
– Cortex-M3: 3.8 kB di codice e 0.1 kB di memoria dati
– Cortex-M33: 2.8 kB di codice e 0.1 kB di memoria dati
– Cortex-M4: 2.9 kB di codice e 0.1 kB di memoria dati
– Cortex-M7: 2.8 kB di codice e 0.1 kB di memoria dati - disponibile per le architetture ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 e Cortex M7
2.2.2 API MotionEC
Le API MotionEC sono:
- uint8_t MotionEC_GetLibVersion(char *versione)
– recupera la versione della libreria
– *version è un puntatore a un array di 35 caratteri
– restituisce il numero di caratteri nella stringa della versione
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– esegue l'inizializzazione della libreria MotionEC e la configurazione del meccanismo interno.
– mcu_type è il tipo di MCU:
◦ MFX_CM0P_MCU_STM32 è un MCU STM32 standard
◦ MFX_CM0P_MCU_BLUE_NRG1 è BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 è BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP è BlueNRG -LP
– freq è il sensore sampfrequenza di ling [Hz]
Nota: Questa funzione deve essere chiamata prima di utilizzare la libreria E-Compass e il modulo CRC nel microcontrollore STM32 (nel registro di abilitazione dell'orologio periferico RCC) deve essere abilitato prima di utilizzare la libreria
- void MotionEC_SetFrequency(frequenza float)
– imposta la sampfrequenza di filtraggio (modificando i parametri di filtraggio)
– freq è il sensore sampfrequenza di ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– esegue l'algoritmo E-Compass (fusione dei dati dell'accelerometro e del magnetometro)
– *data_in è un puntatore a una struttura con dati di input
– i parametri per il tipo di struttura MEC_input_t sono:
◦ acc[3] è un array di dati dell'accelerometro in convenzione ENU, misurati in g
◦ mag[3] è un array di dati calibrati del magnetometro in convenzione ENU, misurati in μT/50
◦ deltatime s è il tempo delta (ovvero il ritardo temporale tra il vecchio e il nuovo set di dati) misurato in s
– *data_out è un puntatore a una struttura con dati di output
– i parametri per il tipo di struttura MEC_output_t sono:
◦ quaternion[4] è un array contenente quaternion in convenzione ENU, che rappresenta l'orientamento 3Dangular del dispositivo nello spazio; l'ordine degli elementi è: X, Y, Z, W, con l'elemento W sempre positivo
◦ euler[3] è un array di angoli di Eulero nella convenzione ENU, che rappresenta l'orientamento angolare 3D del dispositivo nello spazio; l'ordine degli elementi è: imbardata, beccheggio, rollio, misurati in gradi
◦ i_gyro[3] è un array di velocità angolari in convenzione ENU, che rappresenta un sensore giroscopico virtuale, misurato in dps
◦ gravità[3] è un insieme di accelerazioni in convenzione ENU, che rappresentano il vettore gravità, misurato in g
◦ linear[3] è un array di accelerazioni in convenzione ENU, che rappresenta l'accelerazione lineare del dispositivo, misurata in g
- void MotionEC_GetOrientationEnable(MEC_state_t *stato)
– ottiene lo stato di abilitazione/disabilitazione del calcolo dell'angolo di Eulero
– *state è un puntatore allo stato di abilitazione/disabilitazione corrente - void MotionEC_SetOrientationEnable(MEC_state_t stato)
– imposta lo stato di abilitazione/disabilitazione del calcolo dell'angolo di Eulero
– lo stato è il nuovo stato di abilitazione/disabilitazione da impostare - void MotionEC_GetVirtualGyroEnable(MEC_state_t *stato)
– ottiene lo stato di abilitazione/disabilitazione del calcolo del giroscopio virtuale
– *state è un puntatore allo stato di abilitazione/disabilitazione corrente - void MotionEC_SetVirtualGyroEnable(MEC_state_t stato)
– imposta lo stato di abilitazione/disabilitazione del calcolo del giroscopio virtuale
– lo stato è il nuovo stato di abilitazione/disabilitazione da impostare - void MotionEC_GetGravityEnable(MEC_state_t *stato)
– ottiene lo stato di abilitazione/disabilitazione del calcolo del vettore di gravità
– *state è un puntatore allo stato di abilitazione/disabilitazione corrente - void MotionEC_SetGravityEnable(MEC_state_t stato)
– imposta lo stato di abilitazione/disabilitazione del calcolo del vettore di gravità
– lo stato è il nuovo stato di abilitazione/disabilitazione da impostare - void MotionEC_GetLinearAccEnable(MEC_state_t *stato)
– ottiene lo stato di abilitazione/disabilitazione del calcolo dell'accelerazione lineare
– *state è un puntatore allo stato di abilitazione/disabilitazione corrente - void MotionEC_SetLinearAccEnable(MEC_state_t stato)
– imposta lo stato di abilitazione/disabilitazione del calcolo dell'accelerazione lineare
– lo stato è il nuovo stato di abilitazione/disabilitazione da impostare
2.2.3 Diagramma di flusso dell'API
2.2.4 Codice demo
Il seguente codice dimostrativo legge i dati dai sensori dell'accelerometro e del magnetometro e ottiene i dati ECompass (ad esempio, quaternioni, angoli di Eulero, ecc.).
2.2.5 Prestazioni dell'algoritmo
L'algoritmo E-Compass utilizza solo i dati dell'accelerometro e del magnetometro. Funziona a bassa frequenza (fino a 100 Hz) per ridurre il consumo di energia.
Sampl'applicazione
Il middleware MotionEC può essere facilmente manipolato per creare applicazioni utente; comeampl'applicazione è fornita nella cartella dell'applicazione.
È progettato per funzionare su una scheda di sviluppo NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ collegata a una scheda di espansione X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 o X-NUCLEO-IKS02A1.
L'applicazione riconosce l'orientamento e la rotazione del dispositivo in tempo reale. I dati possono essere visualizzati tramite una GUI.
L'algoritmo fornisce i seguenti output: orientamento del dispositivo (quaternioni, angoli di Eulero), rotazione del dispositivo (funzionalità giroscopio virtuale), vettore di gravità e accelerazione lineare.
3.1 Applicazione MEMS-Studio
Le sampL'applicazione utilizza l'applicazione MEMS-Studio, che può essere scaricata da www.st.com.
Passo 1. Assicurarsi che i driver necessari siano installati e che la scheda STM32 Nucleo con la scheda di espansione appropriata sia collegata al PC.
Passo 2Avviare l'applicazione MEMS-Studio per aprire la finestra principale dell'applicazione.
Se una scheda STM32 Nucleo con firmware supportato è collegata al PC, la porta COM appropriata viene rilevata automaticamente. Premere il pulsante [Connect] per stabilire la connessione alla scheda di valutazione.
Passo 3Quando connesso a una scheda STM32 Nucleo con firmware supportato, viene aperta la scheda [Valutazione libreria].
Per avviare e interrompere lo streaming dei dati, attivare l'opzione [Avvia] appropriata o [Stop]
pulsante sulla barra degli strumenti verticale esterna.
I dati provenienti dal sensore collegato possono essere viewed selezionando la scheda [Tabella dati] sulla barra degli strumenti verticale interna.
Passo 4Fare clic su [E-Compass] per aprire la pagina dedicata a questa libreria.
La figura sopra mostra un modello grafico STM32 Nucleo. L'orientamento e la rotazione del modello sono basati sui dati E-Compass (quaternioni) calcolati dall'algoritmo.
Per allineare il movimento reale del dispositivo con il modello grafico, puntare il dispositivo verso lo schermo e premere [Reimposta modello].
Il valore della direzione rappresenta la direzione effettiva del dispositivo.
Puntando il dispositivo direttamente verso l'alto o verso il basso (lungo l'asse verticale del sistema di riferimento ENU, con tolleranza di ±5 gradi) si ottiene un valore N/D per la direzione: non è possibile distinguere a quale punto cardinale sta puntando il dispositivo.
Il valore di bontà fornisce valori da 0 a 3 ed è correlato alla calibrazione del magnetometro: più alto è il valore, migliori sono i risultati dell'algoritmo dei dati E-Compass.
Passo 5. Fare clic su [Salva in File] per aprire la finestra di configurazione della registrazione dati. Selezionare i dati del sensore e della bussola elettronica da salvare nel fileÈ possibile avviare o interrompere il salvataggio cliccando sul pulsante corrispondente.
Fase 6. La modalità Data Injection può essere utilizzata per inviare i dati precedentemente acquisiti alla libreria e ricevere il risultato. Selezionare la scheda [Data Injection] sulla barra degli strumenti verticale per aprire la finestra dedicata view per questa funzionalità.
Fase 7. Fare clic sul pulsante [Sfoglia] per selezionare file con i dati precedentemente acquisiti in formato CSV.
I dati verranno caricati nella tabella corrente view.
Altri pulsanti diventeranno attivi. Puoi cliccare su:
– Pulsante [Modalità offline] per attivare/disattivare la modalità offline del firmware (modalità che utilizza i dati acquisiti in precedenza).
– Pulsanti [Start]/[Stop]/[Step]/[Repeat] per controllare il flusso di dati da MEMS-Studio alla libreria.
Riferimenti
Tutte le seguenti risorse sono disponibili gratuitamente su www.st.com.
- UM1859: Introduzione ai MEMS di movimento X-CUBE-MEMS1 e all'espansione software del sensore ambientale per STM32Cube
- UM1724: schede STM32 Nucleo-64 (MB1136)
- UM3233: Iniziare con MEMS-Studio
Cronologia delle revisioni
Tabella 4. Cronologia delle revisioni del documento
Data | Versione | Cambiamenti |
18-Maggio-17 | 1 | Versione iniziale. |
25-gen-18 | 2 | Aggiunti riferimenti alla scheda di sviluppo NUCLEO-L152RE e alla Tabella 2. Algoritmo del tempo trascorso (μs). |
21-mar-18 | 3 | Introduzione aggiornata e Sezione 2.1 MotionECview. |
26-nov-18 | 4 | Aggiunta Tabella 3. Cortex -M0+: algoritmo tempo trascorso (µs). Aggiunti riferimenti ad ARM® Scheda di sviluppo Cortex® – M0+ e NUCLEO-L073RZ. |
19-feb-19 | 5 | Figura 1 aggiornata. Sistema di riferimento ENU, Tabella 2. Cortex-M4 e Cortex-M3: algoritmo del tempo trascorso (µs), Tabella 3. Cortex -M0+: algoritmo del tempo trascorso (µs), Figura 3. Adattatore della scheda di espansione del sensore collegato all'STM32 Nucleo, Figura 4. Finestra principale Unicleo, Figura 5. Scheda Messaggi utente, Figura 6. Finestra E-Compass e Figura 7. Finestra Datalog. Aggiunte informazioni sulla compatibilità della scheda di espansione X-NUCLEO-IKS01A3. |
25-mar-20 | 6 | Introduzione aggiornata, Sezione 2.2.1: Descrizione della libreria MotionEC e Sezione 2.2.5: Prestazioni dell'algoritmo. Aggiunte informazioni sulla compatibilità con l'architettura ARM Cortex-M7. |
17-Set-24 | 7 | Introduzione alla sezione aggiornata, Sezione 2.1: MotionEC suview, Sezione 2.2.1: Libreria MotionEC descrizione, Sezione 2.2.2: MotionEC API, Sezione 2.2.5: Algoritmo prestazione, Sezione 3: Sample applicazione, Sezione 3.1: applicazione MEMS-Studio |
AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE
STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, migliorie e migliorie ai prodotti ST e/o al presente documento in qualsiasi momento e senza preavviso. Gli acquirenti devono ottenere le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti in conformità ai termini e alle condizioni di vendita di ST in vigore al momento della conferma dell'ordine.
Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti.
Nel presente documento ST non concede alcuna licenza, espressa o implicita, su alcun diritto di proprietà intellettuale.
La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto.
ST e il logo ST sono marchi di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarksTutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari.
Le informazioni contenute nel presente documento annullano e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente del documento.
© 2024 STMicroelectronics – Tutti i diritti riservati
Documenti / Risorse
![]() |
ST X-CUBE-MEMS1 MotionEC è una libreria middleware [pdf] Manuale del proprietario X-CUBE-MEMS1 MotionEC è una libreria middleware, X-CUBE-MEMS1, MotionEC è una libreria middleware, libreria middleware, libreria |