この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Grove Temp&Humi Sensor (SHT40)
このセクションでは、センサーの動作原理、Wio Terminal を使用してセンサーデータを取得する方法、そして Wio Terminal と Grove - Wio-E5 を使用してデータを送信する方法について詳しく説明します。
産業用センサーへのアップグレード可能
SenseCAP S2110コントローラーとS2100データロガーを使用することで、Groveを簡単にLoRaWAN®センサーに変えることができます。Seeedはプロトタイピングを支援するだけでなく、SenseCAPシリーズの堅牢な産業用センサーを使用してプロジェクトを拡張する可能性も提供します。
IP66の筐体、Bluetooth設定、世界的なLoRaWAN®ネットワークとの互換性、内蔵19Ahバッテリー、そして強力なアプリサポートにより、SenseCAP S210xは産業用途に最適な選択肢となります。このシリーズには、土壌水分、空気温度と湿度、光強度、CO2、EC、そして8-in-1の気象ステーション用センサーが含まれています。次の成功する産業プロジェクトには最新のSenseCAP S210xを試してみてください。
SenseCAP 産業用センサー | |||
S2100 データロガー | S2101 空気温度 & 湿度 | S2102 光 | S2103 空気温度 & 湿度 & CO2 |
S2104 土壌水分 & 温度 | S2105 土壌水分 & 温度 & EC | S2110 LoRaWAN® コントローラー | S2120 8-in-1 気象ステーション |
センサーの動作原理
SHT40の温度は熱電対方式を使用して測定されます。熱電対は異なる材料の2種類の金属線で構成されています。2本の線の一端を溶接して作業端を形成し、測定する温度に配置します。もう一端は自由端と呼ばれ、メインコントロールに接続して閉ループを形成します。作業端と自由端の温度が異なる場合、ループ内に熱電位が発生し、この電圧の変化が回路の変換を通じてSCMに送られ、機械が認識可能な信号に変換されます。
SHT40の湿度は、2つの導電性電極に堆積されたポリアミンまたは酢酸ポリマー膜(高度に分画された化合物)を使用して測定されます。この膜が水を吸収または失うと、2つの電極間の誘電率が変化し、それによりコンデンサ容量が変化します。この容量の変化は外部測定回路を使用して捕捉および変換され、最終的に出力上で簡単に識別可能な信号として表示されます。

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

ソフトウェア準備
ステップ1. Arduinoソフトウェアをインストールします。
ステップ2. Arduinoアプリケーションを起動します。

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

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

ステップ4. ボードとポートを選択します
Arduinoに対応するエントリをTools > Board
メニューで選択する必要があります。Wio Terminalを選択します。

Tools -> Port
メニューから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を開き、sketch -> Include Library -> Add .ZIP Library
をクリックし、先ほどダウンロードしたDisk91_LoRaE5
ファイルを選択します。

Grove Temp&Humi センサー (SHT40) の値を取得する
ステップ 1. Grove Temp&Humi センサーコードライブラリをダウンロード
arduino-i2c-sht4x リポジトリを訪問し、リポジトリ全体をローカルドライブにダウンロードしてください。
Sensirion Arduino Core Library リポジトリを訪問し、リポジトリ全体をローカルドライブにダウンロードしてください。
ステップ 2. ライブラリを Arduino IDE に追加
次に、Grove Temp&Humi センサーライブラリを Arduino IDE にインストールします。Arduino IDE を開き、スケッチ -> ライブラリをインクルード -> .ZIP形式のライブラリを追加
をクリックし、先ほどダウンロードした arduino-i2c-sht4x
ファイルを選択してください。

ステップ 3. SHT40 から温度と湿度データを取得
このリポジトリでは、取得した温度と湿度データを確認できます。コード内では、measureHighPrecision()
関数を使用して温度と湿度の情報を取得します。このデータは正の値で、浮動小数点型です。
#include <Arduino.h>
#include <SensirionI2CSht4x.h>
#include <Wire.h>
SensirionI2CSht4x sht4x;
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(100);
}
Wire.begin();
uint16_t error;
char errorMessage[256];
sht4x.begin(Wire);
uint32_t serialNumber;
error = sht4x.serialNumber(serialNumber);
if (error) {
Serial.print("Error trying to execute serialNumber(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else {
Serial.print("Serial Number: ");
Serial.println(serialNumber);
}
}
void loop() {
uint16_t error;
char errorMessage[256];
delay(1000);
float temperature;
float humidity;
error = sht4x.measureHighPrecision(temperature, humidity);
if (error) {
Serial.print("Error trying to execute measureHighPrecision(): ");
errorToString(error, errorMessage, 256);
Serial.println(errorMessage);
} else {
Serial.print("Temperature:");
Serial.print(temperature);
Serial.print("\t");
Serial.print("Humidity:");
Serial.println(humidity);
}
}
Arduino IDE のシリアルモニタを開き、ボーレートを 115200 に設定して結果を観察してください。

Grove - Wio-E5 を使用してデータを送信
前述の Grove - Wio-E5 のコードを組み合わせて、LoRa® ネットワークに接続します。AT コマンドを使用することで、Grove Temp&Humi センサーの値を LoRa® ネットワークに送信することが可能です。
前節のコードでは、温度と湿度の値は通常、2 桁の整数と小数点以下 2 桁の組み合わせであり、すべて正の浮動小数点数であることがわかります。
データ送信の制限により、送信側で浮動小数点数を整数に変換する必要があります。これにより、送信されるデータが整数であることを保証します。そのため、すべての温度と湿度の値を 100 倍します。
この方法により、AT コマンドを介して送信されるデータの内容、サイズ、形式を決定します。十分な大きさの配列を設定し、送信する必要のある文字列を配列に格納し、最後に send_sync() 関数を使用して配列を送信します。
上記のアイデアに基づく擬似コードは以下の通りです。
......
error = sht4x.measureHighPrecision(temperature, humidity);
int_temp = temperature*100;
int_humi = humidity*100;
static uint8_t data[4] = { 0x00 }; // センサーの値を格納するための data[] を使用
data_decord(int_temp, int_humi, 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 の章を完了してから、このコードをアップロードして完全なデータ送信プロセスを完了することをお勧めします。
Grove Temp&Humi センサーの動作とデータ形式を体験し理解したら、次のステップである LoRaWAN® への参加に進んでください。
Helium セクション | |
Helium の紹介 この章では、Helium コンソールの操作について説明し、Helium コンソールの第一印象を得ることを目的としています。 章にジャンプ > | |
Helium への接続 このセクションでは、センサーのデータを正常にアップロードし、Helium に表示できるようにするための Helium の設定方法について説明します。 章にジャンプ > | |
TTN セクション | |
TTN の紹介 この章では、TTN コンソールの操作について説明し、TTN コンソールの第一印象を得ることを目的としています。 章にジャンプ > | |
TTN への接続 このセクションでは、センサーのデータを正常にアップロードし、TTN に表示できるようにするための TTN の設定方法について説明します。 章にジャンプ > |
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートを提供しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。
声明
- LoRa®マークは、Semtech Corporationまたはその子会社の商標です。
- LoRaWAN®は、LoRa Alliance®からライセンスを受けて使用されているマークです。