Skip to the content
4 layers70 × 54 mmPicoLab, the printed circuit board in 3D

Web-GUI Embedded Multitool

Size
70 × 54 mm
Copper layers
4
Thickness
1.7 mm
Parts
285
Nets
176
Pads
890
Tracks, vias
2,224, 330
Pours
12
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
18 Oct 2026
Updated
2 Nov 2026

Overview

PicoLab is an open-source printed circuit board by CoretechR, from the CoretechR/PicoLab repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 70 × 54 mm with 285 parts on 176 nets, routed with 2,224 tracks and 330 vias.

It is built around the IS25LP064D-JKLA3-TR, TLV9004IPWR-MS and SN74LVC1T45DBV, with the SRV05-4, LM66100DCK and AP2112K-3.3 among its other parts. Its parts include 129 resistors, 69 capacitors, 32 ICs, 16 transistors and 8 diodes. It belongs with the interfaces and adapters and sensors and measurement boards and the RP2040 and RP2350 boards of this library.

Main components

12

README

README.md

Pico.Lab - Web-GUI Embedded Multitool

License Microcontroller

Pico.Lab YouTube Video

Overview

Pico.Lab is an open-source embedded bring-up tool built around the Raspberry Pi RP2350 microcontroller. It offers an easy-to-use, window-based web user interface directly served from on-device flash over a virtual USB Ethernet link. No host software or drivers are required - just plug it in and open your browser. The interface provides a 4-channel scope, an 8-channel logic analyzer, and an adjustable power supply with real-time monitoring. It also integrates GPIO control, a data logger, and bus masters for UART, SPI, and I2C communication.

Features

  • Easy to use: A fast and intuitive window-based user interface lets you control all the integrated tools easily. It supports multitasking across its tools, windows-resizing and customization. For automation you can use the integrated CLI via the virtual COM port.
  • No extra software or hardware needed: The entire graphical interface is hosted on device using a lightweight web server. No WebUSB needed - It works seamlessly in any browser on any modern operating system. At only 200 KB in size, the interface fits comfortably in the Pico's RAM and loads in a fraction of a second.
  • Integrated tools: The firmware enables the Raspberry Pi Pico to become a multi-functional instrument for analog and digital debugging. The following tools are implemented so far:
    • Oscilloscope: 4-channel analog capture with configurable timebase, voltage scaling, trigger settings, and continuous/single-shot modes. Utilizes overclocked ADC (192MHz) and DMA for high-speed continuous streaming for a bandwidth of around 400 kHz.
    • GPIO Control: Directly read, write, and configure the 8 GPIO pins. Supports input/output modes, Pull-up configuration, and PWM control.
    • Data Logger: Long-term, slow-rate sampling of both analog and digital pins with direct .csv export functionality.
    • Logic Analyzer: 8-channel digital capture (D0–D7) capable of capturing at up to 100 MS/s. Features adjustable timebases, edge triggering, and Run-Length Encoding (RLE) compression for high-speed transmission. Integrated decoders for UART, I2C and SPI.
    • UART Terminal: Serial bridge for interacting with target devices. Includes baud rate configuration, CR/LF ending controls, and live TX/RX logging.
    • Power Supply Controller: Real-time control and monitoring of adjustable voltage/current rails (5V, 3.3V, and a fully adjustable output). Live telemetry graphing for current draw and voltage levels. Only available when using the Pico.Lab board.
    • I2C & SPI Masters: Dedicated bus tools to scan for I2C devices, configure bus baud rates, and execute raw read/write transactions.

Software

Pico.Lab is built entirely on native, lightweight frameworks to maximize the RP2350's performance.

  • Firmware Backend (C):
    • Built on the Raspberry Pi Pico SDK.
    • TinyUSB: Provides USB CDC (Serial CLI) and RNDIS/ECM (Virtual Ethernet).
    • lwIP: Handles TCP/IP, DHCP (assigning an IP to your PC), DNS (resolving pico.lab), and the embedded HTTP server.
    • Dual-Core Processing: Core 0 handles networking, USB, and UI serving. Core 1 is dedicated entirely to high-frequency ADC/DMA sampling and logic capturing.
  • Web Frontend (HTML/JS/CSS):
    • Zero-dependency Vanilla JavaScript UI. Runs fully offline.
    • WinBox.js: Used for the robust, draggable, desktop-like window manager.
    • Server-Sent Events (SSE): Pushes high-speed live telemetry data from the Pico to the browser over TCP.

Hardware

Pico.Lab is designed to run best on the custom Pico.Lab board, but is fully compatible with standard Raspberry Pi Pico (RP2040) and Raspberry Pi Pico 2 (RP2350) boards out of the box. So if you have a Pico lying around, give the .uf2 files a try!

The Pico.Lab board adds the following features:

  • Support for logic voltages from 1.65V to 5.5V
  • Adjustable power rail (1-5V)
  • 4x Analog Channels with 12V input range and op-amp buffer
  • 8x Digital Inputs/Outputs with configurable pull-ups
  • Current measurement for 5V, 3.3V, and adjustable rail
  • Dedicated SPI, I2C and UART pins
  • Protection against ESD, over-voltage, over-current, reverse current

Current State of this Project

My main goal for this project was to be an easy-to-use toolkit for simple debugging applications. You want to know why an I2C sensor does not respond, what current your Wifi module is drawing or why a servo does not move? Just plug your hardware in and start debugging without checking a manual first. But since this is running on a 1$ microcontroller over a USB 1.1 link, don't expect the performance of professional instruments. The Pico will do significantly worse than any dedicated scope or logic analyzer. However, with the existing hardware there is still room for improvements, for example:

  • Save/Restore tool configurations
  • JTAG support
  • a servo tester app

Getting Started

Flashing the firmware

  1. Download the corresponding .uf2 file for your Rp2040 or RP2350.
  2. Put the device into BOOTSEL-Mode and drop the .uf2-File into its volume.

Connecting to Pico.Lab

  1. Connect the Pico.Lab board to your computer via USB.
  2. The board will mount as a virtual network adapter. It automatically acts as a DHCP server.
  3. Open your web browser and navigate to:

Serial CLI

If you prefer a command-line interface, Pico.Lab also acts as a standard USB Serial (CDC) device. Connect via your favorite serial terminal (e.g., PuTTY) at 115200 baud. Type help to see a list of commands (e.g., gpio, adc, power, i2c, spi, sys).

Building from Source

Prerequisites

Build Instructions

bash
git clone https://github.com/CoretechR/picolab.git
cd picolab
mkdir build && cd build
cmake ..
make -j$(nproc)

Select your type of Raspberry Pi Pico board in the Pico SDK. For the Pico.Lab board, set the PICOLAB_HW_CUSTOM_BOARD define in board_config.h. You can also use this file to modify the pins for GPIO, SPI, I2C and UART.

Flash the resulting .uf2 file to your board by holding the BOOTSEL button while plugging it in, then drag-and-drop the file to the RPI-RP2 drive.

Disclosure about AI Usage

While I remain pessimistic about the impact of AI on humanity, there is no putting it back in the box. For this project, I tried to embrace it and used it heavily to generate the firmware, web frontend and parts of the documentation. I wanted to see what I could achieve in the same amount of time that I normally put into my hobby projects. All art, design and architecture were conceived by me.

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details. Copyright © 2026 Maximilian Kern.

Parts

285
QtyValueFootprintReferences
50100nFCapacitor_SMD:C_0603_1608MetricC12, C13, C18, C24, C27, C28, C30, C31, C32, C33, C34, C35, C36, C37, C38, C39 +34
4010KResistor_SMD:R_0603_1608MetricR106, R107, R108, R109, R114, R115, R116, R117, R118, R120, R122, R124, R126, R127, R128, R129 +24
281MResistor_SMD:R_0603_1608MetricR100, R101, R110, R111, R112, R113, R130, R133, R134, R138, R140, R143, R145, R148, R150, R153 +12
14120Resistor_SMD:R_0603_1608MetricR62, R80, R88, R96, R119, R121, R123, R125, R136, R139, R144, R149, R154, R159
14330Resistor_SMD:R_0603_1608MetricR65, R75, R83, R91, R102, R103, R104, R105, R131, R135, R142, R147, R152, R156
14SN74LVC1T45DBVPackage_TO_SOT_SMD:SOT-23-6U13, U14, U19, U20, U21, U22, U23, U24, U26, U28, U30, U31, U32, U33
8BSS138Package_TO_SOT_SMD:SOT-23Q4, Q6, Q8, Q10, Q15, Q16, Q17, Q18
8DMG2301LPackage_TO_SOT_SMD:SOT-23Q3, Q5, Q7, Q9, Q11, Q12, Q13, Q14
8TestPointTestPoint:TestPoint_Pad_D1.5mmTP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11
5300KResistor_SMD:R_0603_1608MetricR13, R19, R22, R25, R52
5BAS70-04Package_TO_SOT_SMD:SOT-23D3, D4, D5, D6, D15
4100Resistor_SMD:R_0603_1608MetricR30, R31, R32, R33
410nFCapacitor_SMD:C_0603_1608MetricC7, C8, C10, C11
41uFCapacitor_SMD:C_0603_1608MetricC6, C9, C16, C21
44.7uFCapacitor_SMD:C_0603_1608MetricC22, C25, C26, C29
4820KResistor_SMD:R_0603_1608MetricR16, R18, R21, R24
4Conn_02x04_Counter_ClockwisePicoLabLib:10129382-908003BLFJ4, J5, J6, J7
4FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3, FID4
4MountingHoleMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4
4SRV05-4Package_TO_SOT_SMD:SOT-23-6U15, U25, U27, U29
30R03Resistor_SMD:R_0603_1608MetricR43, R44, R73
310kResistor_SMD:R_0603_1608MetricR9, R53, R61
322uFCapacitor_SMD:C_1206_3216MetricC23, C41, C46
3INA180A2Package_TO_SOT_SMD:SOT-23-5U4, U8, U11
3LM66100DCKPackage_TO_SOT_SMD:SOT-363_SC-70-6U16, U17, U18
215pFCapacitor_SMD:C_0603_1608MetricC15, C17
21kResistor_SMD:R_0603_1608MetricR2, R4
221.5kResistor_SMD:R_0603_1608MetricR20, R23
227Resistor_SMD:R_0603_1608MetricR10, R11
24k7Resistor_SMD:R_0603_1608MetricR49, R50
25.1kResistor_SMD:R_0603_1608MetricR3, R8
10.5Resistor_SMD:R_0603_1608MetricR29
110uFCapacitor_SMD:C_0805_2012MetricC48
11N4148WSDiode_SMD:D_SOD-323D1
122nFCapacitor_SMD:C_0603_1608MetricC47
127KResistor_SMD:R_0603_1608MetricR26
13.3uHPicoLabLib:L_pol_2016L3
133Resistor_SMD:R_0603_1608MetricR15
1330RResistor_SMD:R_0603_1608MetricR12
14.7uHInductor_SMD:L_1008_2520MetricL4
1500mAFuse:Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolderF1
1ABM8-272-T3Crystal:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mmY1
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U6
1BAT54WSDiode_SMD:D_SOD-323D8
1Conn_01x03_PinConnector_JST:JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_HorizontalJ2
1IS25LP064D-JKLA3-TRPackage_SON:WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4.3mmU3
1LM4040D30IDBZRPackage_TO_SOT_SMD:SOT-23U7
1MP28167-APicoLabLib:QFN-16_3x3mm_P0.5mm_MPSU10
1PI4ULS5V202Package_SO:MSOP-8_3x3mm_P0.65mmU9
1RP2350_80QFNPicoLabLib:QFN-80-1EP_10x10mm_P0.4mm_EP3.4x3.4mmU1
1SK6812MINILED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mmD2
1SW_PushButton_Switch_SMD:Panasonic_EVQPUM_EVQPUDSW1
1SW_PushButton_Switch_SMD:SW_SPST_EVQP2_ShortPushTravel_H2.1mmSW2
1TLV9004IPWRPackage_SO:TSSOP-14_4.4x5mm_P0.65mmU2
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U5
1USB_C_Receptacle_USB2.0PicoLabLib:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1

The 282 most common of 285 parts.

Similar boards

  • 6 layers100 × 100 mmBms board, the printed circuit board in 3D

    Bms board

    AerospaceNU/bms-pcb-design

    373 parts4
  • 4 layers96.9 × 88.1 mmDigichiver, the printed circuit board in 3D

    Digichiver

    frindaddy/digichiver

    Archival hardware/firmware for the MM54104 Digitalker chip

    121 partsMIT
  • 2 layers29.9 × 32.6 mmUKDAQ, the printed circuit board in 3D

    UKDAQ

    Jh0115/Unified-Kinematic-DAQ

    This project is kicad and programming to to develop a micro volume and micro-power PCB with a BNO055, BME280, SD card, and a way to send data do other boards.

    23 parts2
  • 4 layers88.9 × 50.2 mmDelta, the printed circuit board in 3D

    Delta

    shreyaslad/delta

    A minature, custom-made board that controls vehicles and streams onboard telemetry.

    76 parts2
  • 2 layers130 × 56 mmML4, the printed circuit board in 3D

    ML4

    brucemack/microlink

    An open source EchoLink/AllStarLink implementation that runs on a simple microcontroller.

    73 parts18GPL-3.0
  • 4 layers80 × 105.5 mmNetdaq, the printed circuit board in 3D

    Netdaq

    Gherkin/netdaq

    913 partsCERN-OHL-P-2.0
  • 4 layers54 × 102 mmSWC, the printed circuit board in 3D

    SWC

    OETSolutions/swc-module

    Steering-wheel-controls adapter module — ESP32-S3, KiCad schematic/PCB, JLCPCB assembly

    110 parts
  • 4 layers72 × 44 mmPicflash board, the printed circuit board in 3D

    Picflash board

    nthclrd/picflash

    Programmeur PIC open source en Rust : remplace MPLAB IPE/XC8 pour les PIC16, pilote les PICkit 4/5/Basic ou une carte RP2040 maison (KiCad)

    115 parts1MIT

Questions

How big is the PicoLab PCB?

It measures 70 × 54 mm and has 4 copper layers, 1.7 mm thick.

What parts does the PicoLab use?

285 parts, built around the IS25LP064D-JKLA3-TR, TLV9004IPWR-MS, SN74LVC1T45DBV and SRV05-4. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PicoLab KiCad files?

From the CoretechR/PicoLab repository on GitHub, at the commit this page was made from: the board is PCB/PicoLab.kicad_pcb and its schematic PCB/PicoLab.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PicoLab design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).