Raspberry Pi Pico W

Raspberry Pi Pico W — RP2040 development board

The Raspberry Pi Pico W is a dual-core ARM Cortex-M0+ microcontroller at 133MHz with WiFi, BLE 5.2, 2MB flash, and 264KB SRAM for around six dollars. It runs MicroPython or C/C++ — not Linux — and competes directly with the ESP32-C3 as a budget WiFi-enabled microcontroller. The unique PIO state machines enable custom hardware protocols without dedicated peripherals.

★★★★☆ 4.0/5.0

Best for MicroPython beginners wanting WiFi on a budget, skip if you need BLE peripherals or more flash/SRAM.

Best for: MicroPython learningcustom protocol interfaces via PIObudget WiFi projects
Not for: battery-powered sensors (high sleep current)projects needing large flash or SRAM

Where to Buy

Check Price on Amazon (paid link) Check Price on Adafruit (paid link) Check Price on SparkFun (paid link)

Pros

  • Dual-core Cortex-M0+ at 133MHz — two cores for this price is notable
  • 8 PIO state machines create custom hardware interfaces (WS2812, VGA, etc.)
  • Excellent MicroPython support with official documentation
  • WiFi 802.11 b/g/n + BLE 5.2 at the sub-$10 price point
  • Breadboard-friendly 51x21mm form factor with castellated pads

Cons

  • 264KB SRAM is tight for complex applications (ESP32-C3 has 400KB)
  • Only 2MB flash — fills quickly with MicroPython libraries
  • 1.3mA deep sleep is vastly worse than ESP32-C3's 5uA — poor for battery
  • Micro-USB instead of USB-C
  • 3 ADC channels vs 6+ on most ESP32 boards

PIO: The Pico's Secret Weapon

The RP2040's Programmable I/O (PIO) subsystem is genuinely unique. Eight state machines run tiny programs independently of the CPU cores, generating precisely timed digital signals. This enables protocols like WS2812 LED control, VGA video output, DPI display interfaces, and custom serial protocols without any CPU overhead. Each PIO state machine executes from a 32-instruction memory, running at up to the system clock speed (133MHz) with deterministic, cycle-accurate timing.

No ESP32 or Arduino has an equivalent feature. The ESP32's RMT (Remote Control Transceiver) peripheral handles WS2812 LEDs and IR protocols, but it is hardwired for specific signal patterns. PIO is a programmable processor — you write tiny assembly programs that define any digital protocol you need. Community examples include HDMI output, SD card interfaces, Ethernet MAC, logic analyzer capture at 100MHz+, and even a USB host stack implemented entirely in PIO. The ability to generate and parse arbitrary digital protocols makes the Pico the go-to board for interfacing with unusual or legacy hardware.

For sensor projects, PIO enables reading from multiple sensors simultaneously without CPU involvement. A typical example: one PIO state machine reads a DHT22 temperature sensor's proprietary single-wire protocol, another drives a string of WS2812 LEDs based on the temperature, and a third handles a custom serial display — all while both CPU cores are free to run your WiFi web server and data logging code. This parallelism is the Pico's real advantage over ESP32 boards, where the CPU must bit-bang non-standard protocols.

MicroPython vs CircuitPython Experience

The Pico W supports both MicroPython and CircuitPython, and the choice matters more than most beginners expect. MicroPython is the official Raspberry Pi recommendation — the Foundation contributed significant WiFi and BLE driver work, and the official documentation (the free "Connect to the Internet with Raspberry Pi Pico W" PDF guide) uses MicroPython exclusively. CircuitPython, maintained by Adafruit, offers a slightly different philosophy: it appears as a USB drive where you drag-and-drop code files, and includes a larger standard library of pre-built sensor drivers.

For WiFi projects, MicroPython on the Pico W has matured significantly since the board's 2022 launch. The network.WLAN interface handles connection management, and the urequests library handles HTTP. MQTT via umqtt connects to Home Assistant, AWS IoT, or any broker. A simple temperature-logging web server takes about 40 lines of MicroPython — readable enough that a beginner can understand every line. The official Raspberry Pi MicroPython documentation is arguably the best-written embedded programming tutorial available, with clear explanations and working code for every peripheral.

The C/C++ Pico SDK provides a third option for users who need maximum performance. The SDK gives direct access to PIO assembly programming, DMA channels, and interrupt handlers that MicroPython abstracts away. For production firmware that must be reliable and efficient, C/C++ compiles to a binary that boots in milliseconds and uses a fraction of the SRAM. The Arduino-pico core by Earle Philhower bridges the gap, letting Arduino IDE users program the Pico W with familiar setup() and loop() syntax while still accessing PIO and WiFi.

WiFi Projects on a $6 Board

The Pico W's CYW43439 radio provides 802.11 b/g/n WiFi and BLE 5.2 on a board that costs roughly six dollars. For that price, you get a capable wireless microcontroller that handles the most common IoT project archetypes: hosting a local web server for sensor dashboards, publishing MQTT telemetry to Home Assistant or AWS IoT, running a MicroPython-based REST API, and acting as a Bluetooth HID keyboard or mouse. The CYW43439 is a Broadcom/Infineon combo chip that handles both WiFi and BLE, freeing the RP2040's dual cores entirely for application logic.

Power consumption with WiFi active sits around 40mA average during periodic transmissions, spiking to roughly 200mA during TX bursts. In deep sleep with the WiFi radio off, the Pico W draws approximately 1.3mA — usable for USB-powered projects but impractical for coin-cell battery deployments. By contrast, the ESP32-C3 achieves 5uA in deep sleep, a 260x advantage that translates to years of battery life versus weeks. If your project lives on a desk, plugged into a USB charger or power bank, the Pico W's sleep current is irrelevant. If it lives outdoors on a battery, the ESP32-C3 is the only rational choice.

The comparison to the ESP32-C3 at a similar price point is instructive. The ESP32-C3 offers more SRAM (400KB vs 264KB), more flash (4MB vs 2MB), BLE 5.0 with better range, and a vastly more power-efficient sleep mode. The Pico W counters with PIO state machines (no equivalent on any ESP32), superior MicroPython documentation from Raspberry Pi, deterministic timing for custom protocols, and the broader Raspberry Pi ecosystem including official tutorials, forums, and the Pico SDK. The Pico W wins when your project needs PIO for driving WS2812 LEDs, generating VGA signals, or implementing custom serial protocols — tasks where cycle-accurate, CPU-independent timing is non-negotiable. It also wins when you value documentation quality and beginner-friendliness over raw specs.

Pico W vs ESP32-C3: The Budget Showdown

Both cost around $6-7 and offer WiFi with dual cores (the ESP32-C3 is single-core RISC-V, but the price comparison holds). The ESP32-C3 wins on power efficiency (5uA vs 1.3mA deep sleep — a 260x difference), SRAM (400KB vs 264KB), flash (4MB vs 2MB), and mature BLE capability. The Pico W wins on PIO state machines, MicroPython documentation quality, and the Raspberry Pi community's beginner-friendliness.

For battery projects, the ESP32-C3 is the clear winner. The 1.3mA deep sleep on the Pico W is not a sleep mode in any practical sense — it drains a standard 2000mAh lithium battery in about 64 days even while doing nothing. The ESP32-C3 at 5uA can last over a year on the same battery. If your project plugs into USB power permanently (a desk weather display, a smart home sensor hub, a WiFi-controlled LED installation), the Pico W's higher sleep current is irrelevant.

For general WiFi IoT, both are capable — choose based on which ecosystem you prefer. The Raspberry Pi Foundation's documentation, community forums, and tutorial quality are unmatched. Espressif's ESP-IDF framework is more powerful but has a steeper learning curve. Projects like WiFi thermometers, MQTT sensor nodes, web-controlled relays, and simple REST API servers work equally well on either platform. The Pico W's real edge is when you need PIO for non-standard hardware protocols, and the ESP32-C3's real edge is when battery life or BLE peripheral mode matters.

Common Gotchas

The Pico W has NO analog inputs with WiFi active by default — the ADC and WiFi share the same internal bus, causing noise on analog readings when WiFi is transmitting. If your project needs both WiFi and accurate analog sensor readings, you need to pause WiFi during ADC reads or use an external I2C ADC like the ADS1115.

MicroPython's WiFi library (network module) handles reconnection poorly. If the WiFi connection drops, the default behavior is to silently fail rather than auto-reconnect. You need to implement your own reconnection logic in a background task or watchdog timer.

The RP2040 has NO EEPROM and NO built-in filesystem on the 2MB flash. To store persistent data (WiFi credentials, calibration values, sensor logs), you need to partition the flash and use littlefs or write raw bytes — this is not as simple as Arduino's EEPROM.write(). MicroPython handles this transparently with its built-in filesystem, but C/C++ SDK users need to set it up manually.

The Pico W's onboard temperature sensor reads the RP2040 die temperature, not ambient temperature. It consistently reads 5-15°C higher than room temperature due to chip self-heating. Don't use it for environmental monitoring — add an external sensor (BME280, DHT22) for actual temperature readings.

Full Specifications

Processor

Specification Value
Architecture ARM Cortex-M0+ [1]
CPU Cores 2 [1]
Clock Speed 133 MHz [1]

Memory

Specification Value
Flash 2 MB [1]
SRAM 264 KB [1]

Connectivity

Specification Value
WiFi 802.11 b/g/n [1]
Bluetooth 5.2 [1]

I/O & Interfaces

Specification Value
GPIO Pins 26 [2]
ADC Channels 3 [2]
SPI 2 [2]
I2C 2 [2]
UART 2 [2]
USB Micro-USB (native USB 1.1) [2]
pio 8 PIO state machines [2]

Power

Specification Value
Input Voltage 1.8-5.5 V [1]
Deep Sleep Current ~1300 uA [1]

Physical

Specification Value
Dimensions 51 x 21 mm [2]
Form Factor Pico (breadboard-friendly) [2]

Who Should Buy This

Buy Learning MicroPython with WiFi

Raspberry Pi's MicroPython documentation is the best in the industry. The Pico W has official tutorials for every peripheral. At $6, the cost of failure is negligible.

Buy Driving WS2812 LED strips with custom timing

PIO state machines handle WS2812 timing precisely without CPU involvement. No DMA hacks, no tight loops — PIO generates the exact 800kHz signal the LEDs need while the CPU runs your application.

Skip Battery-powered outdoor temperature sensor

1.3mA deep sleep drains a 2000mAh battery in 64 days. The ESP32-C3 at 5uA lasts years. The Pico W was not designed for low-power battery operation.

Better alternative: ESP32-C3-DevKitM-1

Skip Complex web server or OTA updates

2MB flash and 264KB SRAM limit what you can serve and store. The ESP32-S3 with 8MB flash and 512KB SRAM handles web servers much more comfortably.

Better alternative: ESP32-S3-DevKitC-1

Ecosystem & Community

The Pico W benefits from the best MicroPython documentation in the industry (official Raspberry Pi guides), plus CircuitPython support from Adafruit, and an Arduino core by Earle Philhower. The RP2040's PIO subsystem has spawned a dedicated community of custom protocol implementations. Breadboard-friendly form factor with castellated pads for production embedding.

Primary Framework MicroPython 21,642 GitHub stars
Reddit Community r/r/raspberry_pi 3,200,000+ members
Community Projects 50,000+ posts on Raspberry Pi Forums — MicroPython
Accessories 300+ Pico-compatible modules compatible add-ons

Compatible Software

What to Build First

MicroPython Web Server + Temperature Loggerbeginner · 2-3 hours

Build a WiFi-connected temperature logger that serves a live web dashboard from the Pico W itself. No cloud service needed — the Pico hosts its own HTML page showing sensor history.

View tutorial →

Must-Have Accessories

Half-Size Breadboard~$5The Pico W's pin headers straddle a standard breadboard perfectly — essential for prototyping
Check price
BME280 Sensor Module~$6Temperature, humidity, and pressure sensor via I2C for weather station projects
Check price
WS2812B LED Strip (1m, 60 LEDs)~$10Addressable RGB LEDs driven by PIO state machines — the Pico's killer app
Check price
0.96" OLED Display (SSD1306)~$7128x64 I2C display for sensor readouts and status information
Check price

Tutorials & Resources

Frequently Asked Questions

Raspberry Pi Pico W vs ESP32-C3: which should I buy?

Choose the Pico W for MicroPython learning, PIO custom protocols, and Raspberry Pi's documentation. Choose the ESP32-C3 for battery projects (260x better deep sleep), more SRAM (400KB vs 264KB), and more flash (4MB vs 2MB). Both handle basic WiFi IoT equally well.

Can the Pico W run Linux?

No. The Pico W is a microcontroller, not a computer. It runs MicroPython or compiled C/C++ directly on the hardware. For Linux, use the Raspberry Pi Zero 2 W or Pi 5.

What are PIO state machines?

PIO (Programmable I/O) state machines are small processors on the RP2040 that generate precisely timed digital signals independently of the main CPU. They can implement custom protocols (WS2812 LEDs, VGA output, custom serial) with cycle-accurate timing.

Is the Pico W good for battery-powered projects?

Not ideal. Deep sleep current is approximately 1.3mA — 260x higher than the ESP32-C3's 5uA. A 2000mAh battery lasts about 2 months in sleep. For multi-year battery life, use an ESP32-C3 or ESP32-H2.

Does the Pico W support Arduino IDE?

Yes, via the arduino-pico core by Earle Philhower. However, MicroPython is the primary development environment for the Pico, with better documentation and official support than the Arduino integration.

Related Products