加速度センサ
前回、バンク角とか、曲げ角なんかも表示できると、面白いんじゃないかと思ってので、ジャイロセンサで実験をしてみました。
今使っているマイコンは、M5StackのGrayというやつで、9軸加速度センサが内蔵されているのです。
色々と調べたり実験した結果、ジャイロセンサのみ使うのが良さそう。
どんなデータが取れるのか、サーキットで実走して実験してみたいのですが、緊急事態宣言は解除されたものの、まだサーキットを走れる状態には無く・・・。
ということで、手持ちのオフ車で公道で実験してみました。
自宅の周りを四角く、90度左折を4回行った結果が、以下のグラフです。
青が前後角、赤が左右角、黄が水平角です。
理論的には、加減速や坂道等で前後姿勢が変わると青が変化。
バンクすると赤が変化。
曲がると黄が変化。
となるはず。
一番良く分かるのが黄の水平角ですね。左折のタイミングで、大きく変化しています。
そのタイミングでは、赤のバンク角も大き目に変化していますが、黄程の違いは見られません。まぁ公道で徐行しての左折なので、バンク量が少ない為かもしれません。サーキットだとどんな数値になるんだろう。
サーキットで実測してみたい!
GPSロガーについてアレコレ その7
緊急事態宣言の解除を、待ち遠しく思いながら、開発続けてます。
んで、ここ最近のネタとしては、ラップデータの表示ツールを作ってました。
元々、lap+を使っていたのですが、最近メンテされていないみたいなのと、独自データなんかも表示したいなぁと思ったので。
とりあえず最低限、X軸=時間、Y軸=車速でグラフ表示できる所までは、できました。
今後は、ロール角(=バンク角)とか、ヨー角(=曲げ角)なんかも表示できると、面白いんじゃないかと思っています。
あと、ルニヲロガーもカッコワルいので、これからはRLAPSって呼ぼうかぁ、なんて。
単にRunio Loggerの頭文字取っただけですが・・・。
GPSロガーについてアレコレ その6
ルニヲロガーですが、引き続き、シコシコと開発を進めておりまして。
走りに行って、デバッグもしたい!んですが、このご時世では、ちょっと厳しい。。。
ということで。。。
GPSシミュレータを作成しました。(大袈裟)
これは、lap+のデータを、NMEA(上の写真にあるようなGPSのデータフォーマットです)に変換して、シリアルに流すというものです。つまり、lap+のデータを、GPSデータとして再生するイメージです。これをルニヲロガーに、あたかもGPSから取得したデータとして食わせることにより、実際にサーキットを走らずとも、デバッグできるという仕掛けです。(まぁ、一言で言えば、ダミーGPSってことです)
更に、BluetoothでルニヲロガーからGPSLAPSにNMEAを転送すれば、GPSLAPSと連携した動作確認ができるってことで。つまり、ルニヲロガーとGPSLAPSに同じデータを食わせて、同じように動けばOKということです。
んで、こんな感じでデバッグして、スピートもラップタイムも近い値が出ました。
これで、サーキットで実装せずとも、デバッグが進みます!
GPSロガーについてアレコレ その5
ルニヲロガー2のタコメータ動画をyoutubeに上げたところ、回路図とかスケッチを見たいというコメントがありました。
大したものではありませんが、載せておきます。
ハードウェア構成
fritzingで描いてみました。
回路図はこんな感じになります。
正直、ハードウェアは詳しくなく、手探りで作りましたので、保障は致しかねます。m(_ _)m
仕組み的には、NSR50のパルサーからの点火信号を、シュミットトリガで矩形波にして、マイコンに取り込んでいます。
電流と電圧を下げる為に、抵抗で分圧していますが、適当です。
開発にあたり、以下のサイトを参考にさせて頂きました。
ソフトウェア(ソースコード)
スケッチのうち、タコメータに関するところだけ載せておきます。
#include <M5Stack.h> #define PLSIN (3) // パルス入力ポート unsigned long rpm = 0; // エンジン回転数 hw_timer_t *pls_timer = NULL; // タイマオブジェクト int mode = HIGH; // 信号監視モード int pulse_cnt = 0; // パルス数 // 250msec割り込み処理 void IRAM_ATTR pls_cnt() { // 1回転あたり2パルスなので // pulse_cnt * (60 / 0.25) / 2 がrpmになる rpm = pulse_cnt * 120; pulse_cnt = 0; } // 初期化処理 void setup() { // 初期化処理 M5.begin(); // タイマ設定(タイマ0, プリスケーラ80(1μsec), 割込カウンタのインクリメント) pls_timer = timerBegin(0, 80, true); // 割り込みハンドラ設定 timerAttachInterrupt(pls_timer, &pls_cnt, true); // タイマ値設定(250000*1μsec=250msec) timerAlarmWrite(pls_timer, 250000, true); // タイマ割り込み開始 timerAlarmEnable(pls_timer); } // メインループ void loop() { int port; // タコパルス信号取得 port = digitalRead(PLSIN); // モードによる信号検出処理 if ((mode == LOW) && (port == HIGH)) { pulse_cnt++; mode = HIGH; } else if ((mode == HIGH) && (port == LOW)) { mode = LOW; } }
メインループでは、パルス信号のON/OFFを監視して、パルス数をカウントしています。
エッジ割り込みでカウントするようにもしたのですが、チャタリングが起こったので、ベタでカウントしています。
シュミットトリガを使っているから、割り込みでも大丈夫だと思うんですが。
ブレッドボードのせいかもしれません。
で、250msecのタイマ割り込みで、パルス数から回転数を計算しています。
NSR50の場合、1回転で2パルスが発生するので、250msecあたりのパルス数を、1分あたりの回転数(rpm)に変換するには、120を掛ければ良いことになります。
あと、注意するのは、レーシングプラグは使わないことです。
ノイズがすごくて、マイコンがリセットしますので。
GPSロガーについてアレコレ その4
前回からだいぶ開きましたが、しつこくやっています。
元々はSONYのSPRESENSEという、GPS受信機付きマイコンボードで作っていました。
https:/
こいつは、みちびきのSLASに対応しているので、誤差が従来の10mから2m位になることを期待していたんですが、ロガーに必要な5Hz出力(1秒間5回の位置取得)だと、位置情報の精度が出ませんで。
ファームウェアの対応を期待しているのですが、今現在未対応な状態。。。
なので、これは一旦保留にしまして。。。
ルニヲロガー2を、新たにM5Stackというマイコンで実装することに。
https:/
M5Stackは、ESP32というマイコンとLCD付きケースでパッケージされたマイコンボードでして。
Bluetoothも最初からマイコン内蔵だったり。
GPS受信機も専用ユニットがあったりする便利モノ。
https:/
SPRESENSEと違い、SLAS対応でないので、精度は普通ですが、5Hzには対応しています。
で、まぁこんな感じで開発しまして。
タコメータ機能のデバッグ中。右のArduinoは疑似タコパルス発生装置。
先日もて北でログも取ってみました。
photomate887だと、山に囲まれる奥のスプーンで乱れるのですが、悪くない感じです。
GPSロガーについてアレコレ その3
完成した試作品を、トミンBコースでテストしてきました。
まずは結果をご覧下さい。
■photomate887の軌跡
■ルニヲロガーの軌跡
ルニヲロガーが乱れまくってます。
でもコレ、途中からズレが酷くなってるんです。
酷くなる前は調子良いのです。こんな感じ ↓
悪くないと思うのだけれど。
で、5Hz出力について、SONYに問い合わせたところ、保証できるのは1Hzで、それ以下については現在検討中とのことでした。
ということで、軌跡が乱れるのは、やっぱり5Hz未対応だからみたいです。
ファームが5Hz対応になるまでは、SPRESENSEは保留ですかね。。。
GPSロガーについてアレコレ その2
なんだかんだで、SPRESENSEを買ってしまいました。
で、実際に試してみてところ、5Hzはあっさり動きました。
頑なに1Hzを謳っているのは、消費電力の絡みかもしれません。
(消費電力が小さいことをウリにしているボードマイコンなので)
で、ノートPC+teratermの組み合わせで車に載っけて、近所をウロウロしてみました。
参考の為、いつも使っているphotomate887も一緒にロギングしてみました。
で、比較です。
黄色がphotomate887で、赤がSPRESENSEです。
こんな感じで、赤の方が実際に近い軌跡になっています。
左側から右折レーンで右折した所。こちらも赤の方が実際に近い軌跡になっています。
ここは、どちらも道をはみ出していますね・・・。
サーキットのような障害物が無い所であれば、もう少し精度が上がりそうな気もします。
早くサーキットで試してみたい・・・。
その為には、不揮発にデータを保存できるようにしないと。
あとはGpsLaps用にbluetoothで通信したいし、バッテリーもLipoバッテリーにしたいなー。