Portable Teensy 4.1 Based Oscilloscope (Group 6, Spring 2026)

3D Printing
Embedded Systems
PCB
Teensy
Spring 2026

The purpose of this project was to develop a portable, low cost oscilloscope capable of display two channels of independent signals. It is centered around the Teensy 4.1 microcontroller. To support portability, it features a laptop USB based connection for power and for our Python based GUI, providing adjustable voltage, time and trigger functionalities. It is capable of a +/- 10V input range, measuring with a fidelity of above 250kHz. Our custom PCB integrates our analog front end processing our signal, BNC signal input, independent channel switching, a red heartbeat LED and the Teensy 4.1 microcontroller. The heart of the system is our custom 4 layer PCB designed with Altium Designer. This first includes our robust 2466267-1 BNC connectors for signal connection, followed by MTE1A106D toggle switches for independent channel selection. Then using a resistor divider, it scales the signal down to a range of 0 -3.3V for the Teensy 4.1's ADC range, with a voltage offset to ensure non-zero voltages. Diode clamping of 0V and 3.3V ensure the processes signal stays within the ADC ranges. Finally, it passes through a non-inverting op amp buffer using OPA992. The code for this project is implemented in two blocks. One set of embedded firmware on the Teensy that samples value from the ADC packages them into blocks of 128 samples, and sends them over to the laptop over USB. The GUI code on the laptop implements the full graphical user interface and takes the samples, recreates the original signal, and displays it. The GUI also allows for both channels to be displays at a time along with manual / auto triggering. Our main areas of challenge was the PCB design. We decided to do our PCB design through Altium Designer, an industry standard software that provided direct footprints and layouts to all of the parts we intended to use. Going through the PCB process again without instructions on a new program was fun challenge. Once we got our PCB and assembled it, we realized issues with our layout, such as not having dc coupling capacitors at our power and voltage references, causing signal interference. For the code blocks we had an issue with the way the Teensy firmware interfaced with the computer side GUI code since we hadn't defined how they would interact before they were written. Originally, the GUI expected string inputs which made sending values from the Teensy more difficult, reducing our sample rate. This was fixed by changing the GUI to accept integers which significantly improved sample rate, but we ran into the problem of the sample rate dropping with an input signal requiring that we make even more changes to optimize the code. One of our notable accomplishments was being able to make on the fly changes to our design when we encountered issues after we ordered components for assembly. This resulted in us being able to accomplish the requirements of the project without needing to reorder PCBs.

2 Lifts 

Artifacts

Name Description
GUI Code This code implements the graphical user interface on the computer side which receives values from the oscilloscope to be displayed onto the computer.   Link
Executive Project Summary Total project summery with design intention, small project detail, timeline and reflection.   Download
Altium PCB Schematics PCB schematics from Altium Designer   Download
Project Summary Video This is our video of project summary slideshow.   Link
Feedback