mimikakimemo

自分用メモ。

ESP8266 と DHT11 で温湿度測定

先月買ったキットに温湿度センサー DHT11 が入っていたので、ESP8266 に温湿度センサー DHT11 をつないで、温度と湿度を測定したい。

今回は以下のサイトを参考にした。

回路図は前者のサイトに従った。

まず、DHT11 を扱うためのライブラリ DHT sensor library をインストールしておく。依存ライブラリは、Arduino IDE からインストールするらしい。

f:id:mimikakimemo:20210118002949p:plain

PratformIOを使うと、依存関係をコード管理できるっぽい?)

DHT11 のデータピンの接続先を、最初は D8 ピンにしていたが、以下のエラーが出てスケッチが書き込めなかった。

Uploading...
esptool.py v2.8
Serial port /dev/tty.usbserial-0001
Connecting........_____....._____....._____....._____.....Traceback (most recent call last):
  File "/Users/***/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/upload.py", line 65, in <module>
    esptool.main(cmdline)
  File "/Users/***/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool/esptool.py", line 2890, in main
    esp.connect(args.before)
  File "/Users/***/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool/esptool.py", line 483, in connect
    raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
An error occurred while uploading the sketch
[Error] Exit with code=1

同じような issue を参考にして D6 ピンに変更したところ、解決した。

今回試したソースは以下の通り。温度と湿度を出力するだけの、ごく簡単なプログラム。

#include "DHT.h"

#define DHTPIN D6     // D6 ピンからセンサーの値を得る
#define DHTTYPE DHT11 // DHT 11 を使う

DHT dht(DHTPIN, DHTTYPE);

void setup()
{
  Serial.begin(115200);
  dht.begin();
}

void loop()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  Serial.println("Temperature: " + String(t, 1) + "°C\tHumidity: " + String(h, 0) + "%");

  delay(2000);
}

出力はこんな感じ。途中で息を吹きかけたので、温度・湿度ともに上昇しているのが分かる。

Temperature: 25.7°C Humidity: 46%
Temperature: 25.7°C    Humidity: 46%
Temperature: 25.7°C    Humidity: 46%
Temperature: 25.7°C    Humidity: 46%
Temperature: 25.7°C    Humidity: 46%
Temperature: 25.7°C    Humidity: 57%
Temperature: 25.8°C    Humidity: 60%
Temperature: 25.7°C    Humidity: 57%
Temperature: 25.7°C    Humidity: 54%
Temperature: 26.1°C    Humidity: 95%
Temperature: 26.7°C    Humidity: 95%
Temperature: 27.1°C    Humidity: 95%
Temperature: 27.3°C    Humidity: 95%
Temperature: 27.6°C    Humidity: 95%
Temperature: 28.1°C    Humidity: 95%

温度の分解能が 1℃ と書かれているサイトもある1が、0.1℃ 単位で値が取得できていた。湿度は 1% 単位。

次は Wifi 経由でデータを送信したい。