Skip to main content

Wio Terminal IMUセンサー

note

この文書は 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 TerminalGrove - Wio-E5

事前準備

接続

このルーチンでは、Grove LoRa® E5を使用して近くのLoRa®ゲートウェイに接続する必要があります。Wio Terminalの右側のGroveポートをソフトシリアルポートとして構成し、ATコマンドを受信します。

note

なぜ左側の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ボードであるはずです。ボードを再接続してそのシリアルポートを選択します。

tip

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® に参加しようとします。一度成功すると、データが送信され、信号強度やアドレスなどの情報が返されます。

完全なコード例は こちら にあります。

tip

現時点でコードをアップロードして結果を確認することはお勧めしません。なぜなら、まだ Helium/TTN の設定を行っておらず、「Join failed」という結果が得られるためです。Connecting to Helium または Connecting to TTN の章を完了してから、このコードをアップロードして完全なデータ送信プロセスを完了することをお勧めします。

IMU センサーの動作とデータ形式を理解したら、次のステップで LoRaWAN® に参加するチュートリアルを続けてください。

Helium セクション

pir

Helium の紹介

この章では、Helium コンソールの操作を紹介し、Helium コンソールの第一印象を得ることができます。

章にジャンプ >

pir

Helium に接続する

このセクションでは、センサーデータを Helium に正常にアップロードして表示できるようにするための設定方法を説明します。

章にジャンプ >
TTN セクション

pir

TTN の紹介

この章では、TTN コンソールの操作を紹介し、TTN コンソールの第一印象を得ることができます。

章にジャンプ >

pir

TTN に接続する

このセクションでは、センサーデータを TTN に正常にアップロードして表示できるようにするための設定方法を説明します。

章にジャンプ >

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際に、できる限りスムーズな体験を提供するため、さまざまなサポートをご用意しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

声明

  • LoRa® マークは Semtech Corporation またはその子会社の商標です。
  • LoRaWAN® は LoRa Alliance® からライセンスを受けて使用されているマークです。
Loading Comments...