ルニヲ’s diary

NSFとNSRでミニバイクざんまい。

加速度センサ

前回バンク角とか、曲げ角なんかも表示できると、面白いんじゃないかと思ってので、ジャイロセンサで実験をしてみました。

 

今使っているマイコンは、M5StackのGrayというやつで、9軸加速度センサが内蔵されているのです。

色々と調べたり実験した結果、ジャイロセンサのみ使うのが良さそう。

どんなデータが取れるのか、サーキットで実走して実験してみたいのですが、緊急事態宣言は解除されたものの、まだサーキットを走れる状態には無く・・・。

 

ということで、手持ちのオフ車で公道で実験してみました。

自宅の周りを四角く、90度左折を4回行った結果が、以下のグラフです。

 

f:id:runio:20200531214026p:plain

 

青が前後角、赤が左右角、黄が水平角です。
理論的には、加減速や坂道等で前後姿勢が変わると青が変化。
バンクすると赤が変化。
曲がると黄が変化。
となるはず。

 

一番良く分かるのが黄の水平角ですね。左折のタイミングで、大きく変化しています。

 

そのタイミングでは、赤のバンク角も大き目に変化していますが、黄程の違いは見られません。まぁ公道で徐行しての左折なので、バンク量が少ない為かもしれません。サーキットだとどんな数値になるんだろう。

 

サーキットで実測してみたい!

 

GPSロガーについてアレコレ その7

緊急事態宣言の解除を、待ち遠しく思いながら、開発続けてます。

 

んで、ここ最近のネタとしては、ラップデータの表示ツールを作ってました。

元々、lap+を使っていたのですが、最近メンテされていないみたいなのと、独自データなんかも表示したいなぁと思ったので。

 

とりあえず最低限、X軸=時間、Y軸=車速でグラフ表示できる所までは、できました。

今後は、ロール角(=バンク角)とか、ヨー角(=曲げ角)なんかも表示できると、面白いんじゃないかと思っています。

 

f:id:runio:20200524003601j:plain

 

あと、ルニヲロガーもカッコワルいので、これからはRLAPSって呼ぼうかぁ、なんて。

単にRunio Loggerの頭文字取っただけですが・・・。

 

GPSロガーについてアレコレ その6

ルニヲロガーですが、引き続き、シコシコと開発を進めておりまして。

走りに行って、デバッグもしたい!んですが、このご時世では、ちょっと厳しい。。。

ということで。。。

GPSシミュレータを作成しました。(大袈裟)

 

f:id:runio:20200425223215j:plain

 

これは、lap+のデータを、NMEA(上の写真にあるようなGPSのデータフォーマットです)に変換して、シリアルに流すというものです。つまり、lap+のデータを、GPSデータとして再生するイメージです。これをルニヲロガーに、あたかもGPSから取得したデータとして食わせることにより、実際にサーキットを走らずとも、デバッグできるという仕掛けです。(まぁ、一言で言えば、ダミーGPSってことです)

更に、BluetoothでルニヲロガーからGPSLAPSにNMEAを転送すれば、GPSLAPSと連携した動作確認ができるってことで。つまり、ルニヲロガーとGPSLAPSに同じデータを食わせて、同じように動けばOKということです。

 

んで、こんな感じでデバッグして、スピートもラップタイムも近い値が出ました。

 

f:id:runio:20200425223905j:plain

 

これで、サーキットで実装せずとも、デバッグが進みます!

 

GPSロガーについてアレコレ その5

ルニヲロガー2のタコメータ動画をyoutubeに上げたところ、回路図とかスケッチを見たいというコメントがありました。
大したものではありませんが、載せておきます。

www.youtube.com

ハードウェア構成

fritzingで描いてみました。
f:id:runio:20200224214507p:plain

回路図はこんな感じになります。
f:id:runio:20200224214520p:plain

正直、ハードウェアは詳しくなく、手探りで作りましたので、保障は致しかねます。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://www.sony-semicon.co.jp/products_ja/spresense

こいつは、みちびきのSLASに対応しているので、誤差が従来の10mから2m位になることを期待していたんですが、ロガーに必要な5Hz出力(1秒間5回の位置取得)だと、位置情報の精度が出ませんで。
ファームウェアの対応を期待しているのですが、今現在未対応な状態。。。

なので、これは一旦保留にしまして。。。

ルニヲロガー2を、新たにM5Stackというマイコンで実装することに。
https://m5stack.com/

M5Stackは、ESP32というマイコンLCD付きケースでパッケージされたマイコンボードでして。
Bluetoothも最初からマイコン内蔵だったり。
GPS受信機も専用ユニットがあったりする便利モノ。
https://www.switch-science.com/catalog/3861/

SPRESENSEと違い、SLAS対応でないので、精度は普通ですが、5Hzには対応しています。

で、まぁこんな感じで開発しまして。

f:id:runio:20200224213722j:plain

タコメータ機能のデバッグ中。右のArduinoは疑似タコパルス発生装置。

先日もて北でログも取ってみました。

f:id:runio:20200224213730j:plain



photomate887だと、山に囲まれる奥のスプーンで乱れるのですが、悪くない感じです。

GPSロガーについてアレコレ その3

完成した試作品を、トミンBコースでテストしてきました。

f:id:runio:20200224213553j:plain


まずは結果をご覧下さい。

■photomate887の軌跡

f:id:runio:20200224213603j:plain



■ルニヲロガーの軌跡

f:id:runio:20200224213614j:plain



ルニヲロガーが乱れまくってます。
でもコレ、途中からズレが酷くなってるんです。

酷くなる前は調子良いのです。こんな感じ ↓

f:id:runio:20200224213626j:plain



悪くないと思うのだけれど。

で、5Hz出力について、SONYに問い合わせたところ、保証できるのは1Hzで、それ以下については現在検討中とのことでした。

ということで、軌跡が乱れるのは、やっぱり5Hz未対応だからみたいです。

ファームが5Hz対応になるまでは、SPRESENSEは保留ですかね。。。

 

GPSロガーについてアレコレ その2

なんだかんだで、SPRESENSEを買ってしまいました。

f:id:runio:20200224213345j:plain



で、実際に試してみてところ、5Hzはあっさり動きました。

頑なに1Hzを謳っているのは、消費電力の絡みかもしれません。
(消費電力が小さいことをウリにしているボードマイコンなので)

で、ノートPC+teratermの組み合わせで車に載っけて、近所をウロウロしてみました。
参考の為、いつも使っているphotomate887も一緒にロギングしてみました。

で、比較です。
黄色がphotomate887で、赤がSPRESENSEです。

こんな感じで、赤の方が実際に近い軌跡になっています。

f:id:runio:20200224213359j:plain



左側から右折レーンで右折した所。こちらも赤の方が実際に近い軌跡になっています。

f:id:runio:20200224213411j:plain



ここは、どちらも道をはみ出していますね・・・。

f:id:runio:20200224213420j:plain



サーキットのような障害物が無い所であれば、もう少し精度が上がりそうな気もします。

早くサーキットで試してみたい・・・。

その為には、不揮発にデータを保存できるようにしないと。
あとはGpsLaps用にbluetoothで通信したいし、バッテリーもLipoバッテリーにしたいなー。