ESP32 のセンサ値を Web Serial でブラウザに出す
※本記事にはアフィリエイトリンクを含む場合があります。内容は広告の有無に影響されません。
結論
Web Serial API はセキュアコンテキストとユーザー操作を起点とする接続を要求するため、localhost か HTTPS 上で、ボタンのクリックなどからポートを開く必要がある。
何を作ったか
ESP32 を USB で PC に挿し、ブラウザの Web アプリ(Next.js)から Web Serial API で直接シリアル接続して、送られてくるセンサ値をグラフや数値でリアルタイムに表示する計器盤です。
専用アプリを入れる必要がなく、ブラウザを開くだけでデータが見えます。
なぜ Web なのか
- インストール不要 — URL を開くだけで動きます。人に見せるのも配るのも楽です
- UI を自由に作れる — React の資産(グラフ・レイアウト)がそのまま使えるので、既製の GUI ツールより作り込めます
- Web Serial API はブラウザから直接 USB シリアルにつなげる仕組みで、マイコンと Web の距離が一気に縮まります
制約
Web Serial には無視できない制約が3つあります。設計を始める前に確認しておくべきものです。
| 制約 | 内容 |
|---|---|
| 対応ブラウザ | **Chrome / Edge 系のみ。**Safari は不可 |
| セキュアコンテキスト | localhost か HTTPS でしか動かない |
| 接続の起点 | ユーザー操作からポートを開く必要がある(自動接続は不可) |
3つ目が設計に効きます。「ページを開いたら勝手につながる」形にはできないので、接続ボタンを前提に UI を組みます。
ESP32 側で先に決めること
ボーレートと送信フォーマット(CSV か JSON か)を先に固定します。ここを決めずに始めると、受信側のパースを何度も書き直すことになります。
この構成が向く場面
ハードと Web の両方を触る場合に噛み合います。マイコン側の実験に集中したいとき、表示側をインストール不要のブラウザに寄せられるのは効率が違います。
逆に、対応ブラウザが Chrome / Edge 系に限られるため、配布先を選べない用途には向きません。その場合は素直にネイティブアプリか、マイコン側から HTTP で送る構成のほうが素直です。
よくある質問
Q1どのブラウザで動きますか?
Chrome / Edge 系のみです。Safari では動きません。配布先のブラウザが限定できない用途には向きません。
Q2ページを開いた瞬間に自動接続できますか?
できません。Web Serial はユーザー操作を起点としたポートの選択を要求します。接続ボタンを置いて、そのクリックからポートを開く形にします。
Q3ESP32 側で先に決めておくべきことはありますか?
ボーレートと送信フォーマットです。CSV か JSON かを先に固定しておくと、受信側のパースが単純になります。後から変えると両側を直すことになります。