LoginSignup
0
0

ESP-WROOM-02による温湿度測定(Wi-Fi機能の使用)

Last updated at Posted at 2024-01-21

はじめに

今回は、ESPr® one(Arduino Uno同一形状 ESP-WROOM-02開発ボード、以降ESPと呼ぶ)というマイコンボードでWi-Fi機能を使った温湿度計測を行いました。前回

と同様、温湿度センサDHT11を用いて、Wi-Fi機能のSTAおよびAPモードを使った温湿度の測定を行いました。

ESP02によるWi-Fi機能を使った温湿度計測

温湿度センサ(DHT11)をESPに次のように接続しました。

  • センサのVDDをESPの5Vへ接続
  • センサのGNDをESPのGNDへ接続
  • センサのSIGをESPの14ピンへ接続

センサ接続の様子
20240121_150313.jpg

作成したスケッチです。

STAモード

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DHT.h>

const char *ssid = "Buffalo-G-1028"; //Wi-FiルータのSSID
const char *password = "*********"; //Wi-FiルータのPASSWORD

const int PIN_DHT = 14;
DHT dht(PIN_DHT,DHT11);
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(100);
  WiFi.mode(WIFI_STA);
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to ");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    if (WiFi.status() == WL_CONNECT_FAILED) {
      Serial.println("Can't connect");
    }
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
  dht.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    String currentLine = "";
    Serial.println("New Client.");
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html; charset=utf-8;");
            client.println();
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head><meta http-equiv=\"refresh\" content=\"5\"></head><body><h1>ESP8266とDHT11による温度・湿度の測定</h1><h2>温度 : ");
            client.println(dht.readTemperature(), 1);
            client.println("℃<br>湿度 : ");
            client.println(dht.readHumidity(), 1);
            client.println("%RH</h2></body></html>");
            client.println();
            Serial.println("温度 湿度");
            Serial.println(dht.readTemperature(), 1);
            Serial.println(dht.readHumidity(), 1);
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }               
    }
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

APモード

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DHT.h>

const char *ssid = "ESP8266ap";  //任意の名前
const char *password = "12345678";  //任意のパスワード
const IPAddress ip(192,168,30,3);
const IPAddress subnet(255,255,255,0);

const int PIN_DHT = 14;
DHT dht(PIN_DHT,DHT11);
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.softAP(ssid, password);
  delay(100);
  WiFi.softAPConfig(ip,ip,subnet);
  IPAddress myIP = WiFi.softAPIP();
  server.begin();

  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Serial.println("Server start!");
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    String currentLine = "";
    Serial.println("New Client.");
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html; charset=utf-8;");
            client.println();
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            client.println("<head><meta http-equiv=\"refresh\" content=\"5\"></head><body><h1>ESP8266とDHT11による温度・湿度の測定</h1><h2>温度 : ");
            client.println(dht.readTemperature(), 1);
            client.println("℃<br>湿度 : ");
            client.println(dht.readHumidity(), 1);
            client.println("%RH</h2></body></html>");
            client.println();
            Serial.println("温度 湿度");
            Serial.println(dht.readTemperature(), 1);
            Serial.println(dht.readHumidity(), 1);
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }               
    }
    client.stop();
    Serial.println("Client Disconnected.");
  }
}

開発環境

  • マイコンボード:ESPr® one

  • マイコンボードの情報:esp8266 by ESP8266 Community ver. 2.0.0
  • 温湿度センサ:DHT11
  • Ardiono IDE:ver. 1.8.10 
  • OS:Windows11

終わりに

ESPr® oneは最新のArduino IDEやボード情報では動作しなかったので、ネット情報から検討して、上記のバージョンを使用しました。
私のパソコンには、バージョンが異なる複数のArduino IDEが入っていますが、これらのインストールにはインストーラは使わずにzipファイルを解凍しております。zipファイルを解凍する方がアンインストールが簡単なので個人的には気に入っています。
なお、上記のスケッチは私の開発環境で動作を確認しております。
何かのご参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0