Skip to content
MCU Atlas
STM32STM32F4Draft

pillScope Plus: STM32F401 Black Pill educational oscilloscope

A self-contained scope on an STM32F401 Black Pill with a colour TFT, on-screen measurements and UART export.

Difficulty:IntermediateCost:Source available

Key Facts

  • Chip: STM32F401CC Black Pill
  • Display: 128x160 ST7735 TFT
  • Sample rate: 1.6 MSa/s
  • Input: +/-3.3 V, 1 MOhm

About This Project

pillScope Plus is an educational digital storage oscilloscope built around the STM32F401 Black Pill and a 128x160 ST7735 colour TFT. It samples at up to 1.6 MSa/s, shows min/max/peak-to-peak and frequency on screen, and can send captures to a PC for viewing in TekScope. The front end uses an LM358 (rail-to-rail recommended) and three buttons. Designed to teach how scopes work while remaining usable in a lab.

Source & Attribution

Source: GitHub
License: Apache-2.0
Last verified: 10/16/2026
How to Build It
pillScope Plus is a simple, easy-to-build digital storage oscilloscope for learning, made from an STM32F401 Black Pill, a 1.8in ST7735 colour TFT and an op-amp front end. It samples at 1.6 MSa/s over a ±3.3V range, shows on-screen measurements, and can send captures over UART to Tektronix's TekScope app.

Parts Needed

  • STM32F401CC Black Pill
  • 128x160 ST7735 TFT display
  • 3 pushbuttons
  • LM358 dual op-amp (a rail-to-rail part is better)
  • 2x 68kΩ and 2x 500kΩ resistors (offset and attenuator)
  • 5V power supply
  • Optional: opto-isolated USB-UART adapter, BNC connector
  • ST-Link or USB DFU for flashing

Steps

  1. 1

    Build the front end

    Following the schematic, wire the op-amp input stage. The 68k resistors set a 1.65V virtual ground and the 500k resistors attenuate the input. The output goes to PA0 (ADC1_IN0).

  2. 2

    Connect the display and buttons

    Connect the ST7735 to SPI1: SCK on PB3, MOSI on PB5, CS on PB12, RST on PB13 and DC on PB14. The buttons go on PB9 (Up), PB8 (Select) and PB7 (Down).

  3. 3

    Build and flash

    Compile with make (the source is in Core/Src) and flash the binary with an ST-Link or the Black Pill's USB DFU bootloader.

  4. 4

    Calibrate and measure

    Run the auto-calibration from the UI before use. Because of the virtual ground, the scope and the circuit under test must not share a ground. Use an isolated supply or the opto-isolated UART adapter.

  5. 5

    Save captures

    Send 's' over UART for CSV output (TekScope-compatible), or 'S' for raw data that the companion app streams to TekScope in near real time.

Photos

Photos from github.com

Parts List (BOM)
Complete parts list from the creator
complete
PartQtyRoleEst. PriceBuy
1main board$4–$10View
1display$3–$7View
1frontend$0.2–$1View
3buttons$1–$3View
Estimated Total$10–$27 USD

Not included: 3D-printed case, wire, solder, USB cable

Download CSV

Related Projects

SimpleFOC Arduino balancer: BLDC two-wheel balancing robot
ARDUINOUNODraft
A modular two-wheel balancing robot using gimbal BLDC motors and the SimpleFOC library on Arduino-class boards.
Advanced·Cost varies·Code
5 parts listed
EMBO: multi-instrument scope on a $6 STM32 Blue Pill
Illustration
STM32STM32F1Draft
Turns cheap STM32 boards into an oscilloscope, logic analyzer, voltmeter, PWM and signal generator controlled from a PC app.
Beginner·Under $15·Code
1 part listed
📷
STM32STM32F1Draft
A minimalist STM32F103 oscilloscope inspired by Ray Burnette's $10 Arduino O-Scope idea.
Intermediate·Under $15·Code
2 parts listed