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?

ESP32-S3 IO を Python で簡単制御できる API を公開(USB/Wi‑Fi 共通)

0
Last updated at Posted at 2026-04-27

✨はじめに

前回の記事では、ESP32-S3 IO デバイスを USB / Wi‑Fi の両方で制御できる IoT デバイス として紹介しました。

👉 前回の記事(デバイス本体の紹介)
https://qiita.com/Noritama-Lab/items/6ef83d4e0636bb77aeb2

👉 デバイスのファームウェア(GitHub)
https://github.com/noritama-lab/esp32io-firmware

今回は、このデバイスを Python からもっと簡単に扱えるようにするため、Python API(esp32io-api)を Wi‑Fi 対応させて PyPI に公開しました。

👉 Python API(GitHub)
https://github.com/noritama-lab/esp32io-api

👉 PyPI(pip install できます)
https://pypi.org/project/esp32io/


🚀インストール(pip だけでOK)

pip install esp32io

USB でも Wi‑Fi でも 同じ API で扱えます。


✨できること

この Python API は、デバイスの JSON コマンドを Python メソッドとして扱えるようにしたものです。

  • ping(疎通確認)
  • デジタル入力 / 出力
  • ADC(アナログ入力)
  • PWM(周波数・分解能・Duty)
  • RGB LED(色・明るさ・モード)
  • システム情報取得
  • USB / Wi‑Fi の両対応

🔌USB(シリアル)で使う

from esp32io import ESP32S3IOSerial

# COM4は環境に合わせて修正
dev = ESP32S3IOSerial(port="COM4")

print(dev.ping())
dev.set_do(0, 1)
print(dev.read_adc(0))

📡Wi‑Fi(HTTP)で使う

from esp32io import ESP32S3IONet

# XXXXXXは環境に合わせて修正
dev = ESP32S3IONet(ip_address="ESP32_S3_IO_XXXXXX.local")
# dev = ESP32S3IONet(ip_address="192.168.X.X") # IPアドレスも可

print(dev.ping())
dev.set_do(0, 1)
print(dev.read_adc(0))

🧩内部構造(簡単に)

API は以下の2つのクラスで構成されています。

  • ESP32S3IONet(HTTP 経由)
  • ESP32S3IOSerial(USB シリアル経由)

どちらも共通の基底クラス ESP32S3IOBase を継承し、
command() → JSON → デバイス → JSON → Python dict
という流れで通信します。


🧾Python API のメソッド一覧

ESP32-S3 IO デバイスの JSON API に対応した高レベルメソッドです。

🔌 デジタル IO

  • read_di(pin_id) — デジタル入力を読む
  • set_do(pin_id, value) — デジタル出力を設定

📡 アナログ入力(ADC)

  • read_adc(pin_id) — ADC 値を取得

🔄 PWM

  • set_pwm(pin_id, duty) — PWM デューティ設定
  • get_pwm_config() — PWM 設定取得
  • set_pwm_config(freq, res_bit) — PWM 周波数・分解能設定

🌈 RGB LED

  • set_rgb(r, g, b, brightness=None) — RGB LED を点灯
  • led_off() — LED を消灯
  • set_led_mode(mode) — LED モード切替
  • get_led_state() — LED 状態取得

🧩 システム

  • ping() — 生存確認
  • get_status() — 稼働時間・メモリ・IP など取得
  • get_io_state() — 全 I/O 状態をまとめて取得
  • help() — デバイスがサポートするコマンド一覧を取得

🔗GitHub / PyPI


📝今後の予定

  • Python ロギングアプリ
  • GUI ツール(Tkinter / PySide)

✅まとめ

ESP32-S3 IO デバイスを Python から扱うための公式 API を公開しました。
Pythonで動かす場合、USB でも WiFi でも同じコマンドが使えるようになるので、ESP32-S3 に直接コマンド送信するより扱いやすくなると思います。

よかったら使ってみてください。

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?