RPi Zero Relay
来自Waveshare Wiki
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品概述
提供 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 |
安装库
BCM2835
#打开树莓派终端,并运行以下指令 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 # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
- python
sudo apt-get update sudo apt-get install python-serial sudo pip install python-can
下载例程
在树莓派终端运行:
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/
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\)'
如果不接上模块可能提示如下:
请检查是否连接上模块。是否开启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
- 发送,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/CAN/wiringPi/send/ make clean make sudo ./can_send
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是一致的,否则无法接收到
4.如果长时间发送数据有丢帧现象,可以尝试降低波特率解决
RS485使用
本演示程序使用了两个RPi-Zero-Relay模块
提供python与wiringPi语言程序
前置工作
开启Uart接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
打开/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
- 发送,树莓派打开终端,运行:
cd RPi_Zero_Relay_Code/485/WiringPi/send make clean make sudo ./485_send
python例程
cd RPi_Zero_Relay_Code/485/python/ #先运行接收: sudo python receive.py #发送端: sudo python send.py
故障排查
如果485通信不正常,请分步调试:
- 确认是否禁止了从串行登录树莓派shell;
- 确定485的A,B是否与控制的485设备A,B一一对应;
- 可以先使用USB to 485设备与RPi Zero Relay通信,保证树莓派的设置没有问题;
FAQ