0
1

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で自作してみた

0
Last updated at Posted at 2026-07-13

高校生が技適対応・免許不要のリアルタイム映像伝送モジュールをESP32で自作してみた

はじめに

FPVドローンやロボットにカメラを載せてリアルタイムで映像を飛ばしたい——そう思ったことはありませんか?

しかし日本では、映像伝送に使う無線機器には「技適」(技術基準適合証明)が必要です。さらに、5.8GHz帯のアナログFPVシステムを使うにはアマチュア無線の免許が必要で、しかもアマチュア無線は業務利用(営利目的)には使えません。

つまり、教育現場や産業用途でリアルタイム映像伝送を使いたくても、免許のハードルが立ちはだかります。

「技適対応で、免許不要で、低遅延なデジタル映像伝送モジュールがあればいいのに」

——ないなら作ろう。ということで、XIAO ESP32-S3を使ってリアルタイム映像伝送モジュールを自作しました。

完成したもの

  • 解像度: HVGA(480×320)
  • フレームレート: 30fps
  • 遅延: 約60ms
  • 無線方式: 2.4GHz WiFi(技適対応・免許不要)
  • 受信側: 独自のAndroidアプリでリアルタイム表示
    Screenshot_20260710_220637_Gallery.jpg

https://x.com/i/status/2076593764257460553
こちらで実際に動かしている動画が見れます

なぜESP32-S3なのか

映像伝送モジュールを作るにあたって、最も重要な条件は技適対応であることでした。

日本で無線機器を使うには技適マークが必要です。自作の無線回路では技適を通すのは個人では現実的ではありません。そこで、すでに技適認証を取得済みのモジュールを使う必要がありました。

Seeed Studio製のXIAO ESP32-S3は:

  • 技適認証取得済み
  • カメラインターフェース内蔵(OV3660対応)
  • WiFi対応(2.4GHz)
  • 超小型(21×17.5mm)

ドローンに載せるには小型であることが必須です。XIAO ESP32-S3はこれらの条件をすべて満たす、ほぼ唯一の選択肢でした。

システム構成

[カメラ(OV3660)] → [XIAO ESP32-S3 (TX)]
                         |
                    WiFi (UDP)
                         |
                    [XIAO ESP32-S3 (RX)]
                         |
                    USB CDC
                         |
                    [Androidスマホ(独自アプリ)]

TX(送信側)

XIAO ESP32-S3にOV2640カメラモジュールを接続し、MJPEG形式でキャプチャした映像フレームをUDPパケットとしてWiFi経由で送信します。

RX(受信側)

もう1台のXIAO ESP32-S3がUDPパケットを受信し、USB CDC(シリアル通信)経由でAndroidスマートフォンに転送します。

Androidアプリ

独自開発のAndroidアプリで、USB CDC経由で受信したMJPEGフレームをリアルタイムでデコード・表示します。

技術的なポイント

1. なぜMJPEGか

ESP32-S3にはハードウェアH.264エンコーダが搭載されていません。ソフトウェアH.264エンコードではリアルタイム処理が困難なため、ESP32-S3のカメラドライバがネイティブサポートしているMJPEGを採用しました。

MJPEGはフレーム間圧縮がないため帯域効率はH.264に劣りますが、エンコード/デコードの遅延が小さく、リアルタイム性を重視する用途には適しています。

2. UDPによる低遅延通信

映像伝送にはTCPではなくUDPを使用しています。TCPは信頼性がありますがパケット再送による遅延が発生します。FPVのような用途では、1フレーム欠けるよりも遅延が増えるほうが致命的です。

UDPの場合、パケットロスは発生しますが、遅延を最小限に抑えられます。

3. USB CDCによるスマホ接続

RX側のXIAO ESP32-S3とAndroidスマホの接続にはUSB CDC(Communication Device Class)を使用しています。WiFiやBluetoothでスマホに直接送る方法もありますが、USB有線接続にすることで:

  • 追加の遅延がほぼゼロ
  • 安定した帯域を確保
  • スマホ側のWiFiを別用途に使える

というメリットがあります。

遅延について

全体のパイプラインは以下の通りです:

カメラキャプチャ → MJPEGエンコード → UDP送信 → WiFi伝送
→ UDP受信 → USB CDC転送 → アプリ側デコード → 画面表示

トータルで約60msの遅延となっています。一般的なモニタリング用途には十分ですが、FPVドローンの操縦にはまだ遅延が大きく、快適に操縦するには30ms以下が理想とされています。現状のHVGA・MJPEG構成では、画質・フレームレート・遅延のすべてにおいてFPV実用レベルには届いていません。この課題を解決するために、次のステップとしてハードウェアH.264エンコーダ搭載のESP32-P4によるHD化を計画しています。

技適と免許の話

ここが今回のプロジェクトで最も重要なポイントです。

日本で一般的なFPV映像伝送には5.8GHz帯のアナログ送信機が使われますが、これにはアマチュア無線4級以上の免許が必要です。さらに、アマチュア無線は営利目的の業務には使えないため、教育機関や企業が業務で使うことはできません。

本モジュールは:

  • 2.4GHz WiFiを使用(免許不要の周波数帯)
  • 技適認証取得済みのXIAO ESP32-S3を使用
  • 電波法の範囲内で合法的に運用可能

つまり、免許なし・届出なしで、誰でもすぐに使える映像伝送モジュールです。

これは教育現場でのロボットFPV化、産業用途での近距離映像モニタリング、ホビー用途でのラジコンFPV化など、幅広い用途に道を開くものだと考えています。

今後の展望

現在のHVGA(480×320)/ 30fps版はProof of Conceptとして動作を確認できました。次のステップとして、**HD画質(720p / 60fps)**への進化を目指しています。

また、現状では見通し約100mの距離で通信可能ですが、壁が4枚ほど挟まると映像が途切れてしまいます。屋内の複雑な環境や建物越しの運用にはまだ課題が残っています。

HD化と同時に、通信の安定性・到達距離の改善にも取り組みます:

  • ESP32-P4のハードウェアH.264エンコーダを活用(帯域効率の大幅改善)
  • MIPI CSI-2対応カメラ(OV5647)による高解像度入力
  • 適応ビットレート制御とFEC(前方誤り訂正)によるパケットロス耐性の強化
  • RX側への外部アンテナ搭載による受信感度の向上

H.264化により、MJPEGと比べてデータ量が大幅に削減されるため、同じ帯域でもより安定した伝送が可能になり、到達距離の改善にもつながると考えています。

「進捗はXアカウント(@KZvtxjlyz
https://github.com/ovlink000-png/OVlink
で発信していきますので、興味のある方はフォローしていただけると嬉しいです。

まとめ

  • XIAO ESP32-S3で技適対応・免許不要のリアルタイム映像伝送モジュールを自作した
  • HVGA / 30fps / 約60msの遅延を実現
  • WiFi(UDP)+ USB CDC + 独自Androidアプリの構成
  • 次のステップはESP32-P4によるHD化

日本では技適の壁があり、「リアルタイムで映像を無線で飛ばす」というシンプルなことが意外と難しいです。このプロジェクトが、同じ課題を感じている方の参考になれば幸いです。

質問やフィードバックがあればコメント欄でお気軽にどうぞ!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?