安泰电子世界网 首页 Ardunio Raspberry Pi 硬件(一)

Raspberry Pi 硬件(一)

2024-11-5 16:35 | 发布者: txc | 查看: 129 | 评论: 0

简介:Raspberry Pi 硬件

GPIO 和 40 针接头

Raspberry Pi 的一个强大功能是沿着电路板顶部边缘的一排 GPIO(通用输入/输出)引脚。40 针 GPIO 接头在所有当前的 Raspberry Pi 板上都可以找到,尽管它在 Raspberry Pi Zero、Raspberry Pi Zero W 和 Raspberry Pi Zero 2 W 上没有填充。所有电路板上的GPIO接头均具有0.1英寸(2.54毫米)的引脚间距。

任何GPIO引脚都可以在软件中指定为输入或输出引脚,并用于各种用途。

注意GPIO引脚编号方案不按数字顺序排列。GPIO 引脚 0 和 1 存在于电路板上(物理引脚 27 和 28),但保留用于高级用途。

电压

电路板上有两个 5V 引脚和两个 3.3V 引脚,以及一些无法重新配置的接地引脚 (GND)。其余引脚均为通用3.3V引脚,这意味着输出设置为3.3V,输入容限为3.3V。

输出

指定为输出引脚的GPIO引脚可以设置为高电平(3.3V)或低电平(0V)。

输入

指定为输入引脚的GPIO引脚可以读取为高电平(3.3V)或低电平(0V)。使用内部上拉或下拉电阻器可以更轻松地做到这一点。引脚 GPIO2 和 GPIO3 具有固定的上拉电阻,但对于其他引脚,可以在软件中进行配置。

其他GPIO功能

除了简单的输入和输出设备外,GPIO引脚还可以与各种替代功能一起使用。某些功能在所有引脚上都可用,其他功能在特定引脚上可用:

  • PWM(脉宽调制)

    • 所有引脚均提供软件 PWM

    • 硬件PWM可用于GPIO12、GPIO13、GPIO18、GPIO19

  • SPI的

    • SPI0:MOSI (GPIO10);味噌 (GPIO9);SCLK (GPIO11);CE0 (GPIO8), CE1 (GPIO7)

    • SPI1:MOSI (GPIO20);味噌 (GPIO19);SCLK (GPIO21);CE0 (GPIO18);CE1 (GPIO17);CE2 (GPIO16)

  • I2C的

    • 数据:(GPIO2);时钟 (GPIO3)

    • EEPROM数据:(GPIO0);EEPROM时钟(GPIO1)

  • 串行

    • TX (GPIO14);接收 (GPIO15)

查看 Raspberry Pi 的 GPIO 引脚排列

通过打开终端窗口并运行命令引脚排列,可以在 Raspberry Pi 上访问 GPIO 参考。此工具由 GPIO Zero Python 库提供,该库默认安装在 Raspberry Pi OS 中。
警告:虽然将简单组件连接到 GPIO 引脚是安全的,但要小心接线方式。LED 应具有电阻器以限制通过它们的电流。不要将 5V 用于 3.3V 组件。不要将电机直接连接到GPIO引脚,而应使用H桥电路或电机控制器板

权限

若要使用 GPIO 端口,用户必须是 gpio 组的成员。默认情况下,默认用户帐户是成员,但您必须使用以下命令手动添加其他用户:

sudo usermod -a -G gpio <username>

Python 中的 GPIO

使用 GPIO Zero 库可以轻松使用 Python 控制 GPIO 设备。该库在 gpiozero.readthedocs.io 上进行了全面记录。

发光二极管

以下示例代码控制连接到 GPIO17 的 LED:

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

在像 Thonny 这样的 IDE 中运行它,LED 将反复闪烁。
LED 方法包括on() 、off() 、toggle() 和blink() 。

按钮

以下示例代码读取连接到 GPIO2 的按钮的状态:

from gpiozero import Button
from time import sleep

button = Button(2)

while True:
    if button.is_pressed:
        print("Pressed")
    else:
        print("Released")
    sleep(1)

按钮功能包括属性 is_pressed 和 is_held;回调when_pressed、when_released和when_held;以及方法 wait_for_press() 和 wait_for_release。

按钮和 LED

以下示例代码读取连接到 GPIO2 的按钮的状态,并在按下该按钮时点亮连接到 GPIO17 的 LED:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

while True:
    if button.is_pressed:
        led.on()
    else:
        led.off()

或者:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

while True:
    button.wait_for_press()
    led.on()
    button.wait_for_release()
    led.off()

或:

from gpiozero import LED, Button

led = LED(17)
button = Button(2)

button.when_pressed = led.on
button.when_released = led.off

走得更远


您可以在 Raspberry Pi Press 出版的 Simple Electronics with GPIO Zero 一书中找到有关如何使用 GPIO Zero Python 库对连接到 Raspberry Pi 的电子设备进行编程的更多信息。本书将引导您开始使用 GPIO Zero 库,并通过构建一系列项目来引导您如何使用它。
您可以免费下载本书的 PDF 文件,它已根据 Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY NC-SA) 许可发布。

原理图和机械图纸

各种 Raspberry Pi 板版本的原理图:

Raspberry Pi 5

Raspberry Pi 4 Model B

Raspberry Pi 3 Model B+

Raspberry Pi 3 Model B

Raspberry Pi 2 Model B

Raspberry Pi 1 Model B+

Raspberry Pi 3 Model A+

注意Raspberry Pi 3 Model A+ 的机械图纸也适用于 Raspberry Pi 1 Model A+。

Raspberry Pi 1 Model A+

Raspberry Pi Zero

Raspberry Pi Zero W

最新评论

友情链接:

返回顶部