OpenIPCがおもしろそう

OpenIPCがおもしろそう。

最後の記事が2021年だそうで。なんと3年ぶりですよ。
「OpenIPCってのがおもろいらしいから調べてみて」と宿題をもらった。
さてはてOpenIPCはコチラ。

https://openipc.org/

これは何かというと、ネットワークにつながるカメラ、通称「IPカメラ」をカスタムしようというもの。
「IPC」とは「IPCamera」のことだろう。
さらにラズパイ使ったロングレンジFPVにあった「OpenHD」の進化版として、WiFi使って無線化。
そしてFPV、というのも盛り上がってるようだ。

対象となるIPカメラは多岐にわたり、8Kとか撮れる高級品まである。
https://github.com/OpenIPC/wiki/blob/master/en/guide-supported-devices.md

とりあえずFPVerはどれ使えばいいのよ・・。
なんとコチラにFPV向け簡単セットの説明がある。
むちゃくちゃ懇切丁寧である。お試しでまずやるにはコレがよいのではないか。

https://github.com/OpenIPC/wiki/blob/master/en/A-step-by-step-guide-for-an-FPV-setup.md

今回はコチラの記事を補足する感じで、簡単にセットアップの流れとシカケを説明してみる。
買うのはVTXになるIPカメラx1、WiFiドングルx2、RTXになるDvr x1。
あとはUSBシリアルとBEC関係と線材。これぐらいで組める。1万チョイってところだ。

1.IPカメラのセットアップ
FTDIのUSBシリアル(3.3v対応が必要)を使ってブートローダーを焼き込む。
その後、事前に準備したTFTPサーバから有線LAN経由でファームを引っ張る。
そうやってOS入ったら、この先はSSHとかで整備可能。
WiFiドングルを、基板上にあるUSB相当のJST端子とかに変換して接続。
WiFiは「WFB-NG」(後述)としてセットアップしておく。
電源まわりをBECで整える。これでVTXとして機能する。
3Dプリンタで作るケースとかも紹介されてて、至れり尽くせりだ。

2.グランドステーションのセットアップ
グランドステーションはRTX、つまり受信装置。
ラズパイのようなものでLinuxを組み、受信側にも「WFB-NG」(後述)をセットアップする。
電源まわりをBECでなんとかして、WiFiはUSBに挿す。
画面の出力はHDMIでできる。
OrangiPi5 Proとかでよりリッチになるようだが値段もあがる。

3.WFB-NGの設定
WiFiを使うと映像伝送はなんだかんだでレイテンシが200msとかになる。
この遅延、FPVでは致命的。
そこをWFB-NGという、なんだM5のESP-Nowみたいなローレベル化した規格を使う。
これによって60msぐらいまで遅延を減らせるらしい。
ゆっくり飛ばせるぐらいの遅延は確保できるようだ。
WFG-NGに対応したオリジナルのドライバがいる。
最初からサポートしているWiFiのチップを選ぶとラクだ。
まず動かすことが目的なんで、性能よりラクさを選ぼう。
コチラの記事ではRealtekのRTL8812AUを採用。これはメジャーなようだ。
ただし紹介されてるのはブレークアウトボードみたいな裸基盤をワイルドにはんだ付けで利用。
これはアレですよ。日本にはいつものアレ。技適があるので。ココはそのままだとマズイ。
RTL8812AU使ってるUSBドングル探したら、BUFFALO の WI-U2-433DMS とか該当した。
アンテナはダイバーシティにはならないけど。まあコレを試せばよいのではないか。
買うときはVTX、RTXで2個セットだ。

4.IPカメラとグランドステーションをつなぐ
あとは細かい設定して完了。

このシステムのよいところは、電波法の資格が必要ないということ。
あと高性能なカメラが使えるので、たとえ遅延はあるにしても、品質のよいリアルタイム映像伝送が得られそう。
配慮は必要だが2.4G帯と5G帯選べるのもよい。
電子工作としての難易度もそれほど高くなく、ドローンに限らず応用範囲広そう。

実際試してから記事書けよという話ですが。
流行ってノウハウ出てくるといいなと思って、試してもねえくせに紹介記事を久々に書いてみた。

RTKの準備を始める

まだまだ巣ごもり生活続きそうですね。
半導体不足の影響もチラホラ出始めているので、思い切ってRTKチップ ZED-F9P を入手した。
RTK仲間増やすために、なにがすばらしいか、なにを集めればよいか、を文字ばっかりで説明してみる。

■RTKとはなにか
RTKは普通のGPSとなにが違うのかというと100倍ぐらい精度が高くcm単位になる。
測量とか捗る!なのだが、他にもおもしろい活用方法もある。
書道の筆の動きをスキャンするとかあった。
あと複数搭載して姿勢を推定するとか。
これはドローンだとコンパスエラー対策とか気圧計の代わりとかにも使えるかもね。
cm単位がゆえにコレまでできなかった活用アイデアも出てくるというワケだ。

■基準局がポイント
使うには位置がしっかりしてる基準局と連携する必要がある。この基準局ってのがポイントで従来GPSとの差異。
現地に設置するとかあるが、ちゃんと位置が安定するまで時間かかる。
そこで基準局の情報をネット経由で引っ張るというのが Ntripといい、それを配信するサーバを Ntrip caster という。
https://blog.goo.ne.jp/osqzss/e/a43cd4c7b9a763db9bc25853e09b31c0
電話屋さんによる有料サービスもあり、競争が加熱しているとも聞く。
とりあえず試したいんだけど。の敷居が高い。
そんな場合は善意で無償公開してもらっているものもある。
http://rtk.silentsystem.jp/
http://www.rtk2go.com/
基準局はだいたい10km以内であることがよいらしい。
そこから10kmごとに1cm単位ぐらいで精度が落ちるらしい。
運良く近所に「善意の基準局」があればいいが、ない場合は「野良基準局」をつくるところからになる。
今 RTK を始めるなら基準局をつくるところからできるんだ!というフロンティア精神ある人向けなのだ。
なのでRTKチップは「最低2個」から揃えたい。

■RTKチップは何を使うか
2021年6月時点だと、u-bloxの ZED-F9P 一択。
これについては悩まないで済む。
悩むのは価格だ。まあ基板単体で3万/個ぐらい。
あと種類がいくつかある。
Sparkfunの赤い基板シリーズで、使い勝手よさそうなSMA付をチョイスした。
https://www.sparkfun.com/products/16481
アンテナもu-blox純正なコチラをチョイス。
https://www.sparkfun.com/products/15192
「GPSアンテナあるある」らしいが「グランドプレーン」というものがある。
これはGPS電波のマルチパスを避けるため、アンテナの下部に鉄板置いておきましょうというもの。
こちらのスペックにも下記のようにある。
 Peak gain (over 15cm diameter ground plane)
基準局常設となると、アンテナはもうひと工夫いるかもなーと思っている。

■設定の流れ
u-bloxの配布している u-center を使う。普通のGPSを設定したりにも使うよね。
https://www.u-blox.com/en/product/u-center?lang=ja
ウンザリするほど設定するポイントあって、なにがあるのか把握するのが大変だけど、やることは限られる。
この手のはとっつきにくいけど、とりあえず動かして眺めるのが重要。
基本的なところと勘所はコチラのチュートリアルがよかったです。
https://swest.toppers.jp/SWEST21/program/pdfs/s5a_public.pdf

■なにで使えるか
RTKLIBが活用されてて、さがすといろいろある。
http://www.rtklib.com/
スマホとかのアプリもあるので、まあいろいろ試してみるかも。
とりあえず u-center とかで衛星眺めたり強度みたりしてると、やっぱり無線機なんだなと。
例えば特定の方向に壁とかあると、そっちのデータは拾わないようにするとか、そういうチューニングとかも必要になる。
つうかアンテナ重要。アンテナつける位置重要。
ただつければOKってない感じ。やってみんとわからんというヤツ。
あと HackRF One と ZED-F9P を直結(アッテネータいる)して、シミュレータ環境作ることもできる。
https://github.com/osqzss/gps-sdr-sim
最近買い集めてたおもちゃがつながっていくな。

■今回はここまで
テスト運用もできたので、次は本運用に向けた設置とかですね。
ちゃんとしたアンテナ設置とかですね。
机のまわりでやれることはともかく、このあたりは腰が重いな。
まあのんびりすすめる。

ドローンの電波を眺める

ドローンはスマホと構成要素が似てて、多岐にわたる様々な技術が使われる。
その中でもわかりにくいのが電波でないか。この電波をもっと見たい知りたい。

どの電波帯を見たいか。
VTXの電波帯である5.8GHzあたりと、操作電波の2.4GHzあたり。DJI系だと国内は2.4GHz帯のみだ。
2.4GHz帯ぐらいまで見るのはチラホラあるが、6GHzぐらいまでだと限られてくる。
そのあたりいくつか調べてみたのでまとめてみる。

■RX5808を使う
安価な方法は「RX5808」を使う方法。
これは5.8GHz受信機の中に入っているもので、1000円/個しないぐらいのもの。
まあ大体コレがはいってる。受信機に電波を全部チェックする機能とかついてる。

下にあるこいつ。RX5808と書いてある青いやつ。
5.8GHz受信機にはだいたいコイツが入ってる。

このRX5808。テキトウなマイコンからSPIでコマンド送ることで受信周波数を操作することができる。
https://github.com/xythobuz/arduino-rx5808-testing
簡単なものなのでArduinoNanoに限らず簡単に移植できる。
M5StickC、M5Atom、Xiao なんかでもつくってみた。BluetoothとかWiFiとかで引っ張るのも簡単にできる。

XiaoでRSSIをシリアルに吐き出し続けるのとか作ってみた。
M5AtomでPIDFlight。BluetoothでAndroidアプリともつながる。

かつてはプリセットされたチャンネルだけで、抵抗外す加工とかが必要だったようだが、最近ははじめから抵抗外されてるので無改造でイケる。
最初それ知らなくて3つほどパーにした経緯あり。
これを活用した例はたくさん、ホントたくさんあってしばらく遊べる。
ダイバーシティにしてみたり。
https://github.com/sheaivey/rx5808-pro-diversity
PIDFlightというラップカウンターとか。1個の受信機で複数chがとれるようになってる。
https://www.pidflight.com/pidflight-lap/
https://github.com/t-asano/techlog/blob/master/racesolution/pidflight_lap.md
https://github.com/cmengler/pidflight-lap
もっとガチなのにRoterHazardがある。
https://github.com/RotorHazard/RotorHazard
映像もコンポジットで引っ張れるので、トラック向けの4ch入力モニタとかと組み合わせると、VTX確認モニタとかもできる。
https://www.amazon.co.jp/dp/B081GMBVJZ/papalagiorg-22

ArduinoNano(パチ)にHC-06というBTシリアルつけてPIDFlightを作った例。
小綺麗にまとめてみた例。
ラズパイでまとめたRotorHazardセット。受信に指向性持たせるのに工夫がいる。スペアナの出番だ。
いっぱい仕入れたが、アレコレやってると足りなくなった。また買うようか。

そんなこんなで RX5808 を10個ほど仕入れてアレコレやったが、これの弱点はバラつきが大きいこと。
アンテナ周りを工夫するか、キャリブレーションをするか、まあなんかやったほうがいい。
世間に出回っている5.8GHz受信機はコレぐらいのバラつきで売られているんだなあ、という事実を知ることになる。レビューとかアテにならんじゃないか。
この事実を知ってから、Rapidfire のキャリブレーションをすぐやった。
https://www.kabukigoya.com/2020/11/immersionrc-rapidfire.html
2.4GHz帯だとOpenTXの機能にチェックするものとかもある。
このあたりは切り替えながら電波をチェックすることから更新速度が遅いので、リアルタイムにどうなっているか、とか電波の出力形状とかは確認できない。
まさに簡易的な機能。もうちょっと他に方法はないのか。

■HackRF Oneを使う
https://github.com/mossmann/hackrf
ソフトウエア制御による1MHzから6GHzにわたる広帯域送受信機SDR(Software Defined Radio)。
つまるところソフトウェアで無線受信機を作ることができる、なかなかハッカーなシロモノ。
USBのワンセグ受信機を改造して使うパターンが昔流行った。
RTL-SDRってのが3000円ぐらいでメジャーだが、そのあたりは周波数が1700MHzまで。
HackRF One は 6GHz まで対応しており、ドローン野郎のニーズを満たす。
似たようなのはいくつかあるが、オープンソースなハードウェアなので、中華でアチコチから出されて安い。
FMラジオ聞いたり、GPS信号眺めたり、イモビの解析したりと、いろいろ多彩に使える。
がんばって5.8GHzVTXの映像をデコードしようとしている人とかいるよ。
https://www.rtl-sdr.com/decoding-5ghz-ntsc-video-from-drones-with-a-hackrf-dragonos-and-sigdigger/

こんな感じの簡単キットでやってくる。
組み立てたらこんなの。5分もあればできる。
FMラジオを鳴らしてみた。AIRSPY SDR。

なんかサラッと出力もできるみたいだけど、その時は電波暗室でね。
そんな中に周波数スイープに特化したのが「hackrf-spectrum-analyzer」。
https://github.com/pavsa/hackrf-spectrum-analyzer
とりあえず電波見たい層はコレが一番安価でいい感じのソリューションでないか。

我が家の2.4GHz帯をチェック。

おなじみBanggoodとかで1万ちょいぐらいから売られてる。
https://www.banggood.com/HackRF-One-1MHz-6GHz-Radio-Platform-Development-Board-Software-Defined-RTL-SDR-Demoboard-Kit-Dongle-Receiver-Ham-Radio-p-1552853.html
今見たらちょっと値上がりしているような。
いろいろめんどうなんで、金属ケースとオシレータがついてるのを買ったほうがいいと思う。
アンテナもいろんなのがオマケについてくるが、実際はドローンで使っているアンテナを使いまわしてもよい。
いちいちPCいるんかい!→ Androidとかのアプリもあるよ。
ハンディタイプにまとめた「PortaPack」というのもあります。
液晶の大小で2世代ぐらいあるみたいですね。いつかチャンスあったら試してみたい。
もっと製品でちゃんとしたハンディ機はないのか。

■RF Explorer を使う
http://j3.rf-explorer.com/
RF Explorer というのは、ハンディなスペクトルアナライザー。
この手のものは例に漏れず高価で、まさにガチ向けな測定器なのですが、RF Explorer は個人にかろうじて手が届くお値段設定。
安価な普及モデルを作りたいという設計者の熱い思いから生まれたそうです。他に類する製品がないので貴重な製品といえます。
最初のモデルは10年ぐらい前に出て、その後ちょっとずつアップデートをし、各ニーズに特化した派生モデルがたくさん出ました。
その最新モデルが、今回入手した「6G Combo Plus」で、シリーズの中では高性能モデルという位置づけです。
このモデルのいいところは、50kHz から 6GHz まで一気通貫で測定できる。その分お高めとなるけど。
ゲームボーイのようなボタンをポチポチして、確認したい電波帯を指定すると、液晶に10fpsぐらいの更新速度でグラフが出る。
なんつうかちょっとレトロで無骨な感じが・・キライじゃない。つうかスキ。
一番出力の強いところにフローティングで数字が出るので、草むらに埋まったドローンを探しにいったりできる。
Seeedという電子工作野郎にはメジャーなところで販売されている。
https://www.seeedstudio.com/RF-Explorer-6G-Combo-PLUS-Slim-p-4616.html
399ドルとそこそこする。これに Fedex ついて5万弱ぐらい。日本でも売ってるところがあるようだ。

出たばっかのアレ、むちゃくちゃ帯域使ってるやん!
2機同時だとこんなの。

USB で PC に接続することで、各種データ収集やリアルタイムな処理のあれこれが可能。
Windows、Mac、Linux となんでもござれで、ラズパイ用向けもある。
各コンテンツのダウンロードはコチラ。
http://j3.rf-explorer.com/downloads
ファームウェアも頻繁に更新されていて、そこそこの値段はするが、まあ退屈はしない。
周波数ドリフトがある某社AIO VTXで、周波数変更しても同じ傾向か調べた動画。

さらに最新型のPlusに限り、課金アイテムがふたつほどある。
そのうちのひとつが内蔵のFlashメモリに記録してくれるというもので、PCにイチイチつながなくても電波状況を記録してくれる。
あんまりたくさんは記録できないというのが弱点ではあるが、高速再生とかいろいろ今後もファームアップを目指している模様。
ちと高いが投資してみた。

なんと課金アイテム。
ネットワーク経由でアクティベーションが必要。
使えるようになった!

ということで、高いが全体としてちゃんとした感じ。
アチコチの電波を眺めては、なるほどこういうことになっていたんだな・・と発見の日々。
そもそも周囲は電波で溢れているわけですよ。
電波を確認できる手段としてスペアナの活用は、現代人に必要な時代かもしれないですね。

RF ExplorerとHackRF Oneの比較はこんなかんじ。

2021年春の「BBKN剥きプロシリーズ」

分解したGoProをドローンに搭載する「剥きプロ」。
2019年後半あたりから出て、2020年は当たり前の存在に。

剥きプロはなんだかんだで扱いめんどくさい。
「剥きプロ疲れた」という話はよく聞く。
とにかく壊れる。あと取扱いが繊細すぎ。
95、3インチあたりが使える屋外とか広い場所だと選択肢も多いし、無理に剥きプロ使わないでも、いろんな選択肢ある。
屋内で近接撮影となるとやっぱり65、75あたり。
いろんな機材も出たけど、トータルの取り回し考えると剥きプロが一番いいかな、ということで今もコレがメイン。
そんな感じで消耗しつつ、アチコチで剥きプロ飛ばしては、いろんなフィードバックをもらっては改良を繰り返している。
そうしてノウハウも蓄積され、今や枯れた存在となりつつある。
このあたりで最新の「BBKNシリーズ」で配慮してたりするところをまとめてみた。

■GoPro部分
使うのはGoPro6かGoPro8。7は使わない。
やっぱり8の方がキレイなので、8を優先して使うが、8はいろいろある。
個体によってバラつきあるし、BECもそんな感じあるし、選別品にしても使ってるうちに挙動変わったり。
そういうのが現場で発生するとホントうんざりする。
予備には安定の6を使う。マウントは共通なので取替は現場でもできる。
散々使ったので、6ならほぼ間違いなく期待の絵が撮れる。
それでも、やっぱり8を使いたい。今はそういうかんじ。

GoPro6。XT30で電源供給する。HDMI使って配信カメラになったこともある。
GoPro6は液晶ユニットが挿さる!あんまり使わないけど。

剥き出しだと接触時に基盤がウエハースのように割れる。
ぶつけなければいいだけの話だが、ドローンならではのスリリングな絵を撮りたいとなると、そうもいかんこともあったりする。
ということで、基本的にユニットはケース入りで、カメラ角度は固定。
いろんな材料試したが、基本PET-Gでカッチリ。
特に衝撃によるカメラフレキの抜けについて改良は繰り返した。
レンズ裏の光の回り込みを避けるためカバー。
レンズはMavic用のNDフィルタが使えるように調整。
ボタン部分だけTPUを使っている。
SoCのところにはラズパイ用のヒートシンクを貼付。(あったほうがいいと思う)
GoPro6に関しては液晶をユニットで差し込めるようになってる。(あんまり使わない)
GoPro8は延長フレキを別途準備しないと縦置きにできない。
8は個別調整的なところがあり、なんつうかめんどい。

いい感じに薄いのを探す必要がある。
GoPro8用縦向きケース。組込にコツがいる。めんどい。

■6GoPro
65mmのヤツで、まさに空飛ぶGoPro。
崩れたバランス感で、見た目のインパクトもあり、見せびらかすのによい。
その見た目に反して、けっこーちゃんと飛ぶ。
サンプルは、まっどパイセンの素晴らしい飛行。

なにやら見覚えのある人達が・・。

フレームはNBDのブラシレス用。
固くて割れやすい。着色ナシのものがちょっと強い模様。

いろいろな工夫。

GoProの重量があるので、接触時にはFCのところが変形し、FCが外れて修正めんどう。
なので変形防止のブレースを追加している。
腹下に輪ゴムを引っ掛けるフックついているので、そこを使ってバッテリをつける。
バッテリは2Sで、450mAhと650mAhを使い分ける。650mAhで 3分半ぐらい飛ぶ。

カメラは Caddex ANT がキレイなので採用しているが、このカメラやたらと衝撃に弱い。
接触時にペラがカメラをひっぱたいてイカれたってのが何回かあった。
それでも今の所 ANT 使いたいので交換しながら対応している。
GoProのマウントでカメラ角度固定にしていたが、角度変えたい時はマウントの後ろ側をインシュロックとかで引っ張って都度調整する。

FCはディスコンになったBetaFPVの2S用。なのでレシーバはSPI。
VTXはTBS Nano32を腹下に設置。
FC上に置きたくなるが VTX の熱がGoProのヒートシンクを炙っちゃう。

モーターは 1102−10000kV。
ペラは40mm用のものを31mmにカットして利用。
モーターによって軸が1.5mmだったり1mmだったりするので注意。

GoPro搭載前の状態。平らなので搭載実験する時にも便利です。

■7GoPro
基本構成的には6GoProとあまり変わらない。1102-1000kV。
NBDの75フレームを反転で使う。これFCの向きが変えられるのがいい。
ペラの加工もないが、アウターケースの空転が複数回発生したので、ネジで固定は行う。
1102-9000kVで3Sという選択も残ってるが、2Sで十分飛ぶ。
FPVカメラも ANT だが、ペラで叩かれてもいいようなガードを追加した。
6GoProと比べると、スロットに余裕があり、屋内運用ならコレがベストかな。
屋外もいける。

ロクな写真が手元になかった。GoPro6搭載の初期のもの。バッテリは今は腹下マウントになってる。
GoPro8縦方向を搭載テスト。
ANTマウントはちょいガード機能をつけてみた。

■8GoPro
恐怖感を減らすためにカゴに入れてある。
基本UZ85そのままにマウントだけつけた。
このあたりのベースはもうなんでもいいと思う。
3Sの650mAhとかで5分近く飛ぶ。
重心が下にあるので、転がると起き上がりこぼしのように立つ。
ホバリングがかなり安定し操作がラクチン。屋内はもちろん屋外も全然いける。
特にカゴで空力的な効果があり、風が吹いても球として抵抗を受けるので、機体がフラフラしない。
対象物に寄りすぎても吸い込み効果がない。
大きさに余裕あるので照明追加とかもラクチン。
唯一ともいえる弱点はFPVカメラにカゴのフレームが入って邪魔なこと。
カットするとかもできるけど、慣れちまえ!でそのまま。
道具として十分使えるレベルだが、マニア的なロマン欠ける。
やはり小さくなくては。

下のブイがFPVカメラに映っちゃう。気にすんな!
GoProでないけどので一回消したけど復活希望ありだったんで。照明つけたサンプル。
ロクな画像がないのであとで差し替え。左上2つが85です。
85の上に65Hybridを親子亀で搭載して飛ばした心底くだらない実験動画。

■今後の課題とか
いったん出来上がると同じの作るのはあんまり楽しくない。
どこかで完成で終わりにしたいが改善は続く。
硬めのフレームに固めのマウントという設計方針なので、振動対策とかに配慮すべきかなーと思い始めてる。
それは部品の改良というより、BlackBoxログ眺めてマジメに設定詰めるとか、モーターのアウターケースのバランス取りとか、そーゆー方向かなあと思っている。
希望者には3Dプリンタのデータとか配布しています。
ただ、やたらとアップデートあるし、組付けにコツとかあって、いろいろと優しくないです。

1102仕様の65Hybridは手軽で完成度高いので、まずはコレがオススメです。GyroFlowもできるよ!(がんばれば)

USB電源でドローンの電源を集約する

Twitterは短くてラクよね。伝わらなくて後日検索めんどい。
自分のための覚書だしな。
なのでいつものように経緯とかネチネチ書いておく。

■12ボル党
いくつも電源持って歩くのめんどくさい。
ドローン関係は12v、つまり3SでDC電源をまとめるとラクになる。
というのを、駆け出しの頃に Yan-Tech さんに教えてもらった。
その頃は電源周り自作とか、めんどくさくて考えもしなかったが2年経って気づいたらおなじになってた。
これは外5.5mm、中2.1mmの「5521丸端子」(以下、丸端子)のアダプタ端子で運用される。
監視カメラ用とかでamazonでも安価に多数ある。
この「12ボル党」を中心にバッテリ周りについて再考してみようと思う。

■そもそもどんな電源が必要なのか
ドローンでの電源周りはいろいろある。
各種バッテリ充電、ゴーグルの電源、機体整備に使う電源。
スマホにバッテリウォーマー、デジタル使うとスマコンとかまで必要。
種類も多いしコンセントばっかり使う。さらに出先となると大変だ。

・LiPo充電機
85、95あたりの出先でよく使う機体の、3Sとか4Sを2C充電したいとなると60wは欲しい。
私はISDTに絶大な信頼を置くISDT野郎なのだけど、お出かけ用には Q6Pro に12v-5Aアダプタで常時持ち歩く。
最初は12-3Aアダプタを使っていたが、ちょっと足りない。
たくさんの充電必要な時は AC200v の D2 を持っていく。
5インチクラスのバッテリ充電にはこの200wクラスでないと難しい。

・ゴーグル電源
まずはFATSHARK。2S-4Sでの運用が可能。思いの外電池を食う。端子は丸端子。
なにかとトラブルの多いFATSHARK電池ケースは2Sで、昇圧回路ついてないので40%残したあたりで動かなくなる。
使い勝手悪いので、8.4vの昇圧回路組んだりもする(この場合はバッテリが最後まで使い切れる)が、利用後は外しておかないと、いつの間にか電池食われたりする。
電池ケースを3S(12v)にすると、バッテリ低下時にもジリジリと持ちこたえて、電源的にはバランスがよい。
ただしケース自作する必要があり、加えてデカく重くなるので取り付けの工夫が必要で、さらに充電器はだいたい2本セットで充電できるパターンで3本は中途半端なのは気になる。
5インチ用のデカいLipoにケーブルでもよいが、出先で電池足りなくなると充電間に合わない事態もある。
電池ケースのさらなる改造も検討してるが、相変わらずすっきりしないのがFATSHARKの電源。
いよいよのときのために12v-5Aアダプタで電源確保はしたい。
USB昇圧ケーブル使ってたこともあるけど、あれコネクタがハンダで支えられるものなので、ハードに使うとすぐぶっ壊れる。

現在は3つ持って歩いてる。ケーブル断はなくなったが、ハンダ部分に力加わってハンダクラックとかたまにある。

DJI FPV ゴーグルは 3S-6Sでの運用。こちらはさらに電池食う。
USB 5vの12v昇圧ケーブルでは電流が取り切れないパターンがあり、安定して使うには5インチクラスのバッテリか、いよいよになると12v-5Aアダプタ。

・機体整備につかう電源
普通は充電したバッテリを使うパターンが多いですが、ヘンテコな機体とか通電状態で長時間いろいろやりたい場合が発生する。
そうするとアダプタから XT30とかXT60とかにして、機体にファンをあてながらメンテとなる。
このパターンで 3S-6Sまでは整備できる。
油断してバッテリを最後まで逝っちゃったという経験はみんなあると思う。
そういう焦った状態ではよい整備ができないので、精神安定のためにも電源供給体制は欲しいものだ。
1Sはコネクタささらなくて間違えることはないが、油断すると2SのXT30などに3S挿したりすることもあるので注意。
ここはなんとかしたい。

・その他
Dockingとか、DVR用受信機使いたいとか、なんかそういうのもだいたいアダプタで動かせる。
そしてあと欲しいのは USB 電源。スマホやなにやら、そしてスマコン!あれがめんどい。
そんな感じで新しめの電源関係はみんなUSBだ。
あとPC持って歩く場合は場合によってはそのアダプタが必要。
Windowsの普通ノートだと19.5vで65wの丸端子がよく使われる。MacやChromeBookだと USB-PD。
ゲーミングは19.5vで180w~230wあたりで、容量デカくて使い回せるが、なんかヘンなサイズのコネクタが多い。
ゲーミングはアダプタないとGPU動かないし、GPU動かすためのゲーミングなので、諦めて別に持つしかないかも。780gと鈍器並の重量あるけど。

■ということで
12v にまとめることで、電源まわりが大体は使えるのわかったと思う。
さらに12vは車のシガーソケットに使われるので、デカモバブから AC変換なく電流を取り出せたり、各種車関係のグッズも使い回せる。(ヒューズとか)
それでも USB 電源は別に必要で、これを統合化できないかなーと常々考えていた。
それが今回の記事になる。(長い)

■USB端子から12vを取り出す方法
これがめんどくさくて、どうやって書いても混乱しそう。
USBは5v 500mAhを供給するだけだったのが、なんか20年ぐらい経ったらDC電源のメインになった経緯があり魑魅魍魎。
今回はまず12vを出すのを目的に絞り込む。持ってるスマホをなるたけ高速に充電したい!とかでないので注意。
このあたりの電源を規格的に出せるのが、Qualcommの QuickCharge(QC) と、Type-C でおなじみの USB-PD だ。

いろいろあるが、丸端子で特定電圧を出させるなら、USB-PDを「トリガーケーブル」で運用するのが簡単だ。
Type-Cなのでオモテウラないし、USB-A昇圧ケーブルにありがちなモナカ形状と比べて壊れにくいのもよい。
Type-C系は eMaker という識別チップがついており、アダプタとケーブルがマイコンでお話することで流す電圧/電流を決める。
高速通信できるケーブルが必ずしも大電流が流れるわけでないので「ケーブルもちゃんと選べ」ということになる。
eMaker はコピーチップやら、QCにも対応するカスタム品もあり、調べてみると必ずしも正しく動いていないものも「多数」あるようだ。
ということで、確実なのは eMaker チップ搭載されたのを選ぶ。それ以外はよく調べてリスクを把握するのが無難。
USB PD はバージョンによって3Aと5Aとかの時代があり、5Aにするには eMaker が必要。
ただし USB-PD が必ずしも5A出力に対応しているワケでない。
とりあえずそのあたりをネチネチとチェックして WITRN の eMaker付を購入した。
前買ったeMaker付きのリンクなくなってるな。まあ探すと出てくると思う。

■どのアダプタを使うか
USB-PDはよくみると、出せる電圧や電流がアダプタによって違う。
実際数値通りの性能が出るのかとかもあるし、過電流回路も様々なので細かい評価が必要だ。
とりあえず Anker Power PortIII Pod が間違いないらしいが、Ankerの系統は12v出ない。(5v,9v,15v,20v)
eMakerには最大許容電圧が記されているので、このアダプタに12vのトリガーケーブルを挿すと9vが供給される。

あれ?12vでないぞ?
12v対応しとらんやないけ!

12v取り出したい時には12vが出力できるアダプタを探すしかない。
いろいろ調べた結果、今回は HAYABUSA+ を選択した。
https://www.amazon.co.jp//dp/B08H4VHQSQ/papalagiorg-22
4700円ぐらいだったような気がするが高くなってるな。
本体にちっちゃい字で出力パターンが記載されている。

たいへん小さい。
老眼にはつらい。

組み合わせによって出力が変わるので、理解して使うのがめんどくさい。
さらに途中で他の端子をつないだりすると、その度にリセットがかかる。(出力パターンの切り替えが発生する)

大変たくさん対応してる。Oppo/Oneplus系だけ対応できてない。
USB-PDはPPSにも対応。ただし上限は11vに制限されている。

これは OEM で他メーカからも多数出ており、HI DISC のが安い。
とりあえず今の所これがオススメか。
http://www.akibaoo.co.jp/c/item/4984279642443/?sci_refl=1
あと調べた感じだと、この形状も同じっぽい。
https://www.amazon.co.jp/dp/B08NKBFX26/papalagiorg-22
厳密には形状の縦横比が違い、VOOC(Oppoのやつ)も対応してるかも。
中華通販でも買えるが、PSEとかあるし、これぐらいならアマゾンがラクじゃないですかね。
使いこなせるようになると、2つぐらい欲しくなるので、いくつか試すのもよいかも。
今回のはいずれも GaN の 65w で、そのうち 100w のヤツもいいの(まだちょっと高い)が出てくるだろうから、それを買い足してもよいかも。
なお 100w は 20v-5A で 100w。
12v はだいたい 3A までのようで、5A とれるのは見かけない。(あるの?)

■どうやってチェックしたりするか
順番若干逆になった気もするが、どうやってそのあたりのチェックをするか。
中国ではこの手のスペック偽装が多いので、USBチェッカーを使って調査をするのが当たり前(?)なのか、そういう製品が多数ある。
その中でもオススメなのは AVHzY CT-3 の負荷装置なし。フルスペック。
https://www.amazon.co.jp/dp/B08MDDH385/papalagiorg-22
これについてはあまりコピー商品ないのだけど近いのはコレ。
https://www.amazon.co.jp/dp/B08XM47NMS/papalagiorg-22
BTでアプリ使えるけど、メニューに日本語がない。細かいところがちょっとCT-3に負けるかも。
CT-3の日本語メニューも、いつもの怪しげなヤツだが、機能的なことも含めて CT-3 が良いのではないかと思う。
ファームとか説明書とかはコチラ。Shizukuという製品名になってる。
https://yk-lab.org:666/index.php/ja/

こんな感じでやるよ。これはQC3.0から12v引っ張った例。

CT-3はチェッカー機能に加えて「トリガー偽装」という機能がある。
これは QC とか USB-PD のトリガーチップを偽装することで、特定の電圧を出力させることができる。
これを使うとどんなケーブルでも電圧変更は可能だが、ちゃんと耐えることができそうなケーブルを見極めることが必要になる。18AWGぐらいか?
1Sとか2Sとかの電圧も出力できて緊急時には便利だ。
その場合は、QC対応か、USB-PD の場合は PPS 対応を選ぶようにしよう。
例えば Anker の場合は、PowerIQ という独自のやつで、QC と USB-PD に対応している。
なので、Type-C から QC でも USB-PD でも出せる。
ただしUSB-PD は PPS に対応していないので、細かい指定電圧の場合は QC3.0 を使うこと。
ハヤブサ系は Type-C からは USB-PD で出てきて PPS 対応なのだけど11vまで。
USB-A端子からは QCが出てくる。
(文章にするとややこしい)

■どれぐらい出力がとれるのか
よくある GaN の USB-PD 65w だと、12v-3A ぐらいまでとれるようだ。
25000mAhクラスの大型モバブも同様。
15v-3A の設定で 45w 取ることも可能だが、先の 60w にはちょっと足りず、FATSHARKとかに入れると壊れるので注意。
やっぱり 3S、4S、6S 充電するなら 60wは最低欲しいので、今回の 12v トリガーケーブルでは足りない。
20v-3A のトリガーケーブル使ったら 60w 使えるが、モバブではその出力はなく、あと M4Q は 18v までなど制限があるので注意。
Q6Pro なら使えるけど、間違えないように注意が必要。
20v丸端子のトリガーケーブルを準備すれば、ノートパソコンの電源も寄せられる→20v-5Aトリガーを追加した。

今回まとめた電源セット。20vトリガーはテープ巻いた。現在はこれに1sの丸端子ケーブルも追加してる。
65用のオマケケースに全部入る。

■今回の結論
LiPo充電にはちょっと細いが、がんばれば USB-PD で12v以下は集約できる。
LiPo充電は、20v-3Aの USB-PD を利用することで集約できるが、ケーブル間違えに注意。
ゲーミングのアダプタはあきらめ。

BluePillを使ってみよう

シリーズ「プロポを USB Joystick にしよう」。
https://papalagi.org/blog/archives/1523
https://papalagi.org/blog/archives/1566
https://papalagi.org/blog/archives/1594
今回これに追加する形で BluePill こと「STM32F103C8T6」を使って USB プロポを作ってみる。

前に作ってはいたのだけど、HOI-Linkとかと比較してスゴイ差異があるわけでないので使ってなかった。
最近 Minecraft FPV で使えるということで、周囲のニーズが上昇したのと、ソースコードが公開されてるので、アレコレ自分でSBUSへの理解を深めるのにもよい。
安価がゆえに、いろいろと中華マイコンのややこしさを内包してて、逆に入門用としていいんじゃね?とか思ったりして。
ドローンのFCもSTM32系で、Bootloader まわりの理解が進むかも。
ということで、ちょっと記事にしてみた。

今回使うマイコンボードは「STM32F103C8T6」というやつで、「Blue Pill」とか呼ばれてる。
非常に脱線したが、モノはコチラです。今はそんなに安くないですね。
https://www.banggood.com/STM32F103C8T6-ARM-STM32-Small-System-Development-Board-Module-SCM-Core-Board-p-1668936.html
時間かかるのでアマゾンで買うのもアリです。倍ぐらいしますが、元が安いので数百円の差です。
英数字の羅列をよく覚えるオタクでもこの長さは覚えにくい。
「STM32F103」ってのは、3Dプリンタとかマルチモジュールに入っている「F1」のこと。
「STM32F103」は中華サイトだと200円ソコソコで売られている激安のマイコンボード。
Cortex-M3 の ARMベースなので、Arduino純正のAVRマイコンより高性能だ。
元々は「Maple mini」というボードのコピー。
Maple は LeafLabs という会社がやっていたが、2015年に活動休止。
その後、Arduino互換ボードやmbedとして使えるようになった。
Arduinoはいくつかあるが、STM32duinoが、製造元の STマイクロエレクトロニクスもサポートということで無難な感じ。
STM32のメリットは、製造元であるSTマイクロエレクトロニクスが、USB HALのドライバを配布しててこのあたりの活用ができる。
例えば今回の場合だと、Joystickとか USB HID を使って簡単に実装できる。

それでも200円/枚って安すぎないか?
実は搭載されているマイコンもクローンのようです。
BluePill の場合は、CKS の CS32F103C8T6 が載っているのが多いようです。
ピン互換でそのまま動くようですが、CPU ID が違っていたりとかするので、クローンであることを理解してやったほうがいい。
クローンといっても GigaDevice の GD32F103C8T6 とかは、オリジナルの 72MHz より高クロックな 108MHz で動作する。
本家よりプロセスルールが微細化したりして高性能になっているのだ。
DJI のドローンとかでも採用されているので、安物クローンなどとあなどれない。
さらに GigaDevice だと、GD32F103 を RISC-Vベースでクローンした GDVF103 というのも出してる。
かつてのCPUにあったような仁義なき戦いが繰り広げられているので、好事家の人は調べてみるのもいいだろう。

今回のはSTマイクロエレクトロニクスのか?プリントが薄いような・・

とりあえず簡単に作成したいという場合は、おなじみ Oscar Liang のページを参考に作ろう。
https://oscarliang.com/diy-sbus-usb-converter/
ST-Linkとか、USBシリアルなどを準備して、STマイクロエレクトロニクス が配布している Flash ツールで焼くだけ。
ST-Linkの場合は、横から出ている4本足から、USBシリアルは PA9、PA10から接続します。
なぜ基盤についているUSBからイケないのか?については後ほど。
反転回路は記事中のもの(NPN,5K,10K)でもいいですし、HOI-Link(NPN,51K,5.1K)のものでもいいです。

これだけだと面白くないので、ArduinoIDE から自ビルドできる方法をまとめる。
通常のArduinoはブートローダの類が入っていて、基盤のUSBをつなぐとプログラムの入れ替えができる。
ですが、BluePill の場合、そのまま基盤のUSBを接続してもできない。
焼き込む方法は大きくわけて3種類。
ドローン野郎にはおなじみの UART1 を boot ボタンおして DFU でつなぐアレが Serial Bootloader。
USBシリアルを準備して、PA9(TX) に RX、PA10(RX) に TX を接続。
ジャンパを Booloeder にして焼き込みます。
これだと Flash 全部が使えるというメリットがあります。
ドローンの FC はこの構造。(CP210xでつなぐ)
他の方法としては ST-Link を使う。これは Silverware とかでも使われる。
手軽ですが Serial print が使えないので開発には不向きです。
普通の Arduino のようにならないのか?という場合は、Flash の容量を食いますが STM32duino Bootloader を焼き込みます。
おやコレはどこかで・・というと、DIY Multi Module の古いやつで Bootloader あるなしあった。
これだと普通の Arduino のように、基盤のUSB端子からBootジャンパなしに書き換えしたり、シリアルが出てきたりします。
ということになっているのだけど、BulePillに関しては、一部のチップ抵抗値が間違えているらしく、環境によって動いたり動かなかったりがあります。
なので、ArduinoIDE でやるのであれば、USBシリアルからやるのがオススメ。(ズバリ)
これでアレコレもがくと、この手のハードウエアへの理解が深まるかもしれない。

さて自ビルドしてみましょう。
git はコチラです。git clone してライブラリに取り込みましょう。
https://github.com/DarrenLouw/SBUS
追加するボードマネージャーのURLはコチラです。

http://dan.drown.org/stm32duino/package_STM32duino_index.json

あとはコチラの画面の通りやれば焼き込みできます。
USBComposite.h が STM32 由来のドライバで、これで USB HID を構成しています。
それ以外の SBUS.h は Arduino のライブラリとして使えるので、SBUSをマイコンで活用する場合には便利です。

2021年1月16日追記。
CurseForge入れるときにJAVA入れますが、あれ入るとArduinoIDEのJAVAとバージョン違いで動かなくなったりします。その時はいったんJAVAをアンインストールしましょう。
あと元のソースは「SBUS sbus(Serial2);」ってなってますが、これは「SBUS sbus(Serial3);」に変更しましょう。
なお各割当はこんな感じです。

Serial1 → UART1(5v): TX PA9、RX PA10 *USBシリアル接続で使ってる
Serial2 → UART2(3.3v): TX PA2、RX PA3
Serial3 → UART3(5v): TX PB10、RX PB11

ブレッドボードでやるほうがよいですが横着。
USBシリアル経由で焼くとこんな感じになります。
かなり無理目にフリスクに入れた作例がこちら。Bootピンとかあれこれカット。
それでもオシレータは入り切らないのでスライド禁止。

あとはシリーズ「VTXラップカウンターを作ろう」を記事にするかだなー。
電波の取得方法がノウハウで、その部分が進んでないのと、やってるうちにいろいろ応用活用思いついて、なかなか進まないという。
ということで、2020年はこの記事でおしまいです。
2021年も良い年になりますように。

WSL2でLinux版Betaflight Configuratorは使えるのか?

覚書で読み飛ばし推奨。

Betaflight Configurator のサポートから ChromeOS が外れた!マジで!
WSL2でUSBシリアル使えると Configurator系がUbuntuで使えて助かるかもな。
さらにArduinoとかも使えるってことになるし。
という思いつきからこの話は始まる。

WSLではUSBシリアルが使えたのだけど、WSL2からは使えなくなった。
かわりにといったらなんだが、WSL2からはGUIが使えるようになった。
なので「GUIで動いてUSBシリアルを使う」ってのが現時点動かない。
これを何とかできないか。
手順としては、1.WSL2でGUIを使えるようにし、2.WSL2でUSBシリアルを使えるようにする、という2段階になる。やってみた。

■WSL2でGUIを使う
WSL2からGUI使えるってことになってはいるんだけど。
xrdpでリモートデスクトップひっぱるとか、VcXsrvで.bashrcにdisplay設定を書き込むとか、いろいろ紐付けがめんどくさかった。
いずれもWindows 側で受け口を作って、Ubuntu側から引っ張るのだが、実はWSLでは割り当てられるIPアドレスが都度かわる。
WSL/WSL2を立ち上げて、PowerShell から ipconfig すると vEthernet という形でIPアドレスが割り当てられていることがわかる。
/etc/resolv.confを見ると、namesaver として上記の vEthernet のアドレスが割り当てられている。
つまり、WSL側から見て、ホストのWindowsは nameserver のIPアドレスで、そこのXサーバに向けて接続するという方法だった。
ところが割り当てられる都度変わるのでめんどくさい。
そういうスクリプトを組んで工夫してたりしていた。
今回改めてなんか良い方法ないかと探していたら、MobaXterm の方法を知った。
https://qiita.com/vega77/items/f00323e8ce64bfa1fdd6
左上にある「Session」のアイコンから「WSL」を選択。
「Run method」を「Localhost connection」に変更。
右上にある「Settings」のアイコンから「X11」のタブで「X11 remote access」を「full」に。
これだけ。あとは該当の Session で使いたい WSL2 を選択し、そちらのターミナルから実行すればよい。
実行すると MobaXterm の Xserver が動くというシカケ。すごいラク。やったー。
Ubuntu側のGUIを動かすために必要な手順はコチラ。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libgl1-mesa-dev xorg-dev

おなじみの目玉を出して実験。

$ sudo apt install x11-apps
$ xeyes
出た。

これで動くようになった。
せっかくなので、deb版の Betaflight Configurator を動かすところまでやってみよう。

$ sudo apt install gconf-service gconf-service-backend gconf2-common libgconf-2-4
$ wget https://ci.betaflight.tech/job/BetaFlight_Configurator/lastSuccessfulBuild/artifact/release/betaflight-configurator_10.8.0_amd64.deb
$ sudo dpkg -i betaflight-configurator_10.8.0_amd64.deb

そして起動。

$ /opt/betaflight/betaflight-configurator/betaflight-configurator
画像
こいつ・・動くぞ。10.8.0というバージョンが見えます。

ひょっとしたら「なんか足りないよ!」とかいわれるかもしれない。
その場合は「sudo apt –fix-broken install」とかで足りないパッケージをいれよう。
お作法によると、DFUモードの設定と、デバイスにユーザの追加とかがある。
そのあたりは git で確認。
https://github.com/betaflight/betaflight-configurator
設定してもこの段階ではシリアル使えないので、どうやってもつながらないけど。
とにかく WSL2 で Betaflight Configurator が動くところまでは行った。

■WSL2でUSBシリアルを使う
UFEIセキュアブート外してUSB/IPを使うという方法があったが、セキュリティ的にどうだろ。
そこで Virtual Here という USBデバイスを OverIP するツールで実現しているのを発見。
https://contentsviewer.work/Master/WSL/Tips/WSL2-USB/WSL2-USB
具体的にはWSL2のカーネルドライバをビルドして、WSL2のカーネルに追加。
Windows側に Virtual Here のサーバを、WSL2側に Virtual Here のクライアントを入れ、それで接続してやる。
大変詳しいページなのでなぞっていけばできるが、コチラのページといくつか違ったところ。

1.Ubuntu20.04 LTS ベースでやった。
2.kernel Version が 4.19.84 だったので読み替えた。
3.Serial Convererは FTDI に加えて(いつもの) CP210x を追加した。(menuconfig)
4.どうしてもWSL側からWindows側が見つからないので、WindowsDefenderをイジった。

1と2はまあいい。
3の menuconfig 追加はコチラ。

Device Drivers->USB support->USB Serial Converter support->USB CP210x family of UART Bridge Controllers [M]

そして4。ココでちょっとハマった。
これはXサーバの時にも問題になっていたアレ。(それで先にクドクド説明した)
これのせいでDNSが引けないというトラブルもちょいちょい聞いたりします。
調べた結果、Windows側の Firewall であるところの、WindowsDefender が閉じてて WSL からアクセスさせないということになってる。
Dockerとか使うのに、Windows側から WSL 側のポート開放とかの話はよくあるしよく聞く。
WSL側からホストである Windows側へってあんまりニーズないのか知らなかった。
まあとにかく今回発見した。
元ネタは git のどこかの issue で見たのだけど、再度探したら見つからなくて、とにかく内容的にはコチラ。
https://www.howtogeek.com/howto/windows-vista/allow-pings-icmp-echo-request-through-your-windows-vista-firewall/
セキュリティ具合は各自納得できるレベルで調整。

この処置で、あれだけつながらなかった Virtual Here がサクっとつながり、WSL側の/dev/ttyACM0につながる。/dev/ttyACM0 は chmod 666 とかするの忘れずに。
なお Virtual Here 無料版はデバイス接続1個まで。
万難を排し、ついに deb版の Betaflight Configurator が WSL2 で動いたのであった。

画像
つないだのはいつものMeteor65。今回導入したアプリが勢揃い。

なので、掲題の答えは「がんばれば動くが、手間が見合わない」ということでした。
そもそもWindowsのシリアルドライバ関係のトラブルがイヤで、Ubuntuにしたいのに、Virtual Here だと Wndows のドライバ避けられないじゃないか。(今気づく)
別に Ubuntu 準備したほうがマシ。つうかなぜChromeOSのサポートヤメた。
Defenderのこのあたりも、そのうちWSL2になんらかの変更が入るのでなかろうか。
その時にまたあらためて検討。

でも Virtual Here を勉強できたのはよかった。
コレ使うとインターネット越しにUSBデバイスつなげるってことだよね。
おもしれえ。

マイクラでドローンを飛ばせ「Minecraft FPV」

https://minecraftfpv.com/
なんかすごいのキタ。ちょっと夢見てたレベルが実現。
マイクラの世界をFPVドローンで飛ぶ。
ラジコンMODとかはあったのだが、今回のこれはちゃんとFPVだ。
マップデータを引っこ抜いてUnityで飛ばすってはあったけど、今回のこれはちゃんとマイクラだ。
マイクラクラスタとドローンクラスタは、カブってそうで、カブってない空気を感じてる。
ということで、仲間増やすために急ぎ導入方法をまとめてみたよ。

■Minecraftとは
とにかくスゴいおばけタイトル。なんとなく触ってない人はこの機会に触ろう。スゴイから。
Minecraftというのはプラットホームがたくさんある。
当初はMojangの出していたJAVA版から始まって、コンシューマ版はこれとは別々にリリースされていた。
いろいろあってコンシューマ版はサーバとかを共有できるようになっている。
スキンとか販売して商売として成り立つようになった。
なので、最近の「マインクラフトする」というと、コンシューマ版だと思う。
JAVA版は開発版という位置づけのままリリースされていて、こちらはMOD文化などが根付いている。
この MOD 文化が他に例をみないスゴさで、今回の Minecraft FPV もその MOD のひとつだ。
今回はこのJAVA版を使うことになる。つまりできるのはPCだけなので注意。

■JAVA版Minecraftを入手
https://www.minecraft.net/ja-jp/store/minecraft-java-edition
2600円だったと記憶していたが、いつの間にか3000円になってた。
アカウント紐付け式で、マイクロソフトアカウントで買うことになるようだ。
JAVAが動く環境であれば、WindowsでもMacでもLinuxでも動く。

■CurseForgeを入れる
MinecraftつったらMOD。
かつてMODは各バージョン管理を自分でして、手動でフォルダ掘ったりとかしていたけど、今は管理ツールがある。それがCurseForge。
https://curseforge.overwolf.com/
CurseForgeはいろんなゲームのMODプラットフォームなので、たくさんの対応があるようだが、ここはMinecaftを選ぶ。
色がついてない場合は、インストールされていることをCurseForgeが認識していない。
インストールした場所を指定して認識させよう。
あと動かすのにJAVAが必要だ。なかったら入れよう。
https://java.com/ja/download/
できたならば「+ Create Custum Profile」でプロファイルを作成。

もうすでに3つProfileありますが気にしないで

「Profile Name」はテキトウに。(「MinecraftFPV」とか)
Minecraftのバージョンは「1.16.4」。
Modloaderは「forge-35.1.0」を選択する。(デフォルトから変更)

「MyModpacks」でつくったプロファイルを選んで「Add more Content」を選択。

検索窓に「FPV」と入れると「Minecraft FPV」が出てくるので「Install」。
UpdateするときもココにUpdateって出てきます。

すにで「Installed」になってますが気にしないで.

これで実行できる環境ができた。
「Play」をすると純正のラウンチャーが立ち上がって実行できる。

■コントローラーの設定
ドローンといったら、まずプロポの設定。
https://minecraftfpv.com/wiki/controllerSetup
各chのアサインがポイント。
ココを参考にやってみればわかる。
CHごとにスティック動かして割り付けましょう。
あと最低限ARMのスイッチは設定しておきましょう。
他とCHがカブらないように注意。

たくさんあると選択がいろいろ出る。。

プロポのHIDですが、有線接続できるプロポが今手元にないので確認してないですが、多分イケると思う。(追記確認)
HOI-Link(自作のヤツ)はなぜか使えなかった。(ARMせず)
ウチはMapleベースの自作ドングルでやってる。
https://github.com/DarrenLouw/SBUS
vJoySerialFeederもできました。
https://papalagi.org/blog/archives/1594
飛ばせるドローンあればできるので、どうにも使えない場合はこちらもよいかと。
設定はそれなりに手間かかるけど。

2020/12/23 追記
Jumper T16 Plusの有線接続でイケなかったそうです。
こちらはARMはするようですが、プラスの数値しか受け付けない模様。
https://twitter.com/FpvXyda/status/1341405005132275714

Tranis Q X7 は有線で接続したとのこと。
https://twitter.com/ADHayaP/status/1341706303970787328
OpenTXがダメかな?と思ったけど、そうでもないようですね。

ふと思いついて、箱コンでやったらできました。
スロットルがセンター固定なのがアレですが、お手軽ですね。
あとARMをトグルスイッチみたいなので固定できないので、Flippedして常時ARMにするといいです。
ARMしたくない時はボタン押す、みたいな。
x360ceでXInputとかできるかも?ともがいたがダメでした。(Windows10版とかは可能な模様)

2020/12/29 追記
T16IZの有線接続ダメでしたね。(アップデートされた1.7.2で確認)

■とりあえず飛ばしてみる
できたならば、SinglePlayerでマップを作ってとりあえず飛ばしてみる。
ARMスイッチ入れると、プロポの十字がふたつ画面に出てきます。
今のところ機体は5インチ以上でAcroのみです。
飛べたならば、MultiPlayerでMinecraftFPVのサーバにつないでみよう。
https://minecraftfpv.com/wiki/joiningServer
MultiPlayerでサーバのアドレスを指定することでつながります。
こちらではレースモードなど、サーバ側でいろいろ提供できるようですが、まだ詳細までたどりついてないです。
https://minecraftfpv.com/wiki/droneRacing

■高速化をする
動いた環境ができたら、CurseForgeでProfileをコピーして、設定を変えてみよう。
元々軽いですがドローンなのでなるべくヌルヌルな高FPSで使いたいですね。

Profile上で右クリックするとメニューが出ます
ココでも出せます。Duplicate Profile でコピー。

マインクラフトの高速化は検索すると出てきます。
とりあえずこのあたりが処理優先な設定。

あとGeforceとかdGPUが使える人は、JAVAでGeforceが動くように設定しましょう。

右下のアイコンあったりする「NVIDIAコントロールパネル」です。

さらに高速化という場合は、OptiFineを入れましょう。
https://optifine.net/downloads
今回の場合は1.16.4用をダウンロード。
CurseForge の場合、ココから OpenFolder して mods の中に jar をコピーしてください。

先にfpvdroneのmodが入ってますね。

OptiFineが入ると、VideoSettingの画面がこのように変わります。

左下にOptiFineが入ってます表示でてます。

この中のPerformanceをONにしておきましょう。
(作者の方から直々にコメントいただきました。ありがとうございます!)
設定は山盛りあるので、好みに合わせてアレコレやるのが良いでしょう。

■描画をキレイにする
ブロック並ぶゲーム画面にキレイとかあるのか?
と思われそうですが、これがなかなかどうして実はすごいんですよ。
これは先の OptiFine を入れた状態から、Shaders(シェーダー)を入れることでできます。
いわゆる「影MOD」と呼ばれるヤツです。
シェーダーはいろんなものがありますが定番はSEUSってヤツです。

これはなにも選んでない状態。

シェーダー使うとゴリっと重くなります。
このあたりでメモリの割当を増やしてやるとかも必要かも。(4Gから8Gに変えた)
Geforceのドライバも460.89以降にしましょう。なぜかfpsが倍ほど違います。
その他にもリソースパックとかあるので、いろいろイジれます。
マップデータもたくさん配布されています。

この映像の違いを見よ。左上のFPSの違いも注目です。立ってるだけなのに・・

■最後に
コース作ったり、レースをしてみたり、機体の設定したり、PIDを設定したり。
ベースがマインクラフトだけに、できることはムチャクチャたくさんある。
そこにドローンを飛ばすという可能性を加えていただいた、製作者のCroolsbyさんには感謝しかないです。ありがとうございます。
この年末はコロナにドカ雪と、引きこもる要素に事欠かないので、こちらの Minecraft FPV で楽しむのはいかがでしょうか。

GoPro8剥き時代到来

「剥きプロライフ」はいかがでしょうか。
保護カバーがないわけですから、使っているウチにジャンジャン壊れますね。
撮影できてもジャイロダメになったり、WiFiダメになったり。
まあ様々な壊れ方してます。

ウチの界隈は 6での運用が多いです。
理由は ReelSteadyGo が使えるから。
7は6とSoC同じ(ソシオネクストのGP1←古い)で、基本的なハードウェアに差がない。
7は HypersmoothというEISがチョイよいですが、ReelSteadyGo 使えたほうが使い勝手はいいですかね。
ということで 7 はスルー。

で、8です。
これも SoCは同じ GP1 で、世間的には2世代ぐらい古いのですが、今回もソフトウェアの改良でしのぎました。
それがあってスルーしていたのですが、ココで GoPro LABS が登場。
https://gopro.com/ja/jp/news/gopro-labs-launch
これによりアレコレ改造できるようになった。
有名なのだとWebカメラ化とか。
この中に ReelSteadyGo の対応と、QRコードによる設定変更などがあり、ドローン搭載への便利機能がスゴイ強まった。

そうしたところ GoPro9 販売開始。
GoPro9 はセンサーサイズもあがって、サイズもアップしましたが、またまた SoC は GP1。
もうライバルと比較して3周遅れぐらいになっちゃうんでないでしょうか。
コレである限り電池持ちの改善は期待できそうにないですね。
GoPro の苦しい台所事情が垣間見えます。
いろいろ強まってますが、代わり映えしないともいえる。
ただこれによって GoPro8 も値下がりし始めました。
海外だと新品350ドルぐらいが定価になっているっぽいですね。
安くなったが安くない。でもジャンクの6も取引価格高止まりですし。
あいかわらず評判は悪いですが、BetaFPV から 8向けの BEC も売り出されています。
ということで、今後は GoPro8 を剥きプロのメインにすることにしました。

剥き方についてはコチラを参照。
GoPro Hero8 Black disassembly guide.pdf
https://drive.google.com/file/d/1SbetTFhECogr-prt_DqIpXEdTE3Jd8EF/view?fbclid=IwAR0sOXk296xgcrXXDbRanmnYhMVzmSibe6zTS1s-RfiPeJYQgtsDIv5CQIQ
これを見ながらやるとなにも難しくないです。(いったいなにを紹介する記事なのか)

いよいよ分解する前に、SSIDとPASSは控えておきましょう。
3つ爪を外します。ここまでは簡単。
バリっとへっぱがします。戻したいときは慎重に。(この例はもう戻せない)
カメラのフレキとコネクタが幅広になってますね。
ココらへんは代わり映えしないですね。
3枚におろせました。BECボードも入れて14gぐらいですね。
とりあえず通電チェック。

6も8もあまりかわらないです。
びみょーに形が違うので、これをベースに寸法取りを行ってケース作成を行います。
(続く)

vJoySerialFeederを使ってみる

HOI-LINK はさらに低遅延化して、v2となったようです。
http://www.hoihoido.com/blog/?p=4202
風のウワサに聞くと、ケーブル接続より低遅延になったとか。
まさにプロポ接続界の阿頼耶識システム。
残念ながらココから先は非公開となったそうです。

HOI-LINKを通して、この関係にいろいろ興味が出た。
PCに信号データを入れて、もっとあれこれ活用する方法はないだろうか。
そこで見つけたのが「vJoySerialFeeder」。
https://github.com/Cleric-K/vJoySerialFeeder
海外では2年ぐらい前から使われているし、DonkeyCar界隈でもよく活用されているそうだ。
対象はWindowsとLinuxだ。残念ながらMacはない。
これはなにをするものなのか → シリアルプロトコルをUSB HIDに変換して送り出すもの。
わかりにくいので、絵にまとめてみた。

これが無線でドローンを操縦する仕掛けで、ポイントは2つある。
電波部分と通信部分だ。
これをUSB HIDドングルとかで、PCシミュレータに繋ぐ場合はこうなる。

電波部分はそのままだが、USB HIDの通信部分は工夫で高精度/低遅延になる。
そして今回の vJoySerialFeeder の場合はこうなる。

通信部分はシリアルに統一されるので、電波部分とかの差異も確認しやすくなる。
また実機から MultiWii プロトコルを引っ張れるので、実機のセッテングの差異などもある程度確認できる。
あと通信状況を可視化してくれる機能とかもある。

あんまり日本語記事なかったが、DonkeyCar関連で記事があった。
https://qiita.com/rukihena/items/ed17c2245db504dd263a
必要なことはほぼ書かれているので、コチラを参考にするとできる。
こちらは Linux を対象に書いてあるので、Windows向けに簡単に説明をまとめる。
実機があればコストゼロでできるので、試してみるのもよいでしょう。

■共通項目
vJoyをダウンロードしてインストール。
https://sourceforge.net/projects/vjoystick/
vJoySerialFeeder/releasesからダウンロードしてzip解凍する。
vJoyのバージョンと合わせる必要があります。
https://github.com/Cleric-K/vJoySerialFeeder/releases

■実機を接続する場合(MultiWii)
まず MultiWii での接続例。
これはドローン持ってれば追加投資なしで実施可能です。
Betaflight につなぐように USB で PC につなぎましょう。
この際にレシーバーが機能するようにしてください。
外付けのレシーバーだと電源ないとダメとかありますね。
そこらへんの TinyWhoop が実験にはよいでしょう。
FCを USB HID化(set usb_hid_cdc = on)とは違う手法なので、本体はなにもイジらなくてOKです。

Betaflightとかの接続と同じです。

vJoySerialFeeder を起動します。
Profileをテキトウに書いて、Protocol を MultiWii に。
Port を Refresh すると、ドローンが接続されている COM ポートを見つけてくれると思うので Connect します。
Add Axis を4つ押して4ch。スイッチ関係使うなら Add Button で必要な数入れておきましょう。
Add Bit-mapped をいれると信号を見える化してくれます。他にも機能盛りだくさんですね。
いろいろできますが、シミュレータ側で調整できるので、とりあえず割り当てられてるといいみたいです。
なにが正しいかはわからないですが、とりあえず画像を参考に設定してみてください。

左上に「vJoy – Virtual Joystick」が認識されています。

あとはシミュレータ(今回はVeloci)を立ち上げると、コントローラとして Assign されていると思います。
いつもどおり設定してもらえばOK。
SPI接続の内臓受信機の場合は、低遅延って話題の RedPine と比較してみるのもいいかもしれんですね。

■受信機直結の場合(SBUS)
受信機からチョクに取りたい場合。
つまるところ、受信機にUSBシリアル変換基盤をつけて、PCにシリアルを流し込むわけです。
今回はいつもの SBUS ですが、IBUS や DSM もできます。
SBUS というと、HOI-LINK の時にもありましたが、信号が反転している(Inverted)問題です。
前回は反転回路を組みましたが、今回は USBシリアル変換基板に反転機能があるので、それを利用しましょう。
USBシリアル変換基板はコチラです。
FT234x
https://akizukidenshi.com/catalog/g/gM-08461/
USBシリアル変換基盤ならなんでもいいんですが、安くて小さいというメリットがあります。
XM+とかだと幅がほぼ同じであるため、おなじスミチューブに入れられます。
こちらの Rx を Inverted に FT_PROG というツールを使って切り替えます。
FT_PROG
https://www.ftdichip.com/Support/Utilities.htm#FT_PROG

普通に接続します。FT234xはちっこいですね。
Scan and Parse します。
Invert RS232C Signals のところで RxD を反転にします。
Program を押す。
Program で完了。
配線してみました。

配線は 5v/GND はそのままで、SBUS は Rx に接続します。
あとは MultiWii の時と同じ流れになります。
Protocol を SBUS にしてください。
細かい設定もいろいろありますが、デフォ設定あるのでとりあえずそれで。
あとはシミュレータで設定すれば完了です。

まあ設定はそれぞれがもがいてください。(まだよくわかってない)

駆け足ですがこんな感じです。とりあえずまとめてみた感じです。いつもの拙速主義です。
長時間の運用に耐えるのかとか、遅延とか、その他問題はないのかとかは、これからしばらく使ってやってみます。
今回のはシリアル処理が PC 内に入っちゃうので、仮想シリアルを挟むといろいろ応用できる。これは夢広がる。
あんまり日本で使われていない感じなので、この機会にいろんな活用例が出るといいなと思っています。