UM2225
ユーザーマニュアル
STM1Cube の X-CUBE-MEMS32 拡張における MotionEC リアルタイム E-Compass ライブラリの使用開始
導入
MotionEC は、X-CUBE-MEMS1 ソフトウェアのミドルウェア ライブラリ コンポーネントであり、STM3z2 上で実行されます。デバイスからのデータに基づいて、デバイスの向きや移動状態に関するリアルタイム情報を提供します。
デバイスの向き (四元数、オイラー角)、デバイスの回転 (仮想ジャイロスコープ機能)、重力ベクトル、線形加速度などの出力を提供します。
このライブラリは、ST MEMS でのみ動作することを目的としています。
このアルゴリズムは静的ライブラリ形式で提供され、ARM® Cortex®-M32+、ARM® Cortex®-M0、ARM® Cortex®-M3、ARM® Cortex®-M33、および ARM® Cortex®-M4 アーキテクチャに基づく STM7 マイクロコントローラで使用するように設計されています。
これは、STM32Cube ソフトウェア テクノロジに基づいて構築されており、さまざまな STM32 マイクロコントローラ間での移植性を容易にします。
ソフトウェアにはsが付属していますampNUCLEO-F01RE、NUCLEO-U3ZI-Q、NUCLEO-L4RE、または NUCLEO-L1RZ 開発ボード上の X-NUCLEO-IKS02A1、X-NUCLEO-IKS401A575、または X-NUCLEO-IKS152A073 拡張ボード上で実行される le 実装。
頭字語と略語
表1.頭字語のリスト
頭字語 | 説明 |
翻訳 | アプリケーションプログラミングインターフェース |
BSPS の | ボードサポートパッケージ |
グラフィカルユーザーインターフェイス | グラフィカルユーザーインターフェース |
ハル | ハードウェアアブストラクションレイヤー |
IDE | 統合開発環境 |
STM1Cube 向け X-CUBE-MEMS32 ソフトウェア拡張の MotionEC ミドルウェア ライブラリ
2.1 MotionEC以上view
MotionEC ライブラリは、X-CUBE-MEMS1 ソフトウェアの機能を拡張します。
ライブラリは加速度計と磁力計からデータを取得し、デバイスからのデータに基づいてデバイスの向きと移動状態に関する情報を提供します。
このライブラリは ST MEMS 専用に設計されています。他の MEMS センサーを使用した場合の機能とパフォーマンスは分析されていないため、ドキュメントに記載されているものと大幅に異なる可能性があります。
としてample 実装は、NUCLEO-F01RE、NUCLEO-U3ZI-Q、NUCLEO-L4RE、または NUCLEO-L1RZ 開発ボードに搭載された X-NUCLEO-IKS02A1、X-NUCLEO-IKS401A575、および X-NUCLEO-IKS152A073 拡張ボードで利用できます。
2.2 MotionECライブラリ
MotionEC APIの機能とパラメータを完全に説明した技術情報は、MotionEC_Package.chmコンパイル済みHTMLに記載されています。 file Documentation フォルダーにあります。
2.2.1 MotionECライブラリの説明
MotionEC E-Compass ライブラリは、加速度計と磁力計から取得したデータを管理します。その機能は次のとおりです。
- デバイスの向き(四元数、オイラー角)、デバイスの回転(仮想ジャイロスコープ機能)、重力ベクトルと線形加速度の出力
- 加速度計と磁力計のデータのみに基づく機能
- 必要な加速度計と磁力計のデータamp最大100Hzの周波数
- リソース要件:
– Cortex-M0+: 3.7 kBのコードと0.1 kBのデータメモリ
– Cortex-M3: 3.8 kBのコードと0.1 kBのデータメモリ
– Cortex-M33: 2.8 kBのコードと0.1 kBのデータメモリ
– Cortex-M4: 2.9 kBのコードと0.1 kBのデータメモリ
– Cortex-M7: 2.8 kBのコードと0.1 kBのデータメモリ - ARM Cortex M0+、Cortex-M3、Cortex-M33、Cortex-M4、Cortex M7アーキテクチャで利用可能
2.2.2 モーションEC API
MotionEC API は次のとおりです。
- uint8_t MotionEC_GetLibVersion(char *バージョン)
– ライブラリのバージョンを取得します
– *versionは35文字の配列へのポインタです
– バージョン文字列の文字数を返します
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– MotionEC ライブラリの初期化と内部メカニズムのセットアップを実行します。
– mcu_type は MCU のタイプです:
◦ MFX_CM0P_MCU_STM32は標準のSTM32 MCUです
◦ MFX_CM0P_MCU_BLUE_NRG1 は BlueNRG-1 です
◦ MFX_CM0P_MCU_BLUE_NRG2 は BlueNRG-2 です
◦ MFX_CM0P_MCU_BLUE_NRG_LP は BlueNRG -LP です
– freqはセンサーの周波数ですampリング周波数[Hz]
注記: この関数は、E-Compassライブラリを使用する前に呼び出す必要があり、ライブラリを使用する前にSTM32マイクロコントローラのCRCモジュール(RCCペリフェラルクロックイネーブルレジスタ内)を有効にする必要があります。
- void MotionEC_SetFrequency(float freq)
– sを設定しますampリング周波数(フィルタリングパラメータの変更)
– freqはセンサーの周波数ですampリング周波数 [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– E-Compassアルゴリズム(加速度計と磁力計のデータ融合)を実行します
– *data_inは入力データを持つ構造体へのポインタです
– 構造体型 MEC_input_t のパラメータは次のとおりです。
◦ acc[3]はENU規則の加速度計データの配列であり、g単位で測定される。
◦ mag[3]はENU規約で校正された磁力計データの配列であり、μT/50単位で測定される。
◦ deltatime s は、s 単位で測定されたデルタ時間(つまり、古いデータセットと新しいデータセット間の時間遅延)です。
– *data_outは出力データを持つ構造体へのポインタです
– 構造体型 MEC_output_t のパラメータは次のとおりです。
◦ quaternion[4]はENU規則のクォータニオンを含む配列であり、空間内のデバイスの3D角度の向きを表します。要素の順序はX、Y、Z、Wで、常に正の要素Wが含まれます。
◦ euler[3]はENU規則のオイラー角の配列であり、空間におけるデバイスの3D角度方向を表します。要素の順序は、ヨー、ピッチ、ロールで、度単位で測定されます。
◦ i_gyro[3]はENU規約の角速度の配列であり、仮想ジャイロスコープセンサーを表し、dpsで測定されます。
◦ 重力[3]はENU慣例の加速度の配列であり、重力ベクトルを表し、g単位で測定される。
◦ linear[3]はENU規則の加速度の配列であり、g単位で測定されたデバイスの線形加速度を表す。
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– オイラー角計算の有効/無効状態を取得します
– *stateは現在の有効/無効状態へのポインタです - void MotionEC_SetOrientationEnable(MEC_state_t 状態)
– オイラー角計算の有効/無効を設定します
– 状態は設定する新しい有効/無効状態です - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– 仮想ジャイロスコープ計算の有効/無効状態を取得します
– *stateは現在の有効/無効状態へのポインタです - void MotionEC_SetVirtualGyroEnable(MEC_state_t 状態)
– 仮想ジャイロスコープ計算の有効/無効状態を設定します
– 状態は設定する新しい有効/無効状態です - void MotionEC_GetGravityEnable(MEC_state_t *state)
– 重力ベクトル計算の有効/無効状態を取得します
– *stateは現在の有効/無効状態へのポインタです - void MotionEC_SetGravityEnable(MEC_state_t 状態)
– 重力ベクトル計算の有効/無効状態を設定します
– 状態は設定する新しい有効/無効状態です - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– 線形加速度計算の有効/無効状態を取得します
– *stateは現在の有効/無効状態へのポインタです - void MotionEC_SetLinearAccEnable(MEC_state_t 状態)
– 線形加速度計算の有効/無効状態を設定します
– 状態は設定する新しい有効/無効状態です
2.2.3 APIフローチャート
2.2.4 デモコード
次のデモ コードは、加速度計と磁力計のセンサーからデータを読み取り、ECompass データ (四元数、オイラー角など) を取得します。
2.2.5 アルゴリズムのパフォーマンス
E-Compass アルゴリズムは、加速度計と磁力計からのデータのみを使用します。消費電力を抑えるために、低周波数 (最大 100 Hz) で動作します。
Sampファイルアプリケーション
MotionECミドルウェアは、ユーザーアプリケーションの構築に簡単に操作できます。ampファイルアプリケーションはアプリケーションフォルダーに提供されます。
これは、X-NUCLEO-IKS401A575、X-NUCLEO-IKS152A073、または X-NUCLEO-IKS01A3 拡張ボードに接続された NUCLEO-F4RE、NUCLEO-U1ZI-Q、NUCLEO-L02RE、または NUCLEO-L1RZ 開発ボード上で実行するように設計されています。
アプリケーションはデバイスの向きと回転をリアルタイムで認識し、そのデータを GUI で表示できます。
このアルゴリズムは、デバイスの向き (四元数、オイラー角)、デバイスの回転 (仮想ジャイロスコープ機能)、重力ベクトル、線形加速度などの出力を提供します。
3.1 MEMS-Studioアプリケーション
SampこのアプリケーションはMEMS-Studioアプリケーションを使用します。これは以下からダウンロードできます。 詳しくはこちら.
ステップ1必要なドライバーがインストールされており、適切な拡張ボードを備えた STM32 Nucleo ボードが PC に接続されていることを確認します。
ステップ2MEMS-Studio アプリケーションを起動して、メイン アプリケーション ウィンドウを開きます。
サポートされているファームウェアを搭載した STM32 Nucleo ボードを PC に接続すると、適切な COM ポートが自動的に検出されます。[接続] ボタンを押して評価ボードへの接続を確立します。
ステップ3サポートされているファームウェアを搭載した STM32 Nucleo ボードに接続すると、[ライブラリ評価] タブが開きます。
データストリーミングを開始および停止するには、適切な[開始]を切り替えます。 または[停止]
外側の垂直ツールバーのボタン。
接続されたセンサーからのデータは、 view内側の垂直ツールバーの[データ テーブル]タブを選択します。
ステップ4[E-Compass]をクリックすると、このライブラリの専用ページが開きます。
上の図は、STM32 Nucleo グラフィカル モデルを示しています。モデルの方向と回転は、アルゴリズムによって計算された E-Compass データ (四元数) に基づいています。
実際のデバイスの動きをグラフィカル モデルと一致させるには、デバイスを画面に向け、[モデルのリセット] を押します。
方向値は実際のデバイスの方向を表します。
デバイスを真上または真下に向けると(ENU 参照フレームの上軸に沿って、±5 度の許容範囲)、方位の値は N/A になります。つまり、デバイスがどの方位を指しているかを区別することはできません。
良さの値は 0 ~ 3 の値を示し、磁力計のキャリブレーションに関連しています。値が高いほど、E-Compass データ アルゴリズムの結果は良くなります。
ステップ5[保存先]をクリックします File]をクリックすると、データロギング設定ウィンドウが開きます。保存するセンサーとEコンパスデータを選択します。 file対応するボタンをクリックすると、保存を開始または停止できます。
ステップ6。 データインジェクションモードは、以前に取得したデータをライブラリに送信し、結果を受け取るために使用できます。垂直ツールバーの[データインジェクション]タブを選択して、専用の view この機能のために。
ステップ7。 [参照]ボタンをクリックして、 file 以前にキャプチャしたデータをCSV形式で保存します。
データは現在のテーブルにロードされます view.
他のボタンもアクティブになります。以下をクリックできます:
– [オフライン モード] ボタンは、ファームウェアのオフライン モード (以前にキャプチャしたデータを利用するモード) のオン/オフを切り替えます。
– [開始]/[停止]/[ステップ]/[繰り返し]ボタンを使用して、MEMS-Studio からライブラリへのデータ フィードを制御します。
参考文献
以下のリソースはすべて www.st.com から無料で入手できます。
- UM1859: STM1Cube 用 X-CUBE-MEMS32 モーション MEMS および環境センサー ソフトウェア拡張の概要
- UM1724: STM32 Nucleo-64 ボード (MB1136)
- UM3233: MEMS-Studio の概要
改訂履歴
表4. ドキュメントの改訂履歴
日付 | バージョン | 変更点 |
18年17月XNUMX日 | 1 | 初回リリース。 |
25年18月XNUMX日 | 2 | NUCLEO-L152RE開発ボードと表2への参照を追加しました。 経過時間 (μs) アルゴリズム。 |
21年18月XNUMX日 | 3 | はじめにとセクション2.1 MotionECを更新しましたview. |
26年18月XNUMX日 | 4 | 表3を追加しました。Cortex-M0+:経過時間(µs)アルゴリズム。ARM®への参照を追加しました。 Cortex® – M0+ および NUCLEO-L073RZ 開発ボード。 |
19年19月XNUMX日 | 5 | 図 1. ENU 参照フレーム、表 2. Cortex-M4 および Cortex-M3: 経過時間 (µs) アルゴリズム、表 3 を更新しました。 Cortex-M0+: 経過時間(µs)アルゴリズム、図3. STM32に接続されたセンサー拡張ボードアダプタ Nucleo、図 4. Unicleo メイン ウィンドウ、図 5. ユーザー メッセージ タブ、図 6. E-Compass ウィンドウ、および図 7. データログ ウィンドウ。X-NUCLEO-IKS01A3 拡張ボードの互換性情報を追加しました。 |
25年20月XNUMX日 | 6 | はじめに、セクション 2.2.1: MotionEC ライブラリの説明、およびセクション 2.2.5: アルゴリズムのパフォーマンスを更新しました。 ARM Cortex-M7 アーキテクチャの互換性情報を追加しました。 |
17年24月XNUMX日 | 7 | セクションの紹介を更新しました。 セクション2.1: MotionEC オーバーview, セクション 2.2.1: MotionEC ライブラリ 説明、セクション 2.2.2: MotionEC API、セクション 2.2.5: アルゴリズム パフォーマンス、セクション3:Sample アプリケーション、セクション 3.1: MEMS-Studio アプリケーション |
重要なお知らせ – よくお読みください
STMicroelectronics NV およびその子会社 (以下「ST」) は、ST 製品および/またはこのドキュメントを予告なしにいつでも変更、修正、拡張、修正、および改善する権利を留保します。購入者は、注文を行う前に ST 製品に関する最新の関連情報を入手する必要があります。ST 製品は、注文確認時に適用される ST の販売条件に従って販売されます。
ST 製品の選択、選択、使用については購入者が単独で責任を負い、ST は購入者の製品の適用支援や設計については一切責任を負いません。
ST は、明示的か黙示的かを問わず、いかなる知的財産権のライセンスも付与しません。
ここに記載されている情報と異なる規定を伴う ST 製品を再販した場合、当該製品に対して ST が付与した保証は無効になります。
STおよびSTロゴはSTの商標です。ST商標に関する追加情報については、 www.st.com/商標その他すべての製品名またはサービス名は、それぞれの所有者の財産です。
このドキュメントの情報は、このドキュメントの以前のバージョンで以前に提供された情報に優先し、置き換えられます。
© 2024 STマイクロエレクトロニクス – 無断転載を禁じます
ドキュメント / リソース
![]() |
ST X-CUBE-MEMS1 MotionECはミドルウェアライブラリです [pdf] 取扱説明書 X-CUBE-MEMS1 MotionECはミドルウェアライブラリです。X-CUBE-MEMS1、MotionECはミドルウェアライブラリです。ミドルウェアライブラリ、ライブラリ |