Skip to content
IntermediatePi 4 / 5raspberry-piraspberry-pi-picomicropython

Raspberry Pi Pico Oscilloscope with MicroPython

Convert a Raspberry Pi Pico into a basic 500 kSPS oscilloscope using its 12-bit ADC and MicroPython. Displays waveforms on an SSD1306 OLED or streams samples over USB serial to a Python plotter on your PC.

SolderHub10/17/2026 30 min read 2 views

Pico ADC Capabilities and Limitations

The RP2040 has a 12-bit successive-approximation ADC running from a 48 MHz clock. The maximum sample rate is approximately 500 kSPS (500,000 samples per second), giving a Nyquist bandwidth of 250 kHz. In practice, MicroPython overhead limits free-running sampling to around 100 kSPS — enough for audio frequencies, power supply ripple, and slow sensor signals.

For higher speeds, the RP2040's DMA controller can be driven from C/C++ to hit the full 500 kSPS, but for most educational and hobbyist uses MicroPython is sufficient and far easier to modify.

🚨 Danger

The Pico's ADC inputs accept **0–3.3V maximum**. Signals above 3.3V will permanently damage the RP2040. Always use a voltage divider or clamping diodes when probing unknown signals. Never connect directly to mains voltage.

Components

6 items
NameQtyLink
Raspberry Pi Pico (RP2040)×1Buy ↗
0.96" I2C OLED (SSD1306, 128×64)×1Buy ↗
1 MΩ Resistor (probe input protection)×1—
10 nF Capacitor (anti-aliasing filter)×1—
Mini breadboard + Jumper Wires×1—
Micro-USB Cable (data, not charge-only)×1—

Need these parts? Get this build sheet by email

Parts list with buy links, plus new builds as they're published. By subscribing you agree to our Privacy Policy. Unsubscribe anytime.

Python
Python

Live simulation

Q&A is currently disabled site-wide.

Related projects