今回は
前回M5stackとM5stcickC plusを使って送受信試験をしました。今回は、更にesp32をCAN BUSに加えて3ノードの送受信試験をしてみました。
CAN BUSに3ノード
準備
CAN BUSに以下の3つのノードを接続します。IDは、標準の11bit、BUS速度は500kbpsです。
- M5stack+commuモジュール[受信]
- M5StickC Plus+mcp2562[送信] 送信ID=1
- esp32+mcp2562[送受信] 送信ID=5
図で書くと以下のようになります。
実際の構成は、写真のとおりです。
試験結果
送受信結果をesp32+mcp2562ノードをPCにUSB接続してシリアル出力を確認します。
> Executing task: C:\\Users\\kaji\\.platformio\\penv\\Scripts\\platformio.exe device monitor <
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at <http://bit.ly/pio-monitor-filters>
--- Miniterm on COM7 115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
New standard frame from 0x00000001, DLC 8
H e l l o C A N
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
New standard frame from 0x00000001, DLC 8
M 5 S T A C K
send frame:e s p 3 2 c a n
send frame:e s p 3 2 c a n
受信専用のM5StackのTFT画面の動画はこちら。
https://youtu.be/_ZjJ3LRkQ8s
2ノードから送信されたメッセージは、それぞれ受信されていることが確認できました。CAN BUSは共通なのでethernetと同じくCSMA/CD方式にてデータの衝突は回避しているようです。と、思ってましたがさらに調べてみると、データの衝突回避は「無損失ビット単位アービトレーション方式」が採用されています。CANデータは、500kbps程度ですが、各コントローラが更に高い周波数でデータをサンプリングして同期をとっているようです。なるほど、CAN BUS上にクロック線がないのにどうやって同期しているのかと思っていました。ノイズの多い車の中で安く確実にという観点でよく考えられています。細部はWikipediaに詳しく書いてあります。
今日のまとめ
CAN BUSに3ノード接続して送受信試験をやってみました。2ノードから送信されたデータが受信できていることを確認しました。M5シリーズを使ってCAN送受信できることがわかりました。
引き続き、実機データの吸出し、SDカードにデータの書き込みや6軸センサーとの同時記録等進めていきたいと思います。
0 件のコメント:
コメントを投稿