ESP8266 と DHT11 で温湿度測定
先月買ったキットに温湿度センサー DHT11 が入っていたので、ESP8266 に温湿度センサー DHT11 をつないで、温度と湿度を測定したい。
今回は以下のサイトを参考にした。
- Interface DHT11 DHT22 w/ ESP8266 NodeMCU Using Web Server
- ESP8266とDHT11とAmbientを使って部屋の温度と湿度をグラフ化 | elchika
回路図は前者のサイトに従った。
まず、DHT11 を扱うためのライブラリ DHT sensor library をインストールしておく。依存ライブラリは、Arduino IDE からインストールするらしい。
(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 経由でデータを送信したい。