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 プラットフォーム(USB / Wi‑Fi 対応)

0
Last updated at Posted at 2026-06-28

この記事では、ESP32-S3 を使った 24V 対応 I/O デバイス「ESP32IO」の完成版アップデート内容をまとめています。

  • DI/DO の絶縁化(フォトカプラ方式)
  • ADC の安定化(オペアンプバッファ)
  • I2C センサ対応(BME280 / MPU6050 / VL53L1X / OLED)

あらゆるソフトから制御できる I/Oプラットフォーム として完成しました。

これまでの開発記事はこちらにまとめてあります
👉 https://qiita.com/Noritama-Lab/items/cae87dc4cd67fe438c82

📸 完成品の外観

image.png

※今回から ESP32-S3-DevkitC-1 を ESPRESSIF の正規品に変更しています。設計した基板は 44 ピンのものなら互換品にも対応しています。使用する場合は、ファームウェア(Config.h)のピン番号だけ開発ボードに合わせて変更してください。

image.png

🔄 以前からの変更点(最終版で改善したポイント)

今回の完成版では、試作段階から以下の 3 点を大きく改善しました。

1. DI/DO の絶縁化(フォトカプラ方式へ変更)

従来はトランジスタベースの簡易回路でしたが、産業用 24V I/O を安全に扱うため、フォトカプラによる絶縁方式に変更しました。これにより、フィールド側(24V配線)とロジック側(ESP32・PC)が電気的に分離され、配線ミスや異常が生じた場合でも、その影響がロジック側やPC本体に直接伝わりにくい構成になっています。

  • 入力回路
    image.png

  • 出力回路
    image.png

リレーなどのコイル負荷を駆動する場合は、引き続きコイル側にフライバックダイオードを入れることをおすすめします(絶縁化によってESP32側への影響は抑えられますが、出力段の素子自体はサージの影響を受けるためです)。

2. ADC の安定化(オペアンプバッファ追加)

0–10V 入力の安定性を高めるため、オペアンプによるバッファ回路を追加しました。

試作版より大幅に測定精度が向上
image.png

このバッファ回路は、主に入力インピーダンスを安定させて測定精度を向上させることを目的としたものです。配線ミスなどで想定を超える電圧が入力された場合に備えたクランプ保護(ツェナーダイオードやTVSダイオードなど)を別途検討している方は、回路図もあわせてご確認ください。

3. I2C 機能の追加(センサー連携が可能に)

完成版では I2C デバイスを直接扱える機能を追加しました。

以下のセンサは接続するだけでデータ取得が可能になります。

機能 センサ名
温湿度・気圧センサ BME280
3軸加速度センサ MPU6050
レーザー距離センサ VL53L1X
OLEDディスプレイ SSD1306

Python API からは以下が利用できます:

  • i2c_scan
  • i2c_write(汎用センサ用)
  • i2c_read(汎用センサ用)
  • get_sensors
  • set_oledx

これにより、I/O デバイス+I2C センサーの複合利用が可能になりました。


📐 最終仕様まとめ

■ I/O 構成

種類 チャネル 電圧 備考
DI 6ch 3.3~24V フォトカプラ絶縁
DO 6ch 3.3~24V / 50mA フォトカプラ絶縁
ADC 2ch 0–10V バッファ回路により安定化
PWM 2ch 3.3V ESP32-S3直結
i2c 1ポート - BME280, MPU6050, VL53L1X, SSD1306対応※

※ i2c_write / i2c_read に JSON を送ることで、汎用的な I2C センサも制御できます。

■ 通信

  • USB CDC(仮想COM):ローカルPCから高速・安定制御
  • Wi‑Fi(HTTP API):LAN内のどこからでもアクセス可能
  • 対応環境:Python / Node‑RED / VBA / PowerAutomate / Webブラウザ etc...

■ 電源

  • USB給電(I/O は外部 3.3~24V)

⚠️ 運用時のご注意(Wi-Fi/HTTP API利用時)

Wi-Fi版のHTTP APIは、LAN内であれば認証なしでアクセスできる構成です。24Vの負荷(リレーやモーターなど)を操作できるデバイスをネットワークに公開する形になるため、次の点にご注意ください。

  • 信頼できないデバイスが接続されうるネットワーク(来客用Wi-Fiなど)には接続しない
  • 可能であればデバイス専用のVLANやセグメントを用意する
  • より高いセキュリティが必要な場合は、リバースプロキシ等でAPIキー認証を追加する構成も選択肢になります

現時点では、あくまでLAN内・信頼できるネットワーク環境での利用を前提とした構成とお考えください。


🎁 まとめ

ESP32IO は 「ソフトウェアと現実世界をつなぐリモート I/O プラットフォーム」 として完成しました。

USB または Wi-Fi で接続するだけで、統一された JSON API を通して、Python・Node‑RED・VBA・Power Automate・Webブラウザなど、さまざまなソフトウェアから 24V 対応のデジタルI/O、アナログ入力、PWM、I2C センサを制御できます。

今回の完成版では、

  • フォトカプラによる 24V I/O の絶縁化
  • オペアンプバッファによる ADC の安定化
  • I2C センサ・OLED への対応

を追加しました。

今後は、Python・Node‑RED・Excel VBA・Power Automate などを使った具体的な活用例やチュートリアルも順次公開していく予定です。

「この I2C センサにも対応してほしい」「こんな使い方ができないか」といった要望や質問がありましたら、お気軽にコメントください。

今後も ESP32IO の機能追加や活用事例を公開していきますので、気に入っていただけましたら、ぜひフォローをお願いします。


📍 追記(2026年7月):MQTT版を追加しました

この記事の時点では「完成」としていましたが、HTTP版のポーリング特有の不安定さ(応答待ちのタイムアウト、状態変化の取りこぼし)が気になり、その後MQTT版を新たに開発しました。

MQTT版では、Home AssistantのMQTT Discoveryに対応し、配線するだけでDI/DO/ADC/PWMが個別エンティティとして自動登録されます。Pub/Sub方式のため、ポーリング不要でリアルタイムに状態変化を検知できます。

HTTP版・MQTT版どちらも現役で開発を継続しています。基板(ハードウェア)はHTTP版・MQTT版で共通です。詳しい仕様は esp32io-hw を参照してください。

MQTT版も、ブローカーへの接続方法(認証の有無やTLS対応など)によってセキュリティレベルが変わります。ご自宅のネットワークで使う場合も、ブローカー側の認証設定を有効にすることをおすすめします。

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?