0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel VBA から ESP32-S3 を HTTP 制御:セル色と明るさで RGB LED を操作する実装例

0
Last updated at Posted at 2026-04-30

📘 このシリーズのまとめ記事はこちら
👉 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 が搭載されています。

image.png

  • 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.ColorBGR(青→緑→赤) の順なので、
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 のフロントエンドとして非常に優秀 です。


🔗 関連リンク(本筋はこちら)


✅ まとめ

Excel のセル色と明るさを使って、
ESP32-S3 の RGB LED を光らせる最小構成のサンプルを紹介しました。

  • A1 の色 → RGB
  • B1 の値 → brightness
  • JSON POST → ESP32
  • LED が光る

という非常にシンプルな仕組みですが、
Excel を IoT の UI として使える可能性を感じる実験 になりました。

今後は本筋の IoT 記事に戻りつつ、
Excel 連携もさらに発展させていく予定です。

ぜひ試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?