Tag Archives: CRSF

HOI-LINKのELRS版~その2~

気づいたらまた長らくBLOGを放置していました。
HOI-LINKのELRS版のその後、割と直ぐに動作はしたのに改良しようとしたところでハマってそのままになったので、「とりあえず動作版」を公開いたします。
※このページの下の方にファームへのリンクを貼っています。

前回(いやもう4か月も前^^;)、JUMPER T8SGにBETAFPVの送信モジュールを接続して動作したところまでを書きました。その後の色々を書こうと思っていましたが時間が過ぎてしまったので以下簡単に済ませます。

まずELRS受信機が出すCRSFプロトコルをマイコンボードで読んでみました。420Kbpsで動作させたいのでArduinoUNO等ではスピードが足りず、いつかのトラ技の付録でESP32搭載のボードを使用。

そしてSTM32F411 Nuclero-64ボードでELRS版HOI-LINKとして動作を確認。
(これでドローンシミュレータVelocidroneで使えるぞー。 \^o^/ )

STM32F411のボードだと勿体ないのでSTM32F103ボードに移植。

その後、改良したい点があったのですが時間が過ぎてしまったので一旦この時点のファームをページの最下部に貼り付けました。

HOI-LINK ELRS版 を試す方法

使ったボードは秋月電子で購入したSTM32F103C8T6マイコンボードです。
ファームを解凍するとHOI-LINK-EX\Debug\HOI-LINK-EX.binというファイルが含まれているので、ボードの取説に従いFlash loader demonstratorを使って書き込みます。

書込み中の図。
左上のゴチャゴチャッとしたのはUSBシリアル変換です。

再コンパイルする場合はSTMicroelectronicsのCubeIDEを使用します(私が使ったバージョンは1.7.0でした)。上記バイナリを書込むだけなら再コンパイルは不要です。

書込み後、基板回りの接続は次の様に配線します。
・PB10(USART3TX)<–>ELRS受信機のRX
・PB11(USART3RX)<–>ELRS受信機のTX
・基板GND<–>ELRS受信機のGND
・基板5V<–>ELRS受信機の5V
※基板上に5Vという端子がないのでSW2の真ん中の端子に接続しました。
※ USBを使用するのでJ1,J2のジャンパーはハンダで短絡しておく必要があります。
※なおELRS受信機は420Kbpsで接続出来る様に予め設定しておきます。

裏面:赤い線がELRC受信機に5Vを入れる配線。

そうするとこんな感じでPCに繋がり、Velocidroneで練習できるのです。

注意:例によって正式なUSBベンダーIDがないので適当な値を書いています(VID:0xFFFF PID:0x0015) 。
よって使用する際は自己責任でお願いします。

改良したい点

ELRSの受信機はPCと接続して諸々の設定をする必要があります。その為にはHOI-LINKの回路をUSBシリアル変換としても使えると便利かなと思いますが、気軽に試し始めたらUSBとUART間のタイミングが結構難しくてハマっています。
またSBUS版HOI-LINKの時、このページで公開しただけでは世間に広まらず、NONSAYAさんが販売されて広まったという経緯がありました。しかし販売するためにはUSBのベンダーIDが必要なので、またマイクロチップテクノロジーのマイコンに移植してIDの分配を受けようかと考えています(実はPIC32MXでの動作は確認済なのです)。

ファームウェアのダウンロード:HOI-LINK-EX_20220919.zip

HOI-LINKのELRS版

先日JDL宮崎の会場で「HOI-LINKのELRS版ってできないの?」と聞かれました。

今までのHOI-LINKS-BUS信号をUSBに変換してPCに送っているので主にフタバ系のプロポシステムが対象になっています。
一方ELRSというのはこちらで開発されているラジコン電波のプロトコルで、昨年あたりからドローンレース界隈でちょっとしたブームになっているのです。

私は今までELRSを扱える機材を持っていなかったのですが、そう言われるとやってみたくなるのが人情というもの。。。

システムは大体この図の様な感じになるので、試すには最低でも送信モジュール、受信モジュールは購入する必要がありますね。あと送信機本体はどうかな?

送信、受信のどちらのモジュールもCRSFプロトコル(ハードウェア的にはUART)で接続するので、このCRSFプロトコルを知るのがキモとなりそうです。

送信機本体でよく使われているのはファームウェアがOPEN-TXのものですが、ウチにはありません。さすがにこのために送信機まで購入するのはちょっとですね。。。
で、色々調べていくとどうやらJumperのT8SGが使えそうという事が分かってきました。
というのも送信機と送信モジュールの間はCRSFプロトコルというシリアル通信で接続します。で、T8SGにもCRSFプロトコルを選択できるのです。
ならばT8SGにCRSFプロトコルを出力させてみましょう。信号をオシロスコープで見ると、420Kbpsのそれっぽい信号が出ています。

420Kbpsも速いしデータの繰返し周期が約2mSなのも速いですねー。

なんか、イケそうですね。
ならば送受信モジュールだけ購入して実験してみましょう。

という事で発注しました。・・・そして到着したのは盆休みの最終日。もう少し前に届くと着手しやすかったんですけど、仕方ないですね。

購入した送信モジュールはBETAFPV”ELRS NANO TX”。このモジュールは技適が取れているので、日本では殆どの人がこれを使っています。
そして受信モジュールもBETAFPV”ELRS Lite RX”。この受信モジュールはメチャクチャ小さいですね。

これで材料が揃ったので、まずは普通に使えるかというところから。
こちらのページを参考にしながら試していきます。

まず最初にELRSモジュールは諸々の設定をするためにPCと接続する必要があります。送信モジュールとはUSB Type-Cで接続できるので簡単です。受信モジュールはUARTで接続しますが、フライトコントローラー経由でもBetaflightがうまくやってくれる様です(なのでFC経由でやりました)。

そして今回設定したのはこの内容。まずは送信モジュール・・・

そして受信モジュール・・・

各モジュールの設定ができたので接続します。まず送信側・・・

なおT8SGとNANO-TXの間はこの様に配線しました。

そして受信モジュールをFCと接続(実際にはファームを設定したときに接続した)・・・

FCの右についているのがERLS受信モジュール。
なお上についている基板は別の実験用なので関係ないです。

受信モジュールはTX/RX両方の信号を接続する必要があります。(テレメトリを使わなければRX側は繋がなくても良さそうに思えますが、たぶんファームの書換えにも使うのやっぱり繋いでおきます)。

ところで送信機←→送信モジュールの間、および受信機←→FCの間、両方共CRSFプロトコルで接続するという事になっているのですが、送信機側の接続はシリアル信号線は1本、受信機側は2本となっています。
たぶん送信機側は半二重、受信機側は全二重なのかと思いますが、名称的には区別ないんですかね?

そして送信機の電源を入れ、FCをPCに接続してBetaflightConfiguratorの”受信機”ページで確認すると、あっさり接続できていました。

T8SGで問題なくELRSできる様ですね。

・・・でもここまでは準備段階。ここからELRS(というかCRSFプロトコル)に踏み込んでいきます。