RPi Zero Relay

来自Waveshare Wiki
跳转至: 导航搜索
Pico-Relay-B
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
继电器路数 6路
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 RPi、CAN、RS485

说明


产品概述

提供 C 语言 和 Python 例程。

特点

  • 具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230
  • 具备RS485功能,使用UART控制,半双工通讯,收发器为SP3485
  • 板载TVS(瞬态电压抑制管),RS485通讯可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电

产品参数

  • 供电电压: 7V~36V
  • CAN控制芯片: MCP2515
  • CAN收发器: SN65HVD230
  • 485收发器: SP3485
  • 产品尺寸: 123mmx87.92mm
  • 固定孔通经: 3.5mm

接口说明

  • CAN总线
功能引脚 树莓派接口(BCM) 描述
GND GND 电源地
SCK SCK SPI时钟输入
MOSI MOSI SPI数据输入
MISO MISO SPI数据输出
CS CE0 数据/命令选择
INT 25 中断输出
  • RS485总线
功能引脚 树莓派接口(BCM) 描述
GND GND 电源地
RXD RXD 串口接收
TXD TXD 串口发送
  • Relay接口
功能引脚 树莓派接口(BCM) 描述
GND GND 电源地
IN_CH1 GPIO5 继电器1
IN_CH2 GPIO6 继电器2
IN_CH3 GPIO13 继电器3
IN_CH4 GPIO16 继电器4
IN_CH5 GPIO19 继电器5
IN_CH6 GPIO20 继电器6

资源介绍

RPi-Zero-Relay-details-intro.jpg

标号 名称 说明
1 MCP2515 CAN 控制器
2 SI8642ED-B-IS 数字隔离器
3 SN65HVD230 CAN 收发器
4 SP3485EN RS485 收发器
5 LM2596 稳压芯片 提供稳定的 5V 电压
6 光耦隔离 避免继电器外接高压电路干扰控制芯片
7 6 路优质继电器 单路继电器允许接入负载:≤10A 250V AC 或 ≤10A 30V DC
8 电源隔离 提供稳定的隔离电压,隔离端无须额外供电
9 自恢复保险丝 自恢复保险丝
10 瞬态电压抑制管 瞬态电压保护
11 继电器和电源 LED 指示灯 LED亮起表示对应继电器吸合
12 40PIN GPIO 接口 适用于树莓派 Zero 系列主板 (焊接排针)
13 继电器接线端子 方便用户连接设备
14 电源接线端子 支持7~36V DC供电
15 RS485 通信接口 连接RS485设备
16 CAN 通信接口 连接CAN设备
17 RS485 120Ω 终端电阻切换 RS485 120Ω 终端电阻切换
18 CAN 120Ω 终端电阻切换 CAN 120Ω 终端电阻切换
19 继电器控制端接口 可以断开或者连接继电器控制
20 外部电源接口 圆孔7~36V DC供电
21 开窗加锡 支持接入大电流设备

安装库

wiringPi

git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现对应版本信息,如果没有出现说明安装出错

python

在最新版本的系统中,python的库有些无法正常安装,需要使用虚拟环境,然后进行安装库然后运行程序

非虚拟环境配置

sudo apt-get update
sudo apt-get install python3-serial
sudo apt-get install python3-can
sudo apt-get install python3-gpiozero

虚拟环境配置、运行、退出

# 安装虚拟环境需要的库
sudo apt-get update
sudo apt-get install git python3-pip -y
sudo apt install python3-venv

# 创建一个新的虚拟环境(myenv 这个是虚拟环境的名称,可以进行修改)
python3 -m venv myenv

# 激活虚拟环境
source myenv/bin/activate

# 安装库
pip3 install pyserial
pip3 install python-can
pip3 install gpiozero

# 下载例程(见Wiki对应位置)

# 运行例程(见Wiki对应位置)

# 退出虚拟环境
deactivate

下载例程

在树莓派终端运行:

sudo apt-get install p7zip-full
wget https://www.waveshare.net/w/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/

继电器使用

程序现象均为依次闭合继电器,然后依次断开继电器

C

cd RPi_Zero_Relay_Code/Relay/wiringPi/
make clean
make
sudo ./relay

python

cd RPi_Zero_Relay_Code/Relay/python/
python3 relay.py

CAN使用

本演示程序使用了两个RPi-Zero-Relay模块
提供python与c语言程序

前置工作

将模块连接好,然后修改开机脚本config.txt

sudo nano /boot/config.txt

在最后一行加入如下:

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,spimaxfrequency=3000000


保存退出后,重启树莓派:

sudo reboot

重启后,运行命令查看是否初始化成功:

dmesg | grep -i '\(can\|spi\)'

RS485 CAN HAT CAN1.png
如果不接上模块可能提示如下:
RS485 CAN HAT CAN2.png
请检查是否连接上模块。是否开启SPI并开启MCP2515内核驱动。是否进行重启。
确定好两边RPi-Zero-Relay都这样处理了,把两个模块的H与L对应连接
如果使用的是其他的CAN设备,确定连线H-H,L-L即可

C

  • 阻塞接收,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/CAN/wiringPi/receive/
make clean
make
sudo ./can_receive

接收程序是阻塞的。
RPi Zero Relay CAN 2.jpg

  • 发送,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/CAN/wiringPi/send/
make clean
make
sudo ./can_send

RPi Zero Relay CAN 1.jpg

输入对应的数值:
RPi Zero Relay CAN 3.jpg

此时接收接收到对应的id的报文:
RPi Zero Relay CAN 4.jpg

python

树莓派打开终端,运行:

# 进入对应的目录
cd RPi_Zero_Relay_Code/CAN/python/

# 接收端先运行程序:
sudo python can_reveive.py

# 待接收端运行程序后,发送端在运行程序:
sudo python can_send.py

与其他的CAN设备应该如何使用

1.确保硬件接线是正确的,即H-H,L-L连接
2.确保两边的波特率设置一致的,默认的例程设置的波特率为100K
3.确保两边的CAN ID是一致的,否则无法接收到

RPi Zero Relay CAN 10.jpg

RPi Zero Relay CAN 9.jpg

4.如果长时间发送数据有丢帧现象,可以尝试降低波特率解决

RS485使用

本演示程序使用了两个RPi-Zero-Relay模块
提供python与wiringPi语言程序

前置工作

开启Uart接口

打开树莓派终端,输入以下指令进入配置界面

sudo raspi-config
选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
L76X GPS Module rpi serial.png

打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面。

enable_uart=1

然后重启树莓派:

sudo reboot

确定好两边树莓派都这样处理了,把两个模块的A与B对应连接
如果使用的是其他的485设备,确定连线A-A,B-B即可

C

  • 阻塞接收,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/485/WiringPi/receive
make clean
make
sudo ./485_receive

接收程序是阻塞的。
RPi Zero Relay 485 2.jpg

  • 发送,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/485/WiringPi/send
make clean
make
sudo ./485_send

RPi Zero Relay 485 1.jpg

输入对应的数值:
RPi Zero Relay 485 3.jpg

此时接收端接收到程序
RPi Zero Relay 485 4.jpg

python例程

# 进入对应的目录
cd RPi_Zero_Relay_Code/485/python/

# 接收端先运行程序:
sudo python receive.py

# 待接收端运行程序后,发送端在运行程序:
sudo python send.py

故障排查

如果485通信不正常,请分步调试:

  1. 确认是否禁止了从串行登录树莓派shell;
  2. 确定485的A,B是否与控制的485设备A,B一一对应;
  3. 可以先使用USB to 485设备与RPi Zero Relay通信,保证树莓派的设置没有问题;

资料

文档

程序

数据手册

FAQ


对应的库出现问题,比如安装不完全等;卸载对应的库文件,然后重新安装即可
例:

# 卸载 pyserial
pip3 uninstall pyserial
# 安装 pyserial
pip3 install pyserial


该警告不会影响程序的执行,只是库里对应的函数没有找到相应的依赖,我们例程实际上没有使用到这一部分;
如果想消除这些警告,安装对应的库即可
例:

# 安装 lgpio
pip3 install lgpio
# 安装 RPi.GPIO
pip3 install RPi.GPIO



技术支持


联系人:彭工
EMAIL:2851966006@qq.com
电话:0755-83040712
QQ:2851966006
微信:扫下方二维码添加
Pqy.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证