RaspberryPi Picoで温度湿度モニタを使ってみる(DHT11, DHT22, SHT20) <電子工作>

コンピュータ、組み込み

環境温度と湿度を計測するモジュールをいくつか入手しました。
それぞれの基本的な使い方を紹介します。

今回紹介するもの

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)
HTU20チップ品を使用
外観
使用感

配線もシンプルで、データの読み取りも簡単です。
温度や湿度の精度については、校正済み基準器がないので正確な判断はできませんが、目安程度にはなると思います。

準備

ボードライブラリ

Arduino IDEのボードマネージャからRP2040用のライブラリのインストールとボードの選択をします。

検索RP2040
ボードライブラリRaspberry Pi RP2040 Boards(x.x.x)※1
選択するボードRaspberry Pi RP2040 Boards(x.x.x) > Raspberry Pi Pico
※1 x.x.x Sep/2022 では2.5.2

モジュールライブラリ

DHT11, DHT22を制御するためのライブラリにはDHT sensor library by Adafruitライブラリを使用します。

検索dht
ライブラリ名DHT sensor library by Adafruit バージョン(x.x.x)
※x.x.x Oct/2022 使用したバージョンは1.4.4

SHT20を制御するためのライブラリにはDFRobotのライブラリを使用します。

検索SHT
ライブラリ名DFRobot_SHT20 by DFRobot バージョン x.x.x
※x.x.x Oct/2022 使用したバージョンは1.0.0

使い方

DHT11 温度と湿度の読み取り

説明

DHT11を使い環境の温度と湿度の読み取りをします。
結果はシリアルモニタに表示します。

配線

Raspberry Pi Pico配線DHT11
3.3VCC
GNDGND
GP0DATA

スケッチ

/**********************************************************************
【ライセンスについて】
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
GP0out

スケッチ

/**********************************************************************
【ライセンスについて】
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);        //結果の表示
}

結果

温度と湿度の読み取りができました。

Raspberry Pi Pico関連リンク

コメント

タイトルとURLをコピーしました