树莓派Pico入门:从MicroPython环境搭建到GPIO控制LED实战
1. 从零开始的硬件“Hello World”如果你刚拿到一块树莓派 Pico看着上面密密麻麻的引脚和那个小小的 RP2040 芯片可能会有点无从下手。别担心点亮一颗 LED 灯就是我们踏入微控制器世界的第一步也是硬件开发的“Hello World”。这不仅仅是让一个灯亮起来那么简单它背后涉及了开发环境搭建、固件烧录、编程语言选择、GPIO通用输入输出控制等一系列核心概念。通过这个看似简单的过程你能建立起对嵌入式开发最基础的认知框架理解信号是如何从代码变成物理世界的光。无论你是软件开发者想跨界玩玩硬件还是电子爱好者想体验最新的微控制器这篇教程都会带你走通从开箱到点亮的完整路径避开那些新手最容易踩的坑。2. 开箱与核心硬件认知在你动手写代码之前花几分钟认识一下你手中的这块板子能让你后续的操作事半功倍。树莓派 Pico 的设计非常简洁但几个关键部分需要了然于心。2.1 认识你的 RP2040 主控板子中央那个最大的芯片就是 RP2040它是树莓派基金会自主研发的双核 ARM Cortex-M0 微控制器。双核意味着它可以同时处理两个任务对于后续做更复杂的项目比如同时读取传感器和驱动显示屏很有优势。但点亮 LED 我们暂时还用不到这个高级特性。你需要知道的是我们写的程序最终就是运行在这个芯片里。2.2 找到那颗属于你的 LEDPico 板载了一颗用户可编程的 LED它的位置很关键。仔细看板子你会发现一颗非常小的贴片 LED通常位于 Micro USB 接口的附近标号为“LED”或旁边有一个类似“PICO_D1”的丝印。这颗 LED 是直接连接在 RP2040 的某个 GPIO 引脚上的。对于最常见的 Pico 版本这颗板载 LED 连接在GPIO 25上。这是一个硬连接无法更改。所以我们的程序目标就是控制 GPIO 25 引脚输出高电平或低电平来让这颗 LED 亮起或熄灭。2.3 BOOTSEL 按钮与 Micro USB 接口这是两个与编程烧录息息相关的物理接口。BOOTSEL 是板子上唯一一个带标识的按钮。当你按住 BOOTSEL 按钮不放同时将 Pico 通过 Micro USB 线连接到电脑时Pico 会进入一个特殊的“USB 大容量存储设备”模式。此时你的电脑会识别出一个名为“RPI-RP2”的U盘。我们就是通过向这个“U盘”里拖放文件来完成固件烧录的。而 Micro USB 接口则肩负着供电和通信烧录、串口调试的双重职责。注意很多新手会忽略供电问题。虽然 Pico 可以通过 USB 供电但在连接一些外部设备如电机、多个 LED时可能需要更稳定的电源。板子上有 VSYS 和 3V3 引脚但入门阶段USB 供电完全足够且安全。3. 开发环境搭建与固件烧录这是从“一块电路板”到“一台可编程计算机”的关键一步。树莓派 Pico 支持多种编程语言如 MicroPython、C/C甚至 Rust、CircuitPython 等。对于绝对新手我强烈推荐从MicroPython开始。它的语法接近 Python交互性强可以一行行代码执行立即看到效果学习曲线非常平缓。3.1 获取 MicroPython 固件首先你需要获取 MicroPython 的解释器固件文件一个.uf2文件。请前往树莓派基金会的官方发布页面找到最新稳定版的 MicroPython for RP2040 固件并下载。确保你下载的是针对 RP2040 的版本而不是其他树莓派板卡的。3.2 将固件烧录到 Pico断开 Pico 与电脑的连接如果已连接。按住 Pico 板上的BOOTSEL 按钮不要松开。在按住按钮的同时将 Micro USB 数据线连接到电脑。稍等一两秒你可以松开 BOOTSEL 按钮了。此时你的电脑Windows、macOS 或 Linux应该会弹出一个新的可移动磁盘名字叫“RPI-RP2”。如果没弹出可以打开“文件资源管理器”或“访达”查看。将你刚才下载的.uf2固件文件例如rp2-pico-xxxxxx.uf2直接拖拽或复制到这个 “RPI-RP2” 磁盘里。复制完成后Pico 会自动重启。此时“RPI-RP2” 磁盘会消失因为 Pico 已经切换到了 MicroPython 运行模式。这个过程看似简单但有几个常见的坑驱动问题Windows 特有如果“RPI-RP2”磁盘没有出现可能是系统缺少驱动。可以去树莓派官网下载一个简单的 Zadig 工具为 Pico 安装正确的 USB 驱动。线材问题务必使用一条数据线而不是只能充电的电源线。很多便宜的 USB 线只有供电功能无法传输数据这会导致电脑完全无法识别 Pico。按钮时机一定要先按住 BOOTSEL再插入 USB 线。顺序反了是无效的。3.3 选择你的代码编辑器与串口工具固件烧录好后Pico 就成了一台运行 MicroPython 的微型电脑。我们需要一个“终端”来和它对话。这里推荐使用Thonny这款 IDE它对 MicroPython 和树莓派 Pico 的支持是开箱即用的。下载并安装 Thonny官网免费。用 USB 线将 Pico 连接到电脑这次不需要按 BOOTSEL。打开 Thonny在右下角查看解释器设置。点击后选择“MicroPython (Raspberry Pi Pico)”。如果 Thonny 能自动识别下面的端口通常会自动选好。连接成功后Thonny 下方黑色的“Shell”交互区域会出现这样的 MicroPython 提示符。你可以在这里直接输入print(“Hello Pico!”)并回车如果能看到输出恭喜你环境搭建成功除了 Thonny你也可以使用任何支持串口的工具如screen(macOS/Linux)、PuTTY(Windows) 或VS Code配合相关插件。但 Thonny 的集成度和新手友好度是最高的。4. 理解 GPIO 与点亮 LED 的核心代码现在我们来到了最核心的部分写代码控制 GPIO 25让 LED 亮起来。在 MicroPython 中操作硬件外设主要通过machine模块。4.1 导入必要的模块在 Shell 里或者新建的文件中首先输入from machine import Pin import timefrom machine import Pin这行代码从machine模块中引入了Pin类。这个类是我们控制任何一个引脚包括 GPIO 25的“遥控器”。import time引入了时间模块我们后面会用它来控制 LED 闪烁的间隔。4.2 创建 LED 控制对象接下来我们需要创建一个代表 GPIO 25 引脚的对象并告诉 MicroPython 我们打算用它来“输出”信号led Pin(25, Pin.OUT)Pin(25, ...)这里的数字25指定我们要操作的是 GPIO 25也就是连接板载 LED 的那个引脚。务必确认是这个编号。Pin.OUT这是一个参数将引脚的模式设置为“输出”Output。这意味着我们这个引脚将要向外部电路发送高电平3.3V或低电平0V而不是去读取外部的电压信号。如果设置成Pin.IN就是输入模式用于读取按钮、传感器等状态。4.3 让 LED 亮起来和熄灭创建好led对象后控制它就非常简单了led.value(1) # 输出高电平 (3.3V)LED 亮起 led.value(0) # 输出低电平 (0V)LED 熄灭led.value(1)调用led对象的value()方法并传入参数1。这个1代表逻辑高电平对于 Pico 就是输出约 3.3V 的电压。电流从 GPIO 25 流出经过 LED 和限流电阻到地GND形成回路LED 发光。led.value(0)传入参数0代表逻辑低电平输出 0V。此时引脚和地之间没有电压差LED 两端电压为0因此熄灭。你可以直接在 Thonny 的 Shell 里逐行输入这些命令立即就能看到板载 LED 的亮灭变化。这种即时反馈是 MicroPython 的巨大优势。4.4 实现呼吸灯效果单纯的点亮和熄灭可能还不够过瘾我们可以利用 PWM脉冲宽度调制来实现 LED 的亮度渐变也就是呼吸灯效果。PWM 的原理是通过快速开关频率很高人眼察觉不到闪烁来控制一个周期内高电平所占的比例占空比。占空比越大平均电压越高LED 就越亮。from machine import Pin, PWM import time # 创建连接到 GPIO 25 的 PWM 对象 led_pwm PWM(Pin(25)) # 设置 PWM 频率1000Hz 是个不错的起点既平滑又不会给芯片带来太大负担 led_pwm.freq(1000) # 实现呼吸灯效果 while True: # 亮度从 0 增加到最大 (65535) for duty in range(0, 65536, 256): # 步长256让变化平滑些 led_pwm.duty_u16(duty) # 设置占空比范围 0-65535 time.sleep_ms(5) # 短暂延时控制呼吸速度 # 亮度从最大减小到 0 for duty in range(65535, -1, -256): led_pwm.duty_u16(duty) time.sleep_ms(5)PWM(Pin(25))直接在引脚对象上创建 PWM 对象。freq(1000)设置 PWM 频率为 1000Hz。duty_u16(duty)这是设置占空比的方法。参数范围是 0 到 6553516位分辨率0 代表全关65535 代表全开。while True:这是一个无限循环让呼吸灯效果持续运行。实操心得运行这个呼吸灯代码时你可能会发现 LED 的亮度变化在低亮度区域不太线性变化快在高亮度区域变化缓慢。这是 LED 本身的光电特性决定的并非代码问题。如果想追求视觉上的线性变化可能需要通过一个“伽马校正”表来映射 duty 值这是后话了。5. 从脚本到固化让代码上电自启动在 Shell 里运行代码很方便但一旦 Pico 断电重启代码就消失了。我们通常希望程序能固化在板子上上电自动运行。这就需要将代码保存为 Pico 文件系统里的一个特殊文件。5.1 创建并保存主程序文件在 Thonny 的编辑区写好你的程序例如一个闪烁 LED 的程序from machine import Pin import time led Pin(25, Pin.OUT) while True: led.toggle() # 这是一个更简洁的方法在高低电平间切换 time.sleep(1) # 等待1秒然后点击 Thonny 菜单栏的“文件” - “另存为...”。这时会弹出一个对话框让你选择保存位置。关键步骤来了请选择“Raspberry Pi Pico”而不是你的电脑硬盘。在弹出的保存对话框中将文件命名为main.py然后保存。MicroPython 系统在上电后会自动寻找并执行名为main.py的文件。现在你可以点击 Thonny 的运行按钮测试一下然后按一下 Pico 板上的复位按钮RUN引脚旁边的那个小孔用回形针戳一下或者重新插拔 USB 线。你会看到 LED 开始自动闪烁而不需要你在 Thonny 里做任何操作。5.2 管理 Pico 上的文件系统你的代码、数据都可以保存在 Pico 的 Flash 存储中。在 Thonny 左侧的文件浏览器中切换到“MicroPython设备”你就可以像操作本地文件夹一样查看、创建、删除 Pico 上的文件。boot.py这个文件会在main.py之前执行通常用于一些初始化的配置如设置网络参数。如果不需要可以不管它。main.py你的主程序。其他.py文件你可以将一些函数或类封装到其他模块文件中然后在main.py里通过import来使用让代码结构更清晰。避坑指南如果你写了一个有while True:循环的main.py并且无法通过 Thonny 停止它会导致你无法连接新的 REPL交互提示符来上传新代码。解决方法是在上电时或复位时按住 Pico 板上的某个按键比如连接在 GPIO 0 上的按键然后在你的boot.py或main.py开头检查这个按键的状态。如果检测到被按下就跳过主循环直接进入 REPL 模式。这是一种常见的“安全启动”机制。6. 外部 LED 实验与电路基础学会了控制板载 LED我们就可以挑战连接外部元件了。这能让你更深刻地理解电路原理。6.1 所需材料与电路原理你需要一颗 LED颜色随意一个 220Ω 或 330Ω 的电阻色环红红棕金 或 橙橙棕金若干杜邦线公对公电路连接如下图所示文字描述将 LED 的长脚阳极正极通过一个 220Ω 的电阻连接到 Pico 的任何一个GPIO 引脚例如 GPIO 15。这个电阻至关重要它被称为“限流电阻”用于防止过大的电流烧毁 LED 或损坏 RP2040 芯片的 GPIO。计算一下Pico GPIO 输出电压约3.3V普通LED正向压降约1.8V-2.2V期望电流在10-20mA。根据欧姆定律 R V / I (3.3V - 2.0V) / 0.015A ≈ 87Ω。选择 220Ω 是一个更保守、安全的值电流大约在 (3.3-2.0)/220 ≈ 6mALED 能亮且非常安全。将 LED 的短脚阴极负极连接到 Pico 的任何一个GND地引脚。6.2 代码控制外部 LED电路接好后代码和控制板载 LED 几乎一样只是引脚号变了from machine import Pin import time # 假设外部 LED 接在 GPIO 15 上 external_led Pin(15, Pin.OUT) while True: external_led.on() # 等同于 external_led.value(1) time.sleep(0.5) external_led.off() # 等同于 external_led.value(0) time.sleep(0.5)运行这段代码你的外部 LED 就会开始闪烁。你可以尝试同时控制板载 LED (GPIO 25) 和外部 LED (GPIO 15)让它们以不同的节奏闪烁这其实就是多任务控制的雏形。6.3 常见问题排查LED 不亮检查极性LED 长脚接正极通过电阻接 GPIO短脚接 GND。接反了不会亮。检查电阻是否接了限流电阻直接连接3.3V到LED会瞬间烧毁。检查连接杜邦线是否插稳GPIO 和 GND 引脚是否选对检查代码GPIO 编号是否正确引脚是否设置为Pin.OUT用万用表测量将万用表打到电压档红表笔接 GPIO 引脚黑表笔接 GND运行led.value(1)时应测得约 3.3V 电压。LED 非常暗限流电阻阻值可能太大了。尝试换用更小的电阻如 100Ω但不要低于计算的安全值。LED 本身的老化或质量问题。代码上传后不运行确认文件是否保存为main.py并放在了 Pico 的根目录。检查代码是否有语法错误。可以在 Thonny Shell 里先逐行运行测试。检查是否有死循环导致无法连接。尝试按住按键复位进入安全模式。通过这个完整的从认知硬件、搭建环境、编写代码到调试问题的流程你已经掌握了用树莓派 Pico RP2040 控制 LED 的核心技能。这个技能是打开嵌入式世界大门的钥匙接下来你可以尝试控制更多的 LED 做成流水灯、连接按钮做输入控制、读取温湿度传感器数据甚至驱动电机和屏幕。硬件编程的乐趣就在于每一行代码都能在物理世界得到真实的回应。

相关新闻

Unity游戏内嵌浏览器:ZFBrowser集成与中文输入法修复实战

Unity游戏内嵌浏览器:ZFBrowser集成与中文输入法修复实战

1. 项目概述:为什么要在Unity游戏里内嵌浏览器?几年前,我在做一个PC端的模拟经营类游戏时,遇到了一个挺有意思的需求:玩家需要在游戏内查看一个由Web技术构建的、实时更新的商品交易市场。这个市场页面是运营团队用Vue…

2026/8/7 2:45:37 阅读更多 →
游戏DLL缺失问题深度解析:从steam_api.dll原理到系统级修复

游戏DLL缺失问题深度解析:从steam_api.dll原理到系统级修复

1. 项目概述:当“龙裔”遭遇启动危机如果你是一位《上古卷轴5:天际》的资深玩家,那么你一定经历过无数次从沉睡巨人旅馆醒来,准备迎接新的冒险。但有时候,一个比奥杜因更早出现的“拦路虎”会让你连游戏的大门都进不去…

2026/8/7 2:45:37 阅读更多 →
AI Agent时代:从代码交付到智能系统交付的架构师转型

AI Agent时代:从代码交付到智能系统交付的架构师转型

1. 从“Talk is cheap”到“Show me the code”:AI Agent 浪潮下的交付困境“Talk is cheap. Show me the code.” 这句话在程序员圈子里流传了数十年,几乎成了一种职业信条。它背后传递的是一种务实、重行动、轻空谈的工程师文化。在传统软件开发范式里…

2026/8/7 2:45:37 阅读更多 →

最新新闻

OCR进阶:从文字识别到文档解析的Skills架构与实战

OCR进阶:从文字识别到文档解析的Skills架构与实战

1. 项目概述:当OCR遇见智能解析最近在折腾文档自动化处理,发现一个挺有意思的现象:传统的OCR(光学字符识别)技术,虽然能把图片里的文字“读”出来,但读出来的东西往往是一团乱麻。你肯定也遇到过…

2026/8/7 3:38:05 阅读更多 →
OpenClaw:构建AI Agent操作系统与生态的16个项目蓝图

OpenClaw:构建AI Agent操作系统与生态的16个项目蓝图

1. 项目概述:当AI Agent需要一个“家”最近在AI圈子里,OpenClaw这个名字开始频繁出现。它不是一个单一的AI模型,也不是一个具体的应用,而是一个更宏大的构想——一个旨在为AI Agent(智能体)构建操作系统层和…

2026/8/7 3:38:05 阅读更多 →
精准预计算与傅里叶级数:两个被现实撕碎的幻梦

精准预计算与傅里叶级数:两个被现实撕碎的幻梦

摘要 本文深入剖析了人类科学史上两个影响深远的“幻梦”:拉普拉斯决定论所代表的“运动可被数学精准预计算”之梦,与傅里叶级数所代表的“任何周期函数皆可被精确分解”之梦。文章系统性地揭示了这两个理论在哲学宣称上的宏大与其物理、数学根基上的脆…

2026/8/7 3:38:05 阅读更多 →
M1/M2 Mac运行Win 11 ARM版:虚拟机方案、性能调优与兼容性实战

M1/M2 Mac运行Win 11 ARM版:虚拟机方案、性能调优与兼容性实战

1. 从“想装”到“能装”:M1/M2 Mac上运行Win 11的底层逻辑与方案抉择 如果你手握一台M1或M2芯片的Mac,却因为某个专业软件、一个特定的游戏,或者仅仅是工作流程的惯性,需要用到Windows 11,那么“虚拟机”几乎是你的必…

2026/8/7 3:38:05 阅读更多 →
MT53D512M32D2DS-053 WT:D在工业控制中的应用:宽温规格与高带宽LPDDR4优势

MT53D512M32D2DS-053 WT:D在工业控制中的应用:宽温规格与高带宽LPDDR4优势

MT53D512M32D2DS-053 WT:D:16Gb LPDDR4 SDRAM深度解析在AIoT智能终端、边缘计算以及高端嵌入式系统中,系统级存储的带宽和功耗直接影响着整体性能。美光(Micron)推出的MT53D512M32D2DS-053 WT:D,是一款16Gb&#xff08…

2026/8/7 3:38:05 阅读更多 →
AI智能体实战:opencode与browser-use结合实现网页自动化操作

AI智能体实战:opencode与browser-use结合实现网页自动化操作

1. 项目概述:当AI学会“上网冲浪” 最近在AI应用开发圈里,一个趋势越来越明显:让大模型不再只是“纸上谈兵”,而是能真正操作电脑、使用浏览器,去完成一些需要与真实世界交互的任务。这听起来有点像科幻电影&#xff0…

2026/8/7 3:37:05 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →