概要
WebRTCとLTE網を活用したリアルタイム映像配信により、ブラウザ上からドローンの視点映像をリアルタイムに確認しながら、だれでも簡単に遠隔操作環境を実現させる。

(左)WebブラウザからWebRTCによる画像取得およびサーボモータの動作確認状況(LAN環境にて動作テスト済)
(右)遠隔操作に用いるドローン(プロポによる動作確認状況)※視聴には音声調整等の注意をお願いします
WebRTC(Web Real-Time Communication)とは、Webブラウザやモバイルアプリ間で、プラグイン不要で低遅延・高画質・安全なリアルタイム映像・音声・データ通信(P2P)を可能にするオープンソース技術です。Google、Apple、Microsoftなどが参画し、最新のブラウザ標準としてサポートされています。
このセクションの目的
これまでLAN環境で検証を重ねてきたシステムを、LTE網による広域ネットワーク環境へとスケールアップさせる。
使用機材
- ラズベリーパイ用通信モジュール「4GPi」
- Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品
- ACアダプター 12V/2A(内径2.1mm)
- 4GPi対応SIMカード
- ラズパイを動かすmicroSDカード(Class10以上)

ケーブルの接続については画面を参考に取り付けて下さい。ラズパイ(4GPi下の黒い箱)からのケーブルは、USB-A オス – USBmini-b オスケーブル(4GPiとラズベリーパイを接続する際に使用するケーブル)とHDMIケーブルの2本です。
また、DCジャック – XHP-2コネクタ変換ハーネスを使用して4GPi側から電源供給する場合はラズパイ側の電源ケーブルの接続は不要です。
蛇足ですがラズパイはケーシングに収納した方が安心です。その場合、4GPiとのピンの取り合いがあるので、画面で使用しているケーシング(ラズパイを収納している黒い箱)をご紹介しておきます。

カメラおよびサーボについてはこのセクションでは不要ですが、いづれ必要になるので使用機材を参考にご準備されてもいいかもしれません。
開発環境・準備
- Windows 11Pro
- Windows PowerShell(SSH接続時使用)
- WinSCP(WindowsとRasPi側のデータ移動用。 当セクションでは入れなくても大丈夫)
- Raspberry Pi Imager (イメージ焼き付け用)
- OS-image(イメージ) : 4gpi-bookworm-lite-arm64-20250515.img.xz
LTE接続成功時の画面

作業手順
- ラズパイSDカード作成
少し前は、自分で環境構築する場合、ラズパイのOSイメージを焼付け4GPiのセットアップを行っていたので結構大変でしたが、今はメーカーさんがラズパイのOSに4GPiのセットアップ済イメージを配布してくれているので、それをダウンロードしてmicroSDカードに焼付けすれば確実に動作します。microSDカードについては定番どころのScanDiskがおすすめですがElecomやKIOXIAでもOK。容量は32-64GBあれば十分だど思います。


メーカーさんが用意してくれた4GPi OS image archivesから”4gpi-bookworm-lite-arm64-20250515.img.xz”を選択(クリック)するとダウンロードが開始します。ダウンロードしたイメージをRaspberry Pi Imagerで焼付けしてSDカード作成作業は完了です。
APN設定
コマンドラインから nmcli を実行することで NetworkManager の接続設定が追加できます。
$ sudo nmcli con add type gsm ifname "*" con-name 「接続名」 apn 「APN」 user 「ユーザー」 password 「パスワード」
例えばこのような場合、
「接続名」:kabuandmobile(好きな名前)
「APN」:kabukabu.jp
「ユーザー」:kabu
「パスワード」:1234
下記の様にラズパイ側のコマンドラインに入力&実行します
$ sudo nmcli con add type gsm ifname "*" con-name kabuandmobile apn kabuand.jp user kabu password 1234
Raspberry Pi を LTE 経由でインターネットへ
LTE 接続が成功したら、まずは基本通信を確認:
pi@raspberrypi:~ $ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=8.60 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=9.90 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=10.1 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=10.5 ms
pi@raspberrypi:~ $ curl https://example.com




