ESP32にWLEDを導入:コードを書かずにアドレサブルLEDを制御
WLEDの導入をステップごとに解説します。Webインストーラー、Wi-Fi、LEDの数とピンの設定、エフェクトとプリセット、追加給電、音楽に反応する照明、Home Assistantとの連携を紹介します。
WLEDの導入は、コードを1行も書かずにESP32をWi-Fi LEDコントローラーにする最も手軽な方法です。WLEDは、WS2812BなどのアドレサブルLEDテープ、リング、マトリクスを駆動するための無料のオープンソースファームウェアです。ブラウザーから数回クリックするだけでボードに書き込めます。その後はスマートフォンやコンピューターから、100種類以上のエフェクト、数十種類のカラーパレット、タイマー、音楽に反応するアニメーションを選べます。テレビ背面の間接照明、棚の照明、階段の照明、クリスマスの飾りも、すべて同じ構成で動かせます。
このガイドでは、ESP32、LEDテープ、電源を正しく配線し、WebインストーラーでWLEDをインストールし、最初のWi-Fi接続とLEDの数、データピン、色の順番を設定するまでをステップごとに説明します。続いて、エフェクト、パレット、セグメント、プリセットの使い方、電力の計算と長いテープへの追加給電、I2Sマイクによる照明と音楽の同期、Home Assistantとの連携を学びます。最後に、別のESP32とRaspberry Pi Pico WからJSON API経由でWLEDを制御する2つの短いプログラムと、よくある問題の対処法を紹介します。

WLEDとは?何ができる?
通常、アドレサブルLEDを駆動するには、Arduino IDEでAdafruit NeoPixelやFastLEDを使ってコードを書き、変更のたびにボードへ書き込み直します。WLEDではこの使い方が大きく変わります。ボードへの書き込みは一度だけで、以降の設定、エフェクト、スケジュールはすべてボード自身のWebインターフェースで操作します。ESP32が自宅のWi-Fiに接続してWebサーバーを動かし、同じネットワーク上のどの端末からでもブラウザーやスマートフォンアプリでアクセスできます。設定はボードのフラッシュメモリに保存されるので、停電後も照明はそれまでの状態から動作を再開します。
- 対応LED:WS2812B、WS2811、WS2813、WS2815、SK6812(RGBWを含みます)、TM1814、およびAPA102やSK9822などのクロック付きLEDに対応します。
- エフェクトとパレット:100種類以上の内蔵エフェクトと70種類以上のカラーパレットがあり、各エフェクトを速度と強度のスライダーで調整できます。
- セグメント:1本のテープを複数の区間に分け、それぞれに別のエフェクトと色を設定できます。
- プリセットとプレイリスト:気に入った見た目を保存してワンタップで呼び出したり、順番に切り替わるリストを作ったりできます。
- タイマー:指定時刻、日の出、日の入りに照明をオンまたはオフにでき、スリープタイマーも使えます。
- 連携:Home Assistant、MQTT、Alexa、E1.31、Art-Netを通じて、ネットワーク上のほかのシステムと通信できます。
必要なもの
| 品目 | 推奨品 | 補足 |
|---|---|---|
| コントローラー | ESP32開発ボード(ESP32-WROOM、ESP32-S3またはC3) | USBデータ通信用ケーブルも必要です |
| LED | WS2812Bテープ、リング、またはマトリクス(5 V) | 12 VのWS2811とWS2815にも対応します |
| 電源 | 5 V、LEDの数に応じて3〜20 A | 詳細は電源のセクションを参照してください |
| 直列抵抗 | 220〜470 Ω | 最初のLEDに近いデータ線上に入れます |
| コンデンサ | 1000 µF、耐圧10 V以上 | テープ入力側の5 VとGNDの間に接続します |
| レベル変換IC(推奨) | 74AHCT125または74HCT125 | 3.3 Vのデータ信号を5 Vに変換します |
| マイク(任意) | INMP441 I2Sマイクモジュール | 音楽に反応するエフェクト用です |
対応ボードについて:WLEDはESP8266搭載ボード(NodeMCU、Wemos D1 mini)でも動きます。ただし、メモリと処理能力の制約が大きいため、扱えるLEDの数は少なく、音楽に反応する機能はESP32にしかありません。そのため、新しいプロジェクトにはESP32をおすすめしており、このガイド全体もESP32を対象にしています。Raspberry Pi PicoではWLEDは動きません。PicoでアドレサブルLEDを駆動するには、MicroPythonのneopixelモジュールを使うか、以下のJSON APIの例のようにPico WからWLEDを実行しているESP32を遠隔制御できます。
配線:ESP32、LEDテープ、電源
| 接続内容 | 接続元 | 接続先 | 補足 |
|---|---|---|---|
| LEDの電源 | 電源の+5 V | テープの5V(+)パッド | ESP32を経由せず直接接続します |
| グランド | 電源のGND | テープのGNDとESP32のGND | 共通GNDが必須です |
| ESP32の電源 | 電源の+5 V | ESP32のVIN(5V)ピン | 書き込み中はUSB給電で十分です |
| データ | ESP32のGPIO 16 | 220〜470 Ω → テープのDIN | 必要に応じて74AHCT125を経由させます |
| コンデンサ | テープ入力側の5 V | テープ入力側のGND | 1000 µF、プラス端子を5 Vに接続します |
WebインストーラーでWLEDをインストール
WLEDのインストールにArduino IDEやほかのプログラムは必要ありません。公式Webインストーラー(install.wled.me)は、ブラウザーのWeb Serial機能を使ってESP32に直接接続し、ボードのチップを検出して対応するファームウェアを書き込みます。Chrome、Edge、Operaなど、Chromiumベースのデスクトップブラウザーで利用できます。FirefoxとSafariは現時点ではWeb Serialに対応していません。コンピューター上でボードをシリアルポートとして認識させるには、CP210xまたはCH340のドライバがインストールされている必要があります。
- データ通信に対応したUSBケーブルでESP32をコンピューターに接続します。LEDテープはまだ接続しなくてもかまいません。
- ChromeまたはEdgeでWLEDのWebインストーラーを開きます。バージョン一覧から最新の安定版を選んでください。ベータ版はテスト用です。
- Installボタンを押します。開いたウィンドウでボードのポート(WindowsではCOM3、macOSではcu.usbserial...やcu.wchusbserial...など)を選び、Connectをクリックします。
- インストーラーがチップを検出したら、Install WLEDを選んで進めます。以前に別のプログラムで使っていたボードでは、「Erase device」でメモリを消去すると、古い設定の混入を防げます。
- 書き込みには約1分かかります。書き込みが始まらない場合は、ESP32のBOOTボタンを押したまま、もう一度試してください。
- インストールが完了すると、Wi-Fiの情報を求められます。ネットワーク名とパスワードを入力してConnectをクリックし、表示されたVisit DeviceリンクからWLEDのインターフェースを開きます。
最初のWi-Fi設定
インストーラーでWi-Fiの設定を省略した場合や、ボードがネットワークに接続できない場合、WLEDは独自のアクセスポイントを起動します。スマートフォンをWLED-APというネットワークに接続してください。初期パスワードはwled1234です。多くのスマートフォンでは設定ページが自動で開きます。開かない場合はブラウザーに4.3.2.1と入力してください。WiFi Setupページで自宅のネットワーク名とパスワードを入力して保存し、ボードの再起動を待ちます。ESP32は2.4 GHzのWi-Fiにのみ対応します。ルーターが2.4 GHzと5 GHzで同じネットワーク名を使っていても通常は問題ありませんが、5 GHzのみのネットワークには接続できません。接続後は、ルーターの接続端末一覧やWLEDアプリの自動検出で、ボードのIPアドレスを確認できます。安全のため、同じページでアクセスポイントのパスワードも変更しておくとよいでしょう。
LEDの数、データピン、色の順番
- WLEDのインターフェースでConfigメニュー(歯車アイコン)を開き、LED Preferencesへ進みます。
- LED outputsでLEDの種類を選びます。WS2812Bには「WS281x」、RGBWテープには「SK6812/WS2814 RGBW」を選びます。
- WS2812BではColor OrderをGRBに設定します。色が正しく出ない場合は、正しい色になるまでこの項目を変更してください。
- Lengthにテープ上のLEDの数を入力します(例えば60 LED/mのテープを1 m使う場合は60です)。
- GPIOにデータ線を接続したピン番号を入力します(このガイドでは16です)。GPIO 6〜11はフラッシュメモリ用、34〜39は入力専用なので、使わないでください。
- Maximum Current(自動輝度制限)には、電源が供給できる電流の約80%をmA単位で入力します。5 V 4 Aの電源なら3200です。
- ページ下部のSaveを押します。メイン画面に戻って色を選ぶと、テープ全体がその色で点灯するはずです。
| LEDの種類 | 電源 | WLEDでの種類 | 一般的な色の順番 | 補足 |
|---|---|---|---|---|
| WS2812B | 5 V | WS281x | GRB | 最も一般的で、データ線は1本です |
| SK6812 RGBW | 5 V | SK6812/WS2814 RGBW | GRBW | 独立した白色LEDを備えるテープです |
| WS2811 | 12 V | WS281x | BRGまたはRGB | 3個のLEDが1ピクセルとして動作します |
| WS2815 | 12 V | WS281x | GRB | 予備のデータ線があり、LEDが1個故障してもテープは動作を続けます |
| APA102 / SK9822 | 5 V | APA102 / SK9822 | BGR | データとクロックの2本の線を使い、非常に高速です |
エフェクト、パレット、セグメント、プリセット
WLEDのメイン画面は3つの部分で構成されています。上部に色の選択と明るさ、中央にエフェクト一覧、その横にパレット一覧があります。エフェクト(例えばRainbow、Fire 2012、Twinkle)を選ぶと、その下のSpeedとIntensityスライダーで速度と密度を調整できます。パレットはエフェクトが使う色の組み合わせを決めます。同じ「Colorwaves」でも、「Ocean」パレットなら青い波、「Lava」なら赤い炎のように見えます。自分で選んだ色をエフェクトに使いたい場合は、「Default」や「Color 1」などのパレットを選んでください。
- セグメント:Segmentsでテープを区間に分けます。例えばLED 0〜29を青くゆっくり明滅させながら、30〜59に虹色を流せます。各セグメントは独自のエフェクト、パレット、明るさ、方向を持ちます。
- プリセット:Presetsで気に入った見た目に名前を付けて保存します。プリセットにはエフェクト、色、セグメント、明るさがまとめて保存され、ワンタップで呼び出せます。
- プレイリスト:複数のプリセットを、指定した時間ずつ順番に繰り返すリストを作れます。ショーウィンドウやパーティーの照明に最適です。
- タイマー:Config > Time & Macrosページでタイムゾーンを設定すると、指定時刻、日の出、日の入りにプリセットを実行できます。
- ナイトライト:月のボタンを押すと、指定した時間をかけてゆっくり暗くなり、消灯します。子ども部屋に便利です。
- 同期:同じネットワーク上の複数のWLEDデバイスをUDPで連携させ、同じエフェクトを同時に再生できます。
スマートフォンアプリ
インターフェースはどのブラウザーでも使えますが、日常的に使うなら、iOSとAndroid向けの無料WLEDアプリが便利です。アプリは同じネットワーク上のWLEDデバイスを自動で検出して一覧表示し、タップするとそのボード自身のインターフェースを開きます。リビング、キッチン、階段など、複数のデバイスがあっても1つの画面から操作できます。一覧にデバイスが表示されない場合は、スマートフォンとESP32が同じネットワークに接続されているか確認するか、IPアドレスを手動で追加してください。アプリは操作画面にすぎないため、照明を動かすためにスマートフォンを起動したままにする必要はありません。タイマーとプリセットはESP32の内部で動き続けます。
電源容量と追加給電

WS2812Bには赤、緑、青の小さなLEDが3個入っており、それぞれ最大輝度で約20 mAを消費します。したがって、1ピクセルを最大輝度の白色にするには約60 mAが必要です。これは最大消費時の値で、色の付いたエフェクトを中程度の明るさで使う場合、実際の消費電流はその約3分の1になることがよくあります。WLEDのMaximum Current設定(自動輝度制限)は、各フレームの消費電流を計算し、上限を超える場合は自動的に明るさを下げます。この機能により、300個のLEDを持つテープも5 V 10 Aの電源で安全に動かせます。最大輝度の白色だけが少し暗くなります。初期設定の上限はUSB給電時のボードの安全を保つため低くなっているので、外部電源に切り替えたら必ず変更してください。
| LEDの数 | 例 | 最大消費時(最大輝度の白色) | 推奨電源 | Maximum Current(最大電流) |
|---|---|---|---|---|
| 30 | 60 LED/mのテープを0.5 m | 1.8 A | 5 V 3 A | 2400 mA |
| 60 | 60 LED/mのテープを1 m | 3.6 A | 5 V 4 A | 3200 mA |
| 150 | 30 LED/mのテープを5 m | 9 A | 5 V 10 A | 8000 mA |
| 300 | 60 LED/mのテープを5 m | 18 A | 5 V 20 A(明るさを制限するなら10 Aでも可) | 16000 mA(または8000 mA) |
- 電圧降下:5 Vテープの銅配線パターンは細いため、電流が増えるほどテープの末端に向かって電圧が下がり、白が黄色やピンクがかって見えます。通常、1〜2メートル(60〜120個のLED)を超えると起こり始めます。
- 追加給電:電源から5 VとGNDの配線を別途引き、テープの1〜2メートルごとに銅パッドへはんだ付けします。長いテープの両端から給電する方法も効果的です。データ線は先頭にだけ接続し、追加給電の配線は5 VとGNDだけです。
- 電線の太さ:数Aなら最低0.75〜1 mm²(約18 AWG)、10 A以上なら1.5 mm²を使ってください。テープに付属する細いリード線は、短いテープ用です。
- ヒューズ:給電する各経路の電源とテープの間に、電線の許容電流に合った定格のヒューズを入れてください。短絡時に電線が焼けるのを防ぎます。
- 12 Vという選択肢:非常に長く設置する場合、WS2815などの12 Vテープなら同じ電力で電流が3分の1になり、電圧降下の影響を大幅に減らせます。
- 計算ツール:電池やモバイルバッテリーで持ち運べる構成を作る場合は、電池寿命計算ツールで動作時間を求めてください。
マイクで照明を音楽に同期
ESP32向けのWLEDビルドにはAudioReactiveアドオンが内蔵されています。マイクを接続していくつか設定を変えると、音楽のリズムや周波数に合わせてエフェクトが動きます。最も良好な結果が得られるのは、デジタルI2SマイクのINMP441です。信号をデジタルで送るので、アナログマイクのノイズやゲインの問題を避けられます。MAX9814やMAX4466などのアナログマイクモジュールも、ADC1ピン(例えばGPIO 36)につなげば使えますが、調整に手間がかかります。KY-038などのサウンドセンサーは音の有無しか分からないため、この用途には適していません。
| INMP441のピン | ESP32 | 補足 |
|---|---|---|
| VDD | 3V3 | 3.3 Vのみ |
| GND | GND | 共通GND |
| L/R | GND | 左チャンネルを選択します |
| SD(データ) | GPIO 32 | WLEDのI2S SDピン |
| WS(ワード選択) | GPIO 15 | WLEDのI2S WSピン |
| SCK(クロック) | GPIO 14 | WLEDのI2S SCKピン |
配線後、Config > UsermodsページでAudioReactiveを有効にし、マイクの種類を「Generic I2S」に設定して、表のとおりにSD、WS、SCKのピン番号を入力します。保存してボードを再起動すると、エフェクト一覧で音に反応するエフェクトが分かるようになります。最初はGEQ、Gravimeter、Waterfallが試しやすいでしょう。音がないのに照明が細かく動く場合はSquelch値(ノイズのしきい値)を上げ、音楽への反応が弱い場合はGainを上げてください。マイクはスピーカーの真正面ではなく、部屋全体の音を拾える場所に置くと、最もバランスよく反応します。
Home Assistantとの連携
Home AssistantにはWLED連携機能が組み込まれており、通常は同じネットワーク上のWLEDデバイスを自動で検出します。「新しいデバイスが見つかりました」という通知が出たら、承認するだけです。出ない場合は設定 > デバイスとサービス > 統合を追加からWLEDを選び、デバイスのIPアドレスを入力してください。連携により、テープと各セグメントが個別の照明として、プリセット、プレイリスト、パレットが選択ボックスとして、速度と強度がスライダーとして追加されます。これで「日没時にリビングのテープを暖かい白色にする」「ドアが開いたら廊下を照らす」といった自動化を数回のクリックで設定できます。MQTTを使いたい場合は、WLEDのSync InterfacesページからMQTTブローカーに接続することもできます。Home AssistantでのMQTTの使い方は、ESP32、MQTTとHome Assistantの記事で解説しています。
コードからWLEDを制御:JSON API
WLEDはコードなしで動きますが、別のデバイスから制御したい場合は、単純なHTTPリクエストで十分です。デバイスの/json/stateアドレスへ送るJSONメッセージで、照明の状態を変えられます。{"on":"t"}はオンとオフを切り替え、{"bri":128}は明るさを半分にし、{"ps":2}は2番のプリセットを実行します。メッセージに"v":trueを加えると、WLEDは現在の状態を返します。以下の最初のプログラムは、別のESP32に接続したボタンでWLEDの最初の3つのプリセットを順番に切り替えます。2つ目はRaspberry Pi Pico WとMicroPythonで同じ処理を行います。どちらも、自分のネットワーク情報とWLEDデバイスのIPアドレスを入力してください。
1// İkinci bir ESP32'den WLED preset değiştirme (JSON API) / Switch WLED presets from a second ESP32 (JSON API)
2// Buton: GPIO 4 -> GND (dahili pull-up) / button: GPIO 4 -> GND (internal pull-up)
3#include <WiFi.h>
4#include <HTTPClient.h>
5
6const char* WIFI_SSID = "AgAdi"; // ağ adı / network name
7const char* WIFI_PASS = "Sifre"; // ağ şifresi / network password
8const char* WLED_URL = "http://192.168.1.50/json/state"; // WLED cihazının IP'si / IP of the WLED device
9const int BUTTON_PIN = 4;
10
11int preset = 1;
12bool lastState = HIGH;
13
14int sendJson(const String& body) {
15 HTTPClient http;
16 http.begin(WLED_URL);
17 http.addHeader("Content-Type", "application/json");
18 int code = http.POST(body); // 200 = başarılı / success
19 http.end();
20 return code;
21}
22
23void setup() {
24 Serial.begin(115200);
25 pinMode(BUTTON_PIN, INPUT_PULLUP);
26 WiFi.begin(WIFI_SSID, WIFI_PASS);
27 while (WiFi.status() != WL_CONNECTED) {
28 delay(300);
29 Serial.print('.');
30 }
31 Serial.print("\nIP: ");
32 Serial.println(WiFi.localIP());
33}
34
35void loop() {
36 bool state = digitalRead(BUTTON_PIN);
37 if (lastState == HIGH && state == LOW) { // butona basıldı / button pressed
38 String body = "{\"on\":true,\"ps\":" + String(preset) + "}";
39 int code = sendJson(body);
40 Serial.printf("Preset %d -> HTTP %d\n", preset, code);
41 preset = preset % 3 + 1; // 1 -> 2 -> 3 -> 1
42 delay(50); // basit debounce / simple debounce
43 }
44 lastState = state;
45}1# Raspberry Pi Pico W: butonla WLED aç/kapat (JSON API) / toggle WLED with a button (JSON API)
2# Buton: GP14 -> GND (dahili pull-up) / button: GP14 -> GND (internal pull-up)
3import network
4import time
5import urequests
6from machine import Pin
7
8SSID = "AgAdi" # ağ adı / network name
9PASSWORD = "Sifre" # ağ şifresi / network password
10WLED_URL = "http://192.168.1.50/json/state" # WLED cihazının IP'si / IP of the WLED device
11
12button = Pin(14, Pin.IN, Pin.PULL_UP)
13
14wlan = network.WLAN(network.STA_IF)
15wlan.active(True)
16wlan.connect(SSID, PASSWORD)
17while not wlan.isconnected():
18 time.sleep(0.3)
19print("IP:", wlan.ifconfig()[0])
20
21last = 1
22while True:
23 now = button.value()
24 if last == 1 and now == 0: # butona basıldı / button pressed
25 r = urequests.post(WLED_URL, json={"on": "t", "v": True})
26 state = r.json() # güncel durum / current state
27 r.close()
28 print("Acik / On:", state["on"], " Parlaklik / Brightness:", state["bri"])
29 time.sleep_ms(50) # basit debounce / simple debounce
30 last = now
31 time.sleep_ms(10)どちらのプログラムも、1回のボタン操作でリクエストを1回だけ送るために、現在の状態と前回の状態を比較しています。50 msの待ち時間はボタンの機械的なチャタリングを抑えます。実際のプロジェクトでは、ルーターでWLEDデバイスに固定IPアドレスを割り当てるか、WLEDのインターフェースで確認できるmDNS名を使うとよいでしょう。停電してルーターが再起動すると、IPアドレスが変わることがあるためです。同じ方法で、人感センサーが反応したら階段の照明をつけたり、LDRが暗くなったことを検出したら夜間用プリセットに切り替えたり、温度の測定値に応じてテープの色を変えたりできます。
よくある問題と対処法
| 症状 | 考えられる原因 | 対処法 |
|---|---|---|
| 最初のLEDが点灯しない、または不規則な色になり、残りは正常です | 最初のLEDの破損、または3.3 Vのデータ信号が動作限界に近い状態です | 最初のLEDを切り離してください。データ線に220〜470 Ωと74AHCT125を追加してください |
| LEDがまったく点灯しません | データ線をDOUT側に接続している、GPIOが間違っている、またはGNDが共通になっていません | 矢印が始まる側のDINを使い、GPIO設定とGNDを確認してください |
| 赤を選ぶと緑に点灯します | 色の順番が間違っています | LED PreferencesでColor OrderをGRBまたはRGBに設定してください |
| テープの一部しか点灯しません | Lengthの値がLEDの数より小さくなっています | Lengthに実際のLEDの数を入力してください |
| テープの末端が黄色やピンクがかって見えます | 電圧降下です | 1〜2メートルごとに追加給電してください |
| 明るくするとESP32が再起動します | 電源容量が不足し、電圧が大きく低下しています | 容量の大きい電源を使い、Maximum Currentを下げてください |
| インストール後にデバイスがネットワークに現れません | パスワードが間違っているか、5 GHzのみのネットワークです | WLED-APに接続し、4.3.2.1でWi-Fiを再設定してください |
| LEDがちらついたり、不規則に点滅したりします | GNDが共通になっていないか、データ線が長すぎます | GND同士を接続し、ESP32をテープの近くに置くか、レベル変換ICを使ってください |
WLEDは、アドレサブルLEDを楽しく扱える方法の1つです。設定は数分で済み、コードを書かずに本格的なエフェクトを作れ、必要になればJSON APIで自作のプロジェクトと連携できます。コードでLEDを駆動する仕組みを学びたい場合は、BlueGraysアプリの「ESP32でWS2812B NeoPixelテープを制御」や、WS2812Bを使った流れるLED、ナイトライダー、警察車両風点滅のプロジェクトを、回路図と用意されたコードでステップごとに作れます。
よくある質問
WLEDとは何ですか?無料ですか?
WLEDは、アドレサブルLEDをWi-Fi経由で制御するESP32とESP8266向けのオープンソースファームウェアです。完全に無料で、スマートフォンアプリも無料です。一度ボードに書き込めば、コードを書かずにブラウザーやアプリからエフェクト、色、タイマーを設定できます。
WLEDはどのボードで動きますか?
WLEDはESP32ファミリー(ESP32、ESP32-S2、S3、C3)とESP8266搭載ボードで動きます。音楽に反応する機能や、より多くのLEDを使う場合はESP32がおすすめです。Arduino UnoとRaspberry Pi PicoにはWi-Fi対応のESPチップがないため、WLEDは動きません。ただしPico Wからは、JSON APIを通じてWLEDデバイスを遠隔制御できます。
WLEDで何個のLEDを制御できますか?
1個のWS2812B LEDへのデータ送信には約30マイクロ秒かかるため、1000個のLEDを持つテープの更新速度は最大でも毎秒約30フレームです。ESP32では、1つの出力で数百個から1000個のLEDが滑らかに動作します。それ以上は複数の出力(異なるGPIO)にLEDを分けます。実際には、電源と配線が制約になることがほとんどです。
WLEDのインストールにArduino IDEは必要ですか?
いいえ。ChromeやEdgeで公式Webインストーラーを開けば、数回のクリックでWLEDをボードに書き込めます。Arduino IDEやほかのプログラムは不要です。コンピューターでボードを認識させるには、データ通信に対応したUSBケーブルと、CP210xまたはCH340のドライバがあれば十分です。
WLEDはインターネットなしでも使えますか?
はい。WLEDはローカルネットワークで動き、インターネット接続は不要です。ネットワーク自体がない場合は、独自のWLED-APアクセスポイントを起動するので、スマートフォンから直接接続できます。時刻指定のタイマーや日の出、日の入りの設定を使う場合だけ、ボードがインターネットから時刻を取得する必要があります(NTP)。
WLEDを工場出荷時の設定に戻すには?
WLEDのインターフェースで、Config > Security & Updatesページの工場出荷時設定へのリセットを選ぶと、すべての設定が消去されます。インターフェースにアクセスできない場合は、Webインストーラーを再度開き、「Erase device」を選んでWLEDを最初からインストールし直してください。リセット後はボードがWLED-APアクセスポイントを起動するので、Wi-Fiを再設定します。
この記事を読んだ後に作れるプロジェクト
全プロジェクトを見る
ESP32でLEDを点滅
ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。

ESP32 WS2812B NeoPixel LEDテープの制御
WS2812B(NeoPixel)は、1本のデータピンで連結したLEDを個別に制御できるスマートなRGB LEDです。このプロジェクトでは、8個のLEDを備えたWS2812BテープをAdafruit_NeoPixelライブラリで制御し、滑らかな虹色のアニメーションを作ります。ESP32の3.3VロジックレベルはほとんどのWS2812Bのロットで問題なく動作しますが、不安定な場合に備え、470Ωの直列抵抗と1000µFのコンデンサを使う対策も紹介します。アニメーションは、HSV色空間の色相(hue)をずらして作ります。

WS2812B LEDテープの使い方
1つずつ自由に色を変えられるスマートLEDテープを使ってみます。Arduinoが最初の5個のLEDを赤く点灯し、1秒後に残りの5個を青く点灯します。その後すべて消灯し、最初から繰り返します。1本の配線で何十個ものLEDを個別の色にするための第一歩です。このようなテープは、装飾用のライトや部屋の照明にも使われています。

WS2812Bで作るパトカー風ライト
パトカーの屋根にある赤と青の点滅灯を、机の上で再現します。10個のLEDを備えたWS2812Bテープの半分が赤で素早く3回点滅し、続いて残りの半分が青で3回点滅します。このパターンを繰り返し続けます。1本のデータ線につながったカラーLEDを、それぞれ好きな色に設定する方法がわかります。

WS2812Bで流れるLED
10個のLEDが並ぶテープで、緑の光が端から端へ1個ずつ進み、最後まで来ると先頭に戻ります。各LEDは3分の1秒ずつ点灯します。WS2812Bテープでは、1本のデータ線で各LEDを個別に制御でき、Arduinoへの接続も3本の配線だけで済みます。カラフルなLEDテープを使う第一歩です。

WS2812Bのナイトライダー風ライト
スマートLEDテープの赤い光が端から端へ移動して戻り、往復を繰り返し続けます。Arduinoは各ステップで1個のLEDだけを点灯し、0.1秒待ってから隣へ移ります。6個の個別のLEDと何十本もの配線を使う代わりに、1本のテープと1本のデータ線で同じ流れる光を実現できます。

WS2812Bアニメーション1
56個のLEDが並ぶテープで、虹のすべての色が隣り合って途切れずに流れます。まるで光の川がテープの上を流れるようです。各LEDは1つ前のLEDと少し違う色に光り、色が移り変わるたびにテープが生き生きと見えます。部屋や机を彩る、いちばん手軽な方法です。

ESP32でRGB LEDを制御
3個の個別のLEDの代わりに、1個のRGB LEDで無数の色を作ります。Arduinoと同じようにanalogWrite()でR/G/Bの値を調整し、虹色に変化させます。赤と緑を混ぜると黄色になるなど、色の仕組みを実際に確認できます。
ほかの記事
BlueGraysアプリ
この回路をスマホでステップごとに作る
回路図、コード、部品リストを1つの画面で確認できます。Arduino、ESP32、Picoのプロジェクトを200件以上用意しています。

