2021年3月28日日曜日

CAN送受信OK...M5stack+M5StickC plus

今回は

前回M5stackとMCP2562というCAN トランシーバーを使って送受信試験をしましたが、うんともすんとも言わずで終わりました。デジタルオシロ等あれば、確認できるのですが持ち合わせていません。出来合いのモジュールがあることがわかり、それらを使って送受信の確認をしてみます。

M5stack commとM5stickC+CAN moduleで送受信

M5stickC Plusの準備

CAN moduleを購入し、GROVEコネクタにて接続します。GROVEコネクタの実態はI2C接続です。M5stickC Plus側は、GND,5V,SDA,SCLの4線です。このコネクターは、HY2.0-4Pという規格だそうです。名前のとおりピンのピッチが2mmとちょいと狭いです。汎用のコネクタは、はまりません。メス配線コネクターも市販のものは大抵2.54mmなので、この2mmピッチのコネクターが必要です。配線には専用ケーブルを用意するか、手持ち組み合わせて工夫が必要です。0.54mmなんとかなるかと思いましたが、なりませんでした。

CANモジュールはGROVEケーブルを介して外付けなのでちょいとでかくて、M5StickCと同じくらいの大きさです。モジュールの先端は内部と電気的に分離されてCAN BUSになっておりGND、CAN_H、CAN_Lを接続します。

ソフトウェアは、参考が多いArduinoにします。参考リンクのソースそのままで送信プログラムは動きました。ボタンAとBを押せば、それぞれ異なるメッセージがID 0x0でCAN BUSに送信されます。

M5stack+commu moduleの準備

M5stackにスタックできるcommuモジュールを購入しました。これは、esp32とSPI接続してそれぞれのドライバーにつながっていて、以下のインターフェースが入出力できます。

  • I2C x 2
  • CAN × 1
  • RS485 × 1
  • TTL × 1

モジュールを本体の底にガチャっと差すだけでOKです。配線間違いの可能性を低減できます。本体とドッキングしたときの側面4方向です。バッテリーモジュールも接続してます。これで、150mA→750mAに容量が上がります。

ソフトウェアはサンプルコードが各種提供されているの、それを参考に作成します。ほぼそのままですが。

CAN送受信試験

送信機と受信機ができたので、送受信できるか確認します。CAN_H、CAN_L、GNDをそれぞれ接続して、CAN_HとCAN_Lの間に120Ωの抵抗を終端として入れます。全体の接続は以下のとおりです。

全体構成とそれぞれの部位は、以下のとおりの構成です。

配線の長さが短いので配線は撚らなくても(twist pairにしなくても)大丈夫です。

送信機は、以下のとおりAとB2種類のメッセージを送信します。

受信機は、2種類の8バイトメッセージを受信してます。

送信機からCAN ID 0x0 にAとBを加えて異なるメッセージを送信すると、受信機側でそれぞれ受信していることが確認できました。

CAN送信機のトランシーバーをMCP2562に変更

送受信確認できたので、以前うんともすんとも言わなかったトランシーバーに変更してみます。再度データーシートを見直すとVDDとVIOが内部で繋がっていないことがわかりました。MCP2561は繋がっているようです。よく確認が必要です。VIOへ配線を追加して、トランシーバーを変更して送受信すると、問題なく送受信確認できました。

一式ちゃんと動くセットがあると、デバッグしやすいです。デジタルオシロ買わずになんとかここまで進んだ感じです。オシロがあればもう少し早くここまでたどり着いたかもです。引き続き購入は検討します。

今日のまとめ

M5stack+commuモジュールとM5StickC+CANモジュールを使ってCAN送受信の確認ができました。また、以前動かなかったmcp2562トランシーバも動作確認ができました。

更にCANメッセージの内容を確認してソフトウェアを改良しつつ、バイクからデータを吸い出せるように引き続き検討したいと思います。

参考リンク

M5StickC PlusでCAN通信 - Embedded &oT

M5Stack Commuモジュール - スイッチサイエンス

0 件のコメント:

コメントを投稿

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら