树莓派GPIO引脚完全指南:从点亮LED到制作机器人的五大玩法
GPIO引脚应该是树莓派上最容易让初学者感到困惑的部分了。曾几何时,我也好奇那些细小的针脚究竟能派上什么用场。在累积了多年的项目测试经验之后,我决定把GPIO的核心工作方式整理清楚,并分享一些易于上手的实用例子。
树莓派共拥有40个GPIO引脚,它们可以灵活地配置为输入或输出。借此,你可以连接传感器、开关、电机等各种各样的外部设备。
本文会逐一介绍树莓派GPIO的几种典型使用方法,同时配合实际项目创意或场景示例,让你直观感受它的强大与便利。
基础开关控制:从闪烁LED到智能家居
GPIO最基本的功能莫过于操控开关。通俗地讲,每个GPIO引脚只有两种状态:开(高电平)或关(低电平)。我们完全可以通过程序或脚本来自由切换每个引脚的状态。
那么,“开”和“关”在电气上究竟意味着什么?实际上它们对应的是两种不同的电压或功率等级,电子传感器和元器件在不同电压下的行为也因此不同。
看看下面这个最简电路,就能帮助理解:

图中,LED通过一个电阻接在了树莓派的GPIO 16上。接下来,我们写一小段简单的Python程序,运行即可点亮这颗LED:
from gpiozero import LED# Initialize LED on GPIO 16led = LED(16)# Turn LED ONled.on()
如果你对基础电子元器件还感到陌生,可以参考文章:树莓派GPIO基础
可见,只需执行一条指令,我们就将一个GPIO引脚从关闭切换到了开启。这个简单的原理同样能延伸到更贴近生活的场景中。
不过,树莓派的GPIO有一个根本限制:它只能直接驱动像LED这样的低压(LV)负载。若要控制家中灯具、风扇之类的高压(HV)设备,就必须想办法把低压信号转换成高压信号。
这样的信号转换电路对新手来说颇有难度,幸好市面上已有现成的继电器模块可供选择。

将这类继电器模块连接到树莓派之后,你就可以用它来取代原来的手动开关(连接方式见下图),把一台普通风扇升级为一台智能风扇。

当然,你可以把案例中的风扇替换成任何你想用树莓派GPIO控制的电器。
这种电路能让你轻松实现家居设备的自动化:既可以设定在特定时间自动开关,也可以依据某些传感器信号来触发动作,把原本呆板的设备改造成智能家居的一员。
按钮状态检测:将按压动作变成操控指令
开关控制的反面,就是用GPIO来感知某个对象的“开”或“关”。GPIO除了作为输出,也可以是输入。这样我们便能在程序中判断某一引脚当前处于高电平(开)还是低电平(关)。
以按钮为例,来看树莓派如何通过GPIO读取外部输入。连接方式如下:

在这个例子中,我们把一只按钮连接到树莓派的GPIO 18。接着,用一段简单的程序就能读出按钮的状态:
from gpiozero import Buttonfrom signal import pausebutton = Button(18)button.when_pressed = lambda: print("Button pressed")button.when_released = lambda: print("Button released")pause() # keeps program running
可以看到,依靠寥寥几行Python代码,我们就能读取GPIO状态,进而转化为按钮是被按下还是松开的信息。
你可以把这个按钮输入当作触发后续动作的起点。例如,同样在树莓派上接好LED,按下按钮时点亮LED,就像下面视频里的效果:
这个案例看似简单到有些过分,但你可以在此基础上做更多复杂的事:把按钮输入作为激活某个脚本的开关,或者当成游戏里的控制键。
与传感器通信并测量真实数据
除了上面说到的简单高低电平输入输出,GPIO还能与数字传感器进行更复杂的通信。
一个很实际的例子就是用红外或运动传感器来检测移动。树莓派可以借助这类传感器识别到运动并发出提醒,常用的器件如HC-SR501。

把传感器接到树莓派上,每当它检测到运动,就会拉高对应GPIO引脚的电平。此时,你在Python程序中读取这个高电平(就像处理按钮时那样),即可据其触发动作,比如发送一条通知。

这种配置既可以应用于安防系统,也可以用来监控家中孩子或宠物的活动。
更进一步,还可以把它与前面的开关控制案例结合起来。编写一个程序,在检测到特定的动作(例如早上起床的脚步)时,自动打开某样设备(比如卧室的灯)。

从物理动作中获取输入,并以此操控不同的电子设备,这种能力催生了数不清的项目创意。比如,用这类传感器来控制楼梯照明,或在无人时自动关闭风扇和电灯以节约能源。
红外传感器的行为模式和按钮很相似,但像DHT22温湿度传感器这类器件需要传输的不只是一个比特。它们必须传递更复杂的数据,比如环境中的精确温度和湿度数值。

为此,这类传感器会通过特定协议对数据进行串行化。借助串行化,它们仅占用一个GPIO引脚就能完成任务。

还有一些传感器,比如MPU-6050加速度计和陀螺仪,甚至需要双向通信——树莓派发出指令,传感器返回响应。

事实上,大量传感器都可以通过GPIO引脚接入你的树莓派。
理所当然地,由于这些传感器采用的是特定通信协议,而非简单的高低电平信号,它们需要对应的数据库支持。例如对DHT22,你可以使用adafruit-circuitpython-dht这个Python库。
这类传感器通常能实现更丰富的功能。例如,你可以用DHT22监测环境温湿度,并根据读数控制空调系统。

或者把MPU-6050用在机器人项目中,让树莓派感知自己的姿态和运动。
我个人特别喜欢的一个项目是:用DHT22温湿度传感器搭配光照传感器,搭建一个自动园艺或温室控制系统。浇水、通风和补光都严格依据传感器数据来精准执行。
当你逐渐认清有哪些传感器可以接入树莓派时,才会真正打开眼界,理解这块板子能为你带来多少可能性。
驱动电机,打造可动项目
在我使用GPIO的场景中,机器人相关项目占据了相当大的比重。机器人里,树莓派扮演着大脑的角色,它接收多个传感器传来的信息,再据此操控驱动轮子或机械臂的电机。
市面上的机器人套件非常丰富。比如我非常喜欢的一款四驱智能小车套件:

这个套件组装简单,对新手格外友好。它集成了超声波测距传感器、循迹传感器和摄像头。
另一个非常有意思的机器人套件是ArmPi机械臂套件。你可以用它配合自带的树莓派5,做出既好玩又有实际用途的机械臂。
当你真正熟悉了树莓派的GPIO和机器人开发之后,完全可以更进一步,造出一架属于自己的树莓派无人机。实际上这比许多人想象的要容易。
轻量四轴飞行器框架在Amazon上就能轻松买到。你可以搭配一个树莓派Zero或树莓派Pico,再加上自己选定的传感器,制作出属于你的FPV四轴飞行器。

飞行控制方面,你可以使用Tim Hanwick的Scout飞控程序,或者干脆自己编写一段代码来控制飞行器。
树莓派爱好者社区正在不断壮大,大家都非常乐意帮助你完成机器人项目。网上有大量详细的教程,手把手指导你开发自己的机器人。
何况,很多机器人套件本身就是为初学者量身打造的,是很好的起点。总而言之,这是一个极棒的爱好,既能学到大量知识,上手之后也格外有趣。
与其他电子设备通信
树莓派GPIO还有一个稍显小众但十分实用的用途,就是与其他电子设备进行通信。我经常在设计中采用这样一种组合:树莓派 + Arduino Nano 或 树莓派 Pico。
这样的搭配能让树莓派负责项目中更为复杂的任务,而Arduino则专注于与模拟电路或不被树莓派直接支持的传感器打交道。
为了让两者能顺利协作,必须让Arduino和树莓派之间能够互相通信。这时就可以利用GPIO的Tx和Rx引脚建立一条可靠的通信通道。

通过这种设置,你不但能够整合多个微控制器或开发板的能力,还能接入那些原本无法直接连到树莓派的传感器。
和连接Arduino类似,你也可以用相同的方法在树莓派与树莓派Pico之间建立通信。除了UART串行通信,树莓派的GPIO还支持I2C与SPI两种协议。
许多模块都基于这些通信协议,能够轻松接入树莓派。举个例子,你可以通过I2C把树莓派连到1602 LCD字符屏上,用来显示重要信息。

同样,你也可以利用SPI接口把1.8英寸彩色LCD显示屏接到树莓派上,用来呈现图形界面。

实际上,很多传感器和模块都使用这些通信协议。前面提到的MPU-6050加速度计和陀螺仪传感器就同时支持SPI通信。
这些高级通信协议的一大优势在于:仅用区区几个GPIO引脚,就能传输大量数据。所以相关模块的接线也相对简单。
而且,正因为它们几乎是通用的通信标准,你几乎可以借助树莓派的GPIO与任何电子设备或开发板进行对话。
用HAT扩展板增添功能
通过GPIO还能做到一件很棒的事,就是给树莓派配上HAT(硬件附加板,Hardware Attached on Top)。HAT是预先设计好的PCB或电子电路,能够方便地安装到树莓派上,从而增强其功能和能力。
HAT的种类极为丰富,每一种都针对不同的能力提升。比如,你可以利用M.2 NVMe SSD HAT为树莓派5增加NVMe固态硬盘。

这块HAT虽然通过排线使用树莓派5的PCIe 2.0接口,但仍需借助GPIO来提供电源和控制信号。
另一个对离网项目极为有用的HAT是UPS HAT。

这个HAT让你可以使用18650锂离子电池为树莓派供电,同时还能作为备用电源。它同样利用GPIO进行供电并传递电量百分比等控制信号。
大多数HAT都设计为可以叠放使用。但为了确认具体兼容性,还是建议查阅HAT厂商的文档。就我的经验而言,绝大部分HAT相互之间都能协同工作。
我常用的另一块HAT是这个3.5英寸触摸屏HAT:

当你身边没有独立的显示器、键盘和鼠标来连接树莓派时,这块HAT就变得格外实用了。
由此可见,HAT非常有用,能显著提升树莓派的生产力。树莓派的HAT种类繁多,本文所展示的只是冰山一角。
GPIO本质上是树莓派区别于普通迷你PC的核心所在。GPIO提供了直接控制电子元器件和供电的能力,因此你能用树莓派GPIO完成的事情多到难以想象。
实际上,在我做过的绝大多数项目中,选择树莓派而不是更便宜的主板或PC的首要原因,正是GPIO的存在——它让我能够原生地接入各种电子元件和电路。

