RPi Zero Relay
From Waveshare Wiki
| ||
Overview
Industrial 6-Channel Relay Module For Raspberry Pi Zero, RS485/CAN Bus, Power Supply Isolation, Photocoupler Isolation.
Features
- RS485 half-duplex communication: using SP3485, UART control, auto RX/TX switch.
- CAN half-duplex communication: using MCP2515 + SN65HVD230 solution, SPI control.
- Onboard unibody power supply isolation, provides stable isolated voltage, needs no extra power supply for the isolated terminal.
- Onboard photocoupler isolation, prevent interference from external high-voltage circuit connected to the relay.
- Onboard TVS (Transient Voltage Suppressor), effectively suppresses surge voltage and transient spike voltage in the circuit, lightningproof & anti-electrostatic.
- Onboard resettable fuses and protection diodes, ensuring current/voltage stable output, preventing over current/voltage, and better shock-resistance performance.
- High-quality relay, contact rating: ≤10A 250V AC or ≤10A 30V DC.
- ABS protection enclosure with rail-mount support, easy to install, safe to use.
Specifications
- Supply voltage: 7V~36V
- CAN control chip: MCP2515
- CAN transceiver: SN65HVD230
- 485 transceiver: SP3485
- Product size: 123mm x 87.92mm
- Fixed hole diameter: 3.5mm
Pinouts
- CAN bus
PIN | Raspberry Pi (BCM) | Description |
---|---|---|
GND | GND | Ground |
SCK | SCK | SPI clock input |
MOSI | MOSI | SPI data input |
MISO | MISP | SPI Data output |
CS | CE0 | Data/Command Selection |
INT | 25 | Interrupt output |
- RS485 bus
PIN | Raspberry Pi (BCM) | Description |
---|---|---|
GND | GND | Ground |
RXD | RXD | UART receive |
TXD | TXD | UART transimit |
- Relay interfaces
PIN | Raspberry Pi (BCM) | Description |
---|---|---|
GND | GND | Ground |
IN_CH1 | GPIO5 | Relay Channel 1 |
IN_CH2 | GPIO6 | Relay Channel 2 |
IN_CH3 | GPIO13 | Relay Channel 3 |
IN_CH4 | GPIO16 | Relay Channel 4 |
IN_CH5 | GPIO19 | Relay Channel 5 |
IN_CH6 | GPIO20 | Relay Channel 6 |
Install libraries
- Install BCM2835 libraries:
#Open the Raspberry Pi terminal and run the following command wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # For more, you can refer to the official website at: http://www.airspayce.com/mikem/bcm2835/
- Install WiringPi libraries:
#Open the Raspberry Pi terminal and run the following command cd sudo apt-get install wiringpi #For Raspberry Pi systems after May 2019 (earlier than that can be executed without), an upgrade may be required: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # Run gpio -v and version 2.52 will appear, if it doesn't it means there was an installation error # Bullseye branch system using the following command: git clone https://github.com/WiringPi/WiringPi cd WiringPi . /build gpio -v # Run gpio -v and version 2.70 will appear, if it doesn't it means there was an installation error
- Python
sudo apt-get update sudo apt-get install python-serial sudo pip install python-can
Download Examples
Open a terminal and run the following commands to download the demo codes:
sudo apt-get install p7zip-full wget https://files.waveshare.com/upload/2/2f/RPi_Zero_Relay_Code.7z 7z x RPi_Zero_Relay_Code.7z -r -o./RPi_Zero_Relay_Code sudo chmod 777 -R RPi_Zero_Relay_Code/
CAN Bus
Configuration
- Modify the config.txt file:
sudo nano /boot/config.txt
- Add the following lines to the config.txt file and save:
dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,spimaxfrequency=3000000
- Reboot.
sudo reboot
- Check if the driver is initialized normally.
dmesg | grep -i '\(can\|spi\)'
- The result should be like the picture:
- If the MCP2515 driver is not initialized normally you need to reboot and check if the devices are connected properly (H to H and L to L).
C examples
- Run the receive example:
cd ~/RPi_Zero_Relay_Code/CAN/wiringPi/receive/ make clean make sudo ./can_receive
- Run the Send examples:
cd RPi_Zero_Relay_Code/CAN/wiringPi/send/ make clean make sudo ./can_send
Python examples
- Open a terminal and run the commands:
cd RPi_Zero_Relay_Code/CAN/python/ #For receiving: sudo python can_reveive.py #For sending: sudo python can_send.py
Connect to other CAN device
If you need to connect the RPi Zero Relay to other CAN devices, please note that:
- Please check the connection, it should be H to H and L to L.
- Make sure that the baud rate of both sides is the same, the default baud rate of examples is 100K.
- Check if the CAN ID of both sides is the same.
- If data is always lost while transmitting, please decrease the baud rate and test it again.
RS485 Interface
Configuration
- Open a terminal and run the command.
sudo raspi-config
- Choose Interfacing Options -> Serial -> No -> Yes.
- Disable the login shell function and enable the hardware serial port.
- Reboot
sudo reboot
- Connect the device, A to A and B to B.
C examples
- Run the receive example:
cd RPi_Zero_Relay_Code/485/WiringPi/send make clean make sudo ./485_receive
- Run the Send example:
cd RPi_Zero_Relay_Code/485/WiringPi/send make clean make sudo ./485_send
- Input data and send:
- The receiving terminal receives and prints:
Python examples
Open a terminal and run the commands:
cd RPi_Zero_Relay_Code/485/python/ #Receive example: sudo python receive.py #Send example: sudo python send.py
Troubleshooting
If the RS485 cannot work normally, please check:
- Please check if you have disabled the login shell function.
- Please check the connection, it should be A to A and B to B.
- Please test with USB to RS485, make sure that all the settings are correct.
Resource
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 AM GMT+8 (Monday to Friday)