树莓派GPIO和PWM
1. 目的
在汽车电子开发中,CAN通讯是很难避开的一个技术点,当前CAN已经形成了行业内较为稳定的开发及相关测试验证方法,其中一种较为主流的就是使用CANoe和开发相应的CAPL脚本配合测试。然而,这套方案下来无论人力财力都是价格不菲,而且面对日异月新的技术发展也显得较为保守。所以笔者尝试使用树莓派配合MCP2515模块,进行低成本的CAN网络节点搭建和报文模拟,试图拓宽一下视野和思路。
本文针对普通外设和通讯外设,分别使用了Python 和 C进行编写控制,可以作为案例以便参考。
2. 材料准备
- 树莓派 zero w
- MCP2515模块
- 2路继电器模块
- linux 使用基础
3. 初始设置
树莓派安装最新的官方程序,安装好之后将ssh,gpio,spi等设置统统设为开启。
然后将树莓派连接到局域网wifi,进行ssh登录管理(此处也可使用usb网卡模式进行ssh连接,好处是免除连接屏幕进行系统初始设置)。
ssh连接成功后将树莓派换成国内的源(笔者使用的阿里的源),进行 sudo apt-get update
和 sudo apt-get upgrade
更新。
我们使用树莓派,需要进行GPIO设置和spi通讯,控制这两部分可以使用官方推荐的WringPi库,在官方系统中是默认安装的。经过如上操作后会将库更新至最新,使用gipo -v
进行版本查看,使用gpio readall
进行所有引脚定义查看。
除了WringPi库之外,树莓派还能够使用python进行GPIO的控制操作,导入RPi.GPIO模块即可。
4. GPIO 控制继电器
继电器模块采用[带光耦保护 2路 继电器模块],淘宝可以直接买到,该继电器模块是5v供电,需要两路输出IO进行低有效的控制,根据硬件特性选取树莓派如下引脚,与继电器模块进行连接。
4.1. 使用Python 的RPi.GPIO模块进行控制
针对继电器,可以使用python的RPi.GPIO模块进行控制,默认系统中会安装此模块,如果没有可以使用如下命令sudo pip3 install RPi.GPIO
进行安装。
根据模块物理特性,需要设置38,40两个引脚为低电平输出,设置37脚为PWM模式,使用如下代码进行设置。
import RPi.GPIO as GPIO
# Use BCM chip number as handle
GPIO.setmode(GPIO.BCM)
# Set useful channel
RELAY_1 = 20
RELAY_2