UM2225
Manual do usuário
Introdução à biblioteca E-Compass em tempo real do MotionEC na expansão X-CUBE-MEMS1 para STM32Cube
Introdução
O MotionEC é um componente de biblioteca de middleware do software X-CUBE-MEMS1 e roda no STM3z2. Ele fornece informações em tempo real sobre a orientação do dispositivo e o status do movimento com base em dados de um dispositivo.
Ele fornece as seguintes saídas: orientação do dispositivo (quatérnions, ângulos de Euler), rotação do dispositivo (funcionalidade de giroscópio virtual), vetor de gravidade e aceleração linear.
Esta biblioteca destina-se a funcionar apenas com ST MEMS.
O algoritmo é fornecido em formato de biblioteca estática e foi projetado para ser usado em microcontroladores STM32 baseados nas arquiteturas ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 e ARM® Cortex®-M7.
Ele é construído com base na tecnologia de software STM32Cube para facilitar a portabilidade entre diferentes microcontroladores STM32.
O software vem com sampa implementação em execução na placa de expansão X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1 em uma placa de desenvolvimento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ.
Acrônimos e abreviações
Tabela 1. Lista de siglas
Acrônimo | Descrição |
API | Interface de programação de aplicativos |
BSP | Pacote de suporte da placa |
Interface gráfica do usuário | Interface gráfica do usuário |
OBRIGADO | Camada de abstração de hardware |
IDE | Ambiente de desenvolvimento integrado |
Biblioteca de middleware MotionEC na expansão de software X-CUBE-MEMS1 para STM32Cube
2.1 MovimentoEC sobreview
A biblioteca MotionEC expande a funcionalidade do software X-CUBE-MEMS1.
A biblioteca adquire dados do acelerômetro e do magnetômetro e fornece informações sobre a orientação do dispositivo e o status do movimento com base nos dados do dispositivo.
A biblioteca foi projetada apenas para ST MEMS. A funcionalidade e o desempenho ao usar outros sensores MEMS não são analisados e podem ser significativamente diferentes do descrito no documento.
ComoampA implementação está disponível nas placas de expansão X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 e X-NUCLEO-IKS02A1, montadas em uma placa de desenvolvimento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ.
2.2 Biblioteca MotionEC
Informações técnicas descrevendo completamente as funções e parâmetros das APIs MotionEC podem ser encontradas no MotionEC_Package.chm HTML compilado file localizado na pasta Documentação.
2.2.1 Descrição da biblioteca MotionEC
A biblioteca MotionEC E-Compass gerencia dados adquiridos do acelerômetro e magnetômetro; ela apresenta:
- orientação do dispositivo (quaterniões, ângulos de Euler), rotação do dispositivo (funcionalidade de giroscópio virtual), saídas de vetor de gravidade e aceleração linear
- funcionalidade baseada apenas nos dados do acelerômetro e do magnetômetro
- dados necessários do acelerômetro e magnetômetroampfrequência de até 100 Hz
- requisitos de recursos:
– Cortex-M0+: 3.7 kB de código e 0.1 kB de memória de dados
– Cortex-M3: 3.8 kB de código e 0.1 kB de memória de dados
– Cortex-M33: 2.8 kB de código e 0.1 kB de memória de dados
– Cortex-M4: 2.9 kB de código e 0.1 kB de memória de dados
– Cortex-M7: 2.8 kB de código e 0.1 kB de memória de dados - disponível para arquiteturas ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 e Cortex M7
2.2.2 APIs do MotionEC
As APIs do MotionEC são:
- uint8_t MotionEC_GetLibVersion(char *versão)
– recupera a versão da biblioteca
– *versão é um ponteiro para um array de 35 caracteres
– retorna o número de caracteres na string da versão
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– executa a inicialização da biblioteca MotionEC e a configuração do mecanismo interno.
– mcu_type é o tipo de MCU:
◦ MFX_CM0P_MCU_STM32 é um MCU STM32 padrão
◦ MFX_CM0P_MCU_BLUE_NRG1 é BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 é BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP é BlueNRG -LP
– freq é o sensor sampfrequência de transmissão [Hz]
Observação: Esta função deve ser chamada antes de usar a biblioteca E-Compass e o módulo CRC no microcontrolador STM32 (no registro de habilitação de relógio periférico RCC) deve ser habilitado antes de usar a biblioteca
- void MotionEC_SetFrequency(frequência flutuante)
– define o sampfrequência de filtragem (modificando os parâmetros de filtragem)
– freq é o sensor sampfrequência de transmissão [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– executa o algoritmo E-Compass (fusão de dados do acelerômetro e magnetômetro)
– *data_in é um ponteiro para uma estrutura com dados de entrada
– os parâmetros para o tipo de estrutura MEC_input_t são:
◦ acc[3] é uma matriz de dados do acelerômetro na convenção ENU, medidos em g
◦ mag[3] é uma matriz de dados calibrados do magnetômetro na convenção ENU, medidos em μT/50
◦ deltatime s é o tempo delta (ou seja, atraso de tempo entre o conjunto de dados antigo e o novo) medido em s
– *data_out é um ponteiro para uma estrutura com dados de saída
– os parâmetros para o tipo de estrutura MEC_output_t são:
◦ quaternion[4] é uma matriz que contém quaternion na convenção ENU, representando a orientação 3Dangular do dispositivo no espaço; a ordem dos elementos é: X, Y, Z, W, com elemento W sempre positivo
◦ euler[3] é uma matriz de ângulos de Euler na convenção ENU, representando a orientação angular 3D do dispositivo no espaço; a ordem dos elementos é: guinada, inclinação, rotação, medidos em graus
◦ i_gyro[3] é uma matriz de taxas angulares na convenção ENU, representando um sensor de giroscópio virtual, medido em dps
◦ gravity[3] é um conjunto de acelerações na convenção ENU, representando o vetor gravidade, medido em g
◦ linear[3] é uma matriz de acelerações na convenção ENU, representando a aceleração linear do dispositivo, medida em g
- vazio MotionEC_GetOrientationEnable(MEC_state_t *estado)
– obtém o estado de ativação/desativação do cálculo do ângulo de Euler
– *state é um ponteiro para o estado atual de ativação/desativação - void MotionEC_SetOrientationEnable(estado_MEC_t)
– define o estado de ativação/desativação do cálculo do ângulo de Euler
– estado é o novo estado de ativação/desativação a ser definido - vazio MotionEC_GetVirtualGyroEnable(MEC_state_t *estado)
– obtém o estado de ativação/desativação do cálculo do giroscópio virtual
– *state é um ponteiro para o estado atual de ativação/desativação - void MotionEC_SetVirtualGyroEnable(MEC_state_t estado)
– define o estado de ativação/desativação do cálculo do giroscópio virtual
– estado é o novo estado de ativação/desativação a ser definido - vazio MotionEC_GetGravityEnable(MEC_state_t *estado)
– obtém o estado de ativação/desativação do cálculo do vetor de gravidade
– *state é um ponteiro para o estado atual de ativação/desativação - void MotionEC_SetGravityEnable(MEC_state_t estado)
– define o estado de ativação/desativação do cálculo do vetor de gravidade
– estado é o novo estado de ativação/desativação a ser definido - vazio MotionEC_GetLinearAccEnable(MEC_state_t *estado)
– obtém o estado de ativação/desativação do cálculo de aceleração linear
– *state é um ponteiro para o estado atual de ativação/desativação - void MotionEC_SetLinearAccEnable(MEC_state_t estado)
– define o estado de ativação/desativação do cálculo de aceleração linear
– estado é o novo estado de ativação/desativação a ser definido
2.2.3 Fluxograma da API
2.2.4 Código de demonstração
O código de demonstração a seguir lê dados dos sensores do acelerômetro e do magnetômetro e obtém os dados do ECompass (ou seja, quaternion, ângulos de Euler, etc.).
2.2.5 Desempenho do algoritmo
O algoritmo E-Compass usa dados do acelerômetro e magnetômetro somente. Ele roda em uma frequência baixa (até 100 Hz) para reduzir o consumo de energia.
Sample aplicativo
O middleware MotionEC pode ser facilmente manipulado para construir aplicativos de usuário; comoample aplicativo é fornecido na pasta Aplicativo.
Ele foi projetado para ser executado em uma placa de desenvolvimento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ conectada a uma placa de expansão X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1.
O aplicativo reconhece a orientação e a rotação do dispositivo em tempo real. Os dados podem ser exibidos por meio de uma GUI.
O algoritmo fornece as seguintes saídas: orientação do dispositivo (quatérnions, ângulos de Euler), rotação do dispositivo (funcionalidade de giroscópio virtual), vetor de gravidade e aceleração linear.
3.1 Aplicação MEMS-Studio
Os sampO aplicativo usa o aplicativo MEMS-Studio, que pode ser baixado em www.st.com.
Passo 1. Certifique-se de que os drivers necessários estejam instalados e que a placa STM32 Nucleo com a placa de expansão apropriada esteja conectada ao PC.
Passo 2. Inicie o aplicativo MEMS-Studio para abrir a janela principal do aplicativo.
Se uma placa STM32 Nucleo com firmware suportado for conectada ao PC, a porta COM apropriada será detectada automaticamente. Pressione o botão [Connect] para estabelecer a conexão com a placa de avaliação.
Passo 3. Quando conectado a uma placa STM32 Nucleo com firmware compatível, a guia [Avaliação da biblioteca] é aberta.
Para iniciar e parar o streaming de dados, alterne o [Iniciar] apropriado ou [Parar]
botão na barra de ferramentas vertical externa.
Os dados provenientes do sensor conectado podem ser viewed selecionando a guia [Data Table] na barra de ferramentas vertical interna.
Passo 4. Clique em [E-Compass] para abrir a página dedicada a esta biblioteca.
A figura acima mostra um modelo gráfico STM32 Nucleo. A orientação e a rotação do modelo são baseadas em dados E-Compass (quaternions) calculados pelo algoritmo.
Para alinhar o movimento real do dispositivo com o modelo gráfico, aponte o dispositivo para a tela e pressione [Redefinir modelo].
O valor do título representa o título real do dispositivo.
Apontar o dispositivo diretamente para cima ou para baixo (ao longo do eixo superior do quadro de referência ENU, com tolerância de ±5 graus) fornece um valor N/A para o rumo: não é possível distinguir para qual ponto cardeal o dispositivo está apontando.
O valor de bondade fornece de 0 a 3 valores e está relacionado à calibração do magnetômetro: quanto maior o valor, melhores os resultados do algoritmo de dados do E-Compass.
Passo 5. Clique em [Salvar em File] para abrir a janela de configuração de registro de dados. Selecione os dados do sensor e do E-Compass a serem salvos na file. Você pode começar ou parar de salvar clicando no botão correspondente.
Passo 6. O modo de injeção de dados pode ser usado para enviar os dados adquiridos anteriormente para a biblioteca e receber o resultado. Selecione a aba [Injeção de dados] na barra de ferramentas vertical para abrir o dedicado view para esta funcionalidade.
Passo 7. Clique no botão [Navegar] para selecionar o file com os dados capturados anteriormente em formato CSV.
Os dados serão carregados na tabela no momento atual view.
Outros botões ficarão ativos. Você pode clicar em:
– Botão [Modo Offline] para ligar/desligar o modo offline do firmware (modo que utiliza os dados capturados anteriormente).
– Botões [Iniciar]/[Parar]/[Etapa]/[Repetir] para controlar a alimentação de dados do MEMS-Studio para a biblioteca.
Referências
Todos os recursos a seguir estão disponíveis gratuitamente em www.st.com.
- UM1859: Introdução ao MEMS de movimento X-CUBE-MEMS1 e expansão do software do sensor ambiental para STM32Cube
- UM1724: Placas STM32 Nucleo-64 (MB1136)
- UM3233: Introdução ao MEMS-Studio
Histórico de revisão
Tabela 4. Histórico de revisão de documentos
Data | Versão | Mudanças |
18-Maio-17 | 1 | Lançamento inicial. |
25-jan-18 | 2 | Adicionadas referências à placa de desenvolvimento NUCLEO-L152RE e à Tabela 2. Algoritmo de tempo decorrido (μs). |
21-mar-18 | 3 | Introdução atualizada e Seção 2.1 MotionEC sobreview. |
26-nov-18 | 4 | Adicionada Tabela 3. Cortex -M0+: algoritmo de tempo decorrido (µs). Adicionadas referências ao ARM® Placa de desenvolvimento Cortex® – M0+ e NUCLEO-L073RZ. |
19-fev-19 | 5 | Figura 1 atualizada. Quadro de referência ENU, Tabela 2. Cortex-M4 e Cortex-M3: algoritmo de tempo decorrido (µs), Tabela 3. Algoritmo Cortex -M0+: tempo decorrido (µs), Figura 3. Adaptador de placa de expansão de sensor conectado ao STM32 Nucleo, Figura 4. Janela principal do Unicleo, Figura 5. Guia User Messages, Figura 6. Janela E-Compass e Figura 7. Janela Datalog. Adicionadas informações de compatibilidade da placa de expansão X-NUCLEO-IKS01A3. |
25-mar-20 | 6 | Introdução atualizada, Seção 2.2.1: Descrição da biblioteca MotionEC e Seção 2.2.5: Desempenho do algoritmo. Adicionadas informações de compatibilidade da arquitetura ARM Cortex-M7. |
17-Set-24 | 7 | Introdução da Seção Atualizada, Seção 2.1: MotionEC sobreview, Seção 2.2.1: Biblioteca MotionEC descrição, Seção 2.2.2: MotionEC APIs, Seção 2.2.5: Algoritmo desempenho, Seção 3: Sample aplicação, Seção 3.1: Aplicação MEMS-Studio |
AVISO IMPORTANTE – LEIA COM ATENÇÃO
A STMicroelectronics NV e suas subsidiárias (“ST”) reservam-se o direito de fazer alterações, correções, aprimoramentos, modificações e melhorias nos produtos ST e/ou neste documento a qualquer momento, sem aviso prévio. Os compradores devem obter as informações relevantes mais recentes sobre os produtos ST antes de fazer pedidos. Os produtos ST são vendidos de acordo com os termos e condições de venda da ST em vigor no momento do reconhecimento do pedido.
Os compradores são os únicos responsáveis pela escolha, seleção e uso dos produtos ST e a ST não assume nenhuma responsabilidade pela assistência na aplicação ou pelo design dos produtos dos compradores.
Nenhuma licença, expressa ou implícita, para qualquer direito de propriedade intelectual é concedida pela ST aqui.
A revenda de produtos ST com disposições diferentes das informações aqui estabelecidas anulará qualquer garantia concedida pela ST para tal produto.
ST e o logotipo ST são marcas registradas da ST. Para obter informações adicionais sobre as marcas registradas da ST, consulte www.st.com/trademarks. Todos os outros nomes de produtos ou serviços são propriedade de seus respectivos proprietários.
As informações neste documento substituem e substituem informações fornecidas anteriormente em quaisquer versões anteriores deste documento.
© 2024 STMicroelectronics – Todos os direitos reservados
Documentos / Recursos
![]() |
ST X-CUBE-MEMS1 MotionEC é uma biblioteca de middleware [pdf] Manual do Proprietário X-CUBE-MEMS1 MotionEC é uma biblioteca de middleware, X-CUBE-MEMS1, MotionEC é uma biblioteca de middleware, biblioteca de middleware, biblioteca |