連載一覧
- 第1回:プロジェクト概要
- 第2回:ESP32-S3 の環境構築
- 第3回:I/O の実装(ADC / PWM / DIO)
- 第4回:通信プロトコル(JSON コマンド)
- 第4.5回:デバイス化対応
- 第5回:Python アプリの API 実装
- 第6回:デバイスとしてまとめる(設計編)
- 第7回:実装編・応用編(GUI / アプリ化 / 拡張の可能性)
はじめに
前回は、ESP32‑S3 が 24V 系の産業信号の電圧レベルを扱えるようにするための設計方針をまとめました(絶縁は行わない、試作段階の構成です)。
今回はその続きとして、基板の実装・ケース組み込み・GUI アプリ化と GUI を使った動作確認 を紹介します。
実機での確認まで進めることで、設計編で検討した内容を「実際に動く形」へ落とし込みます。
また、最後に 今後の拡張の可能性 についても触れます。
1. 基板の実装
回路図
部品表
合計金額:約 2,705 円
| Reference | 一般名称 | 型式 / 値 | Qty | 単価(円) | 小計(円) |
|---|---|---|---|---|---|
| U1 | マイコンモジュール | ESP32-S3-DevKitC-1 | 1 | 1639 | 1639 |
| RV1, RV2 | 可変抵抗(トリマ) | 10kΩ 可変抵抗 | 2 | 50 | 100 |
| R1–R2 | 抵抗(固定抵抗) | 15kΩ | 2 | 1.5 | 3 |
| R9–R14 | 抵抗(固定抵抗) | 100kΩ | 6 | 1.5 | 9 |
| R3–R8 | 抵抗(固定抵抗) | 680Ω | 6 | 1 | 6 |
| R21–R26 | 抵抗(固定抵抗) | 47kΩ | 6 | 1.5 | 9 |
| R15–R20, R27–R34 | 抵抗(固定抵抗) | 10kΩ | 14 | 1 | 14 |
| Q1–Q12 | NPN トランジスタ | 2SC1815 | 12 | 5 | 60 |
| J1–J6 | ターミナルブロック(2ピン) | Terminal Block 2pin | 13 | 29.75 | 386.75 |
| D3 | ショットキーダイオード | 1N5819 | 1 | 10 | 10 |
| D4–D9 | ツェナーダイオード(3.6V) | BZX55C3V6 | 6 | 5 | 30 |
| PCB | プリント基板(PCB) | 基板製造 | 1 | 437.8 | 437.8 |
DIO入力側(6ch)にはツェナーダイオード(D4–D9)が1chあたり1個ずつ配置されており、これは前回説明した過電圧保護に対応しています。また D3 のショットキーダイオードは、電源まわりの保護のために追加しています。
なお、ADC(0〜10V入力)側には専用のクランプ保護素子(ツェナーやTVSダイオードなど)は含まれていません。前回の記事で触れた「可変抵抗の短絡時に3.3Vを超える電圧がADCに入りうる」というリスクへの回路的な対策は、この基板には実装されていない状態です。この入力を使う場合は、調整時に電圧を確認しながら操作するなど、引き続き運用面での注意が必要です。
また、フィールド側(24V配線)とロジック側(ESP32・PC)を電気的に分離するフォトカプラなどの絶縁素子も、この部品表には含まれていません。この基板は、電圧レベルを変換する機能は備えていますが、絶縁機能は備えていない試作構成です。
基板の外観
基板は JLCPCB で注文しました。
最低購入数量が5枚だったので、4枚持て余してます…
<実装前>
<実装後>
2. ケースへの組み込み
FreeCAD で設計し、3D プリンタで造形したケースに組み込みます。
- USB 位置に合わせた開口
- ターミナルブロックが外に出る構造
- タカチ DRP5‑9W に取り付け可能な裏面形状
3Dプリント樹脂ケースは、防塵・防滴(IP等級)や難燃性など、工場設備に求められる規格には対応していません。デスク上での実験・開発用途を想定した構成です。
3. GUI(PySide6)による操作パネル
Python API を使えば、GUI アプリとして I/O を操作するツールも作れます。
GUI の構成例
- デバイス一覧(接続先)
- DIO 状態表示
- ADC 表示
- PWM スライダー、周波数設定
- ログ表示
テスト用GUI
このような GUI を用意することで、コードを書かずに I/O の状態を確認・操作できる環境が整います。
今回はこちらの記事で紹介した pyside6stylekit というライブラリを使用しています。
「PySide6 のデザイン設定に悩んだので、自作 UI キット「PySide6StyleKit」を作ってみた」 <公開リポジトリ>
基本操作
-
専用のファームウェアを書き込んだESP32-S3をPCにUSB接続し、「再読込」をクリック
※ファームウェアはリンク先の ESP32_S3_IO_DEVICE です。 -
あとは実際に入出力にモノをつなげば動作します。
4. GUI を使用した動作確認
入出力を3.3Vで動かす場合は、24V の代わりに COM+ と J5 の 3.3V をつなぐだけでOKです。
こちらの動画で紹介しています。
今回の動作確認は、DIO・ADC・PWMの各機能が想定どおりに動くかを確認する機能テストです。サージ耐性や絶縁耐圧、長時間・繰り返し動作での耐久性などを検証したものではないため、その点を踏まえて結果を見ていただければと思います。
5. 拡張の可能性(Wi‑Fi 化・ロギング強化)
ここからは 今後の発展ポイント(未実装) です。
本記事では実装しませんが、ESP32‑S3 の機能を活かして以下の拡張が可能です。
Wi‑Fi 化の可能性
ESP32‑S3 を Wi‑Fi に接続し、TCP や WebSocket を使って
ネットワーク I/O デバイスとして利用することもできます。
なお、ネットワーク経由で機器を制御できるようにする場合は、認証や通信の暗号化など、ネットワークセキュリティ面の設計もあわせて検討が必要になります。
ロギング強化の可能性
- 長期ロギング
- ネットワーク越しの収集
- クラウド連携
- Web ダッシュボードとの統合
まとめ
- 基板の実装とケース組み込みが完了し、デバイスとしての形が整いました。
- GUI を用いた I/O 動作確認を行い、DIO・ADC・PWM の各機能が想定どおりに動作することを確認しました。
- GUI によって操作性が向上し、コードを書かずに I/O の状態確認・操作ができる環境が整いました。
- Wi‑Fi 化やロギング強化など、今後の拡張の可能性も見えてきました。
この回路・基板は、24V系の信号電圧を扱えるようにするための試作構成であり、絶縁やADC入力の過電圧保護など、既存の産業設備に組み込む際に一般的に求められる保護機能の一部は、まだ実装されていません。既存の設備や共有電源のある環境へ接続することを検討する場合は、絶縁素子の追加や保護回路の見直しなど、追加の検討をおすすめします。学習・自分の環境での実験用途としては、今回の内容で十分に動作を確認できる構成になっています。
今後考えていること
本連載は今回で一区切りですが、今後は今回触れた「拡張の可能性」を実装していく予定です。
- Wi‑Fi 化(TCP / WebSocket)
- ロギング強化(長期保存・可視化の整備)
- ネットワーク I/O デバイスとしての運用検証
進展があれば、別記事としてまとめる予定です。
📘 ESP32-S3 IO デバイス連載のまとめ記事はこちら
👉 https://qiita.com/Noritama-Lab/items/cae87dc4cd67fe438c82








