ST X - logoUM2225
Manual de utilizare

Noțiuni introductive cu biblioteca E-Compass în timp real MotionEC în extinderea X-CUBE-MEMS1 pentru STM32Cube

Introducere

MotionEC este o componentă de bibliotecă middleware a software-ului X-CUBE-MEMS1 și rulează pe STM3z2. Oferă informații în timp real despre orientarea dispozitivului și starea mișcării pe baza datelor de la un dispozitiv.
Oferă următoarele ieșiri: orientarea dispozitivului (cuaternioni, unghiuri Euler), rotația dispozitivului (funcționalitate giroscop virtual), vector gravitațional și accelerație liniară.
Această bibliotecă este destinată să funcționeze numai cu ST MEMS.
Algoritmul este furnizat în format de bibliotecă static și este conceput pentru a fi utilizat pe microcontrolere STM32 bazate pe ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 și ARM® Arhitecturi Cortex®-M7.
Este construit pe baza tehnologiei software STM32Cube pentru a ușura portabilitatea între diferite microcontrolere STM32.
Software-ul vine cu sampImplementarea fișierului rulează pe o placă de expansiune X-NUCLEO-IKS01A3 , X-NUCLEO-IKS4A1 sau X-NUCLEO-IKS02A1 pe o placă de dezvoltare NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE sau NUCLEO-L073RZ.

Acronime si abrevieri

Tabelul 1. Lista de acronime

Acronim Descriere
API Interfață de programare a aplicației
BSP Pachet de suport pentru bord
GUI Interfață grafică cu utilizatorul
HAL Stratul de abstractizare hardware
IDE Mediu de dezvoltare integrat

Biblioteca middleware MotionEC în extensia software X-CUBE-MEMS1 pentru STM32Cube

2.1 MotionEC terminatview
Biblioteca MotionEC extinde funcționalitatea software-ului X-CUBE-MEMS1.
Biblioteca achiziționează date de la accelerometru și magnetometru și oferă informații despre orientarea dispozitivului și starea mișcării pe baza datelor de la un dispozitiv.
Biblioteca este concepută numai pentru ST MEMS. Funcționalitatea și performanța atunci când se utilizează alți senzori MEMS nu sunt analizate și pot fi semnificativ diferite de cele descrise în document.
A sampImplementarea fișierului este disponibilă pe placa de extensie X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 și X-NUCLEO-IKS02A1, montată pe o placă de dezvoltare NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE sau NUCLEO-L073R.
2.2 Biblioteca MotionEC
Informații tehnice care descriu complet funcțiile și parametrii API-urilor MotionEC pot fi găsite în HTML compilat MotionEC_Package.chm file aflat în folderul Documentation.

2.2.1 Descrierea bibliotecii MotionEC
Biblioteca MotionEC E-Compass gestionează datele achiziționate de la accelerometru și magnetometru; prezinta:

  • orientarea dispozitivului (cuaternioni, unghiuri Euler), rotația dispozitivului (funcționalitatea giroscopului virtual), vectorul gravitațional și ieșirile de accelerație liniară
  • funcționalitate bazată numai pe datele accelerometrului și magnetometrului
  • date necesare accelerometrului și magnetometrului sampfrecvență ling de până la 100 Hz
  • cerințe de resurse:
    – Cortex-M0+: 3.7 kB de cod și 0.1 kB de memorie de date
    – Cortex-M3: 3.8 kB de cod și 0.1 kB de memorie de date
    – Cortex-M33: 2.8 kB de cod și 0.1 kB de memorie de date
    – Cortex-M4: 2.9 kB de cod și 0.1 kB de memorie de date
    – Cortex-M7: 2.8 kB de cod și 0.1 kB de memorie de date
  • disponibil pentru arhitecturile ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 și Cortex M7

2.2.2 API-uri MotionEC
API-urile MotionEC sunt:

  • uint8_t MotionEC_GetLibVersion(char *versiune)
    – preia versiunea bibliotecii
    – *versiunea este un indicator către o matrice de 35 de caractere
    – returnează numărul de caractere din șirul de versiune
    • void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
    – efectuează inițializarea bibliotecii MotionEC și setarea mecanismului intern.
    – mcu_type este tipul de MCU:
    ◦ MFX_CM0P_MCU_STM32 este un MCU STM32 standard
    ◦ MFX_CM0P_MCU_BLUE_NRG1 este BlueNRG-1
    ◦ MFX_CM0P_MCU_BLUE_NRG2 este BlueNRG-2
    ◦ MFX_CM0P_MCU_BLUE_NRG_LP este BlueNRG -LP
    – frecvența este senzorul sampfrecvența ling [Hz]

Nota: Această funcție trebuie apelată înainte de a utiliza biblioteca E-Compass, iar modulul CRC din microcontrolerul STM32 (în registrul de activare a ceasului periferic RCC) trebuie să fie activat înainte de a utiliza biblioteca

  • void MotionEC_SetFrequency(frecvență flotantă)
    – stabilește sampfrecvența de ling (modificarea parametrilor de filtrare)
    – frecvența este senzorul sampfrecvență ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
    – rulează algoritmul E-Compass (fuziunea datelor accelerometru și magnetometru)
    – *data_in este un pointer către o structură cu date de intrare
    – parametrii pentru tipul de structură MEC_input_t sunt:
    ◦ acc[3] este o serie de date de accelerometru conform convenției ENU, măsurate în g
    ◦ mag[3] este o serie de date calibrate cu magnetometru în convenția ENU, măsurate în μT/50
    ◦ deltatime s este timpul delta (adică, întârzierea între setul de date vechi și nou) măsurat în s
    – *data_out este un pointer către o structură cu date de ieșire
    – parametrii pentru tipul de structură MEC_output_t sunt:
    ◦ cuaternion[4] este un tablou care conține cuaternion în convenția ENU, reprezentând orientarea 3Dngulară a dispozitivului în spațiu; Ordinea elementelor este: X, Y, Z, W, cu element W întotdeauna pozitiv
    ◦ euler[3] este o matrice de unghiuri Euler în convenția ENU, reprezentând orientarea unghiulară 3D a dispozitivului în spațiu; Ordinea elementelor este: rotire, înclinare, rostogolire, măsurată în grade
    ◦ i_gyro[3] este o serie de rate unghiulare în convenția ENU, reprezentând un senzor giroscop virtual, măsurat în dps
    ◦ gravitația[3] este o matrice de accelerații în convenția ENU, reprezentând vectorul gravitațional, măsurat în g
    ◦ liniar[3] este o matrice de accelerații în convenția ENU, reprezentând accelerația liniară a dispozitivului, măsurată în g
    ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware-
  • void MotionEC_GetOrientationEnable(MEC_state_t *state)
    – obține starea de activare/dezactivare a calculului unghiului Euler
    – *state este un pointer către starea de activare/dezactivare curentă
  • void MotionEC_SetOrientationEnable(MEC_state_t state)
    – setează starea de activare/dezactivare a calculului unghiului Euler
    – starea este noua stare de activare/dezactivare care trebuie setata
  •  void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
    – obține starea de activare/dezactivare a calculului giroscopului virtual
    – *state este un pointer către starea de activare/dezactivare curentă
  • void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
    – setează starea de activare/dezactivare a calculului giroscopului virtual
    – starea este noua stare de activare/dezactivare care trebuie setata
  • void MotionEC_GetGravityEnable(MEC_state_t *state)
    – obține starea de activare/dezactivare a calculului vectorului gravitațional
    – *state este un pointer către starea de activare/dezactivare curentă
  • void MotionEC_SetGravityEnable(MEC_state_t state)
    – setează starea de activare/dezactivare a calculului vectorului gravitațional
    – starea este noua stare de activare/dezactivare care trebuie setata
  • void MotionEC_GetLinearAccEnable(MEC_state_t *state)
    – obține starea de activare/dezactivare a calculului accelerației liniare
    – *state este un pointer către starea de activare/dezactivare curentă
  • void MotionEC_SetLinearAccEnable(MEC_state_t state)
    – setează starea de activare/dezactivare a calculului accelerației liniare
    – starea este noua stare de activare/dezactivare care trebuie setata

2.2.3 Diagramă API

ST X CUBE MEMS1 MotionEC este o secvență de bibliotecă Middleware

2.2.4 Cod demonstrativ
Următorul cod demonstrativ citește datele de la senzorii accelerometrului și magnetometrului și primește datele ECompass (adică, cuaternion, unghiuri Euler etc.).

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - cod DemoST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - cod Demo1

2.2.5 Performanța algoritmului
Algoritmul E-Compass folosește numai date de la accelerometru și magnetometru. Funcționează la o frecvență joasă (până la 100 Hz) pentru a reduce consumul de energie.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - Injecție de date1

Sample aplicație

Middleware-ul MotionEC poate fi ușor manipulat pentru a construi aplicații utilizator; caampaplicația este furnizată în folderul Aplicație.
Este proiectat să ruleze pe o placă de dezvoltare NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE sau NUCLEO-L073RZ conectată la o placă de expansiune X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 sau X-NUCLEO-IKS02A1.

ST X CUBE MEMS1 MotionEC este un adaptor Middleware Library

Aplicația recunoaște orientarea și rotirea dispozitivului în timp real. Datele pot fi afișate printr-o GUI.
Algoritmul oferă următoarele rezultate: orientarea dispozitivului (cuaternioni, unghiuri Euler), rotația dispozitivului (funcționalitatea giroscopului virtual), vectorul gravitațional și accelerația liniară.
3.1 Aplicația MEMS-Studio
SampAplicația folosește aplicația MEMS-Studio, care poate fi descărcată de pe www.st.com.
Pasul 1. Asigurați-vă că driverele necesare sunt instalate și că placa STM32 Nucleo cu placa de expansiune corespunzătoare este conectată la computer.
Pasul 2. Lansați aplicația MEMS-Studio pentru a deschide fereastra principală a aplicației.
Dacă o placă STM32 Nucleo cu firmware acceptat este conectată la computer, portul COM corespunzător este detectat automat. Apăsați butonul [Conectare] pentru a stabili conexiunea la placa de evaluare.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware-Connect

Pasul 3. Când este conectat la o placă STM32 Nucleo cu firmware acceptat, se deschide fila [Evaluare bibliotecă].
Pentru a porni și a opri fluxul de date, comutați [Start] corespunzător ST X CUBE MEMS1 MotionEC este o pictogramă Middleware Library sau [Stop] ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - icon1 butonul de pe bara de instrumente verticală exterioară.
Datele care provin de la senzorul conectat pot fi viewși selectând fila [Tabel de date] din bara de instrumente verticală interioară.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware-Tabel de date

Pasul 4. Faceți clic pe [E-Compass] pentru a deschide pagina dedicată acestei biblioteci.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware-Busola

Figura de mai sus prezintă un model grafic STM32 Nucleo. Orientarea și rotația modelului se bazează pe datele E-Compass (cuaternioni) calculate de algoritm.
Pentru a alinia mișcarea reală a dispozitivului cu modelul grafic, îndreptați dispozitivul spre ecran și apăsați [Resetare model].
Valoarea antetului reprezintă antetul real al dispozitivului.
Îndreptarea dispozitivului drept în sus sau în jos (de-a lungul axei sus a cadrului de referință ENU, cu toleranță de ±5 grade) dă valoare N/A pentru antet: nu este posibil să se distingă spre ce punct cardinal indică dispozitivul.
Valoarea de bunătate oferă de la 0 la 3 valori și este legată de calibrarea magnetometrului: cu cât valoarea este mai mare, cu atât rezultatele algoritmului de date E-Compass sunt mai bune.
Pasul 5. Faceți clic pe [Salvare în File] pentru a deschide fereastra de configurare a înregistrării datelor. Selectați senzorul și datele E-Compass pentru a fi salvate în file. Puteți începe sau opri salvarea făcând clic pe butonul corespunzător.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - Salvare în File

Pasul 6. Modul Data Injection poate fi folosit pentru a trimite datele dobândite anterior către bibliotecă și pentru a primi rezultatul. Selectați fila [Injectare de date] din bara de instrumente verticală pentru a deschide secțiunea dedicată view pentru această funcționalitate.

ST X CUBE MEMS1 MotionEC este o bibliotecă Middleware - Injecție de date

Pasul 7. Faceți clic pe butonul [Browse] pentru a selecta file cu datele capturate anterior în format CSV.
Datele vor fi încărcate în tabel în curent view.
Alte butoane vor deveni active. Puteți da clic pe:
– Butonul [Offline Mode] pentru a activa/dezactiva modul firmware offline (modul care utilizează datele capturate anterior).
– Butoanele [Start]/[Stop]/[Step]/[Repeat] pentru a controla fluxul de date din MEMS-Studio către bibliotecă.

Referințe

Toate resursele următoare sunt disponibile gratuit pe www.st.com.

  1. UM1859: Noțiuni introductive cu MEMS de mișcare X-CUBE-MEMS1 și extinderea software-ului pentru senzori de mediu pentru STM32Cube
  2.  UM1724: plăci STM32 Nucleo-64 (MB1136)
  3. UM3233: Noțiuni introductive cu MEMS-Studio

Istoricul reviziilor

Tabelul 4. Istoricul revizuirii documentului

Data Versiune Schimbări
18-mai-17 1 Lansare inițială.
25-ian-18 2 S-au adăugat referințe la placa de dezvoltare NUCLEO-L152RE și la Tabelul 2.
Algoritmul timpului scurs (μs).
21-mar-18 3 Introducere actualizată și secțiunea 2.1 MotionEC pesteview.
26-Nov-18 4 Tabelul adăugat 3. Cortex -M0+: algoritmul timpului scurs (µs). S-au adăugat referințe la ARM®
Placă de dezvoltare Cortex® – M0+ și NUCLEO-L073RZ.
19-feb-19 5 Actualizată Figura 1. Cadrul de referință ENU, Tabelul 2. Cortex -M4 și Cortex-M3: algoritmul timpului scurs (µs), Tabelul 3.
Cortex -M0+: algoritmul timpului scurs (µs), Figura 3. Adaptorul plăcii de expansiune senzor conectat la STM32
Nucleo, Figura 4. Fereastra principală Unicleo, Figura 5. Fila Mesaje utilizator, Figura 6. Fereastra E-Compass și Figura 7. Fereastra Datalog. S-au adăugat informații despre compatibilitatea plăcii de extensie X-NUCLEO-IKS01A3.
25-mar-20 6 Introducere actualizată, Secțiunea 2.2.1: Descrierea bibliotecii MotionEC și Secțiunea 2.2.5: Performanța algoritmului.
S-au adăugat informații despre compatibilitatea arhitecturii ARM Cortex-M7.
17-sept-24 7 Secțiunea actualizată Introducere,
Secțiunea 2.1: MotionEC terminatview,
Secțiunea 2.2.1: Biblioteca MotionEC
descriere, Secțiunea 2.2.2: MotionEC
API-uri, Secțiunea 2.2.5: Algoritm
performanță, Secțiunea 3: Sample
aplicație, Secțiunea 3.1: Aplicația MEMS-Studio

NOTIFICARE IMPORTANT – CITIȚI CU ATENTIE
STMicroelectronics NV și filialele sale („ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii.
Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST, iar ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor.
Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta.
Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs.
ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi.
Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document.

© 2024 STMicroelectronics – Toate drepturile rezervate

Documente/Resurse

ST X-CUBE-MEMS1 MotionEC este o bibliotecă Middleware [pdfManual de utilizare
X-CUBE-MEMS1 MotionEC este o bibliotecă Middleware, X-CUBE-MEMS1, MotionEC este o bibliotecă Middleware, Biblioteca Middleware, Bibliotecă

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *