📘 このシリーズのまとめ記事はこちら
👉 https://qiita.com/Noritama-Lab/items/cae87dc4cd67fe438c82
Excel を IoT のフロントエンドとして使えるのか?
その可能性を探るため、Excel VBA から ESP32-S3 の RGB LED を制御してみました。
🎥 動作デモ(YouTube)
Excel のセル色と明るさで ESP32-S3-DevkitC-1 の RGB LED を光らせるデモです。
✨ はじめに
以前の記事では、ESP32-S3 IO デバイスを USB / Wi‑Fi の両方で制御できる IoT デバイス として紹介しました。
👉 ESP32-S3 IO デバイスの紹介(以前の記事)
https://qiita.com/Noritama-Lab/items/6ef83d4e0636bb77aeb2
本来は Python API や Node-RED など、IoT らしい方向に進める予定でしたが…
「Excel のセル色で LED を光らせたら、現場でも使える UI になるのでは?」
というアイデアが浮かび、今回は Excel だけで完結する構成を試してみました。
Excel は
- 現場で圧倒的に普及している
- マクロで HTTP POST が叩ける
- JSON を組めば IO 制御が可能
- UI をシート上で自由に作れる
という強みがあり、
“現場向け IoT ダッシュボード” として非常に相性が良い という気づきがありました。
今回の RGB LED 制御は、その第一歩です。
💡 RGB LED(WS2812B)について
ESP32-S3-DevkitC-1 には WS2812B(NeoPixel 系) のアドレス指定 RGB LED が搭載されています。
- 1本のデータ線でフルカラー制御
- 1677万色
- PWM 内蔵でチラつきなし
- Python でも Excel でも同じ API で制御可能
つまり、
「Excel の色 → WS2812B → フルカラー LED」
という構成が実現できます。
🧪 動作イメージ
- A1 のセルに色を塗る
- B1 に明るさ(0〜255)を入力
- マクロを実行
- ESP32 の RGB LED が同じ色で光る
Excel の Interior.Color は BGR 形式なので、VBA 側で RGB に変換しています。
🧩 VBA コード(最小構成)
以下を標準モジュールに貼り付けて実行するだけで動きます。
使用する ESP32-S3-DevkitC-1 には、以前の記事で紹介した Wi‑Fi 対応版ファームウェアが書き込まれていることが前提です。
Option Explicit
' ====== 設定 ======
Const ESP32_URL As String = "http://192.168.X.X/api" ' ←環境に合わせて変更
' ====== メイン処理 ======
Sub SendA1ColorToESP32()
Dim c As Long
Dim r As Long, g As Long, b As Long
Dim brightness As Long
Dim json As String
Dim http As Object
' A1セルの色を取得(Color プロパティは BGR の順)
c = Range("A1").Interior.Color
' VBA の Color は BGR なので RGB に変換
r = c Mod 256
g = (c \ 256) Mod 256
b = (c \ 65536) Mod 256
' B1セルの明るさ(0〜255)
brightness = CLng(Range("B1").Value)
If brightness < 0 Then brightness = 0
If brightness > 255 Then brightness = 255
' JSON を作成(brightness も送る)
json = "{""cmd"":""set_rgb"",""r"":" & r & ",""g"":" & g & ",""b"":" & b & ",""brightness"":" & brightness & "}"
' HTTP POST で ESP32 に送信
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "POST", ESP32_URL, False
http.SetRequestHeader "Content-Type", "application/json"
http.Send json
' MsgBox "送信完了: R=" & r & " G=" & g & " B=" & b & " Brightness=" & brightness
End Sub
🔍 補足:Excel の Color は BGR
Excel の Interior.Color は BGR(青→緑→赤) の順なので、
RGB に変換する必要があります。
r = c Mod 256
g = (c \ 256) Mod 256
b = (c \ 65536) Mod 256
🚀 Excel から IO 制御できる可能性
今回の例は RGB LED ですが、ESP32-S3 IO デバイスは JSON で I/O を制御できるため、Excel から以下のような制御も可能です。
- デジタル出力(DO)
- デジタル入力(DI)読み取り
- ADC(アナログ入力)
- PWM 制御
- リレー制御
- センサー値の取得
- ロギング(Excel に書き込む)
つまり、
Excel を “現場向け IoT ダッシュボード” にできる
ということ。
Excel は
- UI が作りやすい
- 現場の人が慣れている
- マクロで HTTP が叩ける
- グラフも作れる
という強みがあるため、
IoT のフロントエンドとして非常に優秀 です。
🔗 関連リンク(本筋はこちら)
-
ESP32-S3 IO デバイス(紹介記事)
https://qiita.com/Noritama-Lab/items/6ef83d4e0636bb77aeb2 -
ファームウェア(GitHub)
https://github.com/noritama-lab/esp32io-firmware -
Python API(esp32io-api)
https://github.com/noritama-lab/esp32io-api
https://pypi.org/project/esp32io/
✅ まとめ
Excel のセル色と明るさを使って、
ESP32-S3 の RGB LED を光らせる最小構成のサンプルを紹介しました。
- A1 の色 → RGB
- B1 の値 → brightness
- JSON POST → ESP32
- LED が光る
という非常にシンプルな仕組みですが、
Excel を IoT の UI として使える可能性を感じる実験 になりました。
今後は本筋の IoT 記事に戻りつつ、
Excel 連携もさらに発展させていく予定です。
ぜひ試してみてください。
