DHT11が届いたので早速ESP-WROOM-02と繋げてBlynkで温度と湿度を表示してみます。
その前にDHT11がちゃんと機能しているかを確認します。
DHT11TesterというスケッチがDHT11/22のライブラリをインストールすると入ります。これを実際の回路に合わせて修正します。DHT11を使用するようにし、データ端子を接続したESP-WROOM-02のピン番号をスケッチに反映します。
とても簡単な回路です。DHTの+をESP-WROOM-02の3Vに、-をGNDに、データを4番ピンに接続しました。
スケッチをESP-WROOM-02にロードして実行します。
気温と湿度が計測できているようです。
これじゃあ、漆はなかなか乾きませんねー。
ではBlynkに対応したものをスケッチを描きます。ESP8266_StandaloneというBlynkのサンプルを修正する形にしました。
無線LAN親機のssidとパスワードを設定し、DHTのヘッダーをインクルードして、DHTのタイプとDHTが接続されるピン番号を定義する。
そしてBLYNK_READというBlynkの仮想ピンの読み込み関数の追加です。BLYNK_READ(V0)が湿度、BLYNK_READ(V1)が温度を読み込んで、Blynkの仮想ピンに値を設定する部分です。このように記述するとBlynkアプリのWidgetで読み込むピン番号としてVirtual PINを指定できます。
Blynkアプリの画面。
Arduino用のBlynkライブラリとBlynkアプリ。とても便利ですね。
次はMQTTにパブリッシュするスケッチ。最終的なものではありませんが、とりあえず動くという状態で公開します。
このスケッチをコンパイルするはPubSubClientライブラリをインストールする必要があります。
#include <ESP8266WiFi.h> #include "DHT.h" #include <PubSubClient.h> const char *server = "xxx.xxx.xxx.xxx"; const char *ssid="xxxxxxxxx"; const char *pwd="xxxxxxxxxx"; #define DHTPIN 4 #define DHTTYPE DHT11 void callback(char *topic, byte* payload, unsigned int length) { } DHT dht(DHTPIN, DHTTYPE); WiFiClient wifiClient; PubSubClient client((char *)server, 1883, callback, wifiClient); void setup() { Serial.begin(115200); dht.begin(); WiFi.begin(ssid, pwd); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } } void formattedFloat(float x, uint8_t precision, char *buff) { dtostrf(x, 7, precision, buff); } void publishData() { char buff[30]; char topic[] = "dht11"; char clientId[20]; float h = dht.readHumidity(); float t = dht.readTemperature(); char hs[10]; char ts[10]; if(isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor"); return; } sprintf(clientId, "espclient"); if(!client.connected()) { client.connect(clientId); } formattedFloat(h, 4, hs); formattedFloat(t, 4, ts); sprintf(buff, "%s,%s", ts, hs); if(client.connected()) { Serial.print("Sending "); Serial.println(buff); int result = client.publish(topic, buff); if(result) Serial.println("Message sent"); client.disconnect(); } } void loop() { publishData(); delay(20000); }![]()
次はESP-WROOM-02とセンサーを運用するためのデバイスに仕立てる作業です。そこまで行けば、漆乾燥室に設置できます。
ディスカッション
コメントはまだありません。