Skip to the content
PCBKitNew board
2 layers113 × 62.2 mmFullScope, the printed circuit board in 3D

Oscilloscope based around the STM32F401 Black Pill and a color LCD screen

Size
113 × 62.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
15
Nets
42
Pads
90
Tracks, vias
117, 0
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
23 Jun 2022
Updated
1 Mar 2023

Overview

FullScope is an open-source printed circuit board by tvlad1234, from the tvlad1234/pillScopePlus repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 113 × 62.2 mm with 15 parts on 42 nets, routed with 117 tracks and 0 vias.

It is built around the LM358 and LM7805. Its parts include 4 resistors, 3 ICs, 3 connectors, 3 switches and 2 capacitors. It belongs with the sensors and measurement boards and the STM32 boards of this library.

Main components

2

README

README.md

pillScope Plus

Oscilloscope based around the STM32F401 Black Pill and a color LCD screen, meant to be used as an educational tool The pillScope in its case

Why does it exist?

The goal of this project was to create a simple and easy to build but still very usable oscillsocope. I wanted to learn the basics of how a digital storage oscilloscope functions, while also ending up with something which can be used as an educational tool in the lab. A short description of how oscillscopes (and this one in particular) work can be found here.

Features

  • -3.3V to 3.3V input range (can be increased if using attenuator probes)
  • 1MOhm input impedance
  • 10uS/div minimum timebase
  • 1.6 MSa/S sampling rate
  • On screen measurements:
    • min/max voltage
    • peak-to-peak voltage
    • frequency
  • Captured waveforms can be sent to a computer over UART and analyzed in the Tektronix TekScope app

Required parts

Base parts:

  • STM32F401CC Black Pill development board
  • 128x160 ST7735-based TFT display
  • 3 pushbuttons
  • LM358 dual op-amp (rail-to-rail opamps should work better in this context, but this is what I had on hand)
  • 2x 68kOhm resistors (to create a 1.65V offset voltage)
  • 2x 500kOhm resistors (to create the input attenuator)

Useful, but not mandatory:

  • a 5V power supply
  • an opto-isolated USB UART adapter
  • a BNC connector, for using proper oscilloscope probes

Schematics

The LCD screen is connected to SPI1 (PB3-SCK, PB5-MOSI, PB12-CS, PB13-RST, PB14-DC). The buttons are connected as follows:

  • PB9: Up
  • PB8: Select
  • PB7: Down

The output of the analog frontend is connected to ADC1_IN0, which corresponds to PA0.
The schematic of the frontend can be found in the frontend.pdf file.

Using the oscilloscope

The UI

The Select button cycles through the different parameters, which can be adjusted using the Up and Down buttons.

Auto calibration

Pressing Up and Down at the same time triggers the auto-calibration function. The tip and ground clip of the probed should be coupled together while calibrating.

Measuring things

The frontend of the instrument makes use of a virtual ground point which is 1.65V above the real ground. Because of this, the oscilloscope and the device under test must not be sharing the same ground reference. If you need to send data to the computer while measuring a device which shares ground with the scope, you should connect the computer via an opto-isolated adapter, while powering the oscilloscope from an external source.

Saving captured wavevorms

The captured waveforms can be sent to a computer over UART.

CSV Output

Sending s (lowercase s) to the UART tells the instrument to output the captured waveform in CSV format, which is compatible with the Tektronix TekScope app.

putty

Direct TekScope output

Sending S (capital S) tells the scope to output raw data, which can be read by a companion app. This app automatically streams the captured data to TekScope, which allows almost real-time waveform analysis on the computer. companion

Code

The code can be compiled with make. The actual oscilloscope code of this project is located in Core\Src, the scope.c, ui.c and wave.c files. Feel free to take a look, as they're commented for ease of understanding.

Parts

15
QtyValueFootprintReferences
2500kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR3, R4
2RResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1, R2
110 uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC1
1100 uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC2
1Btn 1Button_Switch_THT:SW_PUSH-12mmSW1
1Btn 2Button_Switch_THT:SW_PUSH-12mmSW2
1Btn 3Button_Switch_THT:SW_PUSH-12mmSW3
1F401CCstm32:YAAJ_WeAct_BlackPill_2U1
1INConnector_Coaxial:BNC_Amphenol_B6252HB-NPP3G-50_HorizontalJ1
1LCDConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ3
1LM358Package_DIP:DIP-8_W7.62mm_LongPadsU2
1LM7805Package_TO_SOT_THT:TO-220-3_Horizontal_TabDownU3
1VinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ5

Questions

How big is the FullScope PCB?

It measures 113 × 62.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the FullScope use?

15 parts, built around the LM358 and LM7805. 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 FullScope KiCad files?

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

Can I use the FullScope design in my own project?

Its repository publishes it under the Apache-2.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).

Similar boards

  • 2 layers206.2 × 138.1 mmOric, the printed circuit board in 3D

    Oric

    Board-Folk/Oric-Remix

    Oric Remix

    133 parts4
  • 2 layers98.8 × 60.7 mmPIC soldering station, the printed circuit board in 3D

    PIC soldering station

    wonbinbk/SSS

    Smart Soldering Station - for fake Hakko 907, using PIC16f87xA, PID heat controller with auto-standby and auto-power-off.

    76 parts4GPL-3.0
  • 2 layers99.6 × 99.9 mmMagloop pico, the printed circuit board in 3D

    Magloop pico

    Greg-R/magloop_pico_pcb

    Design and fabrication files the Magnetic Loop Antenna Controller printed circuit board.

    102 parts1GPL-3.0
  • 2 layers99.6 × 99.9 mmMagloop pico, the printed circuit board in 3D

    Magloop pico

    Greg-R/magloop_pico_pcb_2

    Design and fabrication files the Magnetic Loop Antenna Controller printed circuit board.

    101 parts1GPL-3.0
  • 2 layers135.8 × 42.8 mmPower switch, the printed circuit board in 3D

    Power switch

    FoamWorkshop/pcbs-power_switch-

    54 parts
  • 2 layers55 × 135.3 mmMSG25, the printed circuit board in 3D

    MSG25

    ZeniteSolar/MSG25

    Módulo de sensoriamento geral para medição de 4 tensões e 3 temperaturas

    131 parts
  • 2 layers167.6 × 97.5 mmAS3397 proto DIP, the printed circuit board in 3D

    AS3397 proto DIP

    PhysicsDptAngers/polyUAnalog

    Open source, analog and polyphonic synthesizer

    142 parts88MIT