ESP32 + CAN Transceiver(MCP2562)

皆さんこんにちは!

管理人のひろたけ(@drmus0715_2)と申します!

今回は、あの有名なマイコンESP32でCANを動かす方法について自分なりに調べてみました!

情報の少ないESP32 DevKit+CANの動作情報や注意点についても調べてみましたので、是非ご覧ください!

それではどうぞ!

~目次~

1. ESP32について

ESP32とは、Wi-FiBluetooth入りのマイコンです!

IoT界にてとても有名で、安価で高性能かつライブラリも豊富にあるため多くの人が愛用しています!

Arduino IDEでも使えるため、環境構築もラクラクです笑

しかし今回はCANを使うため、Arduino IDEではなくESP-IDFを使います…

ちょっと環境構築が大変ですが、皆さん頑張ってみましょう!

詳しくはググってくださいね☆彡

2. CANについて

自動車内の通信のために開発された通信方式だそうです!

ちょっと調べてみましたがよくわかりませんでした笑

詳しくはこちらを御覧ください! ja.wikipedia.org

3. ESP32で使えるCANトランシーバーは?

CANを使ってマイコン間の通信をするにはCANドライバーとCANトランシーバーが必要ですが、なんとESP32にはCANドライバーが入っています!!すごい!!

さすが世界で使われているだけありますね笑

さて、今回用意したのは「MCP2562」というCANトランシーバーです!

最初「MCP2561」というやつを買ったんですが、うまく動きませんでした(泣)

みなさん部品を買う際はお間違えなきよう…ww

動かすときは、このサイトと、

www.mouser.jp

このサイトを参考にしました!

docs.espressif.com

配線したら、espressif/esp-idfのGitからセルフテストのサンプルをダウンロードして、皆さんの各自の環境で動かしてみてください!

サンプルは以下のサイトからダウンロードできます。

github.com

4. ESP32+CANについてのまとめ

いかがでしたか?

今回は、高性能マイコンESP32でCANを使う方法について調べてみました!

やはり使っている人が少ないのか情報も少ないですね笑

しかし、ネットにある情報が少ないほど調べがいがあるというもの!
今後もいろんな実験をしていきたいですね!

それでは、ここまで読んでいただきありがとうございました!

付録

本編です。

以下の機材を使用しました。

CANのトランシーバとして、秋月やマルツの店頭で売っているMCP2561を使う際に注意が必要です。

MCP2561/MCP2562ともに電源電圧は5V必要です。Vddには5V印加してください。

便利なことに、MCP2562には、デジタルI/Oの電圧を入力するピン(Vio)があります。なので3.3V駆動のESP32でも問題なく使えます。

しかし、MCP2561はそこにSPLITピン(バス障害に対応できる)が割り当てられており、内部でVioピンがVddに接続されています。

もし間違えてMCP2561を買った場合はレベル変換回路を組めば使えます。僕は面倒なことが嫌いなのでMCP2562を買い直しました。くそう


回路は書くのが面倒なので、データシートから引用しました。
PICと1.8V電源はESP32と3.3V電源に読み替えてください。
CANTXとCANRXはソフトウェアにて指定します。
STBYピンはGNDに落とすか、GPIOにつないで使用時だけGNDに落とすと良いでしょう。

f:id:drmus0715:20190615183625p:plain
出典:MCP2561/2 Data Sheet(Microchip)

上の方のセルフテストのサンプルでは、相手側機器を繋がずに自分で送ったものを自分で受信します。受信できれば、CANトランシーバは正常に動いています。

エラーが出るようであれば、ESP32側のCAN_RXとCAN_TXを直結すると誰が悪いのか問題が切り分けられると思います。

以上です。 途中で面倒くさくなったので中途半端ですが、面白いことができたらまとめようと思います。

参考文献

nandemoari810.blog.fc2.com