Dropbox

OpenTX2GPX、GPSテレメトリーをGPXファイル化するプログラムを公開しました

FPVドローンにGPSを付けているならば、それで得られるデータをより活用したいと思うのも自然なことです。GPSで得られたデータはテレメトリーとしてプロポ側に返ってきます。それをSDカードに保管することが出来ます。詳しくはお馴染みのOscar Liangが書いたHow to Log GPS Coordinates in OpenTX Radiosを御覧ください。

これで得られたログはcsvファイルとしてプロポのSDカードに保管されています。それをOpenTX Companionに読み込みGoogle Earthにリンクすることで活用するのが一般的に公開されている手法でした。

これだけでは今ひとつ活用範囲が狭いです。そこでOpenTXで取得したログをGPSログとして一般的なGPXファイルに変換するプログラムを作りました。
https://github.com/nkozawa/OpenTX2GPX

GPXファイルはGoogle Earthに読み込めるだけではなくGarmin VIRB Editなどを使うことにより映像とテレメトリーを組み合わせることも出来ます。

さらに最新版ではいろいろと変わりました。v0.62での例はhttps://www.nkozawa.com/blog/archives/7178をご覧ください。

PIDtoolbox v0.44を導入してみたら随分と画面が変わっていて戸惑いました。以前に書いた記事とだいぶ変わってしまったので、改めて画面の紹介をしておきます。v0.44で追加された機能などは考えず、自分が見たい画面のみの紹介です。

導入方法などは以前の記事を御覧ください。


右側のSelectでログファイルを開きます。


次にGyroとDtermの周波数分布を見るためにSpectral Analyzerをクリックします。


次にHeatmapsをクリックします。


Presetの1番(Gyro Prefilt|Gyro|Dterm Prefilt|Dterm)を選択してRunをクリックします。


左からGyroのフィルター前データ、Gyroのフィルター後のデータ、同じくDtermのフィルター前と後です。Gyroのフィルター前データはBetaflight ConfiguratorでGYRO_SCALEDをBlackbox Debug Modeに指定しておく必要があります。


HeatMapsで2Dにしたものです。まずまず良い感じでフィルター出来ています。これはChris Rosserさんオススメの設定をそのままRekon4に適用したものです。下にフィルター画面を貼っておきます。


RPMフィルター設定が前提となっています。Gyroフィルターを軽く、Dtermフィルターを強めにして最大の効率を狙った設定です。

次はPIDの状態を確認します。最初の画面に戻ってStep Resp Toolをクリックします。

Runをクリックします。Yawも見る場合はRPYを選択します。


Rekon4のストックPIDでのテストですが、かなりオーバシュートしています。いちから調整する必要があるようです。

Rekon4 LR初飛行

久しぶりの完成機ですし、なるべく箱出しの状態で飛ばしてきました。

飛行前に行ったこと、
– 受信機の設置、ExpressLRSとCrossfireで悩みましたが、ロングレンジフライトに対して実績を重んじてCrossfire Nano RXを使うことにしました。
– Mode/Adjustmentは当然、自分流に設定。
– Ratesも自分流です。PID/Filterはファクトリー設定のままにしました。
– BlackboxはGYRO_SCALEDを設定、ログ周期は2KHzにしました。
– GPS設定はSanity CheckをONからFailsafe onlyに変更しました。

手持ちの650mAh, 750mAhのリポで快適に飛びます。わたしが普段飛ばしているような軽いフリースタイルはまったく問題なくこなせます。

[ 飛行時間 ]
やや古いリポということもあるかも知れませんが、ログ取りのためにやや激しく飛ばすと650mAhで4分前後しか飛びませんでした。バッテリー6本飛ばして一番長い時で6分弱だった気がします。

[ Blackboxログ ]
1フライト分しか取れませんでした。しかもデータがやや怪しい。Blackbox Explorerで見るとところどころGyroデータが振り切っていますしPIDtoolboxを走らせるとエラーしてしまいます。Gyroノイズの雰囲気はそれなりに見えます。RPMフィルターは使われていませんが、それなりに良い感じにフィルターは効いているようです。

[ 機体のゆれ ]


ロールとかフリップすると直後にゆらゆらします。最初はバウンスバックかと思いましたが、どうも長いアンテナの影響ではないかと思えてきました。DVRを見るとロールの後でも縦揺れしているような気がします。ロングレンジ機たる長いアンテナですので、致し方ない気がします。硬性を高めるか短くすることも検討はしてみます。

[ GPS ]
最初はGPS位置が取れないまま飛ばしていました。3回目の飛行中に位置がロック出来たので改めてGPS Rescueのテストを実施。問題なく機能しました。せっかくのGPSデータですのでOpenTXでログを取っていました。それをGoogle Earthに取り込んだのが下の動画です。


GPSデータの活用については、また改めて書いてみたいと思います。

次はRPMフィルターを設定し、Betaflight 4.2.0から最新に更新してログの取り直しを行います。もし間に合えばLi-ionバッテリーのテストも行いたい。

HGLRC Rekon4 Micro Long Range

多分、3年振りくらいにFPVドローンの完成機(PNP)を購入しました。HGLRC Rekon 4 LR Caddx Vista/Polar搭載版です。まだ最低限の設定を済ませただけで飛ばしてはいませんが開封レビューをしておこうと思います。

Rekonシリーズはマイクロロングレンジという新しいジャンルを生み出したDave_Cの設計による機体です。それをHGLRCが販売しています。この組み合わせは申し分ありません。手に取った瞬間に一分の隙もない完成度の高さを感じられます。はんだ付けのクオリティーも高い感じがします。

付属品はプロペラが2種類とGoPro Liteマウント、REKON FPVステッカー、説明書等です。

本体からは2つのコネクターが出ています。ひとつはGoPro Liteの電源でVBATから電圧が供給されています。黄色い線は付いていません。もうひとつはPNP機なので受信機用ですがコネクターがそのまま挿せる受信機は存在しない気がします。5V、GND、R1(SBUS用)の3本の線が接続されています。

プロペラは2枚羽のGEMFAN 4024(2セット)と2枚羽で折りたたみ式のGEMFAN F2019(1セット)です。初めての折りたたみペラを入手です。何となく折りたたみは重いのではないかと思っていましたが、実際には4024より軽かったです。どちらも試してみますがF2019がメインになりそうな予感です。 

Betaflight 4.2.0が入っていました。ざっと見たところGPSレスキューも設定済みのようです。RPMフィルターは設定されていません、これはESCがBLHeli_Sなので仕方なし。フィルターはスライダーでジャイロフィルターが弱めにしてありました。PIDはスライダーを使わずに全てやや強めな感じです。良い設定が出ていることを期待します。

デジタル版ですのでCaddx Vista搭載です。カメラは最新のPolarが付いていますのできっとDVRでも綺麗な画像が撮れそうです。

重心もほぼ完璧です。

 上海も雨続きで、テスト飛行が待ち遠しいです。まずは出荷時の設定で飛ばしてログを取る予定です。

Chris RosserさんのBetaflight filter tuningについて

Betaflight filter tuning

PIDチューンは、謎が多くFPVドローンを始めてからずっと良い解説を求めて来ました。多くのことをYouTubeのUAV Techチャネルで学びました。最近では同じくYouTubeでChris Rosserさんのチャネルに注目しています。とても詳細な技術的な事柄をわかり易く解説し実践的なチューニングにつながる動画を公開されています。

この6月からPIDチューニングについての解説をいくつかの動画で公開されています。それらについて自分の理解を深める意味で日本語で要点について書き起こしてみることにしました。今回は最初の回でフィルター設定についてです。結果としてほぼ全てのシーンについて日本語訳をつけることになりました。加えて私自身の解釈なども少しだけ書いてあります。

最初にあるのがYouTube上のタイムスタンプです。グラフや画面コピーが沢山出てきますので動画を見ながら日本語を見てもらうと理解がしやすいかと思います。文中、カタカナになったり英字表記だったりして読みづらいかもしれませんがご容赦ください。

解説の前提は、
– RPMフィルターの設定が出来ていること
– 5インチ機を想定している、whoopにも通じることがほとんど
– Blackboxログが取得出来るFCであること、また説明ではOnboardフラッシュを念頭においています
– Blackboxログを見るためのBetaflight Blackbox Log Explorerが導入されていること

Timestamps:
0:00 – Intro

0:57 – Check the Mechanicals
機械的物理的チェック
– ネジの緩みが無いこと(強く締めすぎるのもまたよくありません)
– FCの上に配線を通していないこと、とくにジャイロ付近に注意 -> もしジャイロチップに配線が当たると大きなノイズの原因になります [これは盲点でした、まったく気にしたことがないです、小型機では完全にFC上をフリーにするのは難しいですがジャイロノイズを念頭においた配線を心がけたいと思います]
– ESC(電源線)にキャパシター(コンデンサー)が付いていること(6Sでは必須、4Sでも強く勧めます)
– Bidirectional D-shot(RPMフィルター)が設定されていてエラー0%であること
– プロペラは通常の飛行を想定したものであること -> もし少し曲がったプロペラで飛ばす事が多いのならばその状態に
– VTXアンテナはしっかりと固定されていること、前後にぐらつくことがないように -> 写真のように長いアンテナをTPUで出来たマウントに取り付けるのは理想的ではありません、短いアンテナが良いですが、長いアンテナを使う場合はPLAなどの素材でマウントを作った方が良い -> アンテナの振動が機体の振動につながります

3:35 – Fly a tuning flight on defaults
フィルターとPIDsを既定値のまま飛ばしてログを取ります
–  チューニング飛行には以下の動作を何度か行います
> フルスティック360度スナップロール
> フルスティック360度スナップフリップ
> フルスティック360度スナップヨースピン
> 3秒以上かけてゆっくりとスロットルを0からフルスロットルまで動かす
– 既定値でモーターはスムースに回転すべきです
– もしラフな感じならば最初の物理チェックに戻ります -> 特別に大きな機体などでは強いフィルターを設定しないとスムースにならないかも知れませんが皆さんが飛ばしている7インチ以下のサイズならばBF既定値で問題ないはず
– フライトの前にログを設定します

5:31 – Set up logging in BF
Betaflight Logの設定
– Blackbox logging rateは2KHzにセット
– Blackbox debug modeにはGYRO_SCALEDをセット [フィルター前のジャイロデータが取れます]
– Onboard chipの場合、Free spaceが十分にあることを確認、Erase FlashボタンでFeee spaceが得られます
– (変更した場合)Save and rebootを押します

7:13 – Filters 101
フィルターの設定にあたりセオリーから解説します
– 2つの種類のフィルターがあります
> Low pass
> Notch
– Low passは高い周波数を減衰します
– Notchは特定の周波数近辺を減衰します

8:01 – Low pass filter
– Low passは高い周波数を減衰します
– cut-off周波数付近から減衰し始め高い周波数のノイズをより強力に減衰する
PT1(single pole):
– 位相遅延(位相シフト)が小さいがフィルター効果も小さい
Bi-quad(double pole):
– Cut-offが鋭く、よりフィルター効果があります、また位相遅延も大きい

10:09 – Notch filter
– Notchは特定の周波数の周りを減衰します
– 目標周波数を大きく減衰し、その両側は減衰が少なくなります
– 目標周波数を低く、また幅広くするとフィルターを実行するにあたり遅延が大きくなります

11:44 – Filter Delay (Phase Delay)
– すべてのフィルターは位相遅延を引き起こします
– これはジャイロが動作を検知してから信号がPIDループに到達するまでの時間差になります
– これはフィルターの数学的な必要性から引き起こされるものでありFCの処理速度とは関係ありません [ちょっと考えてみると分かりますか、信号の変化から周波数を見極めるためにはしばらく変化を見続ける必要があります、どこかで見かけたのですがsingle poleで1/4周期必要らしいです]
– cut off周波数が低いほど遅延も大きくなる [位相で遅延するわけですので実時間を考えると周波数が低いほど遅延時間が長くなります、極端な例を言うと限りなく0Hzに近い周波数を見極めるためには無限の時間が必要になります]
– フィルター遅延はクワッドコプターの性能、とくにpropwashの扱いに影響を与えます
– 位相遅延は小さいほど良い、すなわち機体の振動、モーターの異音や加熱が出ない状態で
最低限のフィルター設定が望ましい

14:31 – Dynamic filtering
– Betaflightにはdynamic low pass filtersとdynamic notch filtersがあります
– フィルターの機能としては先に話したものと同じです、ただcut-off周波数が飛行中に変化するのです
– dynamic low pass filtersはスロットルポジションに連動して変化します
– dynamic notch filterはノイズのピーク周波数を追いかけて変化します
– RPM notch filtersはESCから得られるモーター回転数に合わせて変化します

15:36 – Betaflight filter settings
– Gyro Lowpass Filters
 > Gyro Lowpass 1 Dynamic Filter: 高い周波数を減衰するフィルターです、周波数はスロットルポジションに連動して変化します、Min Cutoff Frequency=200はスロットルを最小にしたときのcut off周波数です、Max Cutoff Frequency=500はスロットルを最大にした時のcut off周波数です、その中間ではスロットルに応じて直線的に変化します、Dynamic filter type=PT1ということであまり過激ではないフィルタータイプです
> Gyro Lowpass 1 Filter: その下はstatis(静的)なフィルターです、cut off周波数は変化しません、もしスロットルポジションによる周波数の変化を望まない場合は上のdynamicフィルターをオフにして、このstaticフィルターをオンにします
> Gyro Lowpass 2 Filter: これは上と同様のstatisフィルターです
– Gyro Notch Filters: これはstatisなnotchフィルターです、通常は必要ないと思います、center frequencyはターゲット周波数です、cutoff frequencyは50%の減衰が得られる周波数です [centerを中心に幅を持たせて減衰するわけですが、その下側を指定するのがcutoffです、centerから同じ幅で上側にも50%減衰するポイントがあります]
– Gyro RPM Filter: Hurmonics Numberは回転数の何倍の周波数までフィルターするかを指定します、3が適切な番号と思います、これでnotchフィルターのターゲット周波数としてモーターの回転数、モーターの回転数の倍、モーターの回転数の3倍が適用されます、2つ目の数値はMin Frequencyです、RPM notch filterの下限周波数を示します、低すぎるターゲット周波数は遅延が大きくなるので良くないです
– Dynamic Notch Filter
> Dynamic Notch Width Percent: [動画ではただ幅と言っています、2つのDynamic Notch Filterの間隔のような感じみたいです、0を指定するとDynamic Notchは一つだけになります、これがRPMフィルター使用時のおすすめです]
> Dynamic Notch Q: Notchフィルターの幅あるいはシャープさを表す係数です
> Dynamic Notch Min: ノイズをスキャンする下限周波数
> Dynamic Notch Max: ノイズをスキャンする上限周波数
[Min/Maxの間で強いノイズピークを見つけ出してフィルターしてくれる便利なものです]
– D Term: 右側はGyroデータではなくD Termを対象としたフィルターでそれぞれの定義はGyroのものと同じです
– Yaw Lowpass Cutoff Frequency: PT1フィルターでcut off frequency 70になっています [軽く流されています、存在意義など他の資料を見ても良くわからなかったです]

20:58 – Viewing your Blackbox log
– BlackboxタブでActivate Mass Storage Device ModeをクリックするとFC上のフラッシュチップがPCにドライブとして接続されます
– btfl_001.bblファイルをダブルクリックしてBlackbox Explorerを起動します
– ログが開いたらGyro scaledをクリックしてスペクトログラフを開きます [Graph setup/+Add graph/Debugの追加が必要かも]
– 左上でFreq. vs Throttleを選択します
– 右上のスライダーでゲインを調整し、3軸とも確認します

23:00 – What is each filter best at? – Gyro
– RPMフィルターがモーターノイズに最適です
– dynamic notchはフレーム共振にロックして取り除きます
– 上手に組み上げられていればその他のフィルター(low passなど)は必要ありません
– よって、私達はしばしばそれらをオフにします

25:54 – What is each filter best at? – D Term
– D Termが少しややこしいのはデリバティブ機能 [PIDのD] の性質として高い周波数の動きをより増幅するからです、そのためもし何もフィルターを使用しなかった場合、高い周波数のノイズが増幅されPIDループに過剰に作用し振動やモーターの加熱、フライアウェイなどにつながります
– ですから必ずlow passフィルターが必要です
– もしgyro low passフィルターをオフにしたらD Termのlow passフィルターは少し強くした方が良い
– 一般に、この方法 [Gyro low passオフ、D Term low pass強め] の方が位相遅延を少なくしフィルターの質を改善出来る

27:24 –
– RPMフィルターを使用すると縦線がしばしば現れます
– これは機体の共振による典型的な症状です
– これはスロットルの位置に関係なく一定の周波数を示しているのでstatic(静的ローパス)フィルターを使います
– クリーンな設定であれば、ひとつの100Hz Biquadフィルターから試すのが良い、もし振動やモーターの加熱が見られるならば90とか80Hzを試してみます、もしモーターの加熱などが見られなければ105, 110, 120Hzなどを試します、決して70Hz以下にはしないでください [遅延も問題になりますし、低い周波数には実際の機体の動きが含まれているので安易にフィルター出来ない]

29:42 – My recommendation for clean builds
私のクリーンビルドのフィルター設定
– gyro low passフィルターなし
– gyro notchフィルターもなし
– RPMフィルターを使用(設定値は画面を参照)
– dynamic notchフィルターは使用(設定値は画面を参照)
– d termは画面の通りひとつのlow passフィルターのみ設定(設定値は画面を参照)

31:50 – Dynamic notch and the AOS 5
AOS 5という共振を極力小さくしたフレームの話しなので詳しい日本語解説は割愛、簡単に言うと注意深く共振を抑えたフレームならばgyro dynamci notchフィルターさえも必要ないそうです

33:29 – Outro

[ スライダーによるフィルター設定との対比、スライダーを動かして数値を眺めてみると分かりますが、Gyro/D termそれぞれのLow passフィルターの周波数を変化させています。スライダーを左に持っていくと周波数を低く、右にすると周波数が高くなります。これでモーター加熱やフライアウェイの発生しない範囲で遅延を小さくするポイントを見つけるというのは合理的な手法です。この動画ではスライダーだけでは実現出来ないGyro Low Passフィルターをオフにするといった積極的な手法を実行しています。]

Happymodel ELRS 24G AIO FC

HappymodelのExpressLRSシリーズを試してきてかなり調子が良いので手持ちのFrSkyは一掃してCrossfireとELRSだけにしようと思っています。こうなるとELRSの受信機と200mW VTXが搭載された1S Whoop FCも試してみるしかありません。

[ Betaflight ]
いまだRelease Candidateも出ていない4.3が搭載されています。SPI接続なELRS受信機のためのファームが入った特殊なバージョンですので、他のバージョンのBetaflightを導入するわけには行きません。そのためテスト版のBetaflight Configuratorの導入が必要です。また正式版ではないため、いろいろと不都合もあります。

[ ELRSのバインド ]
最初は他のELRS受信機のようにbinding phrase付きのファームを焼いてと思いましたが、SPI接続の受信機のファームはBetflightと一体のためそういう訳には行きませんでした。バインドモードはBetaflight ConfigurtorのReceiverタブにあるBind Receiverを押すことにより入ります。ELRSも開発中のためバージョンによる互換性が心配でしたが1.0.0-RC9を導入したTXから問題なくバインド出来ました。

記事の投稿直後にツイッターで教えてもらいました。SPIレシーバーでもパスフレーズが使えるそうです。

[ ESC ]
blheli_s 16.8が入っていました。RPMフィルターは必要ないですが48KHz PWMで稼働するためにファームの更新を試みました。ただJESC、Bluejay, Blheli_Mどれもうまく行きません。どうもESCタイプO-H-5というのが鬼門のようです。仕方がないのでJazzmavericの16.8をダウンロードして焼きました。

これでまあ何とか飛んでいます。しっくり来ないところもあり設定をいじり続けていますが、まあお試し的には満足しています。

Happymodel ELRSのファーム更新をやってみた

Happymodel 2.4GHz ExpressLRSのTXとRXは出荷時のファームウェア(かなり低いレベルと思う)で問題なく稼働していましたが、少し思うこともありRC8版を導入してみました。手順についてはOscar Liangのサイトに詳しく書かれていますので、そちらをご覧いただくのが良いと思います。わたしの場合、いくらか例外的な事が発生しましたのでそれについて書いておきます。

出荷時のレベルで困ってはいなかったのですが、実際に更新してみると手動バインドの必要が無くなるBinding Phraseの便利さを実感しました。それだけのために更新する価値があると思います。

[ ファームウェアのビルド ]
最新のExpressLRS Configuratorを導入します。

自分用のファームウェアをビルドするのですがGUIで必要事項を埋めていくだけでビルド出来るので簡単です。

ステップとしては4項目です。
– まずはRelease、この記事を書いている時点での最新は1.0.0-RC8です。
– Targetは自分のハードウェアとファームウェアの導入方法によって選択します。わたしの受信機にはWiFiで導入するつもりなので”HappyModel_EP_2400_RX_via_WIFI”を選択しました。
– Device optionsはStandard modeではGUIでオプションを選択する画面が出るはずですが、私の場合上のスクリーンショットのように赤文字でエラーになってしまいました。これはネットワークに問題(地域的問題)があると思われます。問題を回避することも考えましたがManual Modeでやってみることにしました。赤い文字で表示されているエラーメッセージの中にURLがあるのでそこにアクセスするとuser_defined.txtというファイルが表示されます。それをコピーしてManual Modeにすると現れるテキストエリアに貼り付けます。そして必要なオプションを変更します。内容についてはOscar LiangのGUIでの設定例を見るとだいたい検討が付きます。

わたしの設定例を以下に貼り付けておきます。

### The Legal Stuff ###

# The use and operation of this type of device may require a license and some countries may forbid its use entirely.
# It is entirely up to the end user to ensure compliance with local regulations. No claim of regulatory compliance is made. In most cases a HAM license is required.
# This is experimental software/hardware and there is no guarantee of stability or reliability. USE AT YOUR OWN RISK

# HOW TO USE THIS FILE: https://github.com/AlessandroAU/ExpressLRS/wiki/User-Defines
# SIMPLY SEARCH WHICH DEFINE YOU NEED HELP WITH AND

### BINDING PHRASE: ###
# Uncomment the line below to use a hardcoded binding phrase
# Leave commented to use traditional binding
-DMY_BINDING_PHRASE=”MyBindingPhrase”

### REGULATORY DOMAIN: ###

#-DRegulatory_Domain_AU_915
#-DRegulatory_Domain_EU_868
#-DRegulatory_Domain_AU_433
#-DRegulatory_Domain_EU_433
#-DRegulatory_Domain_FCC_915
-DRegulatory_Domain_ISM_2400

### SWITCHES: ###

-DHYBRID_SWITCHES_8

### PERFORMANCE OPTIONS: ###

#unlocks >250mw output power for R9M and Happy Model ES915TX (Fan mod suggested: https://github.com/AlessandroAU/ExpressLRS/wiki/R9M-Fan-Mod-Cover)
#-DUNLOCK_HIGHER_POWER

#-DNO_SYNC_ON_ARM

-DFEATURE_OPENTX_SYNC
#-DFEATURE_OPENTX_SYNC_AUTOTUNE

-DLOCK_ON_FIRST_CONNECTION

### COMPATIBILITY OPTIONS: ###

-DUART_INVERTED

#-DUSE_R9MM_R9MINI_SBUS

#-DTLM_REPORT_INTERVAL_MS=320LU

### OTHER OPTIONS: ###

-DAUTO_WIFI_ON_INTERVAL=30

#-DJUST_BEEP_ONCE
#-DDISABLE_STARTUP_BEEP
#-DMY_STARTUP_MELODY=”B5 16 P16 B5 16 P16 B5 16 P16 B5 2 G5 2 A5 2 B5 8 P4 A5 8 B5 1|140|-3″

-DUSE_500HZ

# Comment this to disable advanced telemetry.
#-DENABLE_TELEMETRY

#Comment this to disable diversity function
#-DUSE_DIVERSITY

既定値から変更したのは3か所だけです。
#-DMY_BINDING_PHRASE="default ExpressLRS binding phrase"
最初の”#”を取り除き、任意の文字列をBindng Phraseとして書き込みます。自分の全てのTX, RXのファームウェアに同じPhraseを指定します。こうすることにより自動的にバインドされるので手作業によるバインドは必要がなくなります。これはとても便利です。
#-DRegulatory_Domain_ISM_2400
Domainのリストから適切なものをひとつコメントアウト(最初の”#”を取り除く)します。2.4GHzの場合はこの行をコメントを外します。
#-DHYBRID_SWITCHES_8
3ポジョンスイッチを使用するためには、このコメントを外します。
#-DUSE_500HZ
これもコメントを外しました。

– ActionsでBUILDボタンを押すとファームウェアが出来上がり、ファームウェアファイル”firmware.bin”がFinderで表示されます。

[ RXへのWiFi書き込み ]
これは問題なく手順通り出来ました。簡単に手順を書くと、TXをオフにしてRXに電源を投入し30秒ほど待つとLEDが速い点滅になりWiFiが有効になります。PCから”ExplessLRS RX”に接続します。WiFiパスワード”expresslrs”です。ブラウザーから10.0.0.1に接続するとExpressLRSの画面が表示されます。下の方のファイル選択ボタンで先のfirmware.binを選択しUpdateボタンを押します。ボタンを押してもPC画面はすぐには反応しません。暫く待つと成功した旨のメッセージが出てRXが再起動します。RXのLEDはUploadが始まると消えるので、そちらを見ているとUpdateボタンが押されたかどうかはわかります。

[ TXのアップデート ]
TXをWiFiアップデートするためにはLuaスクリプトからWiFi Updateを起動するのですが、わたしのTXでは何故かWiFiが立ち上がりませんでした。TX上のUSBコネクターを使用してアップデートすることにしました。
– TX上のジャンパー変更が必要です。出荷時には6個のジャンパーの中央の二組にジャンパーが入っています。これを下の二組に移動します。

– リモートの電源を上げてTXにUSBケーブルを接続します。ELRS ConfiguratorのSerial Monitorで接続を確認できます。ただし、そこから接続したままだとファームウェアの更新が出来ません。確実にDisconnectするかELRS Configuratorを立ち上げ直します。
– TargetをUART接続のものを選択します。わたしの場合は”HappyModel_ES24TX_2400_TX_via_UART”です。RXと同様にDevice optionsを設定します。ActionsではSerial Deviceを選択してBUILD & FLASHボタンを押して書き込みが終了するのを待ちます。

わたしの場合はLua Scriptも最新版にする必要がありました。

これで完了です。Binding Phraseを使用したので再バインドも必要なくすぐに使用できる状態になりました。

Tango2の外部モジュールでCRSFshotを使用するにはFreedomTX 1.29が必要

日本語で書いてもあまり意味がないかもな情報です。Facebookの関連グループにはシェア済みです。Blackbox Logの活用事例とも言えるのでともかく書いておきます。

TBS Tango2の外部モジュールとしてExpressLRS 2.4GHzを接続しています。PID調整の実験でBlackbox Logを見ていてSetpointが階段状になっているのに気付きました。

SetpointはBetaflightが計算したGyro値の目標値ですが、元々はスティックの動きから来ています。その解像度はいろいろな要因がありますが、TXモジュールに依存していると言っても良いと思います。ExplessLRSの設定では250Hzにしています。上のスクリーンショットでは36Hzくらいの更新頻度しかありません。

どこかがおかしいということで調べていくとFreedom TX 1.29のリリースノートに”added: CRSFshot for external modules”という記述を見つけました。ということでTango2のFreedom TXを更新してSetpointが滑らかになることを確認しました。

Happymodel ES24TXをTango2に取り付けた

Happymodel 2.4GHz ExpressLRS Micro TX Module ES24TXは2.4GHz ExpressLRS用の送信側モジュールです。自作する場合をのぞけば2.4GHz TXとしては唯一の選択肢です、たぶん(追記:ImmersionRC Ghostにファームを焼くことも可能なようです)。この製品はJRベイ用に設計されているためTBS Tango2にはそのままでは接続できません。スリムベイにJRベイを取り付けるアダプターを使用すれば良いのですが、かなり大きくなってしまいます。そこで直接取り付けるためのアダプターを自作しました。

スリムベイとJRベイは形状及びコネクターが違うだけで結線は同じです。形状を合わせるための3Dモデル(一部、GithubでExpressLRS用に公開されているものを流用)とジャンパーケーブルを作るだけで実現できました。詳細はThingiverseで公開しています。

Happymodel ExpressLRSを試す

ExpressLRSはオープンソースプロジェクトでTBS Crossfire以上の性能を目指すラジオコントロールリンクです。900MHz帯と2.4GHz帯があります。ハードウェアも自作することが基本でした。部品点数が少ないので、さほど難しくはないとは言えプリント基板から起こさねばならないので万人向けではありませんでした。書き忘れ: Frsky R9Mハードウェアのファームウェアを書き込む方法もありました。

そこに登場したのがHappymodelの完成品です。900MHz帯はすでにTBS Crossfireを使用しているので2.4GHzの製品を試すことにしました。2.4GHz受信機は3種類あります。チップセットの違いとアンテナの違いです。わたしの入手したのはEP1_RXとEP2_RXです。EP2_RXは基板上にセラミックスのアンテナが搭載されているためWhoopに搭載するとかなりコンパクトに出来そうです。送信機はJRベイです。今どきの小型RCではアダプターが必要です。

完成品ですのでベータ版ながらファームウェアは書き込まれていますので基本的な設定だけで使用することが出来ます。設定など必要な情報はExpressLRS Wikiに書かれています。以下、私が最初にテスト飛行するまでに行った設定の概要です。

[ 送信機 ]
ExLRS Lua ScriptをTango2のScripts/Toolsフォルダーにコピーしました。
モデルはExternal RFでCRSFモードを設定します。ExpressLRSはOpenTXもBetaflightもCRSFとして動作します。

[ 受信機 ]
受信機とFCの結線はCrossfireと同じで任意のTX/RXを使用します。SBUSの様に信号が反転しているかどうかなどは気にしなくても大丈夫です。

まずはLEDの意味を理解しておきます。

バインドモードの入れ方です。

バインドモードになったら送信機のELRS LuaスクリプトからBindを実行し受信機のLEDが点灯しっぱなしになれば完了です。

[ Betaflight ]
ほぼCrossfireと同じです。ReceiverはSerial based receiver/CRSFを選択します。アナログVTXの場合はOSDでLQを選択すると信号が確認できます。信号強度RSSIもありますが、一般的にはLQだけ見ておけばよいです。DJI Digital FPVの場合はOSDがフルサポートではないので従来通りのAUXに割り当てられたLQ/RSSIをOSDで見るようにします。AUX11がLQ, AUX12がRSSIをあらわします。

Telemetryも取得できるようにしておきます。

[ テスト飛行 ]
設定さえ出来れば、当たり前ですが普通に飛びます。レンジテストとかしようとは思わないので普通に飛べばわたしとしては完了です。