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). For an Arduino sketch it models that chip not at all: WiFi is simulated instead, the Arduino API over a network of ours, with no radio behind it, and real internet when you sign in and switch it on. 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. MicroPython and CircuitPython boot the official Pico W firmware, and for them the CYW43439 is modeled from its pins, so network.WLAN and wifi.radio join the same simulated network. This page is where all of it is written down.
- 9peripheral areas modeled
- 53projects ready to run
- Real timeon your own machine
What is modeled
Taken from the board's own contract document and put in plain words, with what is missing beside it.
Modeled
- 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
- UART1
- Serial2 on GP4 and GP5, or another UART1 pair from setTX() and setRX(): real frames on the wire, bit by bit
- 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, and real internet only when you sign in and switch it on
Not modeled
- A radio of any kind, and Bluetooth in every form. No 802.11, no LE, no GATT, and for an Arduino sketch no CYW43439. WiFi is simulated instead (WiFi.h, HTTPClient.h and WebServer.h over a network written in software, which reaches the real internet only when you sign in and switch it on), 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.
Open one and press Run
Each of these opens in the editor exactly as it is drawn here.
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 chaserBeginner
- Pico W MicroPython blink on GP15Beginner
- Pico W LED bar graph fills and emptiesBeginner
- Pico W fading LED with PWM on GP15Beginner
- Pico W RGB LED mixes orange with PWMBeginner
- Pico W button on GP14 with a pull-downBeginner
- Pico W tilt switch on GP14Beginner
- Pico W slide switch on GP14Beginner
- Pico W micro switch on GP14Beginner
- Pico W reed switch interrupt on GP14Beginner
- Pico W PIR motion sensor on GP14Beginner
- Pico W knob on GP28 dims an LED on GP15Beginner
- Pico W photoresistor divider on GP28Beginner
- Pico W thermistor thermometer on GP28Beginner
- Pico W water level sensor on GP28Beginner
- Pico W button switches an LED through an S8050Beginner
- Pico W relay through an S8050 switches an LEDIntermediate
- Pico W active buzzer beeps through an S8050Beginner
- Pico W passive buzzer plays notes with PWMBeginner
- Pico W WS2812 strip of eight on GP0Beginner
- Pico W I2C LCD1602 on GP6 and GP7Beginner
- Pico W fan motor both ways on a motor driverIntermediate
- Pico W water pump on a motor driverBeginner
- Pico W servo sweep on GP15Beginner
- Pico W joystick on GP27, GP26 and GP22Beginner
- Pico W 4x4 keypad on GP2 to GP9Intermediate
- Pico W MPR121 touch keyboard on I2C1Intermediate
- Pico W 74HC595 fills eight LEDsIntermediate
- Pico W 74HC595 counts 0 to 9 on a digitIntermediate
- Pico W four-digit display counts secondsIntermediate
- Pico W HC-SR04 distance on GP17 and GP16Intermediate
- Pico W DHT11 temperature and humidity on GP16Beginner
- Pico W MPU6050 acceleration and rotationIntermediate
- Pico W infrared remote decoder on GP17Intermediate
- Pico W MFRC522 reads and writes RFID cardsAdvanced
- Pico W light theremin: light sets the pitchIntermediate
- Pico W room temperature on an I2C LCDIntermediate
- Pico W alarm siren and lamp on a slide switchIntermediate
- Pico W passenger counter: PIR and four digitsIntermediate
- Pico W ten-second game with a tilt switchIntermediate
- Pico W traffic light with a countdown displayIntermediate
- Pico W guess the number: keypad and LCDAdvanced
- Pico W RFID music player with a WS2812 stripAdvanced
- Pico W fruit piano: MPR121, buzzer and RGB LEDAdvanced
- Pico W reversing aid: HC-SR04 and a beeperIntermediate
- Pico W tilt controller: MPU6050 points a servoAdvanced
- Pico W joins WiFi in MicroPythonBeginner
- Pico W WiFi weather and time on an I2C LCDIntermediate
- Pico W web server sets an RGB LEDAdvanced
- MicroPython WiFi station mode on a Pico WBeginner
- MicroPython WiFi access point mode on a Pico WBeginner
- MicroPython WiFi AP and station at once on a Pico WIntermediate
- MicroPython web server on a Pico W: switch the LEDAdvanced
Arduino libraries that compile as they are
Paste a tutorial that includes one of these and it builds. For any other library, the build names the Mokxi header that does the same job.
And 15 more, 23 in all: OneWire.h and DallasTemperature.h; Adafruit_BME280.h, Adafruit_BMP280.h and SparkFunBME280.h; RTClib.h; Adafruit_SHT31.h; Adafruit_PCF8591.h; Adafruit_ADXL345_U.h; LedControl.h; Adafruit_LEDBackpack.h; Adafruit_TCS34725.h; Adafruit_SGP30.h; Adafruit_INA219.h; Adafruit_ADS1X15.h; Adafruit_MCP23X17.h; Bounce2.h; HX711.h.
Tutorials that use this board
Each one ends in a running circuit, on this same board.
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 and no 802.11. Four made-up addresses under .mokxi answer inside this tab. Signed in, you can switch on Real internet in the Cloud panel, and HTTP and HTTPS requests to real hosts go out through Mokxi’s gateway. Bluetooth is not simulated at all.
Does it run MicroPython or CircuitPython?
Both. Pick MicroPython (main.py) or CircuitPython (code.py) in the board’s Firmware panel and Run boots the official Pico W firmware. Its CYW43439 is modeled from its pins, so Pin("LED") or board.LED lights the lamp, and network.WLAN or wifi.radio joins the simulated access point and fetches the .mokxi sites. Bluetooth, the access point mode’s clients and TLS are not simulated.
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.
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.
A RISC-V chip at 160 MHz, on the real memory map.
The classic Arduino, with an ATmega328P running at 16 MHz.
The Uno’s chip on a small board that fits a breadboard.
The big Arduino, with 54 digital pins and four serial ports.
An Uno-shaped board whose chip does its own USB serial.
A second RISC-V board, with 31 pins and simulated WiFi.
The classic ESP32 at 240 MHz, with simulated WiFi.
The ESP32-S3 at 240 MHz, with USB serial and an RGB LED.
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.