Source: https://mokxi.com/boards/pico-w
Updated: 2026-09-27

Board

# Raspberry Pi Pico W simulator, and what it will not pretend

The Pico W is the Raspberry Pi Pico with a CYW43439 beside it. Mokxi models the RP2040 exactly as it models a Pico (same core, same forty pins) and models that chip not at all. WiFi here is simulated instead: the Arduino API over a network of ours, with no radio and no real internet behind it. The on-board LED works, and not off GP25: on this board it hangs off the wireless chip, and the runtime drives it down the same path. This page is where both are written down.

Sign up free

- 8 peripheral areas modeled
- 4 projects ready to run
- Real time on your own machine

Click to open it in the editor

The board is running real firmware right now. Click it to open the circuit in the editor.

The model

## What is modeled

Taken from the board's own contract document and put in plain words, with what is missing listed underneath.

Core

Cortex-M0+ (ARMv6-M) at 125 MHz, with the datasheet cycle count of every instruction

SIO GPIO

Real register offsets on IO_BANK0, PADS_BANK0 and SIO, with the 55 k pad pulls

TIMER

A 64-bit microsecond counter with four alarms, which park the core during delay()

UART0

Paced at the configured baud rate, wired to the serial monitor

PWM slices

Eight slices, two channels each, so analogWrite works on every GPIO pin

The header

All forty pins in the board’s own order, the same names, the same rails

The on-board LED

Not on GP25 here: LED_BUILTIN goes to the wireless chip’s own GPIO 0, the way the Arduino core drives it on the real board. On or off, with no PWM behind it

WiFi, simulated

WiFi.h, HTTPClient.h and WebServer.h over a network written in software: no radio, no 802.11, no real internet

### Not in the model

- A radio of any kind, and Bluetooth in every form. No 802.11, no CYW43439, no LE, no GATT. WiFi is simulated instead (WiFi.h, HTTPClient.h and WebServer.h over a network written in software, with no real internet behind it), and every page that mentions it says so. A sketch that reaches for Bluetooth will not compile, because the runtime does not declare it.
- GP25 as the LED. On a Pico W it is WL_CS, and driving it high lights nothing here and nothing on a real Pico W. LED_BUILTIN is the lamp, and it goes to the wireless chip, but there is no PWM on that link, so analogWrite on it does nothing and a breathing LED wants a header pin.
- GP24 as VBUS sense and GP23 as the regulator mode pin. On this board both belong to the CYW43, so nothing drives them.
- Everything the Pico model leaves out as well: the second core, PIO, DMA, the ADC, SPI, I2C, USB and the clock tree.

Start here

## Open one and press Run

Each of these opens in the editor exactly as it is drawn here.

Projects

## Every built-in project on the Pico W

Each has its own page with the circuit running, the code and a parts list.

- Pico W chaser

Libraries

## Arduino libraries that compile as they are

Paste a tutorial that includes one of these and it builds: each is written for Mokxi, on its own drivers, under the name the tutorials use. For any other library the build names the Mokxi header that does the same job.

Servo.h

attach, write, writeMicroseconds, read, detach, on any pin

Wire.h

I2C as a master; Wire.begin() puts it on GP4 (SDA) and GP5 (SCL)

SPI.h

transfer and transactions, on the board’s usual SPI pins

EEPROM.h

read, write, update, get, put and EEPROM[i], kept in 4 KB of RAM, which a reset clears: this board has no EEPROM to write

LiquidCrystal_I2C.h

the 16x2 LCD behind its I2C backpack

Adafruit_GFX.h and Adafruit_SSD1306.h

the 128x64 I2C OLED: text, pixels, lines, rectangles, circles, triangles and bitmaps

DHT.h

the DHT11 and DHT22: temperature, humidity and the heat index, as floats you can print

OneWire.h and DallasTemperature.h

DS18B20 thermometers, any number on one pin, found by the 1-Wire search

Adafruit_BME280.h, Adafruit_BMP280.h and SparkFunBME280.h

the Bosch pressure sensors: temperature, pressure, humidity and altitude

RTClib.h

the DS3231 and DS1307 clocks, with DateTime and TimeSpan

Adafruit_SHT31.h

the SHT31’s temperature and humidity, CRC checked

LedControl.h

MAX7219 eight-digit displays and 8x8 matrices: digits, characters, rows and single LEDs

Adafruit_LEDBackpack.h

the HT16K33 four-digit backpack: numbers, raw segments, the colon, brightness and blink

Adafruit_TCS34725.h

the TCS34725’s red, green, blue and clear counts, lux and color temperature

Adafruit_SGP30.h

the SGP30’s CO2eq and TVOC, its baseline and humidity compensation

Adafruit_INA219.h

current, bus voltage and power through the INA219’s shunt

Adafruit_ADS1X15.h

the ADS1115’s four sixteen-bit inputs, single or differential

Adafruit_MCP23X17.h

the MCP23017’s sixteen pins, one at a time or a port at once

HX711.h

the HX711 load cell amplifier: tare, set_scale and get_units, the units as floats you can print

## Questions

Is it free?

Yes. Every board and every part is on the free plan, with no account needed.

Can it connect to WiFi?

To a simulated one, yes, and it says plainly that it is simulated. Your sketch uses the real Arduino calls (WiFi.begin, WiFi.status, HTTPClient, WebServer), and the board joins a network, fetches a page and serves one. Underneath there is no CYW43439, no 802.11 and no real internet: four made-up addresses under .mokxi exist and nothing a sketch does leaves this tab. Bluetooth is not simulated at all.

Why does the on-board LED never light?

Because on a Pico W GP25 is WL_CS, not the LED. The lamp is on the wireless chip’s own GPIO 0, and digitalWrite(LED_BUILTIN, HIGH) gets there: the runtime sends it over the same path the Arduino core uses on the real board. Writing 25 lights nothing here and nothing on a desk.

Is the firmware different from a Pico’s?

No. Same chip, same memory map, same ELF. A program built for a Pico runs here unchanged, and the editor uses the same compiler and the same runtime for both.

Which should I pick?

If your circuit does not need real wireless, either. Pick the Pico W when that is the board on your desk, so the pinout, the LED and the WiFi code match what you will find.

Also here

## The other boards

Every one of these runs today, and every one is free.

Looking for the shorter introduction? See the Raspberry Pi Pico W simulator page.

ESP32-C3-DevKitM-1
runs now

A RISC-V core at 160 MHz with GPIO, UART, the SYSTIMER, a twelve-bit ADC on GPIO 0 to 4 and LEDC PWM on any pin, on the real memory map.

Firmware for the modeled peripherals uses the board’s memory map. The contract also marks register addresses inside the SAR ADC and LEDC that are still unverified.

Open the board page

Arduino Uno R3
runs now

A complete ATmega328P, with three timers in every mode, USART0, the ADC, interrupts and sleep.

Blink, serial, a held button and a hardware PWM fade, at 16 MHz and real time.

Open the board page

Arduino Nano
runs now

The Uno's ATmega328P on a board 45 by 18 mm, so it pushes into the breadboard instead of standing beside it.

Two more analog inputs than an Uno, and the same firmware runs on both.

Open the board page

Arduino Mega 2560
runs now

The big Arduino: fifty-four digital pins, sixteen analog inputs and four serial ports, on the ATmega2560.

Everything an Uno sketch knows how to do, with enough pins left over to do it to twelve things at once.

Open the board page

Arduino Leonardo
runs now

An Uno-shaped board whose USB goes to the chip itself: Serial is a USB CDC endpoint and Serial1 is pins 0 and 1.

The ATmega32U4 with its ten-bit timer, fourteen ADC channels and five external interrupts, at 16 MHz.

Open the board page

ESP32-C6-DevKitC-1
runs now

A second RISC-V board: thirty-one GPIOs, 512 KB of SRAM in one window, UART0, the SYSTIMER, a twelve-bit ADC on GPIO 0 to 6 and LEDC PWM on any pin.

The contract says plainly which addresses come from the manual, which are believed rather than verified, and what is not modeled at all.

Open the board page

ESP32 DevKit V1
runs now

The classic ESP32 on an Xtensa LX6 at 240 MHz: the GPIO matrix, UART0, timer group 0, a twelve-bit ADC1 and the eight LEDC PWM channels, on the real memory map.

One core where the chip has two, no radio and no FPU. Your own sketch compiles in the tab.

Open the board page

ESP32-S3-DevKitC-1
runs now

The ESP32-S3 on an Xtensa LX7 at 240 MHz: GPIO matrix, UART0, USB serial, ADC1, LEDC PWM and the RMT driving the RGB LED, on the real memory map.

One core where the chip has two, no radio and no FPU. Your own sketch compiles in the tab.

Open the board page

ESP8266 NodeMCU V1.0
runs now

The Xtensa LX106 at 80 MHz in the call0 ABI, with D0 to D8 that are not GPIO numbers, two active-low LEDs, and PWM done in software because the chip has none.

WiFi uses a simulated network, with no radio or real internet. The ADC is the one block whose registers are this model’s own, because Espressif never published the chip’s.

Open the board page

Raspberry Pi Pico
runs now

RP2040 on our own ARMv6-M core, with SIO GPIO, the 1 MHz timer and alarms, UART0 and eight PWM slices.

Blink, a button, serial and a fade at real time, with sleep parked on WFI.

Open the board page

Seeed XIAO SAMD21
runs now

A thumbnail-sized Cortex-M0+ at 48 MHz: eleven pads, every one of them an analog input, with PWM on ten of them.

Serial is the chip’s own USB, modeled as a byte pipe with no stack above it, and Serial1 is a real USART on D6 and D7.

Open the board page

BBC micro:bit V2
runs now

The nRF52833 on our own Cortex-M4 core at 64 MHz, with GPIO, GPIOTE, three TIMERs, RTC0 and UARTE0 on the real register map.

The 5x5 LED matrix scanned as the hardware scans it, buttons A and B, the speaker and three rings on the edge connector.

Open the board page

ATtiny85
runs now

A whole microcontroller in an 8-pin DIP, straight into the breadboard: six I/O, two timers, an ADC and a USI.

Blink, a button on INT0, a knob on the ADC and a serial port it bit-bangs for itself.

Open the board page

STM32F411 Black Pill
runs now

Cortex-M4 with Thumb-2, NVIC and SysTick at 84 MHz, with GPIO, TIM2 to TIM5 and USART1 on the real register map.

Blink on PC13, a button, serial and a PWM fade, all at real time.

Open the board page

STM32 Blue Pill (F103)
runs now

Cortex-M3 at 72 MHz, with GPIO on the F1’s CRL and CRH, TIM1 to TIM4, USART1 and a twelve-bit ADC.

Blink on PC13, a button, serial with a live reading, and a PWM fade, all at real time.

Open the board page

Arduino Uno R4 Minima
runs now

Renesas RA4M1, Arm Cortex-M4 at 48 MHz, in an Uno’s shape and on an Uno’s 5 V pins. Modeled: the PFS port block, GPT PWM on the six tilde pins, SCI2 as Serial1 on D0 and D1, and a fourteen-bit ADC that analogRead reads ten bits of.

Not modeled: a USB stack (Serial is a byte pipe with no enumeration behind it), the ICU, so there is no attachInterrupt, and the AGT. The contract says plainly which addresses come from the manual and which are believed rather than verified.

Open the board page

Arduino Pro Mini
runs now

The Uno’s ATmega328P on the smallest Arduino there is, with no USB on it, in both builds: 5 V at 16 MHz and 3.3 V at 8 MHz.

The 3.3 V board really runs at 8 MHz, so a sketch built for 16 MHz keeps half time on it, as it does on the bench.

Open the board page

Arduino Micro
runs now

The Leonardo’s ATmega32U4 on a board that pushes into a breadboard, with the L LED on pin 13 and the SPI pins on holes of their own.

Serial is the chip’s own USB and Serial1 is pins 0 and 1, and the Leonardo’s programs run on it unchanged.

Open the board page

SparkFun Pro Micro
runs now

The ATmega32U4 in a Pro Mini’s footprint with a USB socket on the end, running the Leonardo’s programs.

No LED on pin 13: its lamps are RX and TX, lit by pulling their pins low.

Open the board page

Wemos D1 mini
runs now

The NodeMCU’s ESP8266 on a board a third the size, with the same D0 to D8 names and only the holes that do something.

WiFi on a simulated network, and your own sketch compiles in the tab.

Open the board page

ESP-01S
runs now

An ESP8266 with eight pins, four of them GPIO, and a blue LED that lights when its pin is low.

Wired with jumpers, because its two rows will not sit in a breadboard. WiFi is simulated.

Open the board page

Seeed XIAO ESP32-C3
runs now

The ESP32-C3 at 160 MHz on the XIAO’s thumbnail outline: fourteen pads, and D0 to D10 that are the XIAO’s numbers, not GPIOs.

No user LED to blink, WiFi on a simulated network, and sketches that compile in the tab.

Open the board page

ESP32-C3 SuperMini
runs now

The smallest ESP32-C3 board in common use, sixteen pins named by GPIO, at 160 MHz.

Its blue LED on GPIO 8 lights when the pin is LOW, the other way around from the DevKit’s.

Open the board page

Arduino Uno R4 WiFi
runs now

The Uno R4’s RA4M1 with a 12 x 8 LED matrix to draw on through Arduino_LED_Matrix.h.

WiFi through WiFiS3.h on a simulated network: no radio, no ESP32-S3 in the model, no real internet.

Open the board page

## Try it on your own firmware

What you build here runs on the board on your desk, unchanged. Nothing to install and no account needed.

Start building Open the editor
