Arduino UNO R4 Minimaでセンサ・インターフェーシング ⑦ 温湿度センサSHT45
Adafruitの温湿度センサSHT4xは、執筆時点で3種類あります。ここでは、その中の一番確度の高い製品SHT45を利用します。前回、SHT40を利用しました。どちらも使い方は、まったく同じです。
SHT40 | SHT41 | SHT45 | |
湿度 | ±1.8% typ (25~75%) |
±1.8% typ (25~75%) |
±1% typ (25~75%) |
---|---|---|---|
0 ~ 100% RH での標準確度は ±3% | 0 ~ 100% RH での標準確度は ±2% | ||
温度 | ±0.2 °C typ (0~75 °C) |
±0.2 °C typ (0~75 °C) |
±0.1 °C typ (0~75 °C) |
I2C スレーブ・アドレスとプログラムのコードはすべて同一。アドレスが同じのため、同じバスに複数個をつなぐことはできない。
●AdafruitのStemma QT/Qwiicボード
Stemma QT/Qwiic(JST SH 4ピン)コネクタは2か所に装着されていて、どちらにつないでもかまいません。このコネクタを使ってI2Cで制御する場合、特に、ジャンパ線をつなぐなどは不要です。
コネクタは、表と裏のどちらも差し込めそうですが、ピンが内部の上部に並んでいるので、差し込める方向は一意です。ロック機構はないですが、すぐに抜けるということはありません。
●温湿度センサSHT45のおもなスペック
- 電源電圧 1.08~3.6V
- 平均供給電流 0.4 µA
- 湿度 確度;±1.0%RH、分解能;0.01%RH 応答速度;4秒
- 温度 確度;±0.1℃、分解能;0.01℃ 応答速度;2秒
- ヒータ内蔵
- インターフェース I2C(0~400kHz)
- スレーブ・アドレス 0x44(固定)
●使用環境
- Arduino UNO R4 Minima
- Arduino IDE 2.1.1
- Windows10 22H2
●接続
Arduino UNO R4 MinimaのI2C信号とセンサをJSTコネクタでつなぎます(Stemma QT/Qwiicボードの写真の比率は大きい)。電源は3.3Vです。
●ライブラリの用意
SHT4xで検索して、見つかったAdafruit SHT4Xライブラリをインストールします。前回のSHT40でインストールした場合は、不要です。
インストールを始めると次のパネルが出ました。
全てをインストールを選びました。前回、インストールしたのであれば、このパネルは出ないと思われます。
●サンプル・スケッチ①(前回と同じ)
ファイル->スケッチ例->SHT4x_LibraryからSHT4test.inoを読み込みます。
コンパイルし実行します。
●サンプル・スケッチ②(前回と同じ)
ファイル->スケッチ例->SHT4x_LibraryからSHT4_oledemo.inoを読み込みます。
Arduino UNO R4 Minimaでセンサ・インターフェーシング ⑤ 温湿度センサSi7021の測定結果をグラフィック・ディスプレイに表示
で用いたグラフィック・ディスプレイを接続します。サンプルは、別のグラフィック・ディスプレイを利用しているので、STEMMA QT/Qwiic互換 128x64 OLED モノクロ・ディスプレイを利用するために、スケッチの先頭から、setup{}を次のように修正します。
loop{}は、SHT41と記述されていたところをSHT45に修正しました。
コンパイルし実行します。
// #include <Adafruit_SH110X.h>
#include <Adafruit_SSD1306.h>
#include "Adafruit_SHT4x.h"
#include <Fonts/FreeSans9pt7b.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10);
Serial.println("128x64 OLED FeatherWing test");
//display.begin(0x3C, true); // Address 0x3C default
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
Serial.println("OLED begun");
// Show image buffer on the display hardware.
// Since the buffer is intialized with an Adafruit splashscreen
// internally, this will display the splashscreen.
display.display();
// delay(1000);
// Clear the buffer.
display.clearDisplay();
display.display();
Serial.println("Adafruit SHT4x test");
if (! sht4.begin(&Wire)) {
Serial.println("Couldn't find SHT4x");
while (1) delay(1);
}
Serial.println("Found SHT4x sensor");
Serial.print("Serial number 0x");
Serial.println(sht4.readSerial(), HEX);
sht4.setPrecision(SHT4X_HIGH_PRECISION);
sht4.setHeater(SHT4X_NO_HEATER);
display.setRotation(0);
display.setFont(&FreeSans9pt7b);
display.setTextColor(SSD1306_WHITE);
}
実行例です。