----------------------------------------------------------------
pi-packages
sudo -A rp-prefapps
rp-prefapps
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
----------------------------------------------------------------
gps_dmm2xy 3424.0094559 13520.3414517 6
cu -s 115200 -l /dev/ttyUSB0
sudo apt-get install gpsd gpsd-clients
sudo vi /etc/default/gpsd
sudo systemctl restart gpsd
systemctl status gpsd
sudo apt-get install libgps-dev
gcc -o q1 q1.c -lm -lgps
確認
cu -s 115200 -l /dev/ttyUSB0
cu -s 115200 -l /dev/ttyUSB0 << EOS
stty -a -F /dev/ttyUSB0 | grep speed
設定
sudo stty -F /dev/ttyUSB0 115200
----------------------------------------------------------------
$ hciconfig
hci0: Type: Primary Bus: UART
BD Address: B8:27:EB:04:7C:5E ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:654 acl:0 sco:0 events:33 errors:0
TX bytes:419 acl:0 sco:0 commands:33 errors:0
$ sudo hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
$ rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
$ sudo rfkill unblock bluetooth
$ rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
$ sudo hciconfig hci0 reset
$ sudo hciconfig hci0
hci0: Type: Primary Bus: UART
BD Address: B8:27:EB:04:7C:5E ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:2109 acl:0 sco:0 events:120 errors:0
TX bytes:2011 acl:0 sco:0 commands:120 errors:0
$ sudo hciconfig hci0 up
$ echo N | sudo tee /sys/module/bluetooth/parameters/disable_ertm
$ sudo chmod 666 js*
$ ll
total 0
drwxr-xr-x 4 root root 240 Mar 24 13:06 .
drwxr-xr-x 15 root root 3400 Mar 24 13:06 ..
drwxr-xr-x 2 root root 100 Mar 24 12:29 by-id
drwxr-xr-x 2 root root 100 Mar 24 12:29 by-path
crw-rw---- 1 root input 13, 64 Mar 24 12:29 event0
crw-rw---- 1 root input 13, 65 Mar 24 12:29 event1
crw-rw---- 1 root input 13, 66 Mar 24 13:06 event2
crw-rw-rw- 1 root input 13, 0 Mar 24 12:29 js0
crw-rw-rw- 1 root input 13, 1 Mar 24 13:06 js1
crw-rw---- 1 root input 13, 63 Mar 24 12:29 mice
crw-rw---- 1 root input 13, 32 Mar 24 12:29 mouse0
crw-rw---- 1 root input 13, 33 Mar 24 13:06 mouse1
$ sudo apt-get install joystick
$ sudo apt-get install jstest-gtk
$ jstest-gtk
Opencv 3.4.4
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=OFF -D PLANTUML_JAR=/usr/share/java/plantuml.jar -D ENABLE_NEON:BOOL=ON -D WITH_TBB=ON -D BUILD_TBB=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF -D BUILD_EXAMPLES=ON ..
ロボット使ってトマト作れば楽だなぁ...やってみっか!
農業ロボット開発記録
日本中で100台以上動かしちゃった(^^)/
I'm developing robots that do tomato harvesting, settled planting ,,,,and many tasks.
The goal of production cost of robot is $2,000 per unit.
Because it is necessary a lot of robots, in order to innovate the farming.
I use Raspberry Pi as robot controller to develop low cost robots.
TOMATO FARM website -> CLICK!
2019年3月24日日曜日
2019年3月22日金曜日
memo Raspberry Piのpython3でpigpioを使う
そもそも、pigpioのインストールでしたが、、、
いろいろ自分用のメモ
sudo apt install -y python3-dev python3-pip
sudo pip3 install --upgrade pip3
sudo pip3 install pigpio
現在の大きな問題は、GPSとRaspberry Piの接続問題
下の内容をまとめると、以下をrc.localに仕込むのが良い
#!/bin/bash
sudo systemctl stop serial-getty@ttyS0.service
sudo chmod 666 /dev/ttyAMA0
sudo chmod 666 /dev/ttyS0
sudo chmod 666 /dev/ttyUSB0
stty -F /dev/serial0 115200
stty -F /dev/ttyAMA0 115200
stty -F /dev/ttyUSB0 115200
sudo chmod 666 /dev/ttyAMA0 /dev/ttyS0 /dev/ttyUSB0
起動用のSDカード作ります
1.2 raspi-configでserial設定
5 Interfaceing Options > P6 Serial >
Would you like a login shell to be accessible over serial? Yes & No
基本は、Noだと思うけど、YESで説明しているブログもある
Would you like the serial port hardware to be enabled?
間違いなくYes
The serial login shell is disabled
The serial interface is enabled
<Ok>
console=serial0,115200
dtoverlay=pi3-disable-bt // bluetooth 無効
reboot後
/dev/ttyserial0, /dev/ttyAMA0 が、GPIO接続時の対象
/dev/ttyUSB0 これはシリアル通信用のUSB接続した時
例: TTL-232R-3V3
sudo systemctl stop serial-getty@ttyS0.service
この3つは、crw-rw---- なので、
/etc/rc.local に記述した方が良いです。
lrwxrwxrwx 1 root root 7 Mar 23 13:53 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Mar 23 13:53 serial1 -> ttyS0
crw-rw---- 1 root dialout 204, 64 Mar 23 13:53 ttyAMA0
crw-rw---- 1 root dialout 4, 64 Mar 23 13:53 ttyS0
/dev/ttyUSB0は、使用する時のみ
一番簡単な確認方法は、、、cat/dev/ttyAMA0
sudo apt install -y python3-dev python3-pip
??? sudo pip3 install --upgrade pip3
pip3 install pyserial
python の serial モジュールは手動でinstall してはいけない
もしinstallしてしまったら、、、 pip3 uninstall serial
sudo pip3 uninstall serial
下のスクリプトでテスト、、、でもうまくいかない
9600のGPSなら上手くいっている
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import serial
s = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)
for i in range(10):
print(s.readline())
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned char szBuf[256];
int i = 0;
FILE *infl;
if ((infl = fopen("/dev/ttyAMA0", "rb")) == NULL) {
printf("file open error\n");
return -1;
}
printf("success file open\n");
while(fread(szBuf, sizeof( unsigned char ), 256, infl) != 0) {
printf("%5d: %s.\n", i++, szBuf);
}
return 0;
}
sudo apt -y install cu minicom
cu -s 115200 -l /dev/ttyAMA0
終わる時は、~.
ダメだー、、、、
sudo systemctl stop serial-getty@ttyS0.service
ダメだ―――
あとは、、、、
cu -s 115200 -l /dev/serial0
Connected.
ァァァァmォw褄pVY}ァァァァァァァ・_q[euァァeァァeァァeォ褄キeYqァY}ァァァァォ褄キeYqァY}ァァァァァ
ァァァァmォs褄・e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄p+e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄pVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄・e?Y}ァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄・e?Y}ァァァァァァァ」ァァeァァeァァォs褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァァ
TTL-232R-3V3で、USB接続時
cu -s 115200 -l /dev/ttyUSB0
Connected.
[VォョZォ[VォョZォe;睆mヨ・[ョナ・・煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァァァァァァァmァァァァ[VォョZォe;睆mヨ・カヨv-カv-煜v煜vュ・・レv・v-v-v-vュ・カv-カv-v-煜[VォョZォe;郞vュ・レ[V[Vォョ[ョナ・ヨ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュYVo・m?;+;+;+ュ驎V・eYqァ[VォョZォe;郞vュ・[V[Vォ[VォョZォe;郞v[ョナ・カ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァY}ァォョZォe;郞vュ・レ[Vォ[VォョZォe;郞[VォョZォe;郞v[ョナ
~.
Disconnected.
minicom -b 115200 -D /dev/ttyUSB0 -8
echo "Hello" > /dev/ttyUSB0
stty -a -F /dev/ttyUSB0 | grep speed
speed 115200 baud; rows 0; columns 0; line = 0;
minicom -s -c on
minicom -s 起動後パラメータ設定できる
cat /dev/ttyUSB0
いろいろ自分用のメモ
sudo apt install -y python3-dev python3-pip
sudo pip3 install --upgrade pip3
sudo pip3 install pigpio
現在の大きな問題は、GPSとRaspberry Piの接続問題
下の内容をまとめると、以下をrc.localに仕込むのが良い
#!/bin/bash
sudo systemctl stop serial-getty@ttyS0.service
sudo chmod 666 /dev/ttyAMA0
sudo chmod 666 /dev/ttyS0
sudo chmod 666 /dev/ttyUSB0
stty -F /dev/serial0 115200
stty -F /dev/ttyAMA0 115200
stty -F /dev/ttyUSB0 115200
sudo chmod 666 /dev/ttyAMA0 /dev/ttyS0 /dev/ttyUSB0
1. 手順
1.1 新しいSDカードをつくる起動用のSDカード作ります
1.2 raspi-configでserial設定
5 Interfaceing Options > P6 Serial >
Would you like a login shell to be accessible over serial? Yes & No
基本は、Noだと思うけど、YESで説明しているブログもある
Would you like the serial port hardware to be enabled?
間違いなくYes
The serial login shell is disabled
The serial interface is enabled
<Ok>
1.3 /boot/cmdline.txt
結局、次の文字列を削除する。これにより tty1を使う設定をするconsole=serial0,115200
1.4 /boot/config.txt
enable_uart1 // raspi-config 設定値 1: serial enable 0: disabledtoverlay=pi3-disable-bt // bluetooth 無効
reboot後
/dev/ttyserial0, /dev/ttyAMA0 が、GPIO接続時の対象
/dev/ttyUSB0 これはシリアル通信用のUSB接続した時
例: TTL-232R-3V3
sudo systemctl stop serial-getty@ttyS0.service
1.5 chmod 再起動後は大事
sudo chmod 666 /dev/ttyAMA0 /dev/ttyS0 /dev/ttyUSB0この3つは、crw-rw---- なので、
/etc/rc.local に記述した方が良いです。
lrwxrwxrwx 1 root root 7 Mar 23 13:53 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Mar 23 13:53 serial1 -> ttyS0
crw-rw---- 1 root dialout 204, 64 Mar 23 13:53 ttyAMA0
crw-rw---- 1 root dialout 4, 64 Mar 23 13:53 ttyS0
/dev/ttyUSB0は、使用する時のみ
一番簡単な確認方法は、、、cat/dev/ttyAMA0
1.6 python3
python3の開発環境を作り、pip3をインストールsudo apt install -y python3-dev python3-pip
??? sudo pip3 install --upgrade pip3
pip3 install pyserial
python の serial モジュールは手動でinstall してはいけない
もしinstallしてしまったら、、、 pip3 uninstall serial
sudo pip3 uninstall serial
下のスクリプトでテスト、、、でもうまくいかない
9600のGPSなら上手くいっている
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import serial
s = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)
for i in range(10):
print(s.readline())
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned char szBuf[256];
int i = 0;
FILE *infl;
if ((infl = fopen("/dev/ttyAMA0", "rb")) == NULL) {
printf("file open error\n");
return -1;
}
printf("success file open\n");
while(fread(szBuf, sizeof( unsigned char ), 256, infl) != 0) {
printf("%5d: %s.\n", i++, szBuf);
}
return 0;
}
1.7 通信ソフトでの確認
通信ソフトでどうなんだろう?sudo apt -y install cu minicom
cu -s 115200 -l /dev/ttyAMA0
終わる時は、~.
ダメだー、、、、
sudo systemctl stop serial-getty@ttyS0.service
ダメだ―――
あとは、、、、
cu -s 115200 -l /dev/serial0
Connected.
ァァァァmォw褄pVY}ァァァァァァァ・_q[euァァeァァeァァeォ褄キeYqァY}ァァァァォ褄キeYqァY}ァァァァァ
ァァァァmォs褄・e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄p+e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄pVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄・e?Y}ァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄・e?Y}ァァァァァァァ」ァァeァァeァァォs褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァァ
TTL-232R-3V3で、USB接続時
cu -s 115200 -l /dev/ttyUSB0
Connected.
[VォョZォ[VォョZォe;睆mヨ・[ョナ・・煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァァァァァァァmァァァァ[VォョZォe;睆mヨ・カヨv-カv-煜v煜vュ・・レv・v-v-v-vュ・カv-カv-v-煜[VォョZォe;郞vュ・レ[V[Vォョ[ョナ・ヨ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュYVo・m?;+;+;+ュ驎V・eYqァ[VォョZォe;郞vュ・[V[Vォ[VォョZォe;郞v[ョナ・カ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァY}ァォョZォe;郞vュ・レ[Vォ[VォョZォe;郞[VォョZォe;郞v[ョナ
~.
Disconnected.
minicom -b 115200 -D /dev/ttyUSB0 -8
1.8 その他
stty -F /dev/ttyUSB0 115200echo "Hello" > /dev/ttyUSB0
stty -a -F /dev/ttyUSB0 | grep speed
speed 115200 baud; rows 0; columns 0; line = 0;
minicom -s -c on
minicom -s 起動後パラメータ設定できる
cat /dev/ttyUSB0
Peace !!
参考
Linuxにおけるシリアルポートのトラブルシューティング
Raspberry Pi3のPythonでGPSを扱う
Pythonでシリアル通信
minicomの使い方
Raspberry Piに「みちびき」対応GPSモジュールを接続
Raspberry Pi Zero WH で「みちびき」対応 GPS を使う
------------------------------------------------------------------------------------
sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="9304-D9FD" TYPE="vfat" PARTUUID="0527a029-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="29075e46-f0d4-44e2-a9e7-55ac02d6e6cc" TYPE="ext4" PARTUUID="0527a029-02"
/dev/mmcblk0: PTUUID="0527a029" PTTYPE="dos"
Linuxにおけるシリアルポートのトラブルシューティング
Raspberry Pi3のPythonでGPSを扱う
Pythonでシリアル通信
minicomの使い方
Raspberry Piに「みちびき」対応GPSモジュールを接続
Raspberry Pi Zero WH で「みちびき」対応 GPS を使う
------------------------------------------------------------------------------------
sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="9304-D9FD" TYPE="vfat" PARTUUID="0527a029-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="29075e46-f0d4-44e2-a9e7-55ac02d6e6cc" TYPE="ext4" PARTUUID="0527a029-02"
/dev/mmcblk0: PTUUID="0527a029" PTTYPE="dos"
An installation of PICAN DUO2
CAN network制御を2系統実施する必要があり、、、、
中華製の数百円のMCP2515 モジュールを2つ使おうと試したけど
SPIまでは2系統利用できるようになるが、肝心のMCP2515モジュールが2つ認識せず、、、
多分、やり方あると思うけど、時間もかけられず
ここのモジュールを使う事にした。
http://skpang.co.uk/catalog/pican2-duo-canbus-board-for-raspberry-pi-23-p-1480.html
ドキュメントはこちらも参照
https://copperhilltech.com/pican2-duo-can-bus-board-for-raspberry-pi-2-3-with-smps/
Raspberry Piもこれ専用になってしまうので、Raspberry Pi Zero Wを使う
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=24
dtoverlay=spi-bcm2835
rebootをして確認
can0 と can1 があればOK
ls -al /sys/class/net
total 0
drwxr-xr-x 2 root root 0 Mar 22 00:20 .
drwxr-xr-x 49 root root 0 Nov 4 2016 ..
lrwxrwxrwx 1 root root 0 Mar 21 21:16 can0 -> ../../devices/platform/soc/20204000.spi/spi_master/spi0/spi0.1/net/can0
lrwxrwxrwx 1 root root 0 Mar 21 21:16 can1 -> ../../devices/platform/soc/20204000.spi/spi_master/spi0/spi0.0/net/can1
lrwxrwxrwx 1 root root 0 Mar 21 21:16 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Mar 21 21:16 wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
dmesg 下記は表示される一部
[ 16.752998] CAN device driver interface
[ 16.805527] mcp251x spi0.1 can0: MCP2515 successfully initialized.
[ 16.837173] mcp251x spi0.0 can1: MCP2515 successfully initialized.
[ 18.013248] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 18.013313] brcmfmac: power management disabled
[ 19.588124] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 309.214257] can: controller area network core (rev 20170425 abi 9)
[ 309.214453] NET: Registered protocol family 29
[ 309.243944] can: raw protocol (rev 20170425)
開発元のHPにはいろいろ書いてあるし、開発元のURLからソフトのdownloadとなっていたけど、自分で判断して
sudo apt-get install autoconf git libtool
git clone https://github.com/linux-can/can-utils.git
cd can-utils
./autogen.sh
./configure
make
sudo make install
これで設定は完了
sudo /sbin/ip link set can0 up type can bitrate 500000 loopback on
sudo /sbin/ip link set can1 up type can bitrate 500000 loopback on
sudo ifconfig can0 up
sudo ifconfig can1 up
loopback onをつけているのは、モジュール内だけでチェックするため
実際に使うときは指定しない。
3つのターミナルを立ち上げて、確認。こんな感じ
candump でcan0 とcan1を監視して、cansend でそれぞれに送信する
以下の2枚の写真はサイトの説明から拝借
写真のようにループさせてテストする事もできる。
個の時は、ターミネータの120ΩをONにしている。
このボードは、120Ωの抵抗がreadyになっていて、ジャンパーで繋げば良いようになっている。
今回は、can0 をクローラのcanネットワークに接続し、またcan1は同時のCANネットワークとし、そちらにターミネータをつけるので、このモジュールの120Ωは使わない
プログラムはいろいろ考えないとならないけど、
繋がる事が確認できたので
中華製の数百円のMCP2515 モジュールを2つ使おうと試したけど
SPIまでは2系統利用できるようになるが、肝心のMCP2515モジュールが2つ認識せず、、、
多分、やり方あると思うけど、時間もかけられず
ここのモジュールを使う事にした。
http://skpang.co.uk/catalog/pican2-duo-canbus-board-for-raspberry-pi-23-p-1480.html
ドキュメントはこちらも参照
https://copperhilltech.com/pican2-duo-can-bus-board-for-raspberry-pi-2-3-with-smps/
Raspberry Piもこれ専用になってしまうので、Raspberry Pi Zero Wを使う
1. Raspberry Pi 設定
1.1最初の設定
/boot/config.txt には次の行を追加dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=24
dtoverlay=spi-bcm2835
rebootをして確認
can0 と can1 があればOK
ls -al /sys/class/net
total 0
drwxr-xr-x 2 root root 0 Mar 22 00:20 .
drwxr-xr-x 49 root root 0 Nov 4 2016 ..
lrwxrwxrwx 1 root root 0 Mar 21 21:16 can0 -> ../../devices/platform/soc/20204000.spi/spi_master/spi0/spi0.1/net/can0
lrwxrwxrwx 1 root root 0 Mar 21 21:16 can1 -> ../../devices/platform/soc/20204000.spi/spi_master/spi0/spi0.0/net/can1
lrwxrwxrwx 1 root root 0 Mar 21 21:16 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Mar 21 21:16 wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
dmesg 下記は表示される一部
[ 16.752998] CAN device driver interface
[ 16.805527] mcp251x spi0.1 can0: MCP2515 successfully initialized.
[ 16.837173] mcp251x spi0.0 can1: MCP2515 successfully initialized.
[ 18.013248] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 18.013313] brcmfmac: power management disabled
[ 19.588124] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 309.214257] can: controller area network core (rev 20170425 abi 9)
[ 309.214453] NET: Registered protocol family 29
[ 309.243944] can: raw protocol (rev 20170425)
開発元のHPにはいろいろ書いてあるし、開発元のURLからソフトのdownloadとなっていたけど、自分で判断して
sudo apt-get install autoconf git libtool
git clone https://github.com/linux-can/can-utils.git
cd can-utils
./autogen.sh
./configure
make
sudo make install
これで設定は完了
1.2 テスト
テストは、モジュール内で確認する。(写真のまんま)sudo /sbin/ip link set can0 up type can bitrate 500000 loopback on
sudo /sbin/ip link set can1 up type can bitrate 500000 loopback on
sudo ifconfig can0 up
sudo ifconfig can1 up
loopback onをつけているのは、モジュール内だけでチェックするため
実際に使うときは指定しない。
3つのターミナルを立ち上げて、確認。こんな感じ
candump でcan0 とcan1を監視して、cansend でそれぞれに送信する
以下の2枚の写真はサイトの説明から拝借
写真のようにループさせてテストする事もできる。
個の時は、ターミネータの120ΩをONにしている。
2 接続
2系統ののテスト。写真は全体像。
ブレッドボードで2つのバスを作っている。ターミネータには120Ωの抵抗が両端にある。
右端中にPiCAN DUO2を装着したRaspberry Pi。
右端下にRaspberry Pi Zero Wがあり、DUO2のCAN1とバスを共有
左端上にRaspberry Pi 3B+があり、DUO2のCAN0とバスを共有
3つのRaspberry Pi毎にCANの立上げを行い、DUO2以外の2つのRaspberry Piではcandumpで監視する。
DUO2からcansendでデータを送信する。
(1) PiCAN DUO2のCAN0とCAN1起動
sudo /sbin/ip link set can0 up type can bitrate 500000
sudo /sbin/ip link set can1 up type can bitrate 500000
sudo ifconfig can0 up // 192.168.11.170 のRaspberry Pi
sudo ifconfig can1 up // 192.168.11.162 のRaspberry Pi
(2) CAN0:CANB Raspberry Pi 3B+ (192.168.11.170)
sudo /sbin/ip link set can0 up type can bitrate 500000
sudo ifconfig can0 up
(3) CAN1:CANA Raspberry Pi Zero W (192.168.11.162)
sudo /sbin/ip link set can0 up type can bitrate 500000
sudo ifconfig can0 up
(4) テスト
こんな感じのテスト。
ただ、CAN0でcansendすると、2行になって表示される。原因不明。
今度は、DUO2以外からDUO2にcansend。これはOK
3.その他
3.1 ターミネータ
CANの仕様は両端に120Ωの抵抗をターミネータとするとなっている。このボードは、120Ωの抵抗がreadyになっていて、ジャンパーで繋げば良いようになっている。
今回は、can0 をクローラのcanネットワークに接続し、またcan1は同時のCANネットワークとし、そちらにターミネータをつけるので、このモジュールの120Ωは使わない
プログラムはいろいろ考えないとならないけど、
繋がる事が確認できたので
Peace!!
登録:
投稿 (Atom)