CanBerryDual V 2.1 Canbus for Raspberry Pi B, B+, A+, Pi2, Pi3 and Zero.
CanBerryDual Pi V 2.1 is an extension board for RaspBerry Pi. It is an Open Hardware Design. It has two functionalities: a can bus module and an onboard Real Time clock powered by a 12 mm battery. The CanBus is based on a couple of MCP2515 SPI controllers and MCP2551 tranceivers. All functionalities are full integrated in standard linux kernel, so, they can be avaible on fly, or at last recompiling linux kernel to add canbus functionalities. The real time clock is based on DS3231 with internal oscillator I2C controller. It is full compatible with linux too. Using I2C Kernel module, and standard kernel functions, date and hour can be set/get by simple commands. On the bottom side is located an on board battery to guarantee a data autonomy more than 20 years. In chapter hardware there are all informations on principal components, schematics to rebuild and modify RaspBerry PI board. The new board is desaigned with the Raspberry Hat specification. There are four fixing holes and the hardware identification EEPROM (Blank Memory not mounted).
CanberryDual V2.1 with Two channels.
CanberryDual V2.1 with One channel.
If you have a RPI A or B see the Canberry V1.1 web page.
CanBerryDual V2.1 on Raspberry Pi 2.
CanBerryDual V2.1 on Raspberry Pi3.
The RPI connector exposes two SPI slave select pins, SPI CE0 on pin 24 and SPI CE1 on pin 26. The first is used for MCP2515 channel 1 and the second for MCP2515 channel 2. The same situation is present for the interrupt pins, the first is connected on GPIO22 (pin 15) and the second on GPIO25 (pin 22).
CanBerryDual V 2.1 is composed by three blocks: a CanBus Module Normal, a CanBus transceiver Isolated and a Real Time Clock. The SMD Jumper JP2 must be used to connect the RTC Int pin to Raspberry GPIO7. MCP2515 is a stand alone SPI canbus controller full integrated in linux kernel. At the start, the driver was implemented as a block device. Recently it is assumed to be a network module into the kernel. It is supplied by 3.3V from raspberry connector. MCP2551 is supplied by 5V from Raspberry connector insted. So, to match voltage physical level between the two chips, a voltage matching made by R3 and R4 has been used. There are two SMD Jumpers, JP3 for CAN Bus Channel 1 and JP5 for CAN Bus Channel 2, these jumpers provide the 120 ohm termination for the first and the last device.
It’s possible to insert the Raspberry with our Canberry into a Phoenix din enclosure (RPI-BC 107,6 DEV-KIT KMGY – 2202874).
It’s possible to order this board for only 40€ (Two channels) or 24€ (One channel) on Industrialberry contact form or our shop.
Industrialberry needs of a global distributor, if interested use the contact form (Commercial).
How to prepare a SD Card with CAN kernel modules (only for expert Linux users). Procedure tested on Raspberry B Rev 1, B Rev 2 and B+ Rev1.
Edit /boot/config.txt modify the following row
Run the following command:
pi@raspberrypi ~ $ dmesg | grep -i can
This is the output:
[ 13.197388] CAN device driver interface
[ 15.375846] mcp251x spi0.0 can1: bit-timing not yet defined
[ 15.382408] mcp251x spi0.1 can0: bit-timing not yet defined
From the output it is possible to observe that can0 is associated to spi0.1 and can1 to spi0.0.
Respect the board shown in figure 1 the interface can0 is located in SPI0.1(X2 connector) and can1 in SPI0.0(X1 connector).
After your raspberry has been booted, go to home directory:
add these lines to the script
ip link set can0 up type can bitrate 1000000
ip link set can1 up type can bitrate 1000000
Run the script:
sudo sh can-start.sh
So the system is ready, then you can use standard canbus command to use the peripheral:
candump can0 -> to monitoring can bus traffic
cansend can0 7DF#0201050000000000 -> to send canbus commands
candump can1 -> to monitoring can bus traffic
cansend can1 7DF#0201050000000000 -> to send canbus commands
To use both interface simultaneously open 2 different telnet sessions.
Or read the following guide
For skilled linux users it’s possible to read this guide ( http://skpang.co.uk/blog/archives/1165 ) to prepare the ISO by yourself.
How to use RTC DS1307Z (DS3231)
It is possible to confugure the RTC IC with the terminal
- Login as root
- install i2c-tools apt-get install i2c-tools
- install libi2c-dev apt-get install libi2c-dev
- edit blacklist file nano /etc/modprobe.d/raspi-blacklist.conf
- Add # before blacklist spi-bcm2708
- Add # before blacklist i2c-bcm2708
- Edit nano /etc/modules
- Add rtc-ds1307
- Edit nano /etc/rc.local
- Add echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device (Rasp Pi Revision 1) or echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device (Rasp Pi Revision 2 and B+)
- Add hwclock -s
or with a compiled program. The DS1307Z (DS3231) is a device I2C, and then we must install i2c-tools and libi2c-dev before use it.