GoProとUSB WIFIアダプター(RTL88x2BU) で通信

Linux
image_print

今回、試みているのはGoProと水中でWiFi接続し、船上のRaspberry PIと繋ごうという試みです。
ただし、ビデオを見るのではなく、Raspiからの指令でGoProにカメラ撮影をさせることが目的です。

ソフトウェアについては、別記事「カメラ撮影の同期」に書いてあります。こちらはハードウェア設定です。

一般的には「電波は水中をとおらない」と認識されていますが、厳密には違います。「電波は水中では急速に減衰する」が正しいのです。

「どちらも一緒だろ?」というツッコミが来そうですが違います。電波を発信している物体(ここではGoPro)にアンテナが近接している、もしくは貼り付けるならば減衰前の電波を拾うことができます。

ここからは無線工学の初歩となりますが、アンテナの基本はダイポールアンテナです。「水中アンテナ用WIFIアンテナ」などで検索すると、自作例が多数出てきますし、製品すらあります。

GoProのためのWIFIアンテナ

Youtubeでわかりやすかったアンテナ側の制作例を掲載します。
アース側の網線は31mm剥ぎ取ってください。(2.4GHzの電波の波長は12センチ。1/2ラムダが6センチ。以下のビデオでは6センチにしています。アンテナとしてはその半分の3センチでいい)

一応、電波法に触れておきます。世の中の人は「製品以外はすべて違法だ」という言い方をしますが、今回の構成を考えてみましょう。水中で電波を送受し、その後、水上では同軸ケーブルのままUSBドングルに引き込まれていきますので電波の漏れがないのです。
総務省は「著しく微弱の基準内であれば無線局の免許は必要ありません。」としています。
電波法を学べばわかりますが、法の趣旨のひとつは「混信して他局に迷惑かけるなよ」なのです。

今回の構成は外部に電波が漏れませんから、混信どころか第三者が電波の存在に気づきようもありません。

アンテナ付きUSB WIFIドングル

以前の記事でワイヤレス接続でRTL8192CUというチップが入ったWIFI USBドングルを使ったのですが、今回はアンテナがコネクターで接続されているWiFi USBドングルを使いたいと思います。
というのもアンテナを外すのがかなり面倒だったからです。やはりコネクターがラクです。

Amazonで「KIMWOOD 2022 wifi usb 1300Mbps USB3.0 無線lan 子機 2.4G/5G デュアルバンド 5dBi超高速通信 wifi 子機 360°回転アンテナ Windows11/10/8/7/ XP/Vista/Mac OS/Linux対応 アダプター 802.11ac/n/a/g/b技術 認証済み」を入手しました。

水中でのアンテナ

これだとアンテナを取り外しできて、同軸ケーブル(SMAコネクター)を接続できます。写真で上がオリジナルのアンテナ、下が同軸ケーブルです。

使われているチップはRTL88x2BUです。

反対側はこうしました。

左の丸いものは、ケース内に引き込む場所のシリコンパッキンです。

ドライバーのインストール

ドライバーとインストール方法のオリジナルはこちらなのですが、Raspbian OS 64bitでないとうまくいきませんでした。いやぁ、試行錯誤に時間かかった。
Linuxのカーネルアップデートに詳しい方なら32ビット版に変更してインストールできるかもしれません。

Raspbian 64bitはRaspberry Pi Imagerで無線LAN接続、SSH接続などをコンフィグレーションで設定した上でSDカードに書き込んでいます。
複雑な条件でなく同一アクセスポイント内であれば、しばらく待つと、いきなりsshで接続できるはずです。

問題のRTL882x2BUのドライバーですが、2023年9月時点では以下の手順(ひとつずつ確認しながら)でインストールできました。

sudo apt update
sudo apt upgrade

sudo apt install git bc dkms raspberrypi-kernel-headers
sudo apt update
sudo reboot

git clone https://github.com/cilynx/rtl88x2bu
cd  rtl88x2bu/

# Configure for RasPi
# Configure for RasPi
sed -i 's/I386_PC = y/I386_PC = n/' Makefile
sed -i 's/ARM_RPI = n/ARM_RPI = y/' Makefile

# DKMS as above
VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)
sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}
sudo dkms add -m rtl88x2bu -v ${VER}
#以下のふたつは時間がかかります
sudo dkms build -m rtl88x2bu -v ${VER}
sudo dkms install -m rtl88x2bu -v ${VER}

で、リブートすると、こんな感じになりました。

wlan1が新しいWiFi USBドングルですー。

同じAPに繋がっていても仕方ないので、wlan0(内蔵モジュール)をオフにします。
調べると/etc/modprobe.d/raspi-blacklist.confに以下を書くようです。
(ナンタラ.confならよさそうですが世の中の常識ではこう書くみたい)

#wifi
blacklist brcmfmac
blacklist brcmutil

でリブートします。(DHCPだとIPアドレスが変わっているのでご注意を。ssid.localで接続していれば繋がります)

 

ハードウェア設定は以上です。

一応、自作したアンテナを繋いで動作確認テストをしておきましょう。
地上でも普通に電波を送受信できなきゃ困ります。

タイトルとURLをコピーしました