Dropbox

特別新しいことをやろうとしているわけではありません。タイニーをLEDで飾る延長線上、かつ古くからあるBetaflightのLEDコントロールを絡めた話です。

写真は今は飛ばなくなった古い5インチ機です。以前はよくこんな風なLEDとブザーが同時に取り付けられるボードを買っていました。多分、最後に使ったのはBetaFPV 75Xあたりでしょうか。このLEDはBetaflight ConfiguratorのLEDストリップタブで設定して光らせます。当時は確かアームしたら色を変えるみたいなことをしていましたが、ゴーグルをかけている本人にはわからないので、単純なテールランプ的な意味合いしかありませんでした。

これと同じか互換性のあるLEDコントロールチップ(WS2811かWS2812)が搭載されたCOB LEDテープも簡単に入手できます。それを使えばBetaflightからLEDを制御できます。残念ながら日本のアマゾンを見ても、ほぼ全てがテープ幅が10mmか12mmもあります。大きなドローンならば、それでも構いませんが65mm機などには大きすぎます。そんな時にAliexpressで3.5mm幅のものを見つけたので入手しました。WS2812搭載で動作電圧は3.3Vから5Vとあります。これは小型のFPV機にピッタリです(というか商品説明にFPVのことが書いてあります)。


入手したのはLEDが10個の物ですが、20個のものも売っています。他のCOB LEDと同様に途中で切ることも出来ます。

FCへの接続は5V,GNDと信号線をLED端子に接続するだけなので簡単です。一方、Betaflightの設定は少しややこしいです。

[ 準備 ]
LEDストリップ設定を使うためにはビルド時にLED Stripオプションが必要です。

次に基本設定でLED_STRIPをオンにするとLEDストリップ画面が使えるようになります。

以下、Betaflight 4.4.3での設定例です。

[ ワイヤーオーダー ]

とにかく最初に設定しなければならないのはFCに何個のLEDが付いているかを知らせることです。これを行うのがワイヤーオーダーモードです。ワイヤーオーダーモードをクリックしてマトリックスのどこかをクリックすると数字が現れます。私の購入したものは10個のLEDが付いているので0から9の数字がどこかに現れるようにします。画面上のマトリックスはあまり気にしなくても良いです。どこでも良いので0から9の数字があれば動作します。また、一つ一つクリックしなくともマウスをスイープすると一度に沢山の数字を割り当てることが出来ます。マス目がマトリックスになっているのは、物理的なLEDの配置に合わせて適当に数字を置くことにより使用する人がわかりやすくなるだけでソフトウェアにとっては特に意味はありません。
割り当てが終わったらワイヤーオーダーモードを解除します。

[ カラー ]

注) スクリーンショットのミスでワイヤーオーダーモードが光っていますが、この時点では解除されているべきです。

ともかく光らせてみます。マトリックスでLED0もしくはスワイプして全LEDを選択します。機能でカラーを選択します、そして下の色見本から適当な色をクリックします。保存すると選択した色で光ります。どれか一つのLEDを選択して常時点滅に指定すれば点滅します。また、複数に対してラーソンスキャナーを指定するとナイトライダー効果が得られます。まずはこれらの機能で色々と遊んでみましょう。


LED9番は点滅、その他のLEDは色違いでラーソンスキャナーに設定した例です。

カラー修正で送信機のスティックやスイッチを割り当てられます。適当なLEDを選んでRollやThrottleを割り当ててみます。するとスティックの動きに合わせて色が徐々に変化します。色の変化は最初に選んだ色とパレットの並びで決まっているようです。AUXなどのスイッチも同様です。パレットの色は自分で変更も出来ますので好みの変化を作り出すことが出来るかも知れません。残念なのはこの機能はLED毎に違うスティックやスイッチを割り当てることが出来ないことです。本当はROLLはこのLED、PITCHは別のLEDで変化させたいと思ったのですがうまくいきません(もしかするとバグっているだけなのかも)。

[ オーバーレイ ]
警告灯とVTXは検証していません。警告灯はFCがワーニングメッセージを表示ている時に機能し、VTXはSmartAudioで設定する周波数によって色を変化させられるらしいです。どちらにせよパイロットには見えませんし、周りで見ている人にも大して意味があるとは思えません。

インジケーターに期待したのですが、いくら設定しても思い通りに行きません。YouTubeに設定事例があるのですが、その通りにならないので現行のBetaflightがバグっているのかも知れません。とりあえず飛行中に変化させる設定を紹介します。複数のLEDを選択します。上の例では全てのLEDを選択していますが2個でも構いません。ただし、一つをアドレス前半、もう一つは後半のアドレスにします。そしてインジケーターをオンにして、オリエンテーションからW,N,S,E,U,Dのどれかを選択します。本来ならば、このWとかEに意味があるはずですが、どれを選んでも動作に変化はありませんでした。以上の設定にてROLL,PITCHの操作で何かしらのLED変化が得られます。


まずはPITCHを上に倒すと全点滅なのでアングルレーサーだと常に全点滅になってしまいます。PITCH下の時はROLL左右で半分ずつ点滅になります。スティクの角度で点滅の速度が変わります。

飛んでいる時に派手さを演出するためにはインジケーターとラーソンスキャナーを組み合わせるのが良いでしょうかね。

HDZero関連記事を連投したので、ここで目次を書いておきます。

レースのレギュレーションにLED装着があり、慌てて手持ちのCOB LEDをテールランプ的に付けたりしていました。

これは日本橋電気街で購入した格安の5V駆動のCOB LEDを適当に装着したものです。これでも飛ばしているとそれなりに栄えます。ただ、幅とか重さに問題があるので全周LEDで飾るというわけには行きません。それに疎な感じが全周LED向きではない気がします。

そこで入手したのが2.7mm幅の高密度LED COBです。

これはAliexpressで購入しました。幅が2.7mmで軽量なBetaFPC Metor65 SEフレームの細いプロペラガードにもピッタリと収まります。また長さが365mmで65サイズのフレームの全周に取り付けるのに丁度良い長さです。

こんな感じに仕上がりました。貼り付けはLEDに付いている両面テープです。加えて要所要所を糸で縛り付けて補強しています。

FlyWoo FlyLens85は100g未満で構成可能な評価の高いCineWhoopです。

写真はHDZero搭載機ですが、軽めのバッテリーならば箱だしで100g未満になります。

これにHDカメラを搭載するためのマウントオプションがFlywooから販売されています。

ところがこんな縦マウントなんです。撮影とか飛行性能そのものは心配はないのかも知れませんが、着陸で前に転ぶとレンズを強く地面に打ちつけてしまう気がします。ということで、このマウントは購入したものの装着だけして飛ばすのはやめました。また見た目的にも普通に横置きしたいということでマウントを作りました。

カメラマウント共通化作戦に従ってRunCam Thumb Pro付属のマウントに合わせました。

RunCam Thumb Pro付属のマウントを装着できます。

Insta360 GO3のマウントもこれに合わせて作成済みです。他にもRunCam Thumbのマウントも作成してあります。

RunCam Thumb Proを搭載してテスト飛行した様子です。

STLファイルはいつものようにthingiverseで公開しています。
https://www.thingiverse.com/thing:6374474

印字品質があまり良くないですが、販売もしています。
https://dskozak.stores.jp/items/657ad8c78f9c8502b57e52f8

HDZeroゴーグルのRecord Option/Audio SourceにはMic, Line in, A/V inの選択肢があります。規定値はMicになっています。どうもゴーグルには内蔵マイクロフォンがあるようでDVRには何かしら録音されていますが、ほとんどファンノイズらしきものに埋もれてしまった役に立ちません。そこで外部マイクを取り付けることにしました。

必要なのはTRRSコネクター(4極)で接続されるマイクロフォンです。世の中にはTRSコネクター(3極)のマイクロフォンも沢山ありますので間違えないようにします。

私が用意したのはこのマイクロフォンです。

このマイクを写真のようにヘッドセットマークのあるジャックに接続しました。Audio SourceをLine Inに設定すれば準備完了です。A/V inはアナログモジュールとAV IN 3.5mmコネクターに接続されるようですがコネクターの仕様が違うのでTRRSマイクロフォンは使用できません。3.5mmコネクターのピンアサインはゴーグルのマニュアルに図解されています。

ゴーグルのファンがうるさいですが、十分にモーター音を捉えられるようになりました。

WTW Kagawa(別名WTW Udon)のオンラインミーティングでレース中にクラッシュリカバリーを素早く行いたいという問いかけに対し、それはモーメンタリースイッチにFLIP OVER AFTER CRASHとARMを同時に割り当てる(ARMに二つのスイッチを当てることになる)と良いよと先輩が答えました。クラッシュしたらディスアーム、モーメンタリースイッチを入れながらスティクを倒してリカバリー、再びアームしてレース継続という流れです。このクラッシュリカバリーとアームを同時に入れられるというのは知らなかった。

これに対して、一度ディスアームするのが面倒であるという意見も出たので方法を考えてみました。

3ポジションスイッチ(AUX3)を使い、それが中間に入った時にディスアームされるというのがミソです。上のモーメンタリースイッチを使う手順の利点は手を離すとディスアームになるという安全性を担保した設定であるということです。それは失われてしまいますのでタイニー専用と考えた方が良いです。

手順としてはクラッシュした時にAUX3を切り替えるとクラッシュリカバリーに入る。この時、本来のアームスイッチであるAUX1はどちらに倒れていても良いです。そのため、アームしたままの状態でAUX3だけを操作することで素早くクラッシュリカバリーしてレースに復帰できます。

このアイデアに対して、3ポジションスイッチで片方が通常アーム、反対側がクラッシュリカバリーというスイッチひとつ構成でも良いじゃないかと言われました。タイニーだしそれでも良いかも知れませんが、飛行中に素早くディスアームしたい時はまごつきそうです。常に落ち着いて3ポジションを中央に戻せる人なら問題なしです。

HDZero推奨のTS形式によるDVR録画は試した限りより確実に録画ファイルを残すことが出来るようです。当然、ゴーグルでのPlaybackは問題ありません。ただしPCに取り出した時には使い勝手が悪くなります。その辺りを検証していきます。macOSでの検証ですが、Windowsでもほぼ同じと思います。

今回の事例はHDZeroの60FPSモードのみで有効です。

macOSでのプレビューはできないですし、一般的な動画編集アプリケーションでは動画ファイルとして認識してくれません。そこで何かしらツールを使う必要があります。私が試したのはお馴染みのVLCメディアプレイヤーとコマンドラインツールのffmpegです。

[ VLCメディアプレイヤー ]
動画ならなんでも扱えるVLCはPCに最初に導入すべきアプリケーションと言って良いと思います。もちろん、TSファイルの再生もそのまま普通に行うことが出来ます。
MP4に変換するのも簡単です。ネット上にもVLC以外の変換方法、あるいはVLCでの手順も紹介されていますが、注意すべき点は再エンコードさせないということです。再エンコードは時間がかかりますし、何より画質が劣化する可能性があります。このTSファイルは中身はそのままで器を変えることによりMP4に変換出来ます。以下、その手順です。VLCのバージョンによって画面は異なるかもしれません。

変換のためのメニューを開きます。


カプセルとしてMP4を選択。


再エンコードしないので「オリジナルのビデオトラックを保持」を選択。


「オリジナルのオーディオトラックを保持」を選択。


適当な名前で新しいプロファイルとして保管します。


変換したいファイルを選び、作成したプロファイルを選択、「名前を付けて保存」を押す。


変換後のパス名を指定して保存。

私のVLCでは複数ファイルの一括変換が出来ませんでしたが、もしかするとWindowsなどでは一括処理が可能かもしれません。

出来上がったファイルは相変わらずmacOSではプレビュー出来ませんが、DaVinci Resolveでは正しく映像ファイルとして認識されます。

[ ffmpeg ]
コマンドラインツールのffmpegは最強の動画関連ツールです。導入の仕方は、ここでは説明しません(macOS向けの手順は複数あって、どの方法で導入したか忘れました)。

出来ることがあまりに多いし、もとより動画ファイルのフォーマットに関する専門的な知識が足りないのでコマンドの前葉を理解することは出来ません。そこで私はもっばら使用事例を探しては自分の用途に適用することに徹しています。今回も複数の事例の組み合わせです。

TSファイルの再生はffplayというコマンドで行います。単純にファイル名をパラメーターとして渡せば再生されます。再生中にはショートカットキーで操作できます。

変換にはffmpegコマンドを使用します。
ffmpeg -i hdz_146.ts -vcodec copy -tag:v hvc1 -acodec copy hdz_146.mp4
見ての通りでhdz_146.tsというファイルをmp4に変換する例です。’-tag:v hvc1’を指定するとVLCの時とは違いmacOSでmacOSでプレビュー出来るmp4ファイルにすることが出来ます。またこのオプションはHEVC(H.265)だけに有効です。

その他にffprobeというコマンドが動画ファイルの属性を見ることが出来るので解析するのに便利です。

まだ作ってはいませんがファイル名の入力を楽にしたり一括変換するスクリプトも簡単に出来そうです。
-> 作りました。https://www.nkozawa.com/blog/archives/7677

[ 結論 ]
DVRファイルを利用する際にはマイクロSDからPCにコピーすることが多いわけですし、そのコピーの代わりにマイクロSD上のTSファイルを変換しつつPCのSSD/HDD上に保管する手順を確立すれば、まあまあ良い使い勝手になると思います。ということで私はHDZeroが推奨するままにTSフォーマットを使用することにします。

HDZeroゴーグルのDVRには録画形式としてMP4とTSフォーマットの二つの選択肢があります。

ゴーグルのマニュアルにはMP4は壊れるからTS推奨とあります。そうは言ってもTSファイルはDaVinci Resolveで認識されないし、なんとかMP4形式を使ってみたいと思うので色々と試してみました。

MP4ファイルが壊れるのはGoProなどでもお馴染みの現象で、主に映像ファイルとして正しく閉じる前に電源を落としてしまった時に発生します。ゴーグルのマニュアルにも同様の記述があり、MP4ファイルを壊さないための手順も書かれています。
– Auto record mode(自動録画モード、VTXの電波を受信すると録画を開始し電波がなくなると停止するモード):
> ゴーグル左のボタンを長押ししてメニューを表示してからゴーグルの電源を落とす。もしくは、
> ドローンの電源を切り、10秒待ってからゴーグルの電源を落とす。
– Manual record mode(ゴーグルの右ボタンで録画の開始、停止を行うモード): 録画を停止してからゴーグルの電源を落とす。

常識的な対策ですし難しくはなさそうです。わざとルール無視することも含め何度か録画をしてみました。一連のテストでは、思い通りの結果が得られました。わざと壊れるような操作をしたMP4ファイルもVLCでは再生可能だったので修復して使用することは出来そうでしたしゴーグルでのPlayBackも可能でした。不可解なことにひとつだけTSファイルも出来あがっていました(githubにバグレポートあり)。

まあ、なんとか使えそうな気もします。ただ、油断してなんかの拍子に使えないMP4ファイルを量産してしまいそうでもあります。

日本では使用しないので問題はありませんがカメラを90FPSモードにすると、そのままでは使用出来ないMP4ファイルが出来上がってしまいました。PlaybackやVLCでは再生できますがDaVinci Resolveは動画として認識してくれませんでした。色々と弄ってみましたが、調べた限りでは時間をかけて再エンコードしないとDaVinci Resolveには読み込めませんでした。

YouTubeに90FPSモードのレビューがあり、そこの概要欄にDVRファイルがあります。そのファイルは問題がないのでどこかのファームウェアレベルでおかしくなった可能性があります。

おそらく突然電源オフにした時だと思いますが全く使えないMP4ファイルになったケースもありました。

HDZeroの推奨ですし、次回はTSファイルの検証を行います。

HDZeroをアマチュア無線として開局するためには帯域幅を17MHzにする必要があります。その設定手順の覚え書きです。

まずはカメラの解像度を540P@60に変更しSAVE&EXITを実行します。現在のところ、この設定が使用できるカメラはRunCam Nano 90だけです。カメラメニューの出し方は前記事を参照ください。

ゴーグルをNarrow BWに変更するようメッセージが表示されます。OKを実行すると実際にモードが変わり、VTXとゴーグルの帯域幅が合わなくなり画面が乱れます。

ゴーグルのメニューを開きSourceの中でHDZero BWをWideからNarrowに変更します。

気になる画質ですが一般的なアナログVTXよりは良いと思います。以前、飛ばしていた初代DJI Digital FPV Systemを初めて飛ばした時のような感動は得られませんでしたが、致し方なし。

HDZeroのハードウェア設定が完了すれば、なんとか飛ばせます。OSDの設定はフォントの設定を除けばアナログと変わりませんしVTXのチャネル変更も従来の知識でなんとかなります。HDZeroゴーグルのメニュー体系も操作もわかりやすく出来ています。ということでマニュアルを読まなくともなんとか飛べるようにはなります。しかしながらVTX側の操作は完全には出来ていません。

このVTX側の設定変更はDJIなどのデジタルFPVシステムとは違いゴーグルのメニューからは出来ません(DJIはゴーグルとVTXで双方向通信を行なっているがHDZeroはアナログVTXと同様にVTXからしか電波を発信していない)。そのための操作はスティックコマンドでFCを経由して行います。HDZero VTXマニュアルに詳細が記述されています。

HDZero VTXマニュアルからの抜粋

二番目はお馴染みのBetaflight Menuです。一番上のVTX Menuと三番目のFor HDZero Cameras(Camera Menu)を覚えておく必要があります。
一番下の出力を0mWにする操作も何かの時には役に立つかもしれないので練習しておくと良いです。

VTX Menuでは周波数や出力の変更が行えます。またVTXファームウェアレベルもここで確認できます。

Camera Menuはカメラの明るさ、色合いなどカメラ固有の設定を行えます。カメラ解像度の設定もここで行います。