お客様からのご依頼で、

ソフトにCAN通信の機能を追加しています。

以前から追加しているのですが、

 

ESP32のArduinoは、簡単ですね。

 

 以下のCAN通信のライブラリを使用すると

ESP32相互のCAN通信は簡単にできました。

 

http://www.iotsharing.com/2017/09/how-to-use-arduino-esp32-can-interface.html


 また、単純にTOYOTAさんのヨーレートセンサを

接続して、測定結果を表示するのも、

できました。

 ESP32とCANを接続するには、間にトランシーバICが必要です。

今回は、MCP2561を使用し、終端抵抗は75Ω2個。

これで、ヨーレートセンサからのデータは受信できます。

 

以下のサイトを参考にさせていただきました。

https://www.shutingrz.com/

https://www.shutingrz.com/post/can-training-first/

 

 

※使用できるCANのIOピンは以下の通りのようです。

GPIO5 / GPIO12 / GPIO25 D CAN TX

GPIO4 / GPIO14 / GPIO35 R CAN RX

 

 それぞれ、ペアになっており、当方が開発した

IOボードでは、GPIO25とGPIO35しか

空いてないため、GPIO25とGPIO35に変更して

使用しました。

 

 また、ボーレート等の通信設定が必要になります。

ヨーレートセンサとの通信は500kHzとなるため、

ライブラリのソースを修正する必要がありました。

 

この辺も、どこかに整理できるといいのですが・・・。

 

とりあえず、機器からデータを読み出せましたが、

ヨーレートとESP32しかCANバスにいないという状況は

実際的ではないですね。

 

 現在、SavvyCANやISim、Controlsを使用して、

Linuxで仮想のCAN通信を行っております。

VCAN0ですが、ソケット通信なんですね。

 

VCAN0上のパケットをESP32に送信、

一方ESP32が受信した、実際のCANのパケットを

VCAN0上に間接的に送る方法を現在検討中です。

 

これができると、Linux上のパケット送信がESP32で受け取れて

ESP32に届いたCANのパケットをパソコンに送れるんですが・・・。

 

現状、Linuxに接続したESP32のボタンを押すと、

Linux上の車のシミュレータのドアを開けることができました。

データの送信はできていそうです。

 

実際に公表するには、多くのパケットがあっても

正常動作するように検証が必要です。