WioTerminal と DHT11 で温湿度計

温湿度センサのDHT11をWioTerminalにつないで、温湿度を表示してみた。
f:id:manpukukoji:20200815164159j:plain
DHT11は、Arduinoでのライブラリもあり、そのまま使えれば、なんの苦労もなくできちゃうのだけど、果たして、そのままいけるかなぁ~? と、おっかなびっくり試してみたら、そのままいけちゃった。
手持ちの6.8kの抵抗でプルアップして接続し、ディスプレーの表示部分をちょこちょこっとやれば、おしまい。
DHT11のデータ出力は、プルアップして、WioTerminalのD2に入力しています。あとは、GND と、5Vを接続。
そのうち、折を見て、一から通信のところからやり直してみないと勉強になりませんかねぇ~。
それにしても、暑い!
気温34.0度。 
暑すぎる!!

参考サイト

iot.keicode.com

ライブラリ

github.com
github.com


スケッチは、以下

#include <DHT.h>
#include"TFT_eSPI.h"

TFT_eSPI tft;

const int PIN_DHT = D2;
DHT dht( PIN_DHT, DHT11 );

void setup() {
  pinMode(D2, INPUT);
  Serial.begin(9600);
  dht.begin();

  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_YELLOW);
  tft.setTextSize(3);
  tft.drawString("Temp.", 10, 20);
  tft.drawString("Humidity", 10, 65);
  tft.drawString("Heat Index", 10, 110);
  tft.drawString("C",290, 20);
  tft.drawString("%", 290, 65);

}

void loop() {

  delay(3000);

  bool isFahrenheit = false;
  float percentHumidity = dht.readHumidity();
  float temperature = dht.readTemperature( isFahrenheit );

  if (isnan(percentHumidity) || isnan(temperature)) {
    Serial.println("ERROR");
    return;
  }

  float heatIndex = dht.computeHeatIndex(
    temperature, 
    percentHumidity, 
    isFahrenheit);

  tft.fillRect(210, 20, 75,25,TFT_BLACK);
  tft.fillRect(210, 65, 75,25,TFT_BLACK);
  tft.fillRect(210, 110, 75,25,TFT_BLACK);
  tft.drawString(String(temperature, 1), 210, 20);
  tft.drawString(String(percentHumidity, 1), 210, 65);
  tft.drawString(String(heatIndex, 1), 210, 110);
  
}