Wio Terminal IMUセンサー
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Wio Terminal IMUセンサー
このセクションでは、センサーの動作方法、Wio Terminalを使用してセンサーデータを取得する方法、およびWio TerminalとGrove - Wio-E5を使用してデータを送信する方法について詳しく説明します。
産業用センサーへのアップグレード可能
SenseCAP S2110コントローラーとS2100データロガーを使用することで、Groveを簡単にLoRaWAN®センサーに変えることができます。Seeedはプロトタイピングを支援するだけでなく、SenseCAPシリーズの堅牢な産業用センサーを使用してプロジェクトを拡張する可能性も提供します。
IP66の筐体、Bluetooth設定、グローバルLoRaWAN®ネットワークとの互換性、内蔵19Ahバッテリー、そして強力なAPPサポートにより、SenseCAP S210xは産業用途に最適な選択肢となります。このシリーズには、土壌水分、空気温度と湿度、光強度、CO2、EC、そして8-in-1気象ステーション用のセンサーが含まれています。次の成功する産業プロジェクトには最新のSenseCAP S210xを試してみてください。
SenseCAP 産業用センサー | |||
S2100 データロガー | S2101 空気温度 & 湿度 | S2102 光 | S2103 空気温度 & 湿度 & CO2 |
S2104 土壌水分 & 温度 | S2105 土壌水分 & 温度 & EC | S2110 LoRaWAN® コントローラー | S2120 8-in-1気象ステーション |
センサーの動作原理
このセクションでは、Wio Terminalに内蔵されているIMUセンサーの使用方法を学びます。
LIS3DHTR加速度センサーは圧電センサーであり、測定対象の加速度をセンサー単位の電圧変化に変換します。その後、変換回路を通じてセンサー単位の変化値を電圧値に変換し、信号を対応する増幅およびフィルタリング処理を行い、アナログ量を適切で安定した出力信号に処理します。この時点で出力信号は電圧値であり、最終的にADCコンバーターを通じてデジタル信号に変換されます。

IMUセンサーの使用に関する詳細情報はこちらを参照してください。
必要な材料
![]() | ![]() |
Wio Terminal | Grove - Wio-E5 |
事前準備
接続
このルーチンでは、Grove LoRa® E5を使用して近くのLoRa®ゲートウェイに接続する必要があります。Wio Terminalの右側のGroveポートをソフトシリアルポートとして構成し、ATコマンドを受信します。

なぜ左側のGroveポートを使用しないのですか?
左側のGroveインターフェースはIICに対応しており、ほとんどのセンサーでIICインターフェースを使用するため、保持する方が良い解決策です。
ソフトウェア準備
ステップ1. Arduinoソフトウェアをインストールします。
ステップ2. Arduinoアプリケーションを起動します。

ステップ3. Arduino IDEにWio Terminalを追加します。
Arduino IDEを開き、ファイル > 設定
をクリックし、以下のURLを追加のボードマネージャURLにコピーします:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

ツール > ボード > ボードマネージャ
をクリックし、ボードマネージャでWio Terminalを検索します。

ステップ4. ボードとポートを選択します。
ツール > ボード
メニューで、Arduinoに対応するエントリを選択します。Wio Terminalを選択してください。

ツール -> ポート
メニューからWio Terminalボードのシリアルデバイスを選択します。これは通常、COM3以上(COM1およびCOM2は通常ハードウェアシリアルポート用に予約されています)です。確認するには、Wio Terminalボードを切断してメニューを再度開き、消えるエントリがArduinoボードであるはずです。ボードを再接続してそのシリアルポートを選択します。
Macユーザーの場合、/dev/cu.usbmodem141401
のようなものになります。
スケッチをアップロードできない場合、主にArduino IDEがWio Terminalをブートローダーモードにできなかったことが原因です(MCUが停止しているか、プログラムがUSBを処理している場合)。回避策として、Wio Terminalを手動でブートローダーモードにする必要があります。

ステップ5. Grove - Wio-E5ライブラリをダウンロードします。
Disk91_LoRaE5リポジトリを訪問し、リポジトリ全体をローカルドライブにダウンロードします。
ステップ6. Arduino IDEにライブラリを追加します。
次に、3軸デジタル加速度計ライブラリをArduino IDEにインストールします。Arduino IDEを開き、スケッチ -> ライブラリをインクルード -> .ZIP形式のライブラリを追加
をクリックし、先ほどダウンロードしたDisk91_LoRaE5
ファイルを選択します。

Wio Terminal の内蔵 IMU センサーの値を取得する
ステップ 1. IMU コードライブラリをダウンロード
Seeed_Arduino_LIS3DHTR リポジトリにアクセスし、リポジトリ全体をローカルドライブにダウンロードしてください。
ステップ 2. ライブラリを Arduino IDE に追加
次に、3軸デジタル加速度計ライブラリを Arduino IDE にインストールします。Arduino IDE を開き、スケッチ -> ライブラリをインクルード -> .ZIP形式のライブラリを追加
をクリックし、先ほどダウンロードした Seeed_Arduino_LIS3DHTR
ファイルを選択してください。

ステップ 3. IMU センサーの3軸データを取得
このリポジトリでは、Wio Terminal のコンポーネントとして内蔵 IMU センサーを使用する方法を示しています。ライブラリの getAccelerationX(), getAccelerationY(), getAccelerationZ() 関数を使用して、IMU センサーの X軸、Y軸、Z軸のオフセットを直接取得できます。これらの3つの値は、正または負の浮動小数点数になる可能性があります。
#include"LIS3DHTR.h"
LIS3DHTR<TwoWire> lis;
void setup() {
Serial.begin(115200);
lis.begin(Wire1);
if (!lis) {
Serial.println("ERROR");
while(1);
}
lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); // データ出力レート
lis.setFullScaleRange(LIS3DHTR_RANGE_2G); // スケール範囲を2gに設定
}
void loop() {
float x_values, y_values, z_values;
x_values = lis.getAccelerationX();
y_values = lis.getAccelerationY();
z_values = lis.getAccelerationZ();
Serial.print("X: "); Serial.print(x_values);
Serial.print(" Y: "); Serial.print(y_values);
Serial.print(" Z: "); Serial.print(z_values);
Serial.println();
delay(50);
}
Arduino IDE のシリアルモニタを開き、ボーレートを 115200 に設定して結果を観察してください。

Grove - Wio-E5 を介してデータを送信する
Grove - Wio-E5 の以前のコードを組み合わせて、LoRa® ネットワークに接続します。AT コマンドを使用して、IMU センサーの値を LoRa® ネットワークに送信することが可能です。
上記のセクションのコードからわかるように、IMU センサーの値は正負の値を持つ可能性がある3つの独立した浮動小数点数であり、小数点以下2桁まで正確です。
データ送信の制限のため、送信側で浮動小数点数を整数に変換する必要があります。そのため、3軸すべてのデータを100倍します。
この方法で、AT コマンドを介して送信するデータの内容、サイズ、形式を決定します。十分な大きさの配列を設定し、送信する必要のある文字列を配列に格納し、最後に send_sync() 関数を使用して配列を送信します。
上記のアイデアの擬似コードは以下のようになります。
......
float x_values, y_values, z_values;
x_values = lis.getAccelerationX();
y_values = lis.getAccelerationY();
z_values = lis.getAccelerationZ();
int x = x_values*100;
int y = y_values*100;
int z = z_values*100;
static uint8_t data[6] = { 0x00 }; // センサーの値を格納するための data[] を使用
data_decord(x, y, z, data);
if ( lorae5.send_sync( // センサー値を送信
8, // LoRaWan ポート
data, // データ配列
sizeof(data), // データのサイズ
false, // ACK を期待しない
7, // スプレッドファクター
14 // 送信電力 (dBm)
)
)
......
次に行う必要があるのは、begin()
関数を使用して Grove - Wio-E5 を初期化し、setup()
関数を使用して Grove - Wio-E5 のトリプレット情報を設定することです。send_sync()
関数を使用してデータメッセージを送信すると、同時に LoRaWAN® に参加しようとします。一度成功すると、データが送信され、信号強度やアドレスなどの情報が返されます。
完全なコード例は こちら にあります。
現時点でコードをアップロードして結果を確認することはお勧めしません。なぜなら、まだ Helium/TTN の設定を行っておらず、「Join failed」という結果が得られるためです。Connecting to Helium または Connecting to TTN の章を完了してから、このコードをアップロードして完全なデータ送信プロセスを完了することをお勧めします。
IMU センサーの動作とデータ形式を理解したら、次のステップで LoRaWAN® に参加するチュートリアルを続けてください。
Helium セクション | |
Helium の紹介 この章では、Helium コンソールの操作を紹介し、Helium コンソールの第一印象を得ることができます。 章にジャンプ > | |
Helium に接続する このセクションでは、センサーデータを Helium に正常にアップロードして表示できるようにするための設定方法を説明します。 章にジャンプ > | |
TTN セクション | |
TTN の紹介 この章では、TTN コンソールの操作を紹介し、TTN コンソールの第一印象を得ることができます。 章にジャンプ > | |
TTN に接続する このセクションでは、センサーデータを TTN に正常にアップロードして表示できるようにするための設定方法を説明します。 章にジャンプ > |
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品をご利用いただく際に、できる限りスムーズな体験を提供するため、さまざまなサポートをご用意しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。
声明
- LoRa® マークは Semtech Corporation またはその子会社の商標です。
- LoRaWAN® は LoRa Alliance® からライセンスを受けて使用されているマークです。