今回、試みているのは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アドレスが変わっているのでご注意を。こういうことがあるからやはりディスプレイとUSB接続キーボードは必要ですね。)
ハードウェア設定は以上です。
一応、自作したアンテナを繋いで動作確認テストをしておきましょう。
地上でも普通に電波を送受信できなきゃ困ります。