はじめに
今回は、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ピンへ接続
作成したスケッチです。
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ファイルを解凍する方がアンインストールが簡単なので個人的には気に入っています。
なお、上記のスケッチは私の開発環境で動作を確認しております。
何かのご参考になれば幸いです。