STX-logoUM2225
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
    ST X CUBE MEMS1 MotionEC è una libreria middleware-
  • 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

ST X CUBE MEMS1 MotionEC è una libreria middleware-sequenza

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.).

ST X CUBE MEMS1 MotionEC è una libreria middleware - Codice demoST X CUBE MEMS1 MotionEC è una libreria middleware - Codice demo1

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.

ST X CUBE MEMS1 MotionEC è una libreria middleware - Data Injection1

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.

ST X CUBE MEMS1 MotionEC è un adattatore per libreria middleware

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.

ST X CUBE MEMS1 MotionEC è una libreria middleware - Connect

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 ST X CUBE MEMS1 MotionEC è una libreria middleware- icona o [Stop] ST X CUBE MEMS1 MotionEC è una libreria middleware- icon1 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.

ST X CUBE MEMS1 MotionEC è una libreria middleware - tabella dati

Passo 4Fare clic su [E-Compass] per aprire la pagina dedicata a questa libreria.

ST X CUBE MEMS1 MotionEC è una libreria middleware - Compass

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.

ST X CUBE MEMS1 MotionEC è una libreria middleware - Salva in File

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à.

ST X CUBE MEMS1 MotionEC è una libreria middleware - Data Injection

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.

  1. UM1859: Introduzione ai MEMS di movimento X-CUBE-MEMS1 e all'espansione software del sensore ambientale per STM32Cube
  2.  UM1724: schede STM32 Nucleo-64 (MB1136)
  3. 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

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *