DIY ESP32 Oscilloscope
Every electronics expert has to have a test device called an oscilloscope in their toolbox. It can be used to view and analyze a variety of signals, and it is typically presented in the f…

Know the mission before touching a wire.
Understand what you are making, prepare the right tools, and make the workbench safe.
Project details
DIY ESP32 Oscilloscope is a iot project. Every electronics expert has to have a test device called an oscilloscope in their toolbox. It can be used to view and analyze a variety of signals, and it is typically presented in the f…
- Source pages
- 1355-1363
- Named parts
- 3
- Build goal
- Working, tested prototype
Tools you need
- Digital multimeter
- Wire stripper and side cutters
- Soldering iron with a fine tip
- Current-limited bench supply
- Computer with a data-capable USB cable
Use eye protection, good lighting, and a clean insulated surface throughout the build.
Safety precautions
- Disconnect every power source before changing a connection.
- Check component polarity, pinout, and supply voltage twice.
- Use a current limit for the first power-up.
- Keep liquids, loose metal, and uninsulated wires away from the bench.
Gather, identify, and understand every part.
Use the standardized inventory, then open What's this? to learn each part's role, advantages, limitations, handling, and specifications.
What's this?Image, role, pros, cons, handling & specifications

ESP32
A programmable controller that reads inputs, makes decisions, and drives the project's outputs.
What it does hereIt is the control centre and must use the documented board, pin map, supply, and logic level.
Buy / compare this part ↗Advantages
- Reprogrammable and reusable
- Large learning ecosystem
- Complex behaviour remains changeable
Limitations
- GPIO voltage and current are limited
- Some pins affect boot or communication
- Loads normally need a driver
Handling
- Disconnect power before rewiring
- Avoid static discharge
- Never power motors, relays, or pumps directly from GPIO
Specifications to verify
- Use the exact model, value, package, and rating listed for ESP32; similar-looking parts are not always interchangeable.
- Confirm operating voltage, logic level, pinout, memory, USB interface, and maximum GPIO current.
What's this?Image, role, pros, cons, handling & specifications

MAXIMUM
A named project component whose exact role is defined by the source circuit and build guide.
What it does hereIt performs a documented electrical, control, interface, or construction function in this project.
Buy / compare this part ↗Advantages
- Selected for this project
- Can be checked independently
- Supports modular troubleshooting
Limitations
- Substitutes may differ
- Generic names can hide variants
- Pinouts and ratings vary
Handling
- Compare the received part with the source
- Keep it labelled
- Do not force connectors or adjusters
Specifications to verify
- Use the exact model, value, package, and rating listed for MAXIMUM; similar-looking parts are not always interchangeable.
- Confirm dimensions, ratings, connection method, polarity, and environmental limits.
What's this?Image, role, pros, cons, handling & specifications

ESP32-BASED - controller board / IC
A programmable controller that reads inputs, makes decisions, and drives the project's outputs.
What it does hereIt is the control centre and must use the documented board, pin map, supply, and logic level.
Buy / compare this part ↗Advantages
- Reprogrammable and reusable
- Large learning ecosystem
- Complex behaviour remains changeable
Limitations
- GPIO voltage and current are limited
- Some pins affect boot or communication
- Loads normally need a driver
Handling
- Disconnect power before rewiring
- Avoid static discharge
- Never power motors, relays, or pumps directly from GPIO
Specifications to verify
- Use the exact model, value, package, and rating listed for ESP32-BASED - controller board / IC; similar-looking parts are not always interchangeable.
- Confirm operating voltage, logic level, pinout, memory, USB interface, and maximum GPIO current.
Connect one verified path at a time.
Explore the named components and standardized signal flow, then use Source Check to verify exact physical pins, values, and topology before applying power.
Trace this circuit.
DIY ESP32 Oscilloscope: interactive parts, standardized terminals, responsive anchored wires, student explanations, and the original circuit reference in one shared system.
Trace before wiring
Follow power, ground, inputs, processing, and outputs in that order. Never guess a pin from package shape alone.
Connect with power off
Make short, labelled connections and share a common ground only where the schematic requires it.
Inspect every joint
Check continuity, polarity, adjacent shorts, and loose connections before the first power-up.
Open all source diagrams and build views 3 visuals



Confirm the hardware-only control path.
This project does not include firmware in the source. The circuit itself provides the required behaviour.
How to connect
- Match every controller label to the circuit view and source pin map.
- Join grounds before signal wires when separate low-voltage supplies are used.
- Keep motors, relays, pumps, and other loads on a suitable driver and external supply.
Common mistakes
Reversed VCC/GND, board-label versus GPIO-number confusion, missing common ground, and charge-only USB cables.
Troubleshoot
Disconnect loads, continuity-test one path at a time, then test with a current limit.
Software preparation
No IDE, board package, library, or firmware upload is required for this project.
If you add a programmable controller as an extension, document its pin map separately.
How to upload code
The original design is implemented entirely in hardware, so proceed after verifying the circuit and supply.
Assemble, deploy, test, and troubleshoot.
Use the complete source notes in build order, then pass the final checks before calling the project finished.
Build in functional stages
- Power and regulation
- Controller or processing stage
- Inputs and sensors
- Outputs and loads
- Enclosure and strain relief
Power up safely
- Inspect unpowered continuity first
- Apply the lowest safe current limit
- Measure supply rails before signals
- Add one load at a time
- Record expected and actual results
Work from simple to complex
- Confirm power, ground, polarity, and orientation
- Compare each pin with the source
- Test inputs separately from outputs
- Replace only one variable at a time
- Power off before every correction
Follow the documented instructions.
These notes come from this project's source and remain in their original order.
Project overview
Project build noteEvery electronics expert has to have a test device called an oscilloscope in their toolbox. It can be used to view and analyze a variety of signals, and it is typically presented in the form of a two-dimensional plot in which one or more signals are plotted against time. In the process of designing and debugging electrical devices, they are utilized to view and compare waveforms, as well as determine the voltage levels, frequency, noise, and other properties of signals that are applied at the device's input as it varies over time. Because of this, oscilloscopes are a very useful instrument that should be kept on the workbench of each electronics expert or maker. Oscilloscopes, on the other hand, may be rather expensive, with entry-level models ranging anywhere from $500 to $2,000 in price. Because of their tens of thousands of dollar price tags, more complex oscilloscopes are out of reach for consumers with more fundamental needs. But what if we were able to design one that was simpler, smaller, and less expensive to produce? This is the question that prompted us to start working on this project today. ESP32 Oscilloscope Features
Single-channel 1 million samples per second, 50 thousand at 16 bits per buffer (50ms of data at 1Msps) Scale from 10 microseconds per division to five milliseconds per division @ 1 msps In 1X mode, the maximum VPP is 3.3 volts, while in 10X mode, it is 33 volts. Control that is both quick and responsive, employing tactile switches. Frequency calculations (20hz min due to buffer size) Simple mean filter ON/OFF Maximum, minimum, typical, and highest point Peak voltage The difference in time and voltage Analog, Digital/Data Mode Single TRIGGER AUTOSCALE Components Required to build ESP32-based Oscilloscope 1.69-inch, 240x280 Rounded Corner TFT display included with the ESP32 Devkit (ST7789s) Switches that can be felt. SHDT and SPDT switches 100K resistor 10K resistor 100nF capacitor Clad in copper or perforated board Soldering tools ESP32 Oscilloscope Circuit Diagram The data acquisition is controlled by an ESP32, which is employed in this application. When it comes to storing and manipulating the signals, we will
be using the I2S buffer that is built right in. In this example, the 38-Pin variation is used, however other types of development modules might be used instead. We are utilizing a 1.69-inch TFT display module as our means of display. The resolution of this device is 240 by 280 pixels. The display controller that we will be using is a ST7789S, and the SPI communication protocol will be used to control it. The module also has a slot for an SD card, however we haven't utilized it yet. In a future version, we might make use of this for waveform capturing or other applications along those lines. The keypad is a pretty straightforward device. For this particular reason, tactile switches that include pullup resistors are utilized. To identify each individual key press, we are making use of the hardware interrupt. This will provide us with a keypad that is incredibly responsive.
The analog input part is a rather straightforward component. It is made comprised of two SPDT switches, one for selecting the range, and another for selecting the AC/DC coupling. A voltage divider that can be used to feed signals with a peak voltage greater than 3.3V has been introduced by our team as part of the range selection process. This divider can be used to feed the signals. Signal will be converted to a 10:1 ratio after passing through the voltage divider. Arduino Code for Oscilloscope Download the complete source code from the GitHub repository hosted on the Circuit Digest website. You will also find an archive with the name TFT eSPI within the GitHub repository. In order to successfully drive the display, this modified library is required. It should be extracted into the
library folder for Arduino. In the event that the TFT eSPI library has already been installed, you will need to uninstall it before extracting the new version. When it is finished, go to the board manager and choose the esp32 option. After that, you need to compile the code and then upload it. Our do-it-yourself oscilloscope is now operational and ready for usage. The Oscilloscope can be powered by using the Micro USB port that is located at the bottom. This connector is used exclusively for supplying electricity. 485. DIY ESP32 Oscilloscope Every electronics expert has to have a test device called an oscilloscope in their toolbox. It can be used to view and analyze a variety of signals, and it is typically presented in the form of a two-dimensional plot in which one or more signals are plotted against time. In the process of designing and debugging electrical devices, they are utilized to view and compare waveforms, as well as determine the voltage levels, frequency, noise, and other properties of signals that are applied at the device's input as it varies over time. Because of this, oscilloscopes are a very useful instrument that should be kept on the workbench of each electronics expert or maker.
Oscilloscopes, on the other hand, may be rather expensive, with entry-level models ranging anywhere from $500 to $2,000 in price. In addition, more sophisticated oscilloscopes might cost a few thousand dollars, putting them out of reach for consumers with less sophisticated needs. But what if we were able to design one that was simpler, smaller, and less expensive to produce? This is the question that prompted us to start working on this project today. ESP32 Oscilloscope Features Single-channel 1 million samples per second, 50 thousand at 16 bits per buffer (50ms of data at 1Msps) Scale from 10 microseconds per division to five milliseconds per division @ 1 msps Maximum VPP 3.3V in 1X and 33V in 10X mode Control that is both quick and responsive, employing tactile switches.
Frequency calculations (20hz min due to buffer size) Simple mean filter ON/OFF Max, min, average and Peak-Peak voltage The difference in time and voltage Analog, Digital/Data Mode Single TRIGGER AUTOSCALE Components Required to build ESP32-based Oscilloscope 1.69-inch, 240x280 Rounded Corner TFT display included with the ESP32 Devkit (ST7789s) Switches that can be felt. SHDT and SPDT switches 100K resistor 10K resistor 100nF capacitor Clad in copper or perforated board Soldering tools ESP32 Oscilloscope Circuit Diagram The full circuit diagram for the ESP32-based oscilloscope may be seen in the next page. The data acquisition is controlled by an ESP32, which is employed in this application. When it comes to storing and manipulating the signals, we will be using the I2S buffer that is built right in. In this example, the 38-Pin variation is used, however other types of development modules might be used instead. The data acquisition is controlled by an ESP32, which is employed in this application. When it comes to storing and manipulating the signals, we will be using the I2S buffer that is built right in. In this example, the 38-Pin variation is used, however other types of development modules might be used instead. We are utilizing a 1.69-inch TFT display module as our means
of display. The resolution of this device is 240 by 280 pixels. The display controller that we will be using is a ST7789S, and the SPI communication protocol will be used to control it. The module also has a slot for an SD card; however, we haven't utilized it yet. In a future version, we might make use of this for waveform capturing or other applications along those lines. The keypad is a pretty straightforward device. For this particular reason, tactile switches that include pullup resistors are utilized. To identify each individual key press, we are making use of the hardware interrupt. This will provide us with a keypad that is incredibly responsive. You are able to acquire knowledge regarding the ESP32 Interrupts that we discussed previously.
The analog input part is a rather straightforward component. It is made comprised of two SPDT switches, one for selecting the range, and another for selecting the AC/DC coupling. A voltage divider that can be used to feed signals with a peak voltage greater than 3.3V has been introduced by our team as part of the range selection process. This divider can be used to feed the signals. Signal will be converted to a 10:1 ratio after passing through the voltage divider. Arduino Code for Oscilloscope You can obtain the whole source code by following the link provided at the bottom of this page, which leads to the Circuit Digest GitHub repository. You will also find an archive with the name TFT eSPI within the GitHub repository. In order to successfully drive the display, this modified library is required. It should be extracted into the library folder for Arduino. In the event that the TFT eSPI library has already been installed, you will need to uninstall it before extracting the new version. When it is finished, go to the board manager and choose the esp32 option. After that, you need to compile the code and then upload it. Our do-it-yourself oscilloscope is now operational and ready for usage. The Oscilloscope can be powered by using the Micro USB port that is located at the bottom. This connector is used exclusively for supplying electricity.
You built DIY ESP32 Oscilloscope.
You followed the full workflow from understanding the mission to testing the finished project. That is a real engineering achievement - well done.
Browse all 500 projects