CBF125T その3 旅仕様

引き続き激安中華バイクのCBF125Tを旅仕様にしていきます。
というのも近々ロングツーリングを目論んでいるのです。

サイドバッグガード

前回、古~いサイドバッグを取り付けた事を書きました。これで大体OKなのですが、バッグがリヤサスと擦れないか心配なのでガードを作ってみました。
6mmの鉄筋を曲げ、平板に溶接してネジ穴を開けています。

後ろ側のボルトは最初からキャリアについていた穴(何の為の穴か不明ですが)を利用できたのですが、
前側を取り付ける場所がなかったのでキャリアに平板を溶接しています。

これでバッグとショックが擦れる心配が無くなりました。

ホムセン箱

サイドバッグだけではロングツーリングの荷物は積みきれません。そのため昔は防水バッグを使っていましたが既に持って無いし(たぶんボロくなって捨てたのだと思う)、最近はショップでも見かけません。
ショップにはシートバッグというのが売られていますが結構なお値段がする上にバッグ自体は防水では無く、雨の日にはレインカバーを被せる必要があるみたいです。
そこでホームセンター(ナフコ)で収納箱を買ってきて荷締めベルトで縛ったらいい感じになりました(税込み2380円)。
どうやらロングツーリング界では「ホムセン箱」と称してメジャーな方法らしいです。

固定方法については皆さん色々と工夫されている様で、私もボルト止めにするか縛り付けるか、まだ迷っています。また箱の上にも荷物を積む為に、側面にUボルトを取り付けている例も多く、これは真似してみようと思います。

タンクバッグ

頻繁に取り出すものや貴重品はタンクバッグに入れておくと便利ですが、これも昔持っていたものは既にありません。で、初めてジモティーを利用して買ってみました。近くのスーパーの駐車場に受け取りに行くとやはりツーリングをされる方が出品されていたので30分程話し込んでしまいました。
このタンクバッグ、TANAXのMFK-027というモデルで2800円で新品同様でした。

全部搭載してみる

全部搭載するとこんな感じですね。
ハンドルにスマホとGoProも取り付けてみました。
前のオーナーがUSB電源を取り付けていたので走行中に充電もできます。

だいぶ完成形に近づいてきました。
20年以上前は長期連休の旅にツーリングに出かけていましたが久々の復活を目指しているのです。

BLOGのスマホ表示を変更

このブログをスマホで表示する時の挙動を変更しました。
今まではPCとほぼ同じでいきなり本文を表示していましたが、スマホの場合はまず記事一覧を表示する様に変更しました。

Mobile表示

ページ最下部に[Mobile]ボタンと[Desktop]ボタンがあり、[Desktop]を押すと従来の表示に変更できます。

本当にこれが使いやすいのかというと良く分かりませんね。
見た目をもう少しイジりたい気分なので、暫くは見た目がヒョコヒョコと変わるかもしれません。

CBF125T その2 サイドバッグ

前回の続き。格安で購入したCBF125Tでツーリングするため、サイドバッグを取り付けたいと思います。

これがウチにあるサイドバッグ。昔よくツーリングしていた頃のバッグで30年ぐらい前の物です。

これ、バッグそのものは今でもしっかりしているのですが、バイクに取り付けるためのベルトがありません。 メーカーに聞いても流石にこんな古いバッグ用のベルトは無いとの回答。
そうなると作るしかありません。

手芸店で30mm幅のベルトを買ってきて、適合するバックル(NiFCOSR30)も購入。大体こんな構造だったかなという記憶を基にミシンでカタカタやりました。
そして出来たのがこれ( 所々ミシン縫いを失敗して糸がグチャッとなってますが)。

ではバッグを取り付けてみます。

良さそうですね。

次、元々付いていたレインカバーは朽ち果て捨ててしまったので、こちらも何とかする必要があります。
またまた手芸店に出向いて薄手の防水生地を購入。
水を載せてみても大丈夫です。

ところでこのサイドバッグ、荷物が増えた時に容量を増やせる仕組みになっています。
大の状態と小の状態はこんな感じ・・・

という事は大/小両サイズに対応できる様、レインカバーは絶妙なサイズに作る必要があります。これは中々難しそう。そこで一旦適当な布で作ってみてOKになったところで本番生地で作り直しました。
縫い目の裏側にはシームテープを貼りたかったのですが手元にないので、端切れをテープ状に切って接着剤(GPクリア)で貼り付けました。

一応、この状態でシャワーを掛けても浸みこまなかったのでヨシとしましょう。

折角なのでこのサイドバッグを取り付けてツーリングしたいですね。近場に無料のキャンプ場があるので行ってみました。

こんな感じで走って行って・・・

キャンプしてきました。

関係ないけどテントも古く、フライシートのシームテープが劣化して剥がれてしまいました。今回雨は降らなかったので良かったのですが、これも何とかせねば。。。

でも久々のバイクキャンプ。いいですねぇ。

CBF125T

息子の友達が4万円でバイクを売るというので購入しました。
車種はCBF125T。 新大洲本田という中国製のバイクです。

名前にはCBの文字が入っているのに形はアメリカンっぽく、シフトペダルがシーソー式なところはビジネスバイクっぽいという、どこを目指しているのかわからないバイクです。
が、125ccだと任意保険はファミリーバイク特約でカバーできて経済的なのです。

まあ中古なので色々と直したいところもあります。
マフラーは社外製の爆音なヤツに換装されていましたが、純正マフラーも付けてもらったので戻しました。

また以前乗っていたバイクはどれも足の甲でシフトアップするタイプだったので
シーソー式のシフトペダルには馴染みがないです。 また同じシーソー式でもカブの様に前を踏んでいくとシフトアップするのではなく、通常のスポーツバイクの様にニュートラルから一つ踏むと1速で後ろを踏んでシフトアップすると2速、3足と上がっていきます(4速までしかないんですけどね)。そして4速の上に1速が来る様なロータリー式ではなく、一つずつ下げていくタイプです。
なのでペダルさえ変えてやれば馴染みのシフト方法に変更できます。

という事で、Amazonで汎用シフトペダルを購入しました。

エンジンの軸に取り付ける部分と足で操作する部分とが分離しており、ペダルの長さを調整できます。

ただこのペダル、あまり評判がよくありません。というのもエンジンの軸に取り付ける部分の溶接がすぐに外れるというのです。

まあそれもそのはず。
分かりやすい様に隙間に紙を入れてみました。この様に溶接で付いている部分がほんの僅かしかなく、大半は隙間なのです。
バイクにの軸に締め付けるときに自由に動く範囲を広く取るためだと思いますが、溶接が外れてしまう様では困りますよね。

・・・とまあ、これは知った上で値段につられて購入したんですけどね。
という事で予定通り補強します。
まず一旦バイクに取り付けて、締め付けねじの締め具合を覚えておきます。

そして塗装をはがして先ほどと同じ程度にネジを締めておき、前側部分だけ溶接を盛ります(後ろ側は調整シロとして自由に動かすために溶接しない)。

相変わらずヘタクソな溶接ですが、かなり補強にはなっていると思います。

その後再塗装して取り付けました。今のところ問題なしです。

あと前のオーナーはキャリアを外していましたが、これも貰ってきて取り付けました。結構大きめのキャリアですが積載量が3Kgというのは謎です。

次、リヤウィンカーが結構出っ張っていて、更にキャリアにもウィンカーをガードする出っ張りがあります。しかしツーリング用にサイドバックをつけたいのでこれらは取っ払いたいと思います

まずキャリアの出っ張り部分はグラインダでカットし、その後さび止め塗料を塗りました。

またウィンカーも小さなものに変更し、取り付け位置も後ろにずらしました。元のウィンカーが付いていた箇所には大穴が開いてしまうのでTPUで3Dプリントしたキャップを被せています。
これでサイドバッグも取り付けられると思います。

さて、このバイクで日本一周でもするかぁ?

ワゴンR(初代) キースイッチ修理

我が家では初代ワゴンRが現役で働いています。
しかし古くなってくると色々とトラブルが発生するもの。この車も以前から時々エンジンが掛からなくなるという、車としては致命的な問題が発生していました。

時々エンジンが掛からない症状というのはセルが回らないのです。といってもキースイッチを何度かカチャカチャやると回りだします。こんな状態で数年乗っていました(あかんやろ!)。

ところが最近症状が悪化してきて駐車場や信号待ちで停車した瞬間にエンストしてしまう事が何度かありました。その場合もセルが回らず、キースイッチカチャカチャで復活します。また同時にオーディオがリセットされて設定周波数や時刻を忘れてしまう場合もありました。

何にしてもキースイッチカチャカチャで復活するなら接触不良っぽいです。接点に手が届くなら磨いて直せそうなので、まずは開けてみました。

ではハンドルを外して・・・
うわっ、埃だらけですね。

ウインカーやワイパーのレバーが生えているブロックを外します。
そういえば10年ほど前、この中の接点も接触不良となり磨いた記憶があります。今回も磨いておきたいのですが分解方法を忘れたのでこのブロックはスルーします。

そしてキーシリンダーの左の部品に電線がたくさん繋がっています。たぶんこの中にスイッチが入っているのでしょう。また右側の白い(スイッチらしき)部品からも電線が出ており、これは何でしょうか?

まずは右側の(謎のスイッチらしき)白い部品から外してみます。はめ込みになっている蓋を外すと接点がありました。これ、キーを挿し込んだ時に押されてONになるスイッチみたいです。キーを抜き忘れた時にアラームが鳴るあの機能に使われているのでしょう。
今のところこの機能に不具合は出ていませんが接点を磨いておきます。正しい磨き方があるのか判りませんが1000番のペーパーで磨いて無水アルコールでふき取りました。

そして本丸。ネジ一本で止まっているキースイッチを取り外します。

このパーツもはめ込みになっていたので外してみるとメチャクチャ汚れていました。こりゃ接触不良も起こるってもんです。早速磨きましょう・・・と、次の瞬間、下側の複雑な方の部品がばらけてしまいました。中には銅パーツ3つに加えて金属ボール2個、更にバネが8本も入っていてワケが分かりません。

直前に写真を撮っておいてよかったー。写真を見ながらなんとか組み直しました。
あ、でも接点を磨くのが目的でしたね。もう一度銅パーツを外してクエン酸に漬けたところピカピカになりました。

で、なんとか組み立てた写真。

これを組み付けて今のところ問題は出ていません。
たぶん直っていると期待しながら様子を見ていきます。

HOILog・・無人航空機飛行日誌を自動化 その2

先日報告したHOILogですが、飛行練習会で使ってみると幾つか問題点が見えてきました。

WTW熊本の練習会で試している風景。
(Tinyなので本来ログはいらないですが)

一番問題なのはGoogleドライブにアップロードする時にリトライが発生した場合。自宅の無線環境だとリトライする事はほぼありませんが、スマホのテザリング経由だと(電波状況にもよると思うけど)頻繁にリトライが発生し、リトライしていてもGoogleドライブには届いている事も多く、複数回のログがアップロードされてしまいます。
Googleドライブ側はこちらの仕組みを使っていますが仕組み的にリトライが発生するとそのまま全部が残ってしまいます。リトライになること自体はネットの都合なので対応が厳しく、きちんと対策するにはGoogleドライブ上のスクリプトを変更していく必要があると思います。

一方SDカードには安定してログが残るので、当面はこっちを主に使いたいと思います。。。が、これまでSDカードには時刻ぐらいしか記録していなかったので、今回機体名や場所を残す様に変更しました。

SDカードに残すログのフォーマット:
右から時刻、飛行場所、機体名、離陸か着陸か、アップロードしたか、その場合のリトライ回数 を示します。

例:

2023-03-19 22:34:15,KUMAMOTO,Mobula6,TakeOff,Upload success,1
2023-03-19 22:34:25,KUMAMOTO,Mobula6,Landing,Upload success,1
2023-03-19 22:34:36,KUMAMOTO,Mobula6,TakeOff,Upload success,1
2023-03-19 22:34:45,KUMAMOTO,Mobula6,Landing,Upload success,1

あとコンフィグファイルのデータ中にスペース文字があった場合にスペースを消してしまっていたのを修正しました。
試しに飛行場所にスペースを1文字入れ「KUMA MOTO」にしてみたのが以下の結果です。。。

2023-03-21 23:58:14,KUMA MOTO,Mobula6,TakeOff,Upload success,1
2023-03-21 23:58:23,KUMA MOTO,Mobula6,Landing,Upload success,1

ついでに飛行場所に日本語を使うとどうなるか実験しました。
飛行場所を日本語(文字コード:UTF-8)で書いたところ、液晶画面には正常に表示できませんがSDカードとGoogleドライブ、どちらのログにも正しく記録されています。

2023-03-19 22:38:15,熊本県合志市,Mobula6,TakeOff,Upload success,1
2023-03-19 22:38:30,熊本県合志市,Mobula6,Landing,Upload success,1

なおM5Stackには液晶画面に日本語を表示させる方法もある様なので、そのうち試そうと思います。

以上を修正したスケッチをここに載せました。
http://www.hoihoido.com/data/HOILog20230323.zip

ハンズマン ガラクタ市2023春

コロナ禍が始まってから開催されていなかったハンズマンのガラクタ市。久々に本日開催されました。恐らく2019年秋以来なので3年半振りだと思います。

今回は不覚にも今日まで開催を知りませんでした。公式ホームページによると混雑を避けるため、テレビ・ラジオでの告知を控えているそうで、控えめなチラシが新聞に入っていて、それを見た家族がLINEで教えてくれたので知りました。

そういう訳で今日は会社帰りに参戦です(以前は出勤前に行ったんですけどねー)。

以前のガラクタ市と比べればやはり店内は空いているし、商品も少し余裕を開けて展示してある様です。たぶん開催を知らない人も多いのでしょう。

そして買ったものはこれらです。これ全部で1926円。

10円のネジ類も多数・・・


これはお買い得。12mmのT型レンチと8,10,12mmの十字レンチ。どちらも50円でした。

ビニールテープ10本入りが100円。

そして薄い杉板。115mm×2mで厚さ約2mm。これが1枚15円。
表面が綺麗なのでレーザーで描画したらイイ感じになりそう。4枚買いました。

来週火曜日迄なので、また行ってみます。

HOILog・・無人航空機の飛行日誌を自動化

最近M5Stackにハマっていました。
M5Stackというのはまあ簡単に言うとESP32マイコンにLCDディスプレイやバッテリーを含んだ電源管理回路などをつけて一式をケースに入れたものです。
私が購入したのはCore2という機種で外観はこんな感じ・・・

M5Stackは数年前から出ていて気にはなっていたのですが、値段がちょっとお高めだったりして手を付けていませんでした。で、今更ながら購入してみたら結構便利なんですよね。 特に電源管理回路とかイチから作るとそれだけで何かにハマりそうですが、これなら最初から入っています。

HOILog

という事で何を作っていたかというと「無人航空機の飛行日誌を自動でとるシカケ」です。命名:HOILog。
M5Stack Core2を選んだのは内部に時計(RTC)を持っているので時刻を記録し易いのです。

構造は ざっと下の通り・・・

RC受信機が信号を受けるとSBUSやCRSFプロトコルでM5Stackに伝えます。
(SBUSはフタバ系、CRSFはELRS等で使われるプロトコルです。両方対応しています。)
M5Stack側では信号が来たら飛行開始と判断し、マイクロSDカードに時刻を記録します。そして信号が途絶えたら飛行終了ということでまた記録します。

更にM5StackにはWiFi接続機能があります。これを利用してWiFiが利用できる環境であればASAKICHI先生作の飛行日誌システム( 詳細 はこちら) にもアップロードできるので、Googoleドライブ上のスプレッドシートに記録が残っていきます。

動作しているところはこんな感じ→Twitterに上げた動画

ハードウェア

M5Stack Core2の裏にピンソケットがあります。新品の状態ではここにフタを兼ねた気圧センサー基板がついていますが、今回は不要なので取り外して+5V電源、GND、UART2のRX/TXを引き出し、RC受信機に接続します。
ELRS受信器には入力(RX)信号があり、現在は使っていませんが将来何かに使うかもしれないので繋いでおきます。SBUS受信機の場合は入力信号がないのでM5StackのG14(UART2-TX)端子はオープンにしておきます。

ブレッドボード上に組んだセット(回路図にはないですが分かりやすい様に電源にLEDをつけています)。

ソフトウェア

M5StackはULFlow、ArduinoIDE、Micropython等の開発環境が選択できます。私はこの中から一番なじみのあるArduinoIDEを使用しました。
ところがやり始めて気づいたんですけど、コンパイルが結構遅いんです。ググってみると皆さん同じ問題により、PlatformIOに乗り換えられている様です。PlatformIOとはVisualStudioCode(以後VSCode) に入れるプラグインで、たぶん一言で言い表すと各種マイコンに対応した開発環境だと思います。
確かにPlatformIOでビルドするとかなり早くなり快適です。またベースがVSCodeなので入力補完があったり、キーバインディングをEmacs風に変更したりできて便利です。(余談ですがEmacs風キーバインディングにしたとき、VSCodeの仕様によりEscキーを使用できず、代りにAltキーを使う事になるのが弱点です)。

ところがPlatformIOで作ったスケッチが大体安定した動作になった頃、このブログで公開しようかなーと思い、その前に一旦ArduinoIDEに戻してビルドしたところ何だかうまく動作しません。(M5Core2ライブラリはどちらも同じバージョン(0.1.5)なのですが、もっと奥の方のライブラリのバージョン違いが原因かもしれません。)

とりあえずハマったのは下記の2点。
・タイマーの一旦停止後再起動する場合の動作の違い。
 timerStop(timerxx)で停止した後に再起動するとき、 PlatformIOはtimerRestart(timerxx) で再起動できていたのがArduinoIDEだと止まったまま。
 →対策:timerAlarmDisable(timerXX)で止めて timerAlarmEnable(timerXX) で復帰させる。ただし復帰直後のカウントアップが嫌だったので timerAlarmEnable(timerXX) 直前にtimerRestart(timerxx) も実行した。

・HTTPにPOSTした後同じオブジェクトでGETできない問題。
 Googleドライブへアップロードするとリダイレクト指定が返ってきます。このため一旦POSTでアクセスした後、今度はGETでアクセスするという2段階のアクセスが必要となります。そこでPlatformIO上では、HTTPClient http;で作ったオブジェクトを使いまわして接続していました。しかしArduinoIDEだとエラー(エラーコード400が返る)となりました。
色々試したところ、どうやらArduinoIDE上では GET→GETなら できますがPOST→GETはダメでした。
 → 対策: HTTPClient http2; の様にもう一つオブジェクトを宣言し、POSTはhttpオブジェクト、GETはhttp2オブジェクトで使い分けた。

使い方~セットアップ編~

  1. ArduinoIDEとM5Stack Core2の開発環境を準備する。私はこちらのページを参考にしました。
  2. この投稿の一番下からM5Stack Core2用のスケッチをダウンロードして解凍する。
  3. PCとM5Stack Core2の間をUSBケーブルで接続する。
  4. 「2.」で解凍したフォルダ内のHOILog.inoをダブルクリックするとArduinoIDEが開く。
  5. ArduinoIDEのツールメニュー→ボード名を”M5Stack-Core2″、シリアルポートを該当するポート名(不明な場合はWindowsであればデバイスマネージャーで調べる)に設定する。
  6. 書込みボタンを押して書き込む(若干時間が掛かります)。書き込みが完了したら電源ボタンを長押し(約6秒)して一旦電源を切る。
  7. 上の「ハードウェア」に書いた様にM5StackとRC受信機を接続する。
  8. 設定ファイル”hoilogini.txt”を作成して マイクロSDカードのトップディレクトリに置く。※SDカードの使用は必須です。
  9. 電源ボタンを押して起動!!

設定ファイルについて

SDカードのトップディレクトリに”hoihoiini.txt”の名前で作成します。
内容は1行に1パラメータを設定。1行は256バイトまで。行先頭にディレクティブ、その後1文字以上の空白を置いて設定値を書きます。#記号より右側はコメントです。

設定ファイルの例・・・

# HOILog 設定ファイル 

LOGFILE /hoilog.txt # File name
SCREEN 60 # Screen save time.(Seconds)
RCTYPE SBUS # SBUS or CRSF
RCJUDGE RSSI # RSSI or RCSIGNAL
RCRSSICH 16 # Channel number
RCRSSITH 1000 # Threshold value
RCCONTTIME 3 # Signal continue time
BAUDRATE 100000 # SBUS:100000 CRSF:420000
WIFITIMEOUT 20
SSID XXXXXXXX
PSWD XXXXXXXXX
LOGURL https://script.google.com/macros/s/XXXXX/exec
LOC1 ASO
LOC2 AMAKUSA
LOC3 KOSHI
MODEL1 Tyro99
MODEL2 Switch
MODEL3 Five33

各ディレクティブの説明:

LOGFILE:SDカードに残すログファイルの名前です。
SCREEN:指定の秒数イベントがないと画面を暗くします。ボタンを押したりRC信号が変化すると表示を再開します。値が0の場合は常に表示です。
RCTYPE:RC受信機の信号フォーマットがSBUSかCRSFかの指定です。
RCJUDGE:飛行中の判定をRC信号の有無で判定するか、RSSIで判定するかの指定です。受信機によっては電波が途絶えても最後の状態を維持するので単に信号が途絶えたかどうかでは判別できません。その場合でもRSSI(信号強度)がどこかのチャンネルに出ていればこれを基に判別可能です。
RSSICH:RSSI によって飛行中である事を判定をする場合、RCチャンネルの何番がRSSIを示すかを指定します。
RSSITH:RSSI によって飛行中である事を判定をする場合、 RSSICHで示すRCチャンネルの値が幾つ以上なら信号ありとするかを指定します。CRSFの信号範囲が172~1811、SBUSも大体その程度なので1000あたりを入れておけば大体OKだと思います。
RCCONTTIME:瞬間的な信号の切断やノイズによる入感を除去するため、
(立上り/下り共) 信号が何秒間連続で続いたら変化したと判断するかを指定します。
BAUDRATE:RC信号のボーレートを指定します。SBUSは100000固定。CRSFは420000がよく使われる値です(115200も使われる様ですが手元に確認する環境がなく、動作を確認していません)。
WIFITIMEOUT:WiFi接続時、何秒以内に接続できなかったらあきらめるかを指定します。
SSID:WiFi接続のSSIDを指定します。
PSWD:WiFi接続のパスワードを指定します。
LOGURL:Googleドライブにアップロードする為のGoogleApplicationScriptへのURLです。こちらのASAKICHI先生の動画の8分20秒頃に説明があるURLです。
LOC1~5:飛行場所を5つまで設定できます。M5Stack上のメニューでこの中から一つを選択してログに残せます。電源投入直後はLOC1が選択されています。MODEL1~5:機体名を5つまで設定できます。 M5Stack上のメニューでこの中から一つを選択してログに残せます。 電源投入直後はMODEL1が選択されています。

※LOCxやMODELxの値に日本語等の2バイト文字を入れるとどうなるかは試していません。

使い方~操作編~

電源を入れるとまずWiFiに接続した後、下の基本画面になります。
WiFiに接続できなかった場合はSDカードへの記録のみ行い、Googleドライブへのアップロードはしません。
この状態でRC電波を受けるとRCCONTTIMEに設定した値の秒数信号が続く事を確認後、SDカード、およびGoogleドライブのログに記録を残します。
Googleドライブへ記録する間、飛行状態表示部に「START UPLOAD」又は「STOP UPLOAD」と表示し、この間RC信号モニタや時計は動作しません。
Googleドライブへの記録は失敗すると3回までリトライします。最終的に成功したか失敗したかはSDカードに記録します。なお稀にですがサーバが正常に受付けて成功した旨の通知を返したのにM5Stackまで届かなかった時はリトライするので複数回の記録が上がってしまいます。その場合はSDカードのログを参照しながら手動でGoogleドライブ上のデータを修正する必要があります。

M5StackのCore2にはボタンがA,B,Cの3つ搭載されています(このボタンは物理的な接点ではなくタッチセンサーになっていて、押した感触が伝わりにくいですがちゃんとボタンとして機能します)。
基本画面ではボタンCを長押しすると設定画面に移ります。
ボタンA,Bには機能を割り当てていませんが、スクリーンセーバーからの復帰には反応します。

設定画面(MAIN MENU)
上から時計設定、電源OFF、機体選択、飛行場所選択、メニュー終了です。
反転文字になっているところが現在対象となっている行で、ボタンAを押すと上、Bを押すと下の行に移動し、Cを押すと選択されます。
「電源OFF」を選択するとシステムの電源を切ります。「EXIT MENU」を選択すると基本画面に戻ります。
時計設定、機体選択、飛行場所選択の各画面を以下で説明します。

時刻設定画面
ボタンA,Bを押すと反転文字になっている部分の値が上下に変化します。ボタンCは決定ボタンで次の値に進みます。年月日~秒まで進み、次にボタンCを押すと図に「NEXT」と表示された部分に移ります。ここではボタンA,Bを押すと「NEXT」、「SAVE&EXIT」、「EXIT:NonSAVE」と順に変化して行きます。それぞれの状態でボタンCを押すと以下の動作をします。
・NEXT:最初の「年」の設定に戻ります。
・EXIT:NonSAVE:時刻は変更せずにメインメニューに戻ります。
・SAVE&EXIT:内臓時計に設定時刻をセットし、メインメニューに戻ります。

機体選択
ボタンA,Bで対象行を上下させ、ボタンCで選択すると機体が選択されてメインメニューに戻ります。

飛行場所選択
ボタンA,Bで対象行を上下させ、ボタンCで選択すると飛行場所が選択されてメインメニューに戻ります。

ログ

実行後はSDカードのLOGFILEで指定したファイル名に以下の様なログが残っています。

TakeOff,2023-03-05 22:46:36                  ←離陸時刻
Upload success,2023-03-05 22:46:36 ←離陸をGoogleドライブにアップロード成功
Landing,2023-03-05 22:47:13 ←着陸時刻時刻
Upload success,2023-03-05 22:47:13 ←着陸ををGoogleドライブにアップロード成功

Googleドライブ上には(アップロードしていれば)次の様なログが残ります。

スケッチ

HOILog20230306.zip

※このソフトウェアを使用されてもし問題が発生しても責任は持てませんのでそのあたりはよろしくお願いします。

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プロトコル)に踏み込んでいきます。