ESP32でWLEDを動かしLEDマトリクスを光らせよう
WLED
LEDコントローラーとしてWLEDを使ってみます。WLEDはESP8266、ESP32で動くLEDコントローラーです。ESP32のWiFiを使ってLEDをコントロールします。
Aircoookie/WLEDControl WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi!
ESP32
ESP32はWiFiとBluetoothが付いているワンチップマイコンです。大きな外付け部品無しでWiFiとBluetoothが使え価格も安くIoTを始めるならコレ!というようなマイコンです。
初めて使おうとするとESP32関連の名称がややこしいです。
ESP32とはICチップ自体の名称です。WiFi・Bluetoothのアンテナが付いていません。
ESP32にWiFi・Bluetoothアンテナを付けた物はESP-WROOM-32となります。これで電波が出るようになるので日本で使うには技適が必要です。
ESP-WROOM-32にUSB端子と電圧変換回路を付けた開発ボードがあります。これはESP32-DevKitC-32などと呼びます。ESP32で電子工作といえばDevKitCの事を指すことが多いでしょう。開発ボードと言う呼び方をしている物を使わないとPCとつなぐのは大変です。
また、開発ボードに乗せているESP-WROOM-32に技適マークが無い物もあるようです。確実に技適マークがあるものを買うには大手の電子パーツ通販サイトで買いましょう。
M5Stackと言う小さなモニタとSDメモリーカードが使えるものもあります。
ESP8266というBluetoothとCPUを省いた少し安く小さいモデルもありますが、日本ではESP32と値段が変わりません。ESP32を買っておけばいろいろ使いまわしができるでしょう。
ESP32には脆弱性が発見されています。仕事で使う場合はESP32Eを使いましょう。
PlatformIO
WLEDをESP32用にコンパイル・ビルドするのに使う開発環境が必要です。この記事公開時点ではPlatformIOを使いましょう。Arduino IDEという開発環境を流用できますが今では古い方法です。新しく始めるならPlatformIOで勉強しましょう。
PlatformIOはVisual Studio Codeの拡張機能としてインストールできます。Visual Studio Codeはマイクロソフトのコードエディタです。今どきはVS Code以外のエディタを使う理由はありません。
PlatformIO環境の作り方はいくらでも見つかるでしょうからここで説明はしません。ただインストールするだけでできますから難しくありません。
ESP32-DevKitCとパソコンをつなぐ
ESP32-DevKitCのUSB端子とパソコンをつなぐとESP32へ電源が供給されます。また、パソコンでは新しいシリアルデバイスが認識されます。ドライバが入っていないでしょうからドライバをインストールします。SILICON LABSのページからダウンロードします。
git client
git clientをインストールします。gitが何かの説明はしません。GitHubのプロジェクトをダウンロードするのに使います。
WLEDのビルド
WLEDをPlatformIOでビルドします。手順はここに書いてある通りです。
WLEDのプロジェクトをクローンします。
ESP32を使うのでplatformio.iniのdefault_envを変更します。
default_envs = travis_esp8266, travis_esp32
とある行をコメントアウトします。行頭にセミコロンを置くだけです。
ESP32は
default_envs = esp32dev
を使います。行頭のセミコロンを削除します。
保存してビルドします。
WLEDの書き込み
ビルドしてできたバイナリをESP32へ書き込みます。
VS Codeなら簡単です。"→"アイコンを押すだけです。シリアルポート番号も自動で認識されます。
特に書き込みモードとかを意識しなくて済むよう自動的に書き込みモードになりますが、Windowsの場合はうまく行かない場合があるようです。書き込み中、”Connecting..."で失敗します。
こんな時は”Connecting..."と表示されたらESP32-DevKitCのBootボタンを押しっぱなしにします。
WLEDの画面
WLEDをESP32へ書き込めばもう動き始めています。ですがESP32-DevKitCをいくら眺めても何も動いていません。WLEDはWEBベースで動きます。
スマートフォンなどでWiFiを検索してみましょう。
WLED-APというアクセスポイントが見つかるはずです。WLEDはWiFiアクセスポイントとして動いています。
このアクセスポイントに接続します。スマホでもいいです。初期パスワードは"wled1234"です。接続したらブラウザで
を開きます。
アクセスポイントのまま使うこともできます。外へ持ち出してLEDを光らせたい時にはその方が良いですね。パスワードは変更しておきましょう。でも、ほとんどの場合は自宅のWiFiにつながっていないと不便です。WiFiの設定で自宅WiFiのSSIDとパスワードを設定するとWiFiクライアントとして動きます。アクセスポイントではなくなります。
WiFiクライアントの場合はESP32に割り当てられたIPアドレスを確認してください。そのIPアドレスをブラウザで見ればコントロール画面が表示されてるでしょう。
WS2812B LEDテープ
今回使うのはWS2812BというアドレサブルRGB LEDテープです。
このLEDテープをESP32のGPIOポートにつなぎます。WLEDのデフォルトではGPIO16を使います。
GPIO16といってもESP32-DevKitCではどのピンなのかがわかりませんね。ESP32-DevKitCのピンレイアウトを確認します。
Pin Layout / ESP32-DevKitC V4 Getting Started Guide
ESP32-DevKitCのUSB端子側のピンに!が付いています。このピンは使えません。
GPIO16は12番ピンだとわかります。
このまま使っても良いし、違うGPIOを割り当てることもブラウザから指定できます。
ESP32で同じようにWLEDをインストールしようとしています
返信削除ビルドは難しいのでhttps://install.wled.me/
でインストールしています、最初はスマホにWLED-APが表示がされて
クリックしてインストールボタンを押しましたが最後のwwwに到達できませんとerrorになります?ESP32に書き込みができないとのエラーメツセージでしょうか?
書き込み時bootボタンを押して・・・とありますのでコンデンサー(50V/10μF)をハンダ付けしてあります
再度最初からインストールをしましたが、今度は
スマホ(Android)の利用可能なネツトワークにWLED-APが表示されなくなってしまいました?
PCで先にインストール処置してPC画面にWLEDはPCモードになっていますので
念のためLEDマトリツクスに接続してみましたが光りません
やはりESP32ボードに書き込みができていないからでしょうね
念のため最初からインストール作業してみましたが、やはりスマホにWLED-APが表示がありません?
ご教授おねがいしたいのですが返信お願いします
コメントありがとうございます。返信が遅れてごめんなさい。
削除WLED-APが表示されたということは一度はインストールはできたということでしょう。インストールされなければアクセスポイントは表示されないでしょう。表示されなくなったならプログラムは消えているのでしょう。
書き込みができていいない場合は 転送ボーレートを変えたりします。
互換ESP32チップによっても症状が変わります。WLEDのバージョンを少し前のもので試したりします。
似た症状はよくissueに上がります。新しいボードが出てくるので定期的に上がりますね。
https://github.com/Aircoookie/WLED/issues/2874