2017年5月4日木曜日

ANT+対応サイコンの自作(ソフトウェア編)

昔、ANT+対応のサイクル・コンピュータを自作してました。

パワー、心拍、速度とケイデンスをANTセンサーから受信して表示できました。

本人的に一番の売りは、速度とケイデンスから、何枚目のギアを使ってるか算出して表示できたことでした。
10年くらい前のカンパのサイコンも同様なギア表示をしていたことがヒントでした。

こんな感じで1.8インチTFTにカラー&グラフィカル表示。

しかしこのTFT液晶は太陽光の下では視認性が悪く、
「がんばれ、もっと明るくなーれ、明るくなーれ」
と駆動電圧を上げていったところ、壊れました(汗)。
結果、上の写真のように薄暗くしか映りません。

その後、Stravaにはまってしまい、Garmin以外使わなくなっていました。

最近、お手軽パワーメータには、お手軽サイコンが欲しいな、
という妄想が湧いてきました。

以下は、キャットアイの不朽の名作(と私が勝手に思ってる)RD200。

このサイコンは有線式で、ケイデンス用の線を100回/分のペースでOn・Offすると画面に100と表示され、同様に200回/分ペースなら200と表示される。

ANTの信号を受信して、その数値に合わせて速度/ケイデンス用の線をOn/Offすれば、パワーに限らず、様々な数値を表示できる。
メリットはボタン電池で数年動作すること。
Garminは頻繁に充電が必要で、普段乗りには面倒です。

とりあえず、昔作った、Arduino Uno+nRF24(BC-ANT-Serial)用のANT対応サイコン・ソースコードを動作させてみました。
ArduinoUnoは通常5v動作ですが3.3v動作に改造しており、nRF24と接続するのにレベル・シフタは不要です。

配線は、
Arduinoの2番ピンを入力PINとして、nRF24のTXピンに接続、
Arduinoの3番ピンを出力PINとして、nRF24のRXピンに接続
nRF24の裏面のBR2をショートして、通信速度を9600bpsに設定。




PCのシリアルモニタで見ると、以下のように正常に各ANTセンサーからの情報を受信し、PCへシリアル送信しています。


「パワーが700wで心拍が70は正常でないだろ」
と思われてしまいそうですが、これはANTシミュレータ
を使っています。

このシミュレータを使うと、パワーメータ等のセンサーの出力をシミュレートして電波を送信したり、市販のANT対応センサーの電波を受信して、ログをとったりできます。
(ZWIFTで使うようなUSBのANTドングルが必要です。)

こちらのANTのサイトでフリーで入手しましたが、最新版は、あれこれ変更されてるかもしれません。
ttps://www.thisisant.com/

今回のArduino+nRF24用のANT受信サンプルのソースコードを以下のサイトに置きました(本日の日付をファイル名としています)。
(実際にアクセスする場合、末尾の000を削除して1138で終わるようURLを修正する必要があります。ロボット除けのためで、お手数をお掛けします)
ttps://sites.google.com/site/myfiles1138000

あと、このサンプルのソースコードを動作させるには、
#define NETWORKKEY {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55}
となっている箇所を正しいNETWORKKEYに置き換える必要があります。

www.thisisant.comからANTの仕様とNETWORKKEYを入手する際、NETWORKKEYを公開しないことを約束している(させられている)ためです。
無視して、公開してる方もいるようですが・・・












3 件のコメント:

  1. はじめまして管理人様。

    私はおっさんで初心者サイクリストのマイコン初心者です。
    TAKIと申します。
    上記の記事を参考にさせていただき、どうにか管理人様のサイコンが
    再現できました。
    嬉しくて自分でソースをいじりながら楽しませていただいています。
    管理人様のソースはいじりやすく整備されていてありがたいです。

    そこでずうずうしくもお願いがあります。
    管理人様のサイコンに自分のパワーメーターのdevice idを表示させようと
    トライしているのですがどうすればよいかわかりません。
    なにか助言をいただけないでしょうか。

    よろしくお願いします。




    返信削除
  2. 昨日質問させていただいたTAKIです。
    A4 2 4D nhannel_numer 51 sum
    を送信したところ返答でdevice numberが帰ってきました。
    これで今度はparingの実験にかかれそうです。
    今回はお騒がせしました。
    また不明な点が出てきて困ったら質問させてください。

    返信削除
  3. TAKI様

    コメントありがとうございます。

    拙いソースコードがお役に立ったようで、大変嬉しいです。
    軽くガッツポーズがでました。
    嬉しすぎて今夜は眠れないかもしれません。

    当方、ド素人のジジイですが、お役に立てそうなことがあれば、何なりとお申し付けください。

    返信削除