【パワーメーター】ANT+ATMEGA328P(内蔵8MHZ)接続<5V->3.3VもOK>

※2022年6月追記  本記事2017年と古い記事で、ANT用モジュールも販売されなくなってます。
最新のANT+マイコン接続は、米国のマニアが公開しています。ANT用USBドングルをTeensyのUSBHOSTで接続するという方式です。時代は、高性能マイコンの時代になって、Atmega328を使う人がほとんどいません。
Teensyを使う記事はこちらにありますが、Arduino IDEで普通に使えます。
Teensy用のANT+作者がforumに公開しているLINKはこちらです。
https://forum.pjrc.com/threads/43110-Ant-libarary-and-USB-driver-for-Teensy-3-5-6?highlight=ant%2B
多分、日本でこれを使っている人は居ないと思います。
NordicのnrF52を使う記事もこちらにあります。
https://devzone.nordicsemi.com/f/nordic-q-a/48210/selecting-nordic-ant-device-to-read-hr-with-arduino-teensy
注意:自作のANT+システムを作り始めると数か月かかりますので、そのシーズンは自転車に乗る時間が激減します。冬の間いじるとか、年間計画をたてて、電子工作することをお勧めします。私の場合は、自転車用電子工作がメインになって、実走行ほどんとしなくなて、ローラ台でしか自転車にのってません。

DgradeDIY様からご紹介いただいたAE-ATMega168/328を母艦として、小さなArduino CPUにスケッチを書き込む使い方をしてます。AVRマイコンベースなので安くて小さいAVR ATMega328P-PUブートローダー済み(内蔵8MHz)を使ってANT+接続ができるか試してみました。何しろクロックも内蔵なのでブレッドボードに5V電源とGND接続するだけで動作してトータルサイズは、手持ちマイコンの中では最小面積でANT+通信ができました。価格もブート済みでSwitchScienceで360円で、ブート無しなら秋月で250円ですので、壊しても惜しくないCPUです。
●結線
ATMega328P-PUを動作させるやり方は、ここに書いてありすますが、Arduino公式ページにでてました。5V動作です。
https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard


私は、秋月のAE-ATMega168/328キットを使っているので
USBシリアルのジャンパTX,RX,RSTの3本を抜いて
USBシリアルモジュールを単体として小さなマイコンのシリアルピンへ接続します。この場合は、ストレート接続です。
Arduino IDEとの接続設定は、ツール>ボード:ArduinoFio
を選択しておけば、スケッチを描き込むことができます。

●ArduinoのTXD信号(5V)を3.3Vモジュールで受信
5V駆動のマイコンは、3.3Vセンサ、モジュールと接続する場合壊してしまうので、対策が面倒で困ってました。
3.3VモジュールからArduinoRXD(5V)はモジュールもArduinoも壊れることはありませんが、5Vを3.3Vモジュールにいれるのはそのままだと壊してしまいます。
そこで、いろいろ検索してみると電子工作レベルだったら大げさなことは必要なく抵抗一本で5V=>3.3V入力にできるというページを見つけました。
http://www.cepstrum.co.jp/hobby/5v33v/5v33v.html
 20KΩの抵抗を直列にArduino TXDとBC-ANT-SERIAL間に
入れ込むだけで大丈夫だというので、ATMega328P-PU(8MHz内蔵)で試してみました。
写真の右上の抵抗は4.7kΩでしたが、電圧が4.1Vだったので
20KΩに換えたら下記オシロの通り3.7Vまで落ちて
BC-ANT-Sesialの仕様電圧内に収まりました。
黄色マークがATMega328P-PU ブートローダー済み8MHz
白い基板がBC-ANT-Serial
左の緑基板がAE-ATMega168/328キットでそこのジャンパから
TXD,RXD,RSTの3本と電源5V,3.3V,GNDの計6本を母艦から接続します。

見事にANT+接続できて、しかも3.7V化成功でした。
黄色がBC-ANT-SerialのTXD出力信号、
水色がBC-ANT-SerialのRXD入力信号です。これは、Arduino ATMega328P-PU(8MHz内蔵)SoftSerialのTXD
ポート(5V)からの初期化信号です。20KΩの抵抗のおかげで、3.68Vレベルまで下がってます。


●ロードバイクに実装するCPU
左が母艦のAE-ATMega168/328キット
右手前がAE-ATMega328-MINI
右手奥がATMega328P-PUブート済み(8MHz内蔵)です。

ANT+受信は負荷が軽いので8MHzのATMega328P-PU(8MHz内蔵)単体にします。

●ANT+のテスト
DgradeDIY様から教えていただいたやり方がデバッグには便利です。テストで使わせて頂くプログラムは、DgradeDIY様のブログから頂きます。判らない時は、コメント入れると丁寧に対応していただけますので、安心して実験できます。http://dgradediy.blogspot.jp/2017/07/nrf52.html#comment-form

ANTを開発するには、ANTアライアンスでNETWORK_KEYをプログラム中に書き込まないといけませんので、登録してログインしてNETWORK_KEYS.txtファイルをダウンロードして中の書いてあるANT+の8バイトのNETWORK KEYをコピペしないといけません。
https://www.thisisant.com/
は、ANTアライアンス自体の存在が普及を阻害していると思ってますが、彼らは何を考えているのか判りませんが、BLEに押されている現状は、ANTアライアンスの反省すべき現象だと思います。しかし、我々趣味のサイクリストがANT+機材を購入してしまってますので、ANT+はあと10年くらいは生き延びると思ってます。

デバッグは、ANT+Sensor_SimulatorというTOOLを使います。
このツールは、ANT アライアンスからダウンロードできます。



ANT+Simulator  (Deprecated)をダウンとロードしてインストールします。



ANT+USBドングルをPCへ差込んでおきます。

ANT+ Sensor Simulatorを立ち上げて、各CHにセンサを割り付けてTransmitingを押すと送信が続きます。
私が間違っていたのは、HRMでちっとも信号がでてこないのでどうしてかとDgradeDIY様に聞いたら、データに変化が無いとANT+では、受信しないらしくHRMの設定で
Sweepingにチェックをいれることが必須でした。

●結果
オシロでみるような信号が常時でる状態になっていると
プログラムへは、下記データが受信できます。


S:速度、C:ケイデンス、H:心拍数、P:パワー
と4つの信号が受信できてます。値はシミュレータ設定をしてませんので管理してありません。後日細部調整いたします。

●以後
最小最安のCPUでANT+受信データ確認出来たので、
次は、i2c接続試行を始めます。LCDと風速計の微差圧センサD6FPHの接続プログラムを追加する作業を始めます。
クランクとフレームへのひずみゲージ貼りもあるので、
日程をどうするか今週中に練ります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です