まずは、こんな感じ
とっても参考になったのは、こちらで、ありがとうございました。
OBD2(CAN)で自動車と通信(ソフト編)
Raspberry Pi で CAN通信(準備)
でも結局、大本のこちらで確認した。
上記のURLもここを見ている。
[quick-guide] CAN bus on raspberry pi with MCP2515
こんな感じで、CAN コントローラMCP2515との通信もOK
まず、ネットで購入したRaspberry Piを対象のCANシステムに接続するためのモジュールは、写真上のモジュール
USB接続の数万円のモノから、このモジュールのように$2のモノまでいろいろ、、、
中国製だから、本当にMCP2515は怪しいけど、、、
もう、昔のような状態ではないと思うので、、、
このモジュールは、Amazonでもいろいろあり、、、どれが本物?
そもそも、本物があるのか?
そんな感じで、同じようなものがたくさんある。
ただ、いずれにせよ、このモジュールのややっこしいのは、
[quick-guide] CAN bus on raspberry pi with MCP2515
に書いてあるように、回路を切らないとならないこと
あと、V5の電源を基盤に接続する事
ただ、切らなくても、CANのソフトは動いたのだぁ、、、
テストは、これでする。
手間取ったのは、5Vの電源を基板上にはんだ付けする事
直径の小さな穴をあけてRaspberry Piの5V GPIOをつなげる加工をする。
この加工は、穴あけ、半田の乗りが悪いなど、意外と大変で手間取った。
これができれば、GPIO 25番を INTとした下の配線をすればよい。
INT の番号は、config.txtに設定する時に必要なので決めてする。
まぁ、いろいろな例もGPIO25だから25で良いとおもう。
配線は、以下の様に接続
Module Pin No
INT 22
SCK 23
SI 19
SO 21
CS 24
GND 25
VCC(3.3) 17
VCC(5V) 2
CAN GND 6
ソフトは、いろいろな所に書いてあるように
sudo vi /boot/config.txt
dtparm=spi=on
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25
dtoverlay=spi-bcm2835
この25番が、moduleのINT
CANのソフトをインストール
git clone https://github.com/linux-can/can-utils.git
cd can-utils
./autogen.sh
./configure
make
sudo make install
reboot
立ち上がってcan0があればOK
/sys/class/net/can0
こんな感じでも確認できる
dmesg
[ 4.160946] CAN device driver interface
[ 4.201788] mcp251x spi0.0 can0: MCP2515 successfully initialized.
で、CANのおまじない
sudo ip link set can0 type can bitrate 500000 loopback on
sudo ifconfig can0 can0: flags=128<NOARP> mtu 16 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
candump can0 read: Network is down
もういっちょおまじない,,,というか最初にこうすればよい(笑)
sudo ifconfig can0 up
つまり、下記ような簡単なシェル。ネットの起動は最終的にはserviceにする
loopback on は自己チェックの時だけなのでCANに接続する場合
#!/bin/bash
sudo ip link set can0 type can bitrate 500000
sudo ifconfig can0 up
Raspberry PiとMCP2515との間での通信テスト
candump can0
さらにもう一つターミナルを開いて入力する
cansend can0 00001234#FFAA00CC22DD33FF
と、入力すると、candumpを入力したターミナルに2枚目の写真のように現れる。