如何使用Raspberry Pi用Python控制GPIO

Raspberry Pi是一款多功能的单板计算机,在业余爱好者,教育者和专业人士中都成为最爱。它最有力的功能之一是能够通过其通用输入/输出(GPIO)引脚与物理世界进行交互的能力。通过利用Python(一种对初学者友好且强大的编程语言),您可以控制这些GPIO引脚,以构建各种项目,从简单的LED闪烁器到复杂的家庭自动化系统。在这篇博客文章中,我们将介绍使用Raspberry Pi与Python一起控制GPIO的基础知识。

了解GPIO引脚

GPIO引脚是Raspberry Pi上的多功能接口,可让您连接和控制LED,传感器,电动机等外部设备。根据Raspberry Pi的模型,您会发现以特定模式排列的数量不同的GPIO引脚。这些引脚可以配置为输入或输出:

  • 输入: 从外部设备(例如按钮,传感器)读取信号。
  • 输出: 将信号发送到外部设备(例如LED,继电器)。

在探讨编程方面之前,必须了解Raspberry Pi的销钉布局。有关特定于模型的准确信息,请参阅官方Raspberry Pi Gpio Pinout图。

设置覆盆子Pi

要开始使用Python控制GPIO引脚,请确保正确设置Raspberry Pi:

  1. 安装最新的Raspberry Pi OS: 确保Raspberry Pi运行了最新版本的Raspberry Pi OS。您可以从官方的Raspberry Pi网站下载它,并使用Raspberry Pi Imager之类的工具将其刷到SD卡上。
  2. 更新您的系统: 打开终端并运行以下命令以更新您的系统软件包:
sudo apt update
sudo apt upgrade -y
  • 安装Python GPIO库: RPI.GPIO库是与Python中GPIO引脚进行交互的流行选择。使用PIP安装它:
  • sudo apt install python3-rpi.gpio
    

    编写您的第一个GPIO Python脚本

    让我们从一个简单的项目开始:闪烁LED。您需要以下组件:

    • 覆盆子pi
    • 引领
    • 220欧姆电阻
    • 面包板和跳线电线

    接线LED:

    1. 通过电阻将LED的长腿(阳极)连接到GPIO引脚17。
    2. 将LED的短腿(阴极)连接到Raspberry Pi上的地面(GND)销。

    现在,让我们编写Python脚本以控制LED。

    用python眨眼

    import RPi.GPIO as GPIO
    import time
    
    # Use BCM GPIO numbering
    GPIO.setmode(GPIO.BCM)
    
    # Set GPIO pin 17 as output
    LED_PIN = 17
    GPIO.setup(LED_PIN, GPIO.OUT)
    
    try:
        while True:
            GPIO.output(LED_PIN, GPIO.HIGH)  # Turn LED on
            time.sleep(1)                     # Wait for 1 second
            GPIO.output(LED_PIN, GPIO.LOW)   # Turn LED off
            time.sleep(1)                     # Wait for 1 second
    except KeyboardInterrupt:
        pass
    finally:
        GPIO.cleanup()  # Reset GPIO settings
    

    解释:

    • import RPi.GPIO as GPIO:导入rpi.gpio库。
    • import time:导入睡眠功能的时间模块。
    • GPIO.setmode(GPIO.BCM):将GPIO引脚编号方案设置为BCM(Broadcom SOC渠道)。
    • GPIO.setup(LED_PIN, GPIO.OUT):将GPIO引脚17配置为输出引脚。
    • try 块包含一个无限环路,每秒打开和关闭LED。
    • GPIO.cleanup():清理GPIO设置以确保清洁出口。

    运行您的脚本

    将您的脚本保存为 blink_led.py 并使用以下命令运行它:

    python3 blink_led.py
    

    您应该看到每秒连接到GPIO引脚17闪烁的LED。要停止脚本,请按 Ctrl + C.

    扩展您的项目

    一旦掌握了LED,您就可以通过组合不同的传感器和执行器来探索更复杂的项目。这里有一些想法可以让您入门:

    • 按钮交互: 使用物理按钮控制LED。这涉及将GPIO PIN设置为输入并在您的Python脚本中读取其状态。
    • 传感器数据记录: 使用温度或运动检测器等传感器收集数据并将其记录以进行分析。
    • 家庭自动化: 通过将GPIO控件与Web界面或移动应用程序集成在一起来远程控制设备。

    控制按钮

    让我们通过添加一个按钮来控制LED来扩展上一个示例。您需要:

    • 推送
    • 10k-Ohm电阻
    • 其他跳线

    接线按钮:

    1. 将按钮的一条腿连接到GPIO引脚27。
    2. 通过10k-Ohm电阻将另一支腿连接到地面(GND)销。

    这是用按钮控制LED的Python脚本:

    import RPi.GPIO as GPIO
    import time
    
    # Use BCM GPIO numbering
    GPIO.setmode(GPIO.BCM)
    
    # Define GPIO pins
    LED_PIN = 17
    BUTTON_PIN = 27
    
    # Set up GPIO pins
    GPIO.setup(LED_PIN, GPIO.OUT)
    GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    
    try:
        while True:
            button_state = GPIO.input(BUTTON_PIN)
            if button_state == GPIO.HIGH:
                GPIO.output(LED_PIN, GPIO.HIGH)  # Turn LED on
            else:
                GPIO.output(LED_PIN, GPIO.LOW)   # Turn LED off
            time.sleep(0.1)
    except KeyboardInterrupt:
        pass
    finally:
        GPIO.cleanup()
    

    解释:

    • GPIO引脚27被设置为带下拉电阻器的输入,以确保在未按下按钮时保持稳定状态。
    • 脚本连续读取按钮的状态,并在按下按钮时打开LED。

    最佳实践和安全提示

    与GPIO引脚合作时,至关重要的是要遵守最佳实践,以避免破坏覆盆子PI或连接的组件:

    • 连接硬件时关闭电源: 在连接或断开硬件之前,请务必关闭覆盆子PI,以防止短路。
    • 使用电流电阻: 通过使用适当的电阻器来保护组件,尤其是在使用LED时。
    • 双检查接线: 确保所有连接都是正确的,以防止意外损坏GPIO引脚。
    • 谨慎处理: 仔细处理覆盆子PI和组件,避免静态排放。

    结论

    用python在Raspberry Pi上控制GPIO引脚为创建互动和自动化项目的可能性开辟了一个世界。从闪烁的LED等简单任务到涉及多个传感器和执行器的更复杂的系统,掌握GPIO控制是任何Raspberry Pi爱好者的基本技能。通过遵循本指南中概述的步骤并遵守最佳实践,您将在构建令人兴奋和创新的项目方面做得很好。

    快乐的修补!

    发表评论

    Notice an Issue? Have a Suggestion?
    If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.