GPIO(通用输入输出)是嵌入式系统中广泛使用的数字接口,用于连接和控制外部设备。以下是一些常见的与GPIO关联的设备及其典型应用场景:
1. 基础控制设备
- LED灯
- 用途:状态指示(如运行中、错误提示)。
- 连接:GPIO引脚通过限流电阻(如220Ω)连接LED正极,负极接地。
- 代码示例(Python/树莓派):
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.HIGH) # 点亮LED
- 按钮/开关
- 用途:用户输入(如触发动作、复位)。
- 连接:按钮一端接GPIO引脚,另一端接地,并启用内部上拉电阻。
- 代码示例:
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) if GPIO.input(17) == GPIO.LOW: print("按钮被按下")
2. 传感器与执行器
- 继电器模块
- 用途:控制高电压/电流设备(如家电、电机)。
- 连接:GPIO驱动继电器线圈,通过三极管或光耦隔离保护。
- 场景:用树莓派控制220V灯光或水泵。
- 超声波传感器(如HC-SR04)
- 用途:测距(如机器人避障)。
- 连接:Trig引脚接GPIO(触发信号),Echo引脚接GPIO(接收回波)。
- 原理:通过测量Echo脉冲宽度计算距离。
3. 显示设备
- 数码管/LCD屏
- 用途:显示数字或文本信息。
- 连接:通过GPIO驱动段选/位选信号(需配合移位寄存器或驱动芯片)。
- 示例:用74HC595扩展GPIO控制8位数码管。
4. 通信模块
- I2C/SPI设备
- 间接关联:虽然I2C/SPI是专用总线,但部分设备(如温度传感器、EEPROM)可通过GPIO模拟协议。
- 场景:用GPIO模拟时钟线(SCL)和数据线(SDA)实现I2C通信。
5. 电机与舵机
- 直流电机
- 用途:驱动轮子、风扇。
- 连接:通过GPIO控制H桥电路(如L298N)实现正反转。
- 注意:需加二极管防止反电动势。
- 舵机(如SG90)
- 用途:精确角度控制(如机器人关节)。
- 连接:GPIO输出PWM信号控制舵机角度(周期20ms,脉宽0.5-2.5ms)。
关键注意事项
- 电气隔离:高电压设备需通过光耦或继电器隔离GPIO。
- 限流保护:LED等设备需串联电阻防止过流。
- 电平匹配:3.3V GPIO与5V设备需电平转换(如使用逻辑电平转换器)。
- 防抖动:机械开关需软件消抖或硬件滤波。
通过GPIO,开发者可以低成本实现从简单指示灯到复杂自动化系统的控制,是物联网和嵌入式项目的核心接口之一。