2019年1月24日木曜日

Set up CAN device and software on Raspberry Pi 3B+

自分なりの忘備録です。

まずは、こんな感じ

とっても参考になったのは、こちらで、ありがとうございました。

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枚目の写真のように現れる。

Peace!

0 件のコメント:

コメントを投稿