在本篇树莓派python gpio编程教程中,我将介绍GPIO引脚或也称为通用输入和输出引脚的所有基础知识,以及怎么用python编程控制GPIO。
这些引脚是为了与其他电路进行通信,如扩展板、定制电路等。
可以通过使用这些引脚做出一些很酷的东西。我将在未来研究更多利用这些引脚的项目。
关于这些引脚的知识有不少,我强烈建议你在开始玩这些引脚之前,先按照这个指南做一些了解。
警告: 用GPIO做实验是有风险的,有可能会把Raspberry Pi弄坏。了解GPIO引脚的功率限制,同时也要了解你所插的是什么,这是必须的。
设备清单
在本篇树莓派GPIO教程中,我使用的设备如下,点击链接可以直达特别优惠购买
必备:
- ? 树莓派
- ? 高速SD卡 (建议使用8GB以上)。
- ? 以太网线或无线网 (只适用于远程控制)
- ? 100欧姆电阻
- ? 红色LED发光二极管
- ? 面包板
- ? 面包板跳线
可选:
树莓派GPIO教程
现在,开始树莓派GPIO教程,看看不同类型的引脚,可用,如何使能模块,什么是扩展套件,最后如何建立和编程一个简单python程序。
如果你的是Raspberry Pi B+、2、Zero或3,那么你总共会有40个引脚。早期的型号,如Raspberry Pi B只有26个引脚。
请看下面的Raspberry Pi GPIO引脚图。将所有三个版本的Pi都包含在引脚图中。
- GPIO是标准引脚,可以用来打开和关闭设备。例如,一个LED。
- I2C(Inter-Integrated Circuit)引脚连接并与支持该协议(I2C协议)的硬件模块对话。这个协议通常会占用两个引脚。
- SPI(串行外设接口总线)引脚可用于连接和对话SPI设备。和I2C差不多,但使用了不同的协议。
- UART(Universal asynchronous receiver/transmitter,通用异步接收/发送器)是用于与其他设备通信的串行引脚。
- DNC代表的是不要连接,这个不言而喻。
- 电源引脚直接从树莓派上供电。
- GND是用来接地的引脚。使用哪个引脚并不重要,因为它们都连接在同一条线上。
所有这些可能一开始会让人望而生畏,但一旦你开始行动,就会非常容易。很多缩写和技术术语很容易让人直接反感。
配置和使用引脚
在本节中,将简要介绍如何设置引脚,以便可以在树莓派上使用它们。在未来的Raspberry Pi项目中,将更多地去实际编程和使用这些引脚。
在这个例子和未来的项目中,使用Raspbian。如果你还没有安装它,那么你可以按照我的Raspbian安装指南找到如何安装最新版本。
配置GPIO
如果使用的是最新版本的Raspbian,那么你可以直接开始编程和使用GPIO引脚,而不需要做任何额外的配置。
然而,我建议还是将你的Pi更新到最新的软件包。如果还没有这样做,那么可以通过运行以下命令来完成。
sudo apt-get update
sudo apt-get upgrade
如果没有安装GPIO包,只需运行以下命令即可安装。
sudo apt-get install rpi.gpio
配置Raspberry Pi I2C
在Raspberry Pi上设置I2C引脚是超级简单的,只需要几分钟就可以完成。
首先,进入Raspi-Config工具,输入以下命令。
sudo raspi-config
在这里进入高级选项,然后进入I2c,按yes键启用I2c。
Pi现在应该会提醒您重启后将启用I2C。然后它将询问您是否希望它被默认加载。如果打算每次启动Raspberry Pi时都使用I2c,请选择是。
现在要确保它已经成功启用了必要的模块。要做到这一点,请输入以下命令。
lsmod | grep i2c_
这个命令将返回所有正在运行的模块,从i2c开始。它应该返回类似这样的i2c_BCM2708。
配置Raspberry Pi的SPI
配置Raspberry Pi SPI和I2c差不多,超级简单,只需要几分钟就可以完成。
首先,进入Raspi-Config工具,输入以下命令。
sudo raspi-config
配置工具加载完毕后,进入高级选项,然后进入SPI。
启用SPI,它会告诉你重启后会启用。之后,它会问是否希望它被默认加载。只有当打算每次启动Pi时都使用它时,才会选择 “是”。
使用以下命令检查SPI是否成功启动和运行。
lsmod | grep spi_
这个命令将返回所有正在运行的模块,从SPI开始。它应该返回类似于spi_bcm2835的东西。在检查模块是否被加载之前,请确保你已经重新启动了你的Pi。
使用扩展套件
扩展套件可以通过带状电缆将所有引脚并将其连接到面包板或不同的设备。这个套件更方便和安全。
有几种不同类型的扩展套件。
我个人比较喜欢T型的,因为它们便于阅读和使用。
在连接带状电缆时,需要确保它的连接,使其远离电路板。可以在下面看到一个正确设置带状电缆和T型中断板的例子。
使用Raspberry Pi的GPIO引脚编程
用树莓Pi上的GPIO引脚进行编程,通常使用编程语言Python来完成。这个特殊的电路和代码超级容易上手,根本不需要你花很长时间。
如果编码听起来对你来说可能有点过于复杂,而更喜欢简单的解决方案,那么像Raspberry Pi Cayenne这样的东西可能会让你感兴趣。该软件包可以添加传感器,控制GPIO引脚,以及更多的超级简单的用户界面。
GPIO BOARD与GPIO BCM
这两种不同的模式之间存在巨大的差异,这取决于想为项目利用哪一种。两者都有各自的优点和缺点。
GPIO板(GPIO.Board)参考引脚的物理编号。例如,左上角的引脚是1,右上角的引脚是2,从上到下一直往上数,直到用完引脚为止。在我的图中,可以看到每组中间的这个编号。
GPIO BCM(GPIO.BCM)是Broadcom Soc Channel的编号。在上图中,可以找到GPIO后面的编号。例如在Raspberry Pi 3上,3v3下面的引脚是GPIO2,所以在BCM模式下,这个引脚的编号是2。
BCM的一个缺点是他们在不同的版本之间发生了变化(Raspberry Pi Rev 1与Raspberry Pi Rev 2)。如果想安全起见,我建议使用GPIO.Board。
一个简单的LED电路的代码
如果你喜欢写代码,学习Python的知识,那就看看我下面的例子吧。
首先,建立小电路。如果你有一个扩展套件,电路会有点不同。
另外,只需将LED的正极连接到7号引脚(GPIO4),负极连接到连接到地线引脚的电阻。
现在让创建一个Python文件。
sudo nano led_blink.py
写出一个小脚本。重要的是要记住Python是对空格敏感的。
例如,在 for 循环中,确保循环内的任何内容都有四个空格。为了进一步解释,GPIO.output(7, true)行前需要有四个空格。
#import the GPIO and time package
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
# loop through 50 times, on/off for 1 second
for i in range(50):
GPIO.output(7,True)
time.sleep(1)
GPIO.output(7,False)
time.sleep(1)
GPIO.cleanup()
现在退出并按ctrl+x,然后按y键保存。
如果运行小脚本,电路应该会活过来。
执行以下命令来运行Python脚本。同样重要的是,要以超级用户的身份使用 sudo 运行它。
sudo python led_blink.py
希望本教程能帮助您了解GPIO引脚的基础知识,并能知道可以用Python编写脚本控制gpio。
如果你有任何问题和反馈,请随时在下面给我留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派gpio编程教程,如何用python编程gpio