2026年8月14日金曜日

platformIO esp8266 led-control and dht server

ini are as follows, and the code is as follows: なぜかpcでないとアクセスしにくい、なんで?

[env:d1_wroom_02]
platform = espressif8266
board = d1_wroom_02
framework = arduino
monitor_speed = 115200

#include <Arduino.h>

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

#define WIFI_SSID "Pikara2-91d8e4"
#define WIFI_PWD ""

#define LED_PIN 16 // GPIO16 (D0)

ESP8266WebServer server(80);
// HTML fetchでget reqできた
const char HTML[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>LED Control</title>
<script>
function ledOn() {
fetch("/led/on");
}

function ledOff() {
fetch("/led/off");
}
</script>
</head>
<body>
<h1>NodeMCU LED Control</h1>
<button onclick="ledOn()">LED ON</button>
<button onclick="ledOff()">LED OFF</button>
</body>
</html>
)rawliteral";


// GET /led/on
void handleLedOn()
{
digitalWrite(LED_PIN, HIGH);
Serial.println("GET /led/on");
server.send(200, "text/plain", "LED ON");
}


// GET /led/off
void handleLedOff()
{
digitalWrite(LED_PIN, LOW);
Serial.println("GET /led/off");
server.send(200, "text/plain", "LED OFF");
}


// GET /
void handleRoot()
{
server.send_P(200, "text/html", HTML);
}


void setup()
{
Serial.begin(115200);

pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW); // 最初はオフで

// WiFi接続
WiFi.begin(WIFI_SSID, WIFI_PWD);

Serial.print("WiFi connecting");

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}

Serial.println();
Serial.println("Connected!");

Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

// URL登録
server.on("/", HTTP_GET, handleRoot);
server.on("/led/on", HTTP_GET, handleLedOn);
server.on("/led/off", HTTP_GET, handleLedOff);

server.begin();

Serial.println("Web server started");
}


void loop()
{
server.handleClient();
}

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

// Wi-Fi設定 (アクセスポイント名とパスワード)
const char* ssid = "ESP8266_AP";
const char* password = "password123";

// DHT11設定
#define DHTPIN 2 // 接続ピン (GPIO2 / D4)
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

ESP8266WebServer server(80);

void handleRoot() {
float h = dht.readHumidity();
float t = dht.readTemperature();

String html = "<html lang='ja'><head><meta charset='utf-8'>";
html += "<meta http-equiv='refresh' content='5'>"; // 5秒ごとに自動更新
html += "<title>ESP8266 DHT11</title></head><body>";
html += "<h1>ESP8266 温湿度モニター</h1>";
if (isnan(h) || isnan(t)) {
html += "<p>センサーからデータを読み込めません。</p>";
} else {
html += "<p>温度: " + String(t, 1) + " &deg;C</p>";
html += "<p>湿度: " + String(h, 1) + " %</p>";
}
html += "</body></html>";
server.send(200, "text/html", html);
}

void setup() {
Serial.begin(115200);
dht.begin();

// ソフトAPの起動
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IPアドレス: ");
Serial.println(myIP);

// Webサーバーのルーティング設定
server.on("/", handleRoot);
server.begin();
Serial.println("Webサーバー開始");
}

void loop() {
server.handleClient();
}


0 件のコメント:

コメントを投稿