前回までのLEDチカ
前回までは、Arduino IDEをWindows11パソコンにインストールして、開発環境を整えて
LEDをチカチカさせるまでをやりました。
今回は、
ココがポイント
インターネットブラウザから、LEDをONーOFFする
方法をやってみました。
ブラウザからONOFFできるプログラム
ESP32とLEDの回路は、前回と同じでGPIOの14番ピンを使ってONOFFさせます。
プログラムの方は、下記のサイトから丸パクリになります。
#include <WiFi.h>
#include <WebServer.h>
// WiFiの接続情報
const char* ssid = "Your SSID0";
const char* password = "Your PASSWORD";
// LEDが接続されているピン
const int ledPin = 25;
bool ledState = false; // LEDの状態(オンまたはオフ)
WebServer server(80);
void setup() {
Serial.begin(115200);
// WiFiに接続
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// Webサーバーのルート設定
server.on("/", HTTP_GET, handleRoot);
server.on("/on", HTTP_GET, handleOn);
server.on("/off", HTTP_GET, handleOff);
// LEDを制御するためのピン設定
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
// Webサーバーの起動
server.begin();
Serial.println("Web server started!");
}
void loop() {
// クライアントのリクエストを処理
server.handleClient();
}
void handleRoot() {
// HTMLおよびCSSの生成
String html = "<!DOCTYPE html><html>";
html += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
html += "<link rel=\"icon\" href=\"data:,\">";
// CSS to style the on/off buttons
html += "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}";
html += ".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;";
html += "text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}</style>";
html += "</head><body>";
html += "<h1>ESP32 LED Control</h1>";
html += "<p>LED Status: ";
html += (ledState) ? "ON" : "OFF";
html += "</p>";
// LEDをオンまたはオフにするためのボタン
if (ledState) {
html += "<a href='/off'><button class='button'>Turn OFF</button></a>";
} else {
html += "<a href='/on'><button class='button'>Turn ON</button></a>";
}
html += "</body></html>";
// クライアントにHTMLを送信
server.send(200, "text/html", html);
}
void handleOn() {
// LEDをオンにしてルートにリダイレクト
ledState = true;
digitalWrite(ledPin, HIGH);
server.sendHeader("Location", "/");
server.send(303);
}
void handleOff() {
// LEDをオフにしてルートにリダイレクト
ledState = false;
digitalWrite(ledPin, LOW);
server.sendHeader("Location", "/");
server.send(303);
}
WiFiの設定と、LEDが接続されているピンを変更しただけになります。
WiFi経由でONOFFテスト
プログラムをESP32へ書き込みしてから、ツール>>シリアルモニタを起動して、リセットボタンを押しました。
IPアドレスが表示されましたので、パソコンからそのIPアドレスでアクセスすると下記のようになりLEDのONOFFができるようになりました。
固定IPにしてスマホからアクセス
IPを固定にするには、下記の部分を追加するだけです。
// 固定IP情報
const IPAddress ip(192,168,1,60);
const IPAddress gateway(192, 168, 1, 1);
const IPAddress subnet(255,255,255,0);
const IPAddress dns1(192, 168, 1, 1);
// 固定IPの設定
if (!WiFi.config(ip,gateway,subnet,dns1)){
Serial.println("Failed to configure!");
}



