Help center

pulpLab help

Program and test your boards: code, upload, serial monitor and plotter

Open pulpLab pulpLab ›

pulpLab is a programming environment for microcontroller boards that runs in your browser. You write MicroPython or Arduino C++, send the program to an ESP32, a Raspberry Pi Pico or an Arduino over USB, and follow the console, the serial monitor and live charts. No board at hand? Virtual boards let you try things out.

Getting started

  1. Open pulpLab. The first time you open it, an example appears on its own so you can see what pulpLab looks like: the ESP32 weather station project, running on a virtual board (nothing to plug in), with its temperature, humidity and light curves in the Plotter. Start from scratch or Remove the example clears it in one click, and File › See the example again brings it back, as does Run on the virtual board on the home page. Nothing is saved until you change it. The home page tells you whether your browser can talk to USB boards (Chrome or Edge on a computer) and whether the compile relay is running (Arduino C++ needs it).
  2. Choose New MicroPython project, New Arduino sketch or one of the Examples (blink the LED, read a sensor, servo sweep, ESP32 Wi-Fi, NeoPixel rainbow, button and interrupt, weather station).
  3. Set the Target board in the top bar, then click Connect: USB board… opens the port picker, or choose a virtual board (ESP32, Pico, Uno, Mega). pulpLab recognises most boards as soon as they are plugged in. The supported boards are ESP32 (DevKit, S3, C3), Raspberry Pi Pico (Pico, Pico W, Pico 2), Arduino Uno, Nano and Mega 2560, STM32 Nucleo-64 (compile only) and Pyboard.
  4. In MicroPython, Run (F5) starts the program without writing it to the board; Send to board (Ctrl+U) copies the files to it, and the main program becomes main.py, which starts at every power-up. In Arduino, Verify (Ctrl+R) compiles and Upload (Ctrl+U) compiles then writes the program.
  5. Follow the output in the Console, Monitor, Plotter and Problems tabs. Errors are underlined in the editor, on the right line.

Common tasks

How do I install MicroPython on my board?

Connect the board, open the ⋯ menu (More actions) in the top bar, then Install MicroPython…. Choose the board and the source: Official MicroPython (downloaded from micropython.org only after you agree), File from the computer or, for the virtual board, Test image. Tick Erase the whole flash first for a first install, confirm, then Write to flash. For a Raspberry Pi Pico, put the board in BOOTSEL mode and pick its “RPI-RP2” drive: the .uf2 file is copied onto it. If the compile relay is not running, download your board's file yourself from micropython.org, then pick it in the window. For a board without MicroPython (Arduino), the same menu entry is called Write a firmware….

How do I compile Arduino C++?

Arduino C++ has to be compiled before it is uploaded, which a browser cannot do on its own: pulpLab relies on a compile relay running on your computer, with the Arduino compiler installed. Without the relay, editing, the monitor, the plotter and everything in MicroPython work, but Verify and Upload explain what to do. Everything is covered in pulpLab and compiling. You can also compile elsewhere and upload the resulting file.

How do I upload a file compiled elsewhere?

Use ⋯ › Upload a file (.bin, .uf2, .hex)…, or drop the file on the window. pulpLab checks the file before writing: .hex for AVR Arduinos (Uno, Nano, Mega), .bin for ESP32 boards (with the write address), .uf2 for boards with a USB drive such as the Pico.

How do I use the serial monitor?

In the Monitor tab, choose the Baud rate (115,200 by default) and the Line ending, then type the text to send. Timestamps, Autoscroll, search in the output and Export as text help with analysis.

How do I plot data?

Have the board print numbers, one line per reading: 12 34 or temp:21.5 hum:48. The Plotter tab draws one curve per series; click a series to hide it, adjust the window, Pause, or Export as CSV.

How do I organise my project's files?

The Project files panel (left bar) lets you create a New file, Import files, rename, delete, and Set as main program (the star) for the file that starts first. The magnifier Search the project looks through all files. You can also drop a file onto the window.

How do I restart or disconnect the board?

In the ⋯ menu: Soft reset (Ctrl+D, MicroPython: main.py starts again), Reset the board and Disconnect. The Board panel (on the right) shows the recognised board, the MicroPython version, Wi-Fi status, servos and, on Arduino, the program memory used; a box reminds you of the board's voltage (5 V or 3.3 V).

How do I manage files on the board?

With MicroPython, the Board files panel lists what is on the board (Read the board files). From there you can create a folder, run a file, download it to your computer, delete it (permanently, after confirmation) or Send files to the board.

How do I test without a board?

Under Connect, pick a virtual board. The virtual ESP32 and Pico run MicroPython with their pins, LEDs, NeoPixels, servos, simulated Wi-Fi and an adjustable Simulated environment (temperature, humidity, light, potentiometer, distance, pressure). The virtual Uno and Mega only simulate the bootloader: the upload is checked end to end, but the program is not executed.

How do I reuse the pinout of a pulpCircuit board?

Open or drop the .pboard file exported by pulpCircuit: pulpLab generates pins.h (Arduino) or pins.py (MicroPython) with one constant per schematic signal. If no project is open, a new project is created for the board's microcontroller.

How do I drive a GRBL machine?

The GRBL tab is for laser engravers, milling machines and plotters running GRBL (115,200 baud): status, homing, unlock, hold, resume, emergency stop, commands, and Send a G-code file line by line. Keep the emergency stop within reach; to prepare a laser job, see also pulpCase.

Supported formats

FormatOpenSaveNotes
pulpLab (.plab)YesYesComplete project; it is a ZIP archive you can unzip to get your files back.
Arduino sketch (.ino), .h, .cpp, .cYesInside the .plabA file opened on its own creates a project.
MicroPython (.py)YesInside the .plabSame.
pulpRobot program (.psketch)YesNoOpens as a new project.
pulpCircuit board (.pboard)YesNoGenerates pins.h or pins.py.
Firmware .hex, .bin, .uf2Yes (to upload)NoChecked before writing.
Monitor outputNoYes (text)Export as text.
Plotter dataNoYes (CSV)Export as CSV.
G-code (.gcode, .nc, .gc, .ngc, .tap)Yes (GRBL sending)NoGRBL tab.

Known limitations:

  • C++ compilation goes through the compile relay and the Arduino compiler installed on your computer; it does not happen in the browser.
  • The serial port only exists in Chrome or Edge on a computer; copying a .uf2 to the BOOTSEL drive needs them too.
  • STM32 Nucleo: compile only, no upload from pulpLab. Pyboard: MicroPython over the serial port, without firmware installation.
  • The virtual Arduino does not run code; the virtual MicroPython board reproduces the main modules, not the exact speed or real-time behaviour.
  • Project files cannot be downloaded one by one: save the .plab and unzip it to get your .ino or .py files.

Keyboard shortcuts

ShortcutAction
F5Run (MicroPython); Upload (Arduino)
Shift+F5Stop the program
Ctrl+USend to board (MicroPython); Upload (Arduino)
Ctrl+RVerify (compile, Arduino)
Ctrl+S / Ctrl+Shift+SSave / Save as (.plab)
Ctrl+OOpen
Ctrl+FEditor: find in file
Ctrl+Z / Ctrl+YEditor: undo / redo
Ctrl+/Editor: comment or uncomment the line
Ctrl+SpaceEditor: suggest a completion
TabEditor: indent
EnterConsole: send the command (Shift+Enter: new line)
↑ / ↓Console: command history
Ctrl+CConsole: interrupt the program (with no text selected)
Ctrl+DConsole: soft reset

On a Mac, use Cmd instead of Ctrl, except in the console, where Ctrl+C and Ctrl+D stay on Ctrl. Ctrl+J opens pulpAssist.

AI in pulpLab

pulpLab does not use an AI model. If you have set up pulpAssist, the assistant can read the open project (files, target board, errors, latest board output) and offer to read or edit project files, always after your confirmation and as a single undoable step. After a compile or runtime error, the Explain button passes the message to it for a plain-language explanation and a suggested fix.

The assistant never sends code to the board and never uploads anything: running and uploading always take a click from you. The files and messages it reads are sent to the service configured for the assistant. Always review suggested code before running it on a real board.

FAQ and troubleshooting

My board does not appear in the port list.

Use Chrome or Edge on a computer, try another cable (some only charge) and close any other software using the port (Arduino IDE, serial terminal). On Windows, a board with a CH340 or CP210x chip may need its driver.

“The board does not answer” during upload.

Check the port, the Target board and the cable. For an older Arduino Nano, choose “Arduino Nano (old bootloader)”. On some ESP32 boards, hold the BOOT button as writing starts.

“Compile relay not running”.

Arduino C++ cannot be compiled without the compile relay. Follow pulpLab and compiling, or work in MicroPython, which does not need it.

My program restarts every time I plug the board in.

That is what main.py is for: Send to board replaces the board's files and the main program starts at every power-up. For a quick test, use Run instead.

Nothing shows up in the plotter.

The board must print numbers separated by spaces, or name:value pairs, one line per reading, at the baud rate chosen in the monitor.

Where are my projects?

On this device, in the space reserved for the browser (Recent projects on the home page), with a recovery draft; clearing the browser's data erases them. File › Save creates a .plab file on your disk. See documents and backups.

Does pulpLab work offline?

Yes, once loaded: editing, MicroPython, virtual boards, the monitor and the plotter. Downloading MicroPython needs a connection, and the Arduino compiler must have received support for your boards beforehand.

In the same space