Table of Contents
You can build a lot of cool things with a Raspberry Pi Pico, but did you know that you can use one to build an oscilloscope? The Scoppy project lets you turn a Pico into a rudimentary 2-channel scope, using an Android phone or tablet for the display.
Scoppy Pico Scope
An oscilloscope is an essential tool for electronics technicians, engineers, and experimenters. A scope lets you view voltage fluctuations in real-time, allowing you to see the shape of a sine wave, for example.
But scopes aren’t cheap, even a low-cost one can set you back several hundred dollars.
Today we will put together a scope that won’t break the bank, in fact, if you had to buy everything new (except the phone or tablet used as a display) it would set you back less than 10 dollars. And, as a bonus, it’s also an 8-channel logic analyzer.
Now, to be fair, the scope we are constructing is hardly a serious test instrument. It has a very limited bandwidth and without adding some additional circuitry it lacks a calibrated front-end, essential to taking serious measurements.
But, if nothing else, it’s a lot of fun, and it might have some limited use in checking out low-frequency signals such as audio signals.
As I said, the specifications of the Scoppy Pico oscilloscope can’t really compare with a proper test instrument.
Scoppy has a maximum sampling rate of 500kS/s, and that is shared between its two channels. Its resolution (measured in time/div) is 5us to 20 s. And it has a memory depth ranging from 2kpts and 20kpts (again, shared between channels) and up to 100kpts for single-shot captures.
It also can serve as an 8-channel logic analyzer with a sample rate of 25MS/s.
One major limitation is the input voltage range. Because the input to Scoppy is actually the input to the Pico’s analog to digital converter, Scoppy can only accept signals between 0 and 3.3-volts, and it can’t take negative voltages. However, we can get around that limitation by building a proper front end or even, as I will show you, by using three resistors.
The hardware requirements for Scoppy are pretty basic:
- A Raspberry Pi Pico microcontroller (you’ll probably want to solder some pins onto it).
- An Android phone or tablet – sorry, no iPhones or iPads!
- A USB OTG (On The Go) cable or adapter, to connect the phone/tablet to the Pico.
To make a simple front-end, you’ll need three resistors:
- Two 1k resistors.
- One 100k resistor.
Now let’s build our Scoppy!
There are really only a few simple steps to building the Scoppy:
- Download and install the Scoppy App onto the Android device.
- Copy the Scoppy UF2 file to the Pico.
- Connect the Pico to the Android device using a suitable USB OTG cable.
Here are a few more details about the procedure.
Scoppy Android App
The Scoppy Android App is available on the Google Play Store. You can download it directly from your Android device, or use your web browser while logged into your Google account.
The app is free, but it is advertiser-supported. If you want to eliminate the ads you’ll need to buy it, like most apps it only costs a couple of dollars. I felt it was worth it, but you might want to use it for a while to see if you agree.
Scoppy Pico UF2 File
All the software for the Pico is on a UF2 file, which you can download from the Scoppy website.
Once you have the file on your computer, you’ll need to do the following:
- With the Pico disconnected from the computer, hold down the BOOTSEL button (the only button on the Pico).
- Keeping the BOOTSEL button depressed, insert the MicroUSB cable that has its other end connected to the computer.
- Once the Pico is plugged into the MicroSD cable, release the button.
This will create another drive on your computer.
Take the Scoppy UF2 file that you downloaded and copy or drag it into this new drive. Once the file copy has finished, the drive will disappear.
Now, look at the Pico. If its onboard LED is flashing at a steady rate, then you have successfully installed the Scoppy software.
Scoppy uses two of the Pico’s analog inputs as its inputs.
- Channel 1 is ADC0, also called GP26.
- Channel 2 is ADC1, also called GP27.
It also has a 1KHz square wave output on GP22, and we can use that to test our Scoppy.
All it takes to test Scoppy is a single-wire hookup, as illustrated here:
This feeds the 1KHz square wave into the channel 1 input on GP26.
Running the Test
With the Pico wired as above, connect it to your Android device using the USB OTG cable.
Now start the Scoppy app. You’ll need to accept the permissions it requires.
Press the Run button and observe the display. If you don’t see the waveform, try adjusting the vertical and/or horizontal settings. You can also swipe on the screen to make these adjustments.
As long as you followed all the instructions faithfully, you should eventually be able to see the waveform on the display, along with some real-time information in the bottom left corner.
Experiment with the controls, and try stopping and starting the display. You can also move your wire to channel 2 on GP27 and change the input and trigger to check it out as well.
While Scoppy is cool, it does have several shortcomings, the most serious one being the input voltage range.
You can improve upon this by constructing a better front end for your new Pico oscilloscope.
Improved Front End
On the Scoppy website, they provide the design specifications for four different front-ends that you can build to improve the performance and versatility of the Scoppy oscilloscope.
Each of these designs uses low-cost operational amplifiers, and they can be put together on a solderless breadboard, along with the Pico. The articles are quite detailed, and even feature images of the component placement on the breadboards.
All the designs are for a single channel, but of course, you could just build two of them to create a dual-channel input.
By using one of these designs, you’ll be able to accept higher voltages, as well as AC and negative voltages. But please be aware that none of them are meant for direct connection to high voltage circuits, so don’t use these with line voltage or any other high voltages!
Basic Front End
We can also experiment with a simpler front end, one built using the three resistors that were in the parts list. Here is how to hook it up:
In this dipole design, we are building a voltage divider with the two resistors, and using the divided voltage as our ground reference. This means that the Pico’s ground and the input ground are not the same, however as long as we only have an input connected while we are attached to our Android device this shouldn’t be a problem.
The 100k resistor buffers the input and allows higher voltages to be input.
Using this arrangement, we should be able to measure simple AXC waveforms from a signal generator.
Connect a signal generator or low-level audio source to the inputs of our basic design. Make sure to only have this connected while the Pico is powered by the Android phone or tablet, otherwise, the ground resistor will likely get shorted out.
Now observe the Scoppy display while you change the type and frequency of the input waveform. In my tests, the Scoppy actually produced a pretty impressive display, at least at lower frequencies.
While Scoppy is no substitute for a “real” oscilloscope, it is a great project to experiment with, and it might even have some practical use if you build an improved front end and calibrate it properly.
In any case, Scoppy is a great example of the amazing projects that you can put together using a Raspberry Pi Pico. Give it a try and see what you think!
Here are some components that you might need to complete the experiments in this article. Please note that some of these links may be affiliate links, and the DroneBot Workshop may receive a commission on your purchases. This does not increase the cost to you and is a method of supporting this ad-free website.
This article is part of a series of 10 Projects for the Raspberry Pi. Check out the other articles in this series.