[RPi]树莓派GPIO入门之控制LED灯

本文部分资料及图片来自网络

一、所需材料

树莓派4B、LED灯、面包板、杜邦线、电阻、Python程序

二、认识硬件材料

这里介绍下LED灯、面包板、杜邦线、电阻

LED灯:LED灯引脚长的一端为正极,短的一端为负极。也可以仔细观察灯珠内部的电极,较小的是正极,大的一端的是负极。

LED灯

 

面包板:方便插线,不用手动接线,其特点是中间的插孔竖向是相通的,边缘的插孔横向是相通的。

面包板

 

杜邦线:杜邦线可实现插针式的连接,不用焊接,方便实验连通电路。杜邦线是分公母头的,本实验使用两根公-母杜邦线,用于连接树莓派的正负极

杜邦线

 

电阻:电阻没啥介绍的,就是增加阻值,防止电源直接接到LED灯给烧了。但这里要说下电阻的识别方法,没错,电阻是可以通过上面画的线条来识别是多大电阻的,如下图所示。

电阻阻值识别

电阻大小=第一段第二段第三段*乘数

 

注意:第一段第二段第三段,是放在一起组成一个三位数然后和乘数相乘

 

电阻

 

三、认识树莓派的GPIO

本次实验使用的树莓派为4B,因此这里只介绍4B的GPIO引脚结构,其他版本和4B的引脚定义略有不同,请自行查阅。

说到GPIO,首先了解下什么是GPIO,GPIO英语为General-purpose Input/Output,是通用型输入输出的简称。GPIO的输入输出是可以用过读取寄存器来确定引脚高低点位的,那么解释下什么是输入输出,输出就是控制引脚为高电平或低电平,为我们连接的设备进行供电或不供电,比如连接LED灯,可以设置引脚为高电平为其供电,灯就亮了;输入就是获取引脚的高低电平,判断传感器是否检测到,比如红外人体感应器,当感性到人体后会输出高电平,我们读到高电平则表示有人体。当然还有一些其他引脚,比如作为串口的TX,RX等。

4B的GPIO是40针脚的,引脚定义如下图所示。

GPIO引脚定义

 

树莓派的GPIO在实际使用中,会看到3中命名方案,wiringPi、BOARD和BCM三种方式,使用时选择其中一种即可,只要将针脚对应正确即可生效。其中wiringPi主要是用于C语言中wiringPi模块的编码,BOARD是树莓派板子上的物理引脚的编码,BCM就是BCM自己的编码规则。注意在Python中不支持wiringPi的编码规则,只能使用BOARD和BCM编码方式。

四、直接点亮LED

没看错,这一步是点亮LED,但这里所说的直接点亮是直接给LED供电让其亮起来,因此连接的电路很简单,将GPIO的3.3V引脚使用公母杜邦线连接到面包板,在面包板相通的一个孔插入电阻一端,电阻另一端查到面包板的另一竖列的孔中,然后在该数列的其他孔位插入LED灯的正极,负极插入傍边的空位,然后在该竖列的其他孔位使用公母杜邦线连接负极,LED灯即可点亮。

接线说明

树莓派GPIO3.3v引脚→电阻→LED灯→负极(0v或GND)

成功点亮

 

 

五、了解Python操控GPIO

Python要控制GPIO需要使用RPI.GPIO模块,如果安装的是树莓派官方完整的img系统,是自带RPI.GPIO模块的。要想验证是否已安装RPI.GPIO模块,可进入python交互界面,导入该模块,如果不报错即为已安装。

那么在进Python交互界面之前,是可以通过命令查看树莓派输出定义的,在终端使用“pinout”命令可查看当先树莓派的硬件结构,如下图所示。

 当然这个不是重点,只是为了方便大家在忘记GPIO对应时可以用该命令查看,这里的中间两列就是BOARD编码,两边的就是BCM编码。

 

下面言归正传,使用Python控制GPIO,在终端输入“python3”进入Python交互界面(这里不介绍Python如何安装了,如果是树莓派官方系统是自带Python2和Python3的,如果没有安装请自行寻找Python的安装方法),然后输入“import RPI.GPIO as GPIO”,回车后如果没有报错,则表示RPI.GPIO是已安装的,如果报错,则可能是没有安装RPI.GPIO或RPI.GPIO无法正常工作,这是需要重新安装RPI.GPIO模块,命令如下

# 安装rpi.gpio,我这里使用的是python3,Python2的去掉pip后的3即可

# sudo pip3 install rpi.gpio

# 卸载rpi.gpio,这里提卸载是为了RPI.GPIO无法正常工作时,先卸载再安装

# sudo pip3 uninstall rpi.gpio

使用Python控制GPIO的几个主要操作:

  1. 导入RPi.GPIO模块 import RPi.GPIO as GPIO
  2. 设置引脚编码模式 GPIO.setmode(GPIO.BOARD)/GPIO.setmode(GPIO.BCM)
  3. 设置引脚的操作模式(即输出还是输入) GPIO.setup(2, GPIO.OUT)/GPIO.setup(2, GPIO.IN)
  4. 设置引脚的高低电平 GPIO.output(2, GPIO.HIGH)/GPIO.output(2, GPIO.LOW)

六、使用Python控制LED灯

现在要是用Python控制LED灯的话,要将引脚的连接位置改动下才能使用,硬件连接要按以下方式连接

树莓派GPIO引脚→电阻→LED灯→负极(0v或GND)

连接好后,可以直接打开终端程序,按以下命令一行行输入,即可看到效果

$python3 
>>> import RPi.GPIO as GPIO 
>>> GPIO.setmode(GPIO.BOARD) # 设置编码模式 
>>> GPIO.setup(3,GPIO.OUT) # 将通道(即引脚)3设置为输出模式,此时LED灯为熄灭状态 
>>> GPIO.output(3,GPIO.HIGH) # 将通道3操作为高电平,此时LED灯为点亮状态 
>>> GPIO.output(3,GPIO.LOW) # 将通道3操作为低电平,此时LED灯为熄灭状态 
>>> GPIO.cleanup() # 重置所有通道的模式,传入通道的话,只重置输入的通道

 

七、控制LED灯闪烁

之前只是简单的将灯点亮,如果我们要想让灯闪烁怎么做呢,可以通过高低电平来控制,当然肯定不能在交互界面实现了,手动输入太慢了,我们要建立一个led.py文件,在文件中实现控制LED灯的闪烁,文件内容如下:

# coding:utf-8 
import RPi.GPIO as GPIO 

GPIO.setmode(GPIO.BOARD) 
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改 
n = 0 # 用于控制闪烁次数 
while n < 30: 
    GPIO.output(10, GPIO.HIGH) 
    GPIO.output(10, GPIO.LOW) 
    n += 1 
print('end')

在终端使用下面命令可以执行该文件

>>>python3 led.py

也许你会发现,当文件执行完后,灯不仅没亮,还报了个警告,如下图

 没事不要着急,这个警告是因为咱们控制通道的频率太高了,该通道响应不过来了,因此,我们需要在每次操作高低电平的语句后面加上延时,这个需要导入time模块,这个是Python自带的,下面将上面led.py文件代码进行下修改

# coding:utf-8 
import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BOARD) 
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改 
n = 0 # 用于控制闪烁次数 
while n < 30: 
    GPIO.output(10, GPIO.HIGH) 
    time.sleep(0.05) 
    GPIO.output(10, GPIO.LOW) 
    time.sleep(0.05) 
    n += 1 
print('end')

 这是再执行文件,发现灯可以闪烁了,其实我们目的就已经达到了,但是同时发现那个警告还是存在的,有强迫症的人看到这个警告就会不爽了,总以为是报错。其实仔细读下那个警告,就会发现,其实警告中已经提示我们如何关闭它了,就是用GPIO.setwarnings(False)来禁止其输出,下面在修改下led.py的代码,如下

# coding:utf-8 
import RPi.GPIO as GPIO 
import time 

GPIO.setmode(GPIO.BOARD) 
GPIO.setwarnings(False) 
GPIO.setup(10, GPIO.OUT) # 这里使用的是10引脚,请根据自己使用的引脚编号修改 
n = 0 # 用于控制闪烁次数 
while n < 30: 
    GPIO.output(10, GPIO.HIGH) 
    time.sleep(0.05) 
    GPIO.output(10, GPIO.LOW) 
    time.sleep(0.05) 
    n += 1 
print('end')

 

这时我们在运行,发现警告已经没有了,灯也开始闪烁了。

<think>好的,用户想了解树莓派小车的供电设计方案,特别是图解。首先,我需要整理树莓派和小车其他部件的电力需求。树莓派4B本身需要5V/3A的电源,而电机、舵机这些可能需要更高的电压,比如6V或者12V。所以供电方案需要考虑不同电压的分配。 接下来,用户可能想知道如何同时为树莓派和电机供电。常见的方案有两种:独立供电和统一供电。独立供电的话,树莓派用移动电源,电机用电池组,但这样可能需要多个电池,重量和空间可能有问题。统一供电的话,使用一个电池组,通过降压模块给树莓派供电,这样更紧凑,但需要选择合适的电池和稳压模块。 然后,用户可能需要具体的电路连接图,比如电池连接到电机驱动板,同时通过降压模块连接到树莓派。还要注意避免电压波动影响树莓派,可能需要滤波电容或者稳压模块。 另外,用户提到的引用[2]中提到舵机供电问题,树莓派直接供电会导致抽搐,所以必须分开供电。这里需要强调舵机和控制器的电源需要独立,使用PWM控制器来管理舵机,避免电流过载。 最后,用户可能需要一些实际案例或图解,比如电池选型、接线示意图,以及注意事项,比如使用足够容量的电池,避免杜邦线供电,防止电压下降或发热。总结几种方案,优缺点对比,帮助用户选择最适合的供电设计。</think>### 树莓派小车供电设计方案 树莓派小车的供电设计需综合考虑树莓派主板、电机、传感器等组件的功耗与电压需求。以下是常见方案及设计要点: --- #### **1. 独立供电方案** - **树莓派供电** 树莓派4B需稳定$5V/3A$电源,建议使用**移动电源**或**锂电池组**(如$5V/2A$输出)。 示例: $$ \text{电源} \rightarrow \text{Type-C接口} \rightarrow \text{树莓派4B} $$ - **电机/舵机供电** 电机驱动板(如L298N)需更高电压(如$6V$或$12V$),可使用**18650电池组**或**镍氢电池**。 示例: $$ \text{电池组} \rightarrow \text{电机驱动板} \rightarrow \text{直流电机} $$ **优点**:避免电压波动影响树莓派稳定性[^1]。 **缺点**:需多组电池,增加重量和复杂度。 --- #### **2. 统一供电方案** - **高容量电池组+降压模块** 使用单组$7.4V$锂电池,通过**降压模块**(如LM2596)为树莓派提供$5V/3A$,同时直接为电机驱动板供电。 接线示意图: ```plaintext 锂电池 → 降压模块 → 树莓派 ↘ 电机驱动板 → 电机/舵机 ``` **关键参数**: - 锂电池容量建议≥$3000mAh$ - 降压模块需支持≥$3A$输出 **优点**:结构紧凑,减少电源管理复杂度[^2]。 --- #### **3. 舵机供电优化** 若使用多路舵机(如摄像头云台或机械臂): - 单独为舵机控制器(如PCA9685)供电,避免树莓派电流过载。 - 使用$6V$电池组直接连接控制器,树莓派仅通过GPIO发送控制信号。 $$ \text{电池组} \rightarrow \text{PCA9685} \rightarrow \text{舵机} $$ --- #### **图解示例(文字描述)** 1. **电源分配** ```plaintext [12V锂电池] ├─[LM2596降压模块] → [树莓派5V] └─[L298N电机驱动板] → [直流电机] ``` 2. **防干扰设计** - 在树莓派电源输入端并联$1000\mu F$电容,抑制电机启停电压波动。 - 使用独立接地线连接树莓派与电机驱动板。 --- #### **注意事项** 1. **避免杜邦线供电**:大电流线路需使用$18AWG$以上导线,防止发热。 2. **电压监测**:建议添加电压表模块实时监控电池电量。 3. **扩展性**:预留接口为未来传感器(如摄像头、超声波)增加供电分支。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值