環境温度と湿度を計測するモジュールをいくつか入手しました。
それぞれの基本的な使い方を紹介します。
今回紹介するもの
DHT11
特徴
小型で簡単に環境の温度と湿度の計測ができます。
安価で入手性が良い。
仕様
入力電圧 | 3 ~ 5.5V |
温度測定範囲 | 0 ~ 50℃ (誤差 ±2℃) |
温度分解能 | 1℃ |
湿度測定範囲 | 20% ~ 90%RH (誤差 ±5%) |
湿度分解能 | 1% |
更新レート | 約1秒 |
外観
DHT22
特徴
DHT11よりも広い温度と湿度の計測ができる。
誤差が小さい。
少し値段が上がるが、入手性は良い。
仕様
入力電圧 | 3 ~ 5.5V |
温度測定範囲 | -40 ~ 80℃ (誤差 ±0.5℃) |
温度分解能 | 1℃ |
湿度測定範囲 | 0% ~ 100%RH (誤差 ±2%) |
湿度分解能 | 1% |
更新レート | 約1秒 |
外観
SHT20
特徴
小型で簡単に環境の温度と湿度の計測ができます。
温度と湿度の計測幅が広く高精度で速い。
高価だが入手性は良い。
仕様
入力電圧 | 1.5 ~ 3.6V |
温度測定範囲 | -40 ~ 105℃ (誤差 ±0.3℃) |
温度分解能 | 1℃ |
湿度測定範囲 | 0% ~ 100%RH (誤差 ±4%) |
湿度分解能 | 1% |
測定時間 | 50ms |
I2Cアドレス | 64 (定数宣言あり SHT20_I2C_ADDR) |
外観
使用感
配線もシンプルで、データの読み取りも簡単です。
温度や湿度の精度については、校正済み基準器がないので正確な判断はできませんが、目安程度にはなると思います。
準備
ボードライブラリ
Arduino IDEのボードマネージャからRP2040用のライブラリのインストールとボードの選択をします。
検索 | RP2040 |
ボードライブラリ | Raspberry Pi RP2040 Boards(x.x.x)※1 |
選択するボード | Raspberry Pi RP2040 Boards(x.x.x) > Raspberry Pi Pico |
モジュールライブラリ
DHT11, DHT22を制御するためのライブラリにはDHT sensor library by Adafruitライブラリを使用します。
検索 | dht |
ライブラリ名 | DHT sensor library by Adafruit バージョン(x.x.x) |
SHT20を制御するためのライブラリにはDFRobotのライブラリを使用します。
検索 | SHT |
ライブラリ名 | DFRobot_SHT20 by DFRobot バージョン x.x.x |
使い方
DHT11 温度と湿度の読み取り
説明
DHT11を使い環境の温度と湿度の読み取りをします。
結果はシリアルモニタに表示します。
配線
Raspberry Pi Pico | 配線 | DHT11 |
---|---|---|
3.3 | 赤 | VCC |
GND | 黒 | GND |
GP0 | 黄 | DATA |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【スケッチの説明】
温湿度モニタ DHT11 から環境温度と、湿度を読み取ります。
結果はシリアルモニタに表示します。
【ライブラリ】
DHT sensor library by Adafruit バージョン(x.x.x)
x.x.x = Oct/2022 では 1.4.4で確認
【準備】
Raspberry Pi Pico DHT11
3.3v <-> VCC
GND <-> GND
GP0 <-> DATA
【参考】
Arduino IDE サンプル
スケッチ例 > DHT sensor library > DHTtester
【バージョン情報】
2022/10/7 : 新規
**********************************************************************/
#include "DHT.h"
#define PIN_DHT 0 //データの読み出しはGP0
#define TYPE DHT11 //DHT11モジュールを使用します。
DHT oDHT(PIN_DHT, TYPE); //DHT11のデータを読み取るオブジェクト
void setup()
{
Serial.begin(115200);
while (!Serial) {
;
}
oDHT.begin(); //制御開始
}
void loop()
{
delay(2000);
float fHumi = oDHT.readHumidity(); //湿度の読み取り
float fTemp = oDHT.readTemperature(); //温度の読み取り
//温度を華氏で読み取る場合はこちら
// float fTemp = dht.readTemperature(true);
Serial.printf("Humidity : %3.3f %, Temperature : %3.3f degC\n", fHumi, fTemp); //結果の表示
}
結果
温度と湿度の読み取りができました。
概ね1秒くらいで値の更新がされます。
DHT22 温度と湿度の読み取り
説明
DHT22を使い環境の温度と湿度の読み取りをします。
結果はシリアルモニタに表示します。
DHT11と同じライブラリで同じように使用できますが、配線が違うので注意。
Raspberry Pi Pico | 配線 | DHT11またはDHT22 |
---|---|---|
3.3V | 赤 | + |
GND | 黒 | – |
GP0 | 黄 | out |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【スケッチの説明】
温湿度モニタ DHT22 から環境温度と、湿度を読み取ります。
結果はシリアルモニタに表示します。
【ライブラリ】
DHT sensor library by Adafruit バージョン(x.x.x)
x.x.x = Oct/2022 では 1.4.4で確認
【準備】
Raspberry Pi Pico DHT22
3.3v <-> +
GND <-> -
GP0 <-> out
【参考】
Arduino IDE サンプル
スケッチ例 > DHT sensor library > DHTtester
【バージョン情報】
2022/10/7 : 新規
**********************************************************************/
#include "DHT.h"
#define PIN_DHT 0 //データの読み出しはGP0
#define TYPE DHT22 //DHT22モジュールを使用します。
DHT oDHT(PIN_DHT, TYPE); //DHT22のデータを読み取るオブジェクト
void setup()
{
Serial.begin(115200);
while (!Serial) {
;
}
oDHT.begin(); //制御開始
}
void loop()
{
delay(1000);
float fHumi = oDHT.readHumidity(); //湿度の読み取り
float fTemp = oDHT.readTemper華氏ature(); //温度の読み取り
//温度を華氏で読み取る場合はこちら
// float fTemp = dht.readTemperature(true);
Serial.printf("Humidity : %3.3f %, Temperature : %3.3f degC\n", fHumi, fTemp); //結果の表示
}
結果
温度と湿度の読み取りができました。
概ね1秒くらいで値の更新がされます。
SHT20 温度と湿度の読み取り
説明
SHT20を使い環境の温度と湿度の読み取りをします。
結果はシリアルモニタに表示します。
SHT20のデータの読み取りはI2Cを使用します。
配線は以下を参考にしてください。
配線
Raspberry Pi Pico | 配線 | SHT20 |
---|---|---|
3.3V | 赤 | + |
GND | 黒 | – |
GP0(I2C0 SDA) | 黄 | DA |
GP1(I2C0 SCL) | 橙 | CL |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【スケッチの説明】
温湿度モニタ SHT20 から環境温度と、湿度を読み取ります。
結果はシリアルモニタに表示します。
【ライブラリ】
DFRobot_SHT20 by DFRobot バージョン 1.0.0
'http://tamanegi.digick.jp/about-licence/
【準備】
Raspberry Pi Pico SHT20
3.3v <-> +
GND <-> -
GP0 <-> DA
GP1 <-> CL
【参考】
Arduino IDE サンプル
スケッチ例 > DFRobot_SHT20 > getHumidityAndTemperature
【バージョン情報】
2022/10/7 : 新規
**********************************************************************/
#include "DFRobot_SHT20.h"
#include <Wire.h>
DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR); //SHT20 読み取りオブジェクト
void setup()
{
Serial.begin(115200);
Wire.setSDA(0); //Raspberry Pi Pico I2C0 の GPIO0とGPIO1を使用する。
Wire.setSCL(1);
// SHT20 センサ初期化
sht20.initSHT20();
sht20.checkSHT20();
}
void loop()
{
delay(2000);
float fHumi = sht20.readHumidity(); //湿度の読み取り
float fTemp = sht20.readTemperature(); //温度の読み取り
Serial.printf("Humidity : %3.3f %, Temperature : %3.3f degC\n", fHumi, fTemp); //結果の表示
}
結果
温度と湿度の読み取りができました。
コメント