Raspberry Pi Pico W robot guide: wiring, power and MicroPython

A ₹500 board with Wi-Fi, 26 GPIOs and 16 PWM channels. Pin map, 3.3 V power rules and MicroPython code for a small connected rover.

Reference
RE-364
Published
Read
5 min

About the author · Sources, testing and AI policy

Raspberry Pi Pico W and a motor driver wired to a small robot chassis

The Raspberry Pi Pico W is the cheapest way to put Wi-Fi and a real dual-core microcontroller on a robot — about ₹500–₹800, with 26 GPIOs, 16 PWM channels and 264 KB of RAM. It is not an Arduino replacement by habit, but for a connected robot it is often the better board.

What the Pico W adds over a plain Pico

The Pico W uses the same RP2040 chip as the standard Pico: two Cortex-M0+ cores at 133 MHz, 264 KB of SRAM and 2 MB of flash. The W adds the CYW43439 radio for 2.4 GHz Wi-Fi and Bluetooth LE. Everything else — the pinout, the PIO blocks, the ADC — is the same, so a robot built on a Pico can move to a Pico W by changing one board.

The radio costs about ₹200–₹300 over the plain board and uses some internal pins, but it does not reduce the header pin count. You still get 26 GPIOs on the castellated edges, three 12-bit ADC inputs, two UARTs, two SPI buses, two I2C buses and 16 PWM channels. Eight PIO state machines can generate or read precise signal timings without loading either core.

FeaturePico WArduino UnoESP32 DevKit
Logic voltage3.3 V5 V3.3 V
CPUDual-core 133 MHz16 MHzDual-core 240 MHz
SRAM264 KB2 KB520 KB
Wi-Fi2.4 GHzNo2.4 GHz
ADC3 inputs, 12-bit6 inputs, 10-bitADC1 only with Wi-Fi on
PWM16 channels6 pins16 channels
Typical price₹500–₹800₹450–₹750₹350–₹700

Pin map for a small robot

JobPinsNotes
Motor driver TB6612FNGGP14, GP15, GP16, GP17Two PWM inputs and two direction pins
IR line sensorsGP4, GP5Digital inputs; 3.3 V-safe sensors only
HC-SR04 ultrasonicGP6 (trig), GP7 (echo)Echo is 5 V; use a divider before the pin
I2C display or IMUGP0 (SDA), GP1 (SCL)I2C0 defaults in MicroPython
ServoGP15 or any GPIO50 Hz PWM; keep the servo on its own 5 V supply
Battery senseGP26 (ADC0)Divider to keep the pin under 3.3 V
Onboard LEDNot GP25On the Pico W the LED is on the radio chip, controlled as Pin("LED")

The last row catches almost everyone. On a plain Pico the LED is GP25; on the Pico W it is connected to the CYW43439 and MicroPython exposes it as Pin("LED"). Code copied from a Pico tutorial that toggles GP25 will run without error and do nothing.

Power: 3.3 V logic, 5 V input, no 2S direct

The Pico W has a 5 V VBUS pin, a VSYS pin that accepts 1.8–5.5 V, and a 3.3 V output pin. Feed a regulated 5 V into VBUS, or a 3.7–5 V source into VSYS. A 2S 18650 pack is 6.0–8.4 V and must go through a buck converter first; connecting it to VSYS exceeds the absolute limit.

  • Do not power the robot through the 3V3 pin. It is an output, and back-feeding it bypasses the onboard regulator.
  • The 3V3 pin can supply roughly 300 mA to external sensors and logic. Motors and servos never come from it.
  • Use a TB6612FNG or DRV8871 driver with 3.3 V-compatible logic. An L298N expects logic highs above about 4.5 V and may ignore a 3.3 V signal.
  • Join the grounds between the Pico, the driver and the battery. A missing ground makes the driver behave randomly.

A 2S pack through a 5 V buck module is the usual supply. The power guide covers current budgeting, and the LM2596 module is the common cheap regulator.

MicroPython: drive and steer without blocking

MicroPython is the fastest way to get a Pico W robot moving. The PWM API uses 16-bit duty values, so speed is a number from 0 to 65535 rather than Arduino’s 0–255.

from machine import Pin, PWM
import time

STBY = Pin(13, Pin.OUT); STBY.value(1)
AIN1 = Pin(14, Pin.OUT); AIN2 = Pin(15, Pin.OUT)
PWMA = PWM(Pin(16)); PWMA.freq(20000)
BIN1 = Pin(17, Pin.OUT); BIN2 = Pin(18, Pin.OUT)
PWMB = PWM(Pin(19)); PWMB.freq(20000)

def drive(left, right):
    # left and right: -65535 to 65535
    AIN1.value(left >= 0); AIN2.value(left < 0)
    BIN1.value(right >= 0); BIN2.value(right < 0)
    PWMA.duty_u16(abs(left))
    PWMB.duty_u16(abs(right))

drive(40000, 40000)   # forward at about 60 percent
time.sleep(2)
drive(30000, -30000)  # spin in place
time.sleep(1)
drive(0, 0)

For Wi-Fi, connect once in the background and keep the motor loop on a fixed schedule. A blocking urequests.get() inside the drive loop makes the robot stutter; use a timer, a second core or a short socket timeout instead.

import network, time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("your-ssid", "your-password")

for _ in range(20):
    if wlan.isconnected():
        break
    time.sleep(0.5)

print("IP:", wlan.ifconfig()[0] if wlan.isconnected() else "not connected")

Pico W, ESP32 or Arduino?

Choose the Pico W when you want a clean 3.3 V board, lots of PWM, precise PIO timing and a strong MicroPython or C SDK. Choose an ESP32 when you need more RAM, Bluetooth Classic, camera support or a huge library ecosystem. Choose an Arduino Uno when every sensor you own is 5 V and you want the shortest path to a working circuit.

The Pico W is a poor fit for 5 V sensors without level shifting, for heavy Wi-Fi streaming, and for projects that depend on an Arduino shield. It is an excellent fit for a connected rover, a sensor logger or a robot that needs more than six PWM outputs. The board buying guide compares the whole family in rupee terms.

Common questions

Is the Raspberry Pi Pico W a Raspberry Pi?

No. It is a microcontroller board with an RP2040 chip, not a Linux computer. It runs one program at a time from flash and has no operating system, but it boots instantly and is far easier to power from a battery.

Can the Pico W run Arduino code?

Yes, through the Arduino-Pico core, but most examples in this guide use MicroPython. The Arduino core gives you the familiar IDE and libraries at the cost of some setup.

How do I power a Pico W robot?

Use a 5 V regulated supply into VBUS, or 3.7–5 V into VSYS. A 2S pack must go through a buck converter. Do not feed the 3V3 pin, and do not run motors from the board.

Why does my Pico W LED not blink on GP25?

On the Pico W the LED is connected to the Wi-Fi chip, not GP25. Use Pin("LED") in MicroPython.

Can I use 5 V sensors with the Pico W?

Only with a divider or level shifter on the signal line. The GPIOs are 3.3 V and are not 5 V tolerant.

Related: Pico W component guide, Raspberry Pi robot guide, TB6612FNG motor driver.

If you are weighing the Pico against other boards, Arduino vs ESP32 for robotics puts all three side by side.

The Pico W can act as a ROS 2 device too; see the micro-ROS tutorial for the agent setup.

Sources and further reading

Last reviewed: October 2026. Specifications describe the Raspberry Pi Pico W; the newer Pico 2 W uses a different chip. Prices are Indian retail ranges. Not bench-tested by this site.

Pass it onWhatsAppLinkedIn

Keep reading

Continue learning

The Build Note

One short email when something is worth your bench time.

A new build sheet, a part price that moved, or a mistake worth avoiding. No daily drip, no recycled news.

One short email when a build or a price is worth your time. Unsubscribe in one click.