ST X-logoUM2225
Manuel d'utilisation

Prise en main de la bibliothèque E-Compass en temps réel MotionEC dans l'extension X-CUBE-MEMS1 pour STM32Cube

Introduction

MotionEC est un composant de bibliothèque middleware du logiciel X-CUBE-MEMS1 et fonctionne sur STM3z2. Il fournit des informations en temps réel sur l'orientation et l'état de mouvement de l'appareil en fonction des données d'un appareil.
Il fournit les sorties suivantes : orientation de l'appareil (quaternions, angles d'Euler), rotation de l'appareil (fonctionnalité de gyroscope virtuel), vecteur de gravité et accélération linéaire.
Cette bibliothèque est destinée à fonctionner uniquement avec ST MEMS.
L'algorithme est fourni au format de bibliothèque statique et est conçu pour être utilisé sur les microcontrôleurs STM32 basés sur les architectures ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 et ARM® Cortex®-M7.
Il est construit sur la technologie logicielle STM32Cube pour faciliter la portabilité entre différents microcontrôleurs STM32.
Le logiciel est livré avec sampl'implémentation exécutée sur la carte d'extension X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1 sur une carte de développement NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ.

Acronymes et abréviations

Tableau 1. Liste des acronymes

Acronyme Description
API Interface de programmation d'application
BSP Paquet de support de conseil
Interface utilisateur graphique Interface utilisateur graphique
HAL Couche d'abstraction matérielle
IDE Environnement de développement intégré

Bibliothèque middleware MotionEC dans l'extension logicielle X-CUBE-MEMS1 pour STM32Cube

2.1 MotionEC surview
La bibliothèque MotionEC étend les fonctionnalités du logiciel X-CUBE-MEMS1.
La bibliothèque acquiert des données de l'accéléromètre et du magnétomètre et fournit des informations sur l'orientation de l'appareil et l'état de mouvement en fonction des données d'un appareil.
La bibliothèque est conçue uniquement pour ST MEMS. La fonctionnalité et les performances lors de l'utilisation d'autres capteurs MEMS ne sont pas analysées et peuvent être sensiblement différentes de celles décrites dans le document.
CommeampL'implémentation est disponible sur les cartes d'extension X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 et X-NUCLEO-IKS02A1, montées sur une carte de développement NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ.
2.2 Bibliothèque MotionEC
Des informations techniques décrivant en détail les fonctions et les paramètres des API MotionEC sont disponibles dans le fichier HTML compilé MotionEC_Package.chm. file situé dans le dossier Documentation.

2.2.1 Description de la bibliothèque MotionEC
La bibliothèque MotionEC E-Compass gère les données acquises à partir de l'accéléromètre et du magnétomètre ; elle comprend :

  • orientation de l'appareil (quaternions, angles d'Euler), rotation de l'appareil (fonctionnalité de gyroscope virtuel), vecteur de gravité et sorties d'accélération linéaire
  • fonctionnalité basée uniquement sur les données de l'accéléromètre et du magnétomètre
  • données requises pour l'accéléromètre et le magnétomètreampfréquence de résonance jusqu'à 100 Hz
  • besoins en ressources :
    – Cortex-M0+ : 3.7 Ko de code et 0.1 Ko de mémoire de données
    – Cortex-M3 : 3.8 Ko de code et 0.1 Ko de mémoire de données
    – Cortex-M33 : 2.8 Ko de code et 0.1 Ko de mémoire de données
    – Cortex-M4 : 2.9 Ko de code et 0.1 Ko de mémoire de données
    – Cortex-M7 : 2.8 Ko de code et 0.1 Ko de mémoire de données
  • disponible pour les architectures ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 et Cortex M7

2.2.2 API MotionEC
Les API MotionEC sont :

  • uint8_t MotionEC_GetLibVersion(char *version)
    – récupère la version de la bibliothèque
    – *version est un pointeur vers un tableau de 35 caractères
    – renvoie le nombre de caractères dans la chaîne de version
    • void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
    – effectue l’initialisation de la bibliothèque MotionEC et la configuration du mécanisme interne.
    – mcu_type est le type de MCU :
    ◦ MFX_CM0P_MCU_STM32 est un microcontrôleur STM32 standard
    ◦ MFX_CM0P_MCU_BLUE_NRG1 est BlueNRG-1
    ◦ MFX_CM0P_MCU_BLUE_NRG2 est BlueNRG-2
    ◦ MFX_CM0P_MCU_BLUE_NRG_LP est BlueNRG-LP
    – freq est le capteur sampfréquence de résonance [Hz]

Note: Cette fonction doit être appelée avant d'utiliser la bibliothèque E-Compass et le module CRC du microcontrôleur STM32 (dans le registre d'activation de l'horloge périphérique RCC) doit être activé avant d'utiliser la bibliothèque

  • void MotionEC_SetFrequency(float freq)
    – définit le sampfréquence de filtrage (modification des paramètres de filtrage)
    – freq est le capteur sampfréquence de lecture [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
    – exécute l’algorithme E-Compass (fusion de données d’accéléromètre et de magnétomètre)
    – *data_in est un pointeur vers une structure avec des données d'entrée
    – les paramètres pour le type de structure MEC_input_t sont :
    ◦ acc[3] est un tableau de données d'accéléromètre selon la convention ENU, mesurées en g
    ◦ mag[3] est un ensemble de données étalonnées par magnétomètre selon la convention ENU, mesurées en μT/50
    ◦ deltatime s est le temps delta (c'est-à-dire le délai entre l'ancien et le nouveau jeu de données) mesuré en s
    – *data_out est un pointeur vers une structure avec des données de sortie
    – les paramètres pour le type de structure MEC_output_t sont :
    ◦ quaternion[4] est un tableau contenant un quaternion selon la convention ENU, représentant l'orientation angulaire tridimensionnelle du dispositif dans l'espace ; l'ordre des éléments est : X, Y, Z, W, avec toujours l'élément W positif
    ◦ euler[3] est un tableau d'angles d'Euler dans la convention ENU, représentant l'orientation angulaire 3D de l'appareil dans l'espace ; l'ordre des éléments est : lacet, tangage, roulis, mesuré en degrés
    ◦ i_gyro[3] est un tableau de taux angulaires dans la convention ENU, représentant un capteur gyroscopique virtuel, mesuré en dps
    ◦ gravity[3] est un tableau d'accélérations dans la convention ENU, représentant le vecteur de gravité, mesuré en g
    ◦ linear[3] est un tableau d'accélérations dans la convention ENU, représentant l'accélération linéaire de l'appareil, mesurée en g
    ST X CUBE MEMS1 MotionEC est une bibliothèque middleware-
  • void MotionEC_GetOrientationEnable(MEC_state_t *état)
    – obtient l’état d’activation/désactivation du calcul de l’angle d’Euler
    – *state est un pointeur vers l’état d’activation/désactivation actuel
  • void MotionEC_SetOrientationEnable(état MEC_state_t)
    – définit l'état d'activation/désactivation du calcul de l'angle d'Euler
    – l'état est le nouvel état d'activation/désactivation à définir
  •  void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
    – obtient l’état d’activation/désactivation du calcul du gyroscope virtuel
    – *state est un pointeur vers l’état d’activation/désactivation actuel
  • void MotionEC_SetVirtualGyroEnable(état MEC_state_t)
    – définit l’état d’activation/désactivation du calcul du gyroscope virtuel
    – l'état est le nouvel état d'activation/désactivation à définir
  • void MotionEC_GetGravityEnable(MEC_state_t *state)
    – obtient l’état d’activation/désactivation du calcul du vecteur de gravité
    – *state est un pointeur vers l’état d’activation/désactivation actuel
  • void MotionEC_SetGravityEnable(état MEC_state_t)
    – définit l’état d’activation/désactivation du calcul du vecteur de gravité
    – l'état est le nouvel état d'activation/désactivation à définir
  • void MotionEC_GetLinearAccEnable(MEC_state_t *state)
    – obtient l’état d’activation/désactivation du calcul d’accélération linéaire
    – *state est un pointeur vers l’état d’activation/désactivation actuel
  • void MotionEC_SetLinearAccEnable(état MEC_state_t)
    – définit l’état d’activation/désactivation du calcul de l’accélération linéaire
    – l'état est le nouvel état d'activation/désactivation à définir

2.2.3 Organigramme de l'API

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware-séquence

2.2.4 Code de démonstration
Le code de démonstration suivant lit les données des capteurs d'accéléromètre et de magnétomètre et obtient les données ECompass (c'est-à-dire quaternion, angles d'Euler, etc.).

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Code de démonstrationST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Code de démonstration 1

2.2.5 Performances de l'algorithme
L'algorithme E-Compass utilise uniquement les données de l'accéléromètre et du magnétomètre. Il fonctionne à basse fréquence (jusqu'à 100 Hz) pour réduire la consommation d'énergie.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Injection de données1

Sampl'application

Le middleware MotionEC peut être facilement manipulé pour créer des applications utilisateur ;ampL’application est fournie dans le dossier Application.
Il est conçu pour fonctionner sur une carte de développement NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ connectée à une carte d'extension X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware-adaptateur

L'application reconnaît l'orientation et la rotation de l'appareil en temps réel. Les données peuvent être affichées via une interface graphique.
L'algorithme fournit les sorties suivantes : orientation de l'appareil (quaternions, angles d'Euler), rotation de l'appareil (fonctionnalité de gyroscope virtuel), vecteur de gravité et accélération linéaire.
3.1 Application MEMS-Studio
Le sampl'application utilise l'application MEMS-Studio, qui peut être téléchargée à partir de www.st.com.
Étape 1Assurez-vous que les pilotes nécessaires sont installés et que la carte STM32 Nucleo avec la carte d'extension appropriée est connectée au PC.
Étape 2Lancez l'application MEMS-Studio pour ouvrir la fenêtre principale de l'application.
Si une carte STM32 Nucleo avec un firmware pris en charge est connectée au PC, le port COM approprié est automatiquement détecté. Appuyez sur le bouton [Connecter] pour établir la connexion à la carte d'évaluation.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Connect

Étape 3. Lorsqu'il est connecté à une carte STM32 Nucleo avec un micrologiciel pris en charge, l'onglet [Évaluation de la bibliothèque] s'ouvre.
Pour démarrer et arrêter le streaming de données, activez le bouton [Démarrer] approprié. ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - icône ou [Stop] ST X CUBE MEMS1 MotionEC est une bibliothèque middleware - icon1 bouton sur la barre d'outils verticale extérieure.
Les données provenant du capteur connecté peuvent être viewSélectionnez l'onglet [Tableau de données] sur la barre d'outils verticale intérieure.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Table de données

Étape 4Cliquez sur [E-Compass] pour ouvrir la page dédiée à cette bibliothèque.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Compass

La figure ci-dessus montre un modèle graphique STM32 Nucleo. L'orientation et la rotation du modèle sont basées sur les données E-Compass (quaternions) calculées par l'algorithme.
Pour aligner le mouvement réel de l'appareil avec le modèle graphique, pointez l'appareil vers l'écran et appuyez sur [Réinitialiser le modèle].
La valeur d'en-tête représente l'en-tête réel de l'appareil.
Pointer l'appareil vers le haut ou vers le bas (le long de l'axe haut du référentiel ENU, avec une tolérance de ±5 degrés) donne une valeur N/A pour le cap : il n'est pas possible de distinguer vers quel point cardinal l'appareil pointe.
La valeur de bonté donne de 0 à 3 valeurs et est liée à l'étalonnage du magnétomètre : plus la valeur est élevée, meilleurs sont les résultats de l'algorithme de données E-Compass.
Étape 5Cliquez sur [Enregistrer dans File] pour ouvrir la fenêtre de configuration de l'enregistrement des données. Sélectionnez les données du capteur et de la boussole électronique à enregistrer dans la fileVous pouvez démarrer ou arrêter la sauvegarde en cliquant sur le bouton correspondant.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Enregistrer dans File

Étape 6. Le mode d'injection de données peut être utilisé pour envoyer les données précédemment acquises à la bibliothèque et recevoir le résultat. Sélectionnez l'onglet [Injection de données] dans la barre d'outils verticale pour ouvrir la fenêtre dédiée view pour cette fonctionnalité.

ST X CUBE MEMS1 MotionEC est une bibliothèque Middleware - Injection de données

Étape 7. Cliquez sur le bouton [Parcourir] pour sélectionner le file avec les données précédemment capturées au format CSV.
Les données seront chargées dans la table dans le courant view.
D'autres boutons deviendront actifs. Vous pouvez cliquer sur :
– Bouton [Mode hors ligne] pour activer/désactiver le mode hors ligne du micrologiciel (mode utilisant les données précédemment capturées).
– Boutons [Démarrer]/[Arrêter]/[Étape]/[Répéter] pour contrôler le flux de données de MEMS-Studio vers la bibliothèque.

Références

Toutes les ressources suivantes sont disponibles gratuitement sur www.st.com.

  1. UM1859 : Premiers pas avec l'extension logicielle MEMS de mouvement et capteur environnemental X-CUBE-MEMS1 pour STM32Cube
  2.  UM1724 : cartes STM32 Nucleo-64 (MB1136)
  3. UM3233 : Démarrer avec MEMS-Studio

Historique des révisions

Tableau 4. Historique de révision du document

Date Version Changements
18 mai 17 1 Version initiale.
25-janv.-18 2 Ajout de références à la carte de développement NUCLEO-L152RE et au tableau 2.
Algorithme de temps écoulé (μs).
21-mars-18 3 Mise à jour de l'introduction et de la section 2.1 MotionECview.
26er novembre 18 4 Ajout du tableau 3. Cortex-M0+ : algorithme de temps écoulé (µs). Ajout de références à ARM®
Carte de développement Cortex® – M0+ et NUCLEO-L073RZ.
19-févr.-19 5 Mise à jour de la Figure 1. Cadre de référence ENU, Tableau 2. Cortex-M4 et Cortex-M3 : algorithme de temps écoulé (µs), Tableau 3.
Cortex-M0+ : algorithme de temps écoulé (µs), Figure 3. Adaptateur de carte d'extension de capteur connecté au STM32
Nucleo, Figure 4. Fenêtre principale d'Unicleo, Figure 5. Onglet Messages utilisateur, Figure 6. Fenêtre E-Compass et Figure 7. Fenêtre Datalog. Ajout des informations de compatibilité de la carte d'extension X-NUCLEO-IKS01A3.
25-mars-20 6 Introduction mise à jour, Section 2.2.1 : Description de la bibliothèque MotionEC et Section 2.2.5 : Performances de l'algorithme.
Ajout d'informations sur la compatibilité de l'architecture ARM Cortex-M7.
17-sept-24 7 Introduction de la section mise à jour,
Section 2.1 : MotionEC surview,
Section 2.2.1 : Bibliothèque MotionEC
description, Section 2.2.2 : MotionEC
API, Section 2.2.5 : Algorithme
performances, Section 3 : Sample
application, Section 3.1 : Application MEMS-Studio

AVIS IMPORTANT – À LIRE ATTENTIVEMENT
STMicroelectronics NV et ses filiales (« ST ») se réservent le droit d'apporter des modifications, des corrections, des améliorations et des perfectionnements aux produits ST et/ou au présent document à tout moment et sans préavis. Les acheteurs doivent se procurer les dernières informations pertinentes sur les produits ST avant de passer commande. Les produits ST sont vendus conformément aux conditions générales de vente de ST en vigueur au moment de l'accusé de réception de la commande.
Les acheteurs sont seuls responsables du choix, de la sélection et de l'utilisation des produits ST et ST n'assume aucune responsabilité pour l'assistance à l'application ou la conception des produits des acheteurs.
Aucune licence, expresse ou implicite, sur aucun droit de propriété intellectuelle n'est accordée par ST ici.
La revente de produits ST avec des dispositions différentes des informations énoncées dans le présent document annulera toute garantie accordée par ST pour ce produit.
ST et le logo ST sont des marques déposées de ST. Pour plus d'informations sur les marques déposées de ST, consultez www.st.com/marques. Tous les autres noms de produits ou de services sont la propriété de leurs propriétaires respectifs.
Les informations contenues dans ce document remplacent et annulent les informations précédemment fournies dans toutes les versions antérieures de ce document.

© 2024 STMicroelectronics – Tous droits réservés

Documents / Ressources

ST X-CUBE-MEMS1 MotionEC est une bibliothèque middleware [pdf] Manuel du propriétaire
X-CUBE-MEMS1 MotionEC est une bibliothèque Middleware, X-CUBE-MEMS1, MotionEC est une bibliothèque Middleware, Bibliothèque Middleware, Bibliothèque

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *