NodeMCUを使用して、スマートフォンからWi-Fi経由で4つのLEDを操作するためのコードを作成します。スマホのブラウザに表示される4つのボタンで、それぞれのLEDをON/OFFできるようにします。
以下に、NodeMCU用のArduinoコードを記載します。

NodeMCU用コード
このコードをArduino IDEにコピー&ペーストし、NodeMCUに書き込んでください。
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
// --- Wi-Fi設定 ---
const char* ssid = "YOUR_WIFI_SSID"; // ご自宅のWi-FiのSSIDを入力
const char* password = "YOUR_WIFI_PASSWORD"; // Wi-Fiのパスワードを入力
ESP8266WebServer server(80); // Webサーバーオブジェクトを作成
// --- LEDのピン設定 ---
const int led1 = 4; // D2
const int led2 = 5; // D1
const int led3 = 12; // D6
const int led4 = 13; // D7
// --- LEDの状態を記憶する変数 ---
bool led1Status = LOW;
bool led2Status = LOW;
bool led3Status = LOW;
bool led4Status = LOW;
void setup() {
Serial.begin(115200);
// LEDピンを出力に設定
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// Wi-Fiに接続
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // IPアドレスをシリアルモニタに表示
// --- Webページのルーティング ---
server.on("/", handleRoot); // ルートURL ("/")にアクセスがあった場合
server.on("/led1", handleLed1);
server.on("/led2", handleLed2);
server.on("/led3", handleLed3);
server.on("/led4", handleLed4);
server.begin(); // Webサーバーを開始
}
void loop() {
server.handleClient(); // クライアントからのリクエストを処理
}
// --- Webページ本体 (HTML) ---
void handleRoot() {
String html = "<!DOCTYPE html><html><head><title>LED Control</title>";
html += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
html += "<style>";
html += "body { font-family: sans-serif; text-align: center; margin-top: 50px; }";
html += ".btn { display: inline-block; padding: 20px 40px; font-size: 24px; margin: 10px; cursor: pointer; border-radius: 10px; border: none; }";
html += ".on { background-color: #4CAF50; color: white; }"; // ONボタンの色
html += ".off { background-color: #f44336; color: white; }"; // OFFボタンの色
html += "</style></head><body>";
html += "<h1>NodeMCU LED Control</h1>";
// LED 1 Button
html += "<a href=\"/led1\"><button class=\"btn ";
html += (led1Status ? "on" : "off");
html += "\">LED 1</button></a><br>";
// LED 2 Button
html += "<a href=\"/led2\"><button class=\"btn ";
html += (led2Status ? "on" : "off");
html += "\">LED 2</button></a><br>";
// LED 3 Button
html += "<a href=\"/led3\"><button class=\"btn ";
html += (led3Status ? "on" : "off");
html += "\">LED 3</button></a><br>";
// LED 4 Button
html += "<a href=\"/led4\"><button class=\"btn ";
html += (led4Status ? "on" : "off");
html += "\">LED 4</button></a><br>";
html += "</body></html>";
server.send(200, "text/html", html);
}
// --- ボタンが押された時の処理 ---
void handleLed1() {
led1Status = !led1Status; // 状態を反転
digitalWrite(led1, led1Status);
server.sendHeader("Location", "/"); // ルートページにリダイレクト
server.send(302, "text/plain", "");
}
void handleLed2() {
led2Status = !led2Status;
digitalWrite(led2, led2Status);
server.sendHeader("Location", "/");
server.send(302, "text/plain", "");
}
void handleLed3() {
led3Status = !led3Status;
digitalWrite(led3, led3Status);
server.sendHeader("Location", "/");
server.send(302, "text/plain", "");
}
void handleLed4() {
led4Status = !led4Status;
digitalWrite(led4, led4Status);
server.sendHeader("Location", "/");
server.send(302, "text/plain", "");
}使い方
- Wi-Fi情報の設定:
- コード内の
YOUR_WIFI_SSIDをあなたのWi-FiのSSID(ネットワーク名)に書き換えてください。 YOUR_WIFI_PASSWORDをWi-Fiのパスワードに書き換えてください。
- コード内の
- Arduino IDEの設定:
- ボードマネージャーで「ESP8266」をインストールしてください。
- Arduino IDEのメニューから
ツール > ボードと進み、「NodeMCU 1.0 (ESP-12E Module)」を選択してください。 - 正しいCOMポートを選択してください。
- コードの書き込み:
- 上記のコードをNodeMCUに書き込みます。
- IPアドレスの確認:
- 書き込み後、Arduino IDEのシリアルモニタを開きます(ボーレートは115200)。
- NodeMCUがWi-Fiに接続すると、
IP address: xxx.xxx.xxx.xxxのようにIPアドレスが表示されます。このIPアドレスをメモしてください。
- スマホからの操作:
- スマートフォンをNodeMCUと同じWi-Fiに接続します。
- スマートフォンのブラウザを開き、アドレスバーに先ほどメモしたIPアドレスを入力します。
- ブラウザに4つのボタンが表示されます。各ボタンをタップすると、対応するLEDが点灯・消灯します。ボタンの色もON/OFFに合わせて変わります。
回路図
以下のようにNodeMCUとLEDを接続してください。各LEDには適切な抵抗(220Ω~330Ω程度)を直列に接続することを推奨します。
- LED 1: NodeMCUの D2 (GPIO4) ピン -> 抵抗 -> LED -> GND
- LED 2: NodeMCUの D1 (GPIO5) ピン -> 抵抗 -> LED -> GND
- LED 3: NodeMCUの D6 (GPIO12) ピン -> 抵抗 -> LED -> GND
- LED 4: NodeMCUの D7 (GPIO13) ピン -> 抵抗 -> LED -> GND



コメント