Raspberry Pi Pico W开发指南:从硬件解析到物联网项目实战

发布时间:2026/8/1 11:36:54
Raspberry Pi Pico W开发指南:从硬件解析到物联网项目实战 1. 项目概述为什么是Raspberry Pi Pico W如果你和我一样玩过不少单片机从Arduino到ESP32再到各种国产的MCU那你拿到Raspberry Pi Pico W的第一感觉可能会是这玩意儿有点意思但又有点不一样。它不像传统的树莓派单板电脑那样需要操作系统插上就能当个小电脑用它也不像一些纯粹的单片机开发环境简陋全靠寄存器操作。Pico W更像是一个“跨界选手”它用一块双核ARM Cortex-M0的RP2040芯片作为大脑然后额外集成了一块英飞凌的CYW43439无线芯片让这个原本主打极致性价比和灵活IO的微控制器板子拥有了Wi-Fi和蓝牙连接能力。我最初接触Pico W是想找一个能替代ESP8266/ESP32但在编程体验和底层控制上更“清爽”一些的物联网节点。ESP系列固然强大生态也成熟但有时它的开发环境、库的版本兼容性以及那种“大而全”的框架会让我在一些对实时性要求高、或者想从零开始理解每一个字节数据流向的项目里感到束手束脚。Pico W的出现正好填补了这个空白。它提供了MicroPython和C/C两种主流的开发方式前者让你能像写Python脚本一样快速原型验证后者则让你能深入到芯片的每一个时钟周期榨干硬件性能。更重要的是它的官方SDKSoftware Development Kit设计得非常清晰没有太多历史包袱文档也相对友好这对于想深入理解嵌入式开发的爱好者来说是个绝佳的学习平台。所以Pico W到底适合谁我认为有三类人第一类是嵌入式新手或学生想找一个从Arduino进阶到更专业、更底层开发的跳板第二类是物联网项目开发者需要一个小巧、低功耗、编程灵活且带无线功能的控制核心第三类是硬件黑客和创客看中了RP2040芯片强大的PIO可编程输入输出功能和丰富的IO资源用来实现一些独特的数字接口或精确的时序控制。无论你是想做个联网的温湿度计还是想驱动一个复杂的LED矩阵或是实现一个自定义的通信协议Pico W都能提供一个坚实且富有弹性的基础。2. 核心硬件与架构深度解析要玩转Pico W不能只停留在点个灯、连个Wi-Fi的层面得先把它肚子里的“货”看清楚。这块板子的核心其实是由两颗主要的芯片和其周边电路构成的“双子星”系统。2.1 大脑RP2040微控制器RP2040是树莓派基金会自己设计的首款微控制器芯片这个“2040”的名字来源于它的核心参数双核ARM Cortex-M0处理器2个核心运行频率最高133MHz片上SRAM为264KB。这个配置在微控制器领域属于中上游水平双核设计是它的一大亮点。这意味着你可以让一个核心专心地处理网络协议栈或者传感器数据采集另一个核心去执行复杂的算法或者用户交互逻辑两者互不干扰极大地提升了系统的响应能力和任务处理的并行性。除了CPURP2040最被津津乐道的就是它的PIOProgrammable I/O子系统。你可以把它理解成芯片内部自带的、高度灵活的“外挂协处理器”。它由两个独立的状态机State Machine组成每个状态机都可以执行一套精简的指令集专门用来处理高速的、周期精确的输入输出操作。比如你想驱动一个WS2812B智能LED俗称NeoPixel这种灯需要非常精确的时序信号用主CPU通过软件模拟既占用大量资源又不稳定。而用PIO你只需要写几十行汇编风格的代码描述好高低电平的时序PIO状态机就能像硬件电路一样稳定、高效地生成所需的信号波形完全解放主CPU。同理实现软串口、红外发射、精确脉冲计数、甚至模拟某些不常见的通信协议如DShot电调协议PIO都是神器。在存储方面RP2040本身没有内置Flash所以Pico W板载了一颗2MB的QSPI Flash芯片用于存储程序和数据。264KB的SRAM对于微控制器应用来说算是比较充裕的但需要注意的是当你使用MicroPython时解释器和运行时本身会占用一部分内存实际可用的堆heap空间大约在150KB左右对于复杂的应用需要精打细算。而使用C/C开发则能更高效地利用所有内存。2.2 神经英飞凌CYW43439无线模块这是Pico W名字里那个“W”的由来。CYW43439是一颗集成了2.4GHz Wi-Fi 4802.11n和蓝牙5.1的单芯片方案。在Pico W上它通过SPI总线与主芯片RP2040通信。这意味着所有的Wi-Fi和蓝牙数据包都需要通过RP2040的软件驱动来处理芯片本身不运行独立的网络协议栈不像ESP32那样有部分协议由硬件协处理。这种设计带来了极大的灵活性你可以使用官方的cyw43-driver也可以尝试其他驱动但同时也对主CPU的资源提出了一定要求特别是在高网络吞吐量场景下。注意Pico W的无线性能受限于其SPI连接方式和单天线设计。它的Wi-Fi吞吐量理论峰值远不及ESP32实测稳定的TCP传输速率大约在2-3 Mbps量级更适合用于物联网传感器数据上报、接收控制指令等中低数据量场景而不是用于传输视频流或大文件。蓝牙功能在早期的MicroPython固件中并未默认启用需要自己编译包含蓝牙支持的固件或者使用后续更新的版本在C/C开发中则相对完善。2.3 躯体板载资源与扩展能力看完了核心芯片我们再来看看板子本身提供了什么。Pico W采用了和Pico相同的“邮票孔”板型尺寸只有21mm x 51mm非常小巧。它提供了26个多功能GPIO引脚这些引脚几乎都可以被配置为数字输入输出、ADC模拟数字转换器、PWM脉冲宽度调制或者各种串行通信接口UART, I2C, SPI。其中有3个模拟输入引脚GP26, GP27, GP28连接到RP2040内部的12位ADC能测量0-3.3V的电压。这对于读取电位器、光敏电阻等模拟传感器足够了。板载一颗LED灯连接在GPIO 25上这是你第一个“Hello World”的好伙伴。此外还有一个用户可编程的按钮BOOTSEL在特殊模式下用于进入UF2烧录状态。电源方面Pico W可以通过USB Micro-B接口供电5V也可以通过VSYS引脚1.8V-5.5V供电。它的功耗控制得不错在深度睡眠模式下电流可以降到几十微安级别非常适合电池供电的长期监测项目。3. 开发环境搭建与选型心得给Pico W编程主要有两条路追求开发速度的MicroPython和追求性能与控制的C/C。我的建议是根据项目阶段和个人熟悉度来选。3.1 MicroPython快速原型验证的利器如果你是Python开发者或者想快速看到成果MicroPython是不二之选。它的搭建简单到令人发指固件烧录去树莓派基金会官网下载最新的Pico W MicroPython固件一个.uf2文件。按住Pico W上的BOOTSEL按钮不放同时用USB线连接到电脑电脑上会出现一个名为RPI-RP2的U盘。把下载的.uf2文件拖进去板子会自动重启固件就烧好了。连接与编程重启后你可以使用任何串口工具如PuTTY,screen, 或者Thonny IDE连接到Pico W出现的串口如COM3或/dev/ttyACM0。更推荐使用Thonny它专为MicroPython设计集成了代码编辑、文件管理和REPL交互式命令行环境能自动识别Pico W一键运行代码管理文件系统上的脚本体验非常流畅。用MicroPython你几乎可以在几分钟内让板子连上Wi-Fiimport network import time wlan network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(你的SSID, 你的密码) # 等待连接简单但不够健壮 time.sleep(5) if wlan.isconnected(): print(网络配置:, wlan.ifconfig())这就是MicroPython的魅力代码直观接近高级语言库函数封装良好。对于网络请求、JSON数据处理、驱动常见的I2C/SPI传感器都有丰富的库支持。社区生态活跃很多为ESP32编写的MicroPython库稍作修改就能在Pico W上运行。实操心得MicroPython的弱点在于性能和内存管理。它的运行效率比C/C慢一个数量级以上且内存垃圾回收GC可能带来不可预测的短暂延迟对于需要严格实时性的控制比如平衡小车、高速电机PWM可能不适用。另外它的错误提示有时比较笼统深层调试需要一些经验。3.2 C/C释放硬件潜力的专业选择当你需要极致的性能、精确的时序控制、或者项目最终要走向产品化时C/C是必然选择。Pico W的C/C开发环境主要围绕官方的Pico SDK展开。环境搭建最主流的方式是在Linux或Windows WSL2、macOS上使用CMake进行交叉编译。你需要安装ARM GCC工具链、CMake、Build-essential等然后克隆Pico SDK及其示例仓库。这个过程对于新手稍有门槛但官方文档步骤清晰。也可以使用Windows上的Visual Studio Code配合官方插件“Raspberry Pi Pico”或者PlatformIO它们提供了图形化的项目创建和管理界面降低了入门难度。开发流程典型的流程是用CMakeLists.txt组织项目编写C代码调用Pico SDK提供的API如gpio_init,uart_init,cyw43_arch等然后编译生成.uf2或.elf文件最后通过拖拽或调试器烧录到板子上。用C语言实现同样的Wi-Fi连接代码量会多一些但你能获得完全的控制权#include pico/cyw43_arch.h int main() { stdio_init_all(); // 初始化标准输入输出如UART if (cyw43_arch_init()) { printf(Wi-Fi初始化失败\n); return -1; } cyw43_arch_enable_sta_mode(); // 设置为站点模式 printf(正在连接Wi-Fi...\n); if (cyw43_arch_wifi_connect_timeout_ms(你的SSID, 你的密码, CYW43_AUTH_WPA2_AES_PSK, 10000)) { printf(连接失败\n); } else { printf(连接成功\n); } // ... 主循环 cyw43_arch_deinit(); return 0; }C开发让你能直接操作寄存器、使用中断、精确管理内存、充分利用双核和PIO。SDK中提供了大量高质量的例子从点灯到USB设备模拟从多核编程到PIO波形生成是学习嵌入式系统编程的宝库。避坑指南C/C开发最大的“坑”在于链接和依赖管理。Pico SDK使用了大量的静态库如果你的CMakeLists.txt配置不对经常会遇到“未定义的引用”这类链接错误。务必仔细阅读SDK文档中的CMakeLists.txt写法最简单的方法是直接复制一个官方示例项目的CMakeLists.txt作为模板进行修改。另外调试需要使用额外的SWD调试器如Pico Debug Probe或另一块Pico对于复杂问题printf日志结合LED闪烁仍然是简单有效的调试手段。4. 核心应用场景与项目实战拆解了解了硬件和开发环境我们来看看Pico W能具体干什么。我结合几个自己做过或深度研究过的项目来拆解其中的关键技术和实现要点。4.1 场景一低功耗物联网传感器节点这是Pico W最经典的应用。设想一个部署在阳台的花盆土壤湿度监测器需要每半小时读取一次传感器数据通过Wi-Fi发送到家里的服务器或云平台其余时间深度睡眠以节省电池。关键技术点1传感器读取通常使用ADC读取模拟输出的湿度传感器或者通过I2C/SPI接口读取数字传感器如BME280温湿度气压传感器。以I2C为例在MicroPython中from machine import I2C, Pin import time i2c I2C(0, sclPin(5), sdaPin(4), freq100000) # 初始化I2C0引脚GP5/GP4 # 假设BME280地址是0x76 # 这里需要导入对应的驱动库例如 bme280.py # sensor_data bme280.read_compensated_data(i2c)在C语言中你需要使用SDK的hardware/i2c库过程类似但需要自己处理寄存器读写时序或者使用第三方驱动库。关键技术点2Wi-Fi连接与数据上报连接Wi-Fi后使用MicroPython的urequests库或C语言中的lwIP轻量级IP协议栈配合HTTP Client或MQTT客户端来发送数据。这里有一个关键优化每次测量后都重新连接Wi-Fi再断开是非常耗电的。更好的做法是在深度睡眠期间保持Wi-Fi硬件完全断电。Pico W的CYW43439驱动支持在初始化后进入“关闭”状态以省电。在MicroPython中你可以直接wlan.active(False)来关闭Wi-Fi射频。关键技术点3低功耗管理RP2040支持多种睡眠模式。对于这个场景我们使用最省电的“深度睡眠”Dormant Mode并利用RTC实时时钟定时器唤醒。在C语言中可以调用sleep_run_from_xosc等相关函数。在MicroPython中可以使用machine.deepsleep()函数注意单位是毫秒但唤醒后程序会从头开始执行相当于复位所以你需要考虑如何保存状态比如写到Flash的某个区域或者利用RP2040的保留内存。更精细的功耗控制需要在C语言层面实现可以做到睡眠电流低于100µA。项目心得电池供电项目的核心是平衡数据上报频率和功耗。你需要实测整个工作周期的平均电流。一个常见的优化是在软件中加入简单的逻辑如果连续几次上报都失败可能网络暂时不好则自动延长下一次上报的间隔避免在无信号区域快速耗尽电池。4.2 场景二基于PIO的智能LED灯带控制器WS2812B这类智能LED灯带每个灯珠都需要一个24位的数据信号对时序要求极其苛刻0码和1码的高电平时间分别是约0.4us和0.8us。用主CPU模拟非常困难而PIO正是为此而生。实现步骤理解PIO程序PIO程序是一种汇编语言它定义了一系列指令控制GPIO引脚在每个时钟周期内的行为。官方SDK中已经提供了WS2812的PIO示例程序ws2812.pio。你不需要完全重写但理解其原理很重要它本质上是一个状态机根据要发送的24位颜色数据GRB顺序逐个比特地生成符合WS2812时序要求的波形。集成到你的项目在C项目中你需要将这个.pio文件添加到编译中SDK的pioasm工具会将其编译成头文件。然后在主程序里初始化对应的PIO状态机并提供一个函数将颜色数据数组送入状态机的FIFO缓冲区即可。#include ws2812.pio.h // 初始化PIO0的0号状态机使用GPIO28作为数据引脚 PIO pio pio0; int sm 0; uint offset pio_add_program(pio, ws2812_program); ws2812_program_init(pio, sm, offset, 28, 800000, false); // 800kHz速率 // 设置一个LED为红色 (GRB格式: 0x00FF00) uint32_t color 0x00FF00; pio_sm_put_blocking(pio, sm, color 8u); // 需要左移8位高级控制你可以用双核一个核心运行网络服务接收控制指令如通过WebSocket接收手机App的颜色命令另一个核心专门负责通过PIO刷新LED灯带。两者通过共享内存或队列FIFO进行通信互不阻塞。避坑技巧WS2812灯带对电源要求很高尤其是灯珠数量多的时候。务必在灯带近端Pico W连接处并联一个大电容如1000µF 6.3V并确保电源能提供足够电流每个灯珠全白时约60mA。数据线过长可能导致信号畸变如果灯带超过1米建议在Pico W输出端串联一个100-500欧姆的电阻并在灯带末端的数据线与地之间并联一个100-500欧姆的电阻以改善信号完整性。4.3 场景三小型网络服务器与交互界面Pico W的性能足以运行一个轻量级的Web服务器这让你可以创建一个带有交互界面的设备。例如一个网络控制的智能插座可以通过网页开关、设置定时。技术栈选择MicroPython使用microdot、picoweb等轻量级Web框架可以快速搭建RESTful API或简单的HTML页面。优点是开发快适合界面不复杂的场景。C/C使用lwIP的httpd组件或者更轻量的自定义TCP服务器。性能更好内存控制更精确但需要手动处理HTTP协议解析和HTML内容生成。实现要点创建TCP Socket并监听绑定到80端口。解析HTTP请求这是一个字符串处理的过程。你需要从接收到的数据中解析出请求方法GET/POST、请求的路径URL以及可能的参数对于GET请求在URL中对于POST请求在消息体中。路由与响应根据不同的路径返回不同的内容。例如访问根路径/时返回一个包含开关按钮的HTML页面访问/api/switch?stateon时则执行打开继电器的操作并返回一个JSON状态{status: ok}。GPIO控制在响应请求的函数中调用GPIO控制函数来操作连接到继电器的引脚从而控制插座通断。安全与稳定性提醒这种内置的Web服务器仅供内网使用绝对不要暴露到公网因为它没有足够的安全防护如HTTPS、防暴力破解、输入验证等。同时要注意处理异常连接和缓冲区溢出一个恶意的或错误的客户端请求可能导致服务器崩溃。在C语言中使用malloc动态分配内存时要格外小心避免内存泄漏。5. 开发中的常见问题与深度排查无论多么简单的项目实际动手时总会遇到各种问题。下面是我和社区里朋友们常遇到的几个“坑”以及系统的排查思路。5.1 Wi-Fi连接不稳定或无法连接这是Pico W新手遇到最多的问题。现象一直打印“连接中...”最后超时失败。排查步骤检查SSID和密码最基础也最易错。确保没有多余空格密码大小写正确。检查路由器设置有些路由器可能禁用了2.4GHz频段Pico W只支持2.4G或者设置了MAC地址过滤、隐藏了SSID。确保路由器2.4G网络开启且广播SSID。检查信号强度将Pico W靠近路由器测试。CYW43439的射频性能一般隔墙或距离过远容易失败。查看驱动日志在C语言中可以尝试启用cyw43-driver的调试输出编译时定义CYW43_ENABLE_DEBUG查看更详细的握手过程。在MicroPython中可以尝试捕获wlan.status()的返回值对照文档查看具体错误码。电源干扰使用劣质USB线或电源适配器可能引入噪声干扰无线模块。尝试更换高质量的电源和短线。固件问题确保使用的是最新的MicroPython固件或Pico SDK早期版本的无线驱动可能存在兼容性问题。现象连接成功但偶尔会断线或者网络请求很慢。排查步骤检查路由器信道拥堵使用手机App如Wi-Fi分析仪查看周围Wi-Fi信道分布将路由器切换到一个相对空闲的信道如1, 6, 11。优化代码在MicroPython中避免在Wi-Fi连接成功后频繁调用wlan.active(True/False)或wlan.disconnect()/wlan.connect()。建立连接后应保持其稳定。在C语言中确保网络任务有足够的栈空间并且主循环不会长时间阻塞例如避免在cyw43_arch_poll调用前进行耗时很长的操作。降低吞吐量期望如前所述Pico W的网络性能有限不适合持续高速传输。5.2 程序运行异常或崩溃现象MicroPython程序运行一段时间后报MemoryError。原因与解决这是内存碎片或泄漏的典型表现。MicroPython的堆内存有限。检查循环中创建的对象避免在无限循环里不断创建新的列表、字典、字符串而不释放。尽量复用对象。使用micropython.mem_info()定期打印内存信息观察可用内存块的变化。考虑使用C扩展对于内存消耗大的固定数据结构可以考虑用C写成MicroPython的本地模块。现象C语言程序编译通过但烧录后无反应甚至LED都不闪。排查步骤确认烧录成功.uf2文件是否成功拖入RPI-RP2盘符烧录后盘符会消失板子自动重启。检查stdio初始化如果你的程序依赖printf通过UART输出日志但电脑没看到任何输出首先确认是否调用了stdio_init_all()。其次检查你使用的UART引脚默认是GP0/TX和GP1/RX是否正确连接到了USB转串口适配器如果你用了外部适配器或者你的串口终端软件是否选择了正确的COM端口和波特率通常115200。使用LED调试在程序开头、关键分支后添加gpio_put(PICO_DEFAULT_LED_PIN, 1)和gpio_put(PICO_DEFAULT_LED_PIN, 0)通过观察LED的闪烁模式来判断程序执行到了哪一步。这是嵌入式开发最经典的“printf调试法”的硬件版本。检查链接脚本和启动文件对于复杂的、自己从头创建的项目确保CMakeLists.txt正确链接了pico_stdlib等必要的库并且没有错误地覆盖了默认的链接脚本。5.3 PIO程序不工作现象编写了自定义PIO程序但引脚没有输出预期波形。排查步骤逻辑分析仪是必备工具没有逻辑分析仪调试PIO几乎寸步难行。一个便宜的USB逻辑分析仪如Saleae Logic 8克隆版就能很好地观察引脚时序。检查时钟配置PIO状态机的运行时钟基于系统时钟分频。确保你设置的状态机时钟sm_config_set_clkdiv是合理的。时钟太快可能超出GPIO翻转速度极限太慢则波形不对。检查引脚映射确保pio_gpio_init和sm_config_set_set_pins等函数配置的引脚号是正确的并且该引脚没有被其他功能如UART占用。检查程序加载使用pio_add_program后是否成功返回了偏移地址程序是否成功加载到了正确的PIO块pio0或pio1逐步调试先写一个最简单的PIO程序比如让一个引脚以1Hz频率翻转验证整个PIO配置流程是否正确。然后再逐步增加复杂性。5.4 多核编程的同步问题当你在两个核心上同时运行任务时如果它们需要访问共享资源如全局变量、硬件外设就会产生竞态条件。常见问题一个核心在读取传感器数据数组另一个核心在通过网络发送这个数组可能导致发送的数据是半新半旧的。解决方案使用互斥锁MutexPico SDK提供了mutex机制。在访问共享资源前mutex_enter_blocking访问后mutex_exit。使用队列FIFOSDK也提供了queue。一个核心生产数据并推入队列另一个核心从队列取出数据消费。这是生产者-消费者模型的理想选择比互斥锁更清晰。避免共享最好的同步就是不同步。尽可能设计成两个核心处理完全独立的数据和硬件资源。例如核心0专管网络和用户输入核心1专管电机控制和传感器滤波两者通过一个简单的标志位进行“心跳”同步而不是频繁交换大量数据。6. 进阶技巧与生态资源挖掘当你熟悉了基础操作下面这些技巧和资源能帮你把项目做得更专业、更高效。6.1 使用PlatformIO进行项目管理虽然官方推荐CMake但对于从Arduino IDE或ESP32开发过渡过来的用户PlatformIO提供了更统一的体验。它是一个跨平台的嵌入式开发平台作为VSCode的插件存在。优势项目结构清晰自动生成标准的src,include,lib目录。库管理方便通过platformio.ini配置文件可以轻松添加第三方库PlatformIO会自动下载和管理依赖。一键编译烧录调试图形化按钮完成所有操作支持多种调试探头。多环境配置可以在一个项目中轻松配置针对不同板子如Pico W和Pico的编译选项。配置示例 (platformio.ini)[env:raspberry-pi-pico-w] platform https://github.com/maxgerhardt/platform-raspberrypi.git board raspberry-pi-pico-w framework arduino ; 或者使用 framework cmsis 或 mbed board_build.core earlephilhower注意PlatformIO对RP2040的支持通过社区维护有时可能不如官方SDK更新及时但对于大多数应用来说已经非常稳定和方便。6.2 利用Flash存储数据板载的2MB Flash除了存放程序还可以用来存储配置信息如Wi-Fi密码、服务器地址、历史数据或网页文件。MicroPython可以使用open()函数像操作文件一样读写Flash上的文件系统。但注意频繁的小文件写入会磨损Flash的特定扇区。对于需要频繁更新的数据考虑先写入内存缓冲区定期批量写入。C/CPico SDK提供了hardware/flash.h库允许你直接读写Flash的任意地址。但绝对不要在运行程序所在的Flash扇区进行写操作这会导致程序崩溃。通常的做法是在链接脚本中预留一段Flash空间例如从1.5MB开始专门用于数据存储。读写时需要先调用flash_range_erase擦除整个扇区最小4KB然后再flash_range_program编程。这个过程需要小心处理并最好结合CRC校验来确保数据完整性。6.3 社区与第三方库资源不要重复造轮子。Pico和Pico W的社区非常活跃产生了大量高质量的库。官方资源Raspberry Pi Pico SDK和Examples一切的基础必须熟读。Pico MicroPython DocumentationMicroPython的快速参考。第三方库精选Pico-OTA让Pico W支持通过网络OTA更新固件对于部署在远处的设备非常有用。Pico-W-MQTT一个简单的MQTT客户端实现。Pico-DVI利用PIO实现DVI视频输出可以驱动显示器展示了PIO的强大能力。各种传感器驱动在PlatformIO的库管理器或GitHub上搜索“RP2040”、“Pico”能找到绝大多数常见传感器OLED屏幕、IMU、温湿度等的驱动。6.4 电源管理与功耗优化实战对于电池项目功耗是命脉。除了使用深度睡眠还有更多细节可以优化关闭未使用的外设在进入睡眠前通过clock_stop等函数停用不需要的时钟源如ADC、PLL等。配置GPIO状态将未使用的GPIO设置为输入模式并启用内部上拉或下拉电阻避免引脚悬空导致漏电。对于输出引脚设置为稳定的高或低电平防止驱动外部电路产生功耗。降低工作电压RP2040内核可以在低至1.8V的电压下运行但Flash可能需要更高电压。如果整个系统能工作在较低电压功耗会显著下降。测量真实功耗使用万用表的电流档串联在电池和Pico W的VSYS之间分别测量工作、空闲、睡眠状态下的电流。这是优化效果的最终检验。一个优化良好的Pico W传感器节点平均电流做到50µA以下是完全可能的。玩转Pico W的过程是一个不断在“快速实现”和“深入控制”之间做选择的过程。MicroPython让你快速验证想法看到成果获得正反馈而C/C则带你深入芯片内部理解计算机系统如何从最底层开始工作让你获得完全的控制权和极致的性能。这两种体验相辅相成正是Pico W平台最大的魅力所在。它既是一个友好的教育工具也是一个强大的生产力工具。无论你选择哪条路这片小小的板子背后广阔的硬件和软件世界都值得花时间去探索。