2019年10月19日土曜日

ラズパイでCAN通信を使ってみた。

OBD2のテストとかするのにデバッグ環境が欲しくなったので、Raspberry Piで使えるUSB-CANコンバータを使ってみた。
InnomakerってところのUSB2CAN-Moduleってやつ。絶縁タイプのUSB-CANコンバータなのに激安なうえ、RSコンポーネンツでも扱っているのでAmazonの中華変換アダプタよりも安心である。同じものがRSよりAmazonのほうが安くて3000円切ってる…
 
RSでは商品説明に付属品がちゃんと書いてあったけど、Amazonでもちゃんとターミナルブロックはついてくるみたい。2500円とは思えない豪華さ。

このUSB2CANは一応WindowsやMacにも対応しているらしいけど、ラズパイで使うならgs_canモジュールでそのままSocketCANデバイスとして使えるから便利。ネットワークデバイスとしてそのままifconfigで立ち上げれば使える。これは便利。
MCP2515モジュールをラズパイにつなぐより楽かも。CANトランシーバーを3.3V品に交換するか、パターンカットして3.3Vと5V分けなくてもいいし。ターミナルブロックも付属しているし…
アイソレーションされてるCANトランシーバを搭載していることを考えるとコスパは高いかも。

とりあえずラズパイ3BにUSBで接続して見るとTXとRxがチカチカしたあとにLinkが点灯する。lsusbしてみると
1d50:606f OpenMoko, Inc.
として認識されていた。PIDを調べてみるとGeschwister Schneider CAN adapterとなっていた。gs_canモジュールのgsはGeschwister Schneiderを略したのかな?

まずはcan-utilsをラズパイにインストール。
sudo apt-get install can-utils
あとは
sudo ip link set can0 up type can bitrate 500000
をするだけでSocketCANデバイスとして使えるようになる。ビットレートは適宜。
ifconfigをすればcan0が追加されてるのを確認できる。
TXとRXのLEDも点灯する。通信すると点滅するっぽい。

あとはcandump can0したりwiresharkしたり普通のSocketCANデバイスが使えるアプリケーションで扱える。

CANコネクタ側にはジャンパ抵抗をハンダすれば絶縁DC-DCコンバータからの5Vも供給できたりするみたい。5Vが必要なデバイスでは有効にすると便利な場合があるのかな。

このアダプタの部品構成的にはCANとUSB対応のSTM32F072C8T6、絶縁CANトランシーバのISO1050DUBR、I2C接続のEEPROMに絶縁DC-DCコンバータが主な部品構成っぽい。CANの変換アダプタって結構高価なものが多いからこれはだいぶお安いなぁ。さすが中華製。
しかし中華製だけあってか、情報が少ない…
RSだとMS123って品番で、USB-CANコンバータになってたり、AmazonだとUSB2CANってなってたり、同じ商品名で別な商品があるから探しにくかったり…
まぁラズパイでプラグアンドプレイで使えるからいいか。RSでもラズパイ用として扱われてたし、WindowsとかMacでも使えそうだけどSocketCANみたいに超簡単ではないのかもしれない。
今度はWindowsで使えるか試してみようかな。

0 件のコメント:

コメントを投稿