Flexible simple Scoppy Frontend

I came across the Raspberry Pico microcontroller project from https://github.com/fhdm-dev/scoppy two days ago. FHDM has an Android app called Scoppy, which connects to the Pico via USB and enables a simple 2MS/s oscilloscope via smartphone or tablet. I still had one of the Picos lying around unused, so I took a closer look and tried it out.

Firmware Installation

The installation went smoothly according to the installation instructions. As usual, flash nuke the Pico via USB and then also copy the firmware for Scoppy to the Pico via USB.

Extension of the Measurement Range

The input port (GP26_A0/Channel 1) can only evaluate values from 0V to 3.3V. Accordingly, it makes sense to connect a suitable analog frontend to the input port to perform flexible measurements.

This can be done quickly, easily, and cost-effectively with some standard components.

The input can be configured to 3 different measurement ranges via jumper and also feed in a generated square or sine signal.

The 3 ranges are approximately:

  • -15V to +15V
  • -5.5V to +5.5V
  • 0V to 3.4V

The exact values depend on the precise resistance values and their tolerances. After completing the frontend, it must be measured with a voltmeter and recorded as a configuration in the Scoppy app.

I thought it was sensible to offer the last range also protected against overvoltage and undervoltage, although practically it is fed as close to 1:1 as possible to the Pico pin.

The protection is done via clamp diodes and the 3.3V reference supplied by the Pico, sometimes also using Zener diodes.

An existing LM358 was used as the op-amp.
It is powered via V_Bus of the Pico with 5V.

Frontend Board (top) with 3 selectable Ranges and AddOn Board with Gain trimmer

A LED can be connected to the GP15 of the Pico, which lights up with the trigger of the Scoppy app. If you want it to be a bit brighter, simply replace the R5 2.2k resistor with, for example, a 1k resistor.

In retrospect, it turned out that a very sensitive measurement range with sufficient amplification via the op-amp would also be useful.

AddOn Board with Gain

So, you can now attach an add-on board via pin headers, instead of jumpers, which drives the B-channel of the LM358 and applies the amplified output signal to the GP26_A0 pin of the Pico.

The measurement range is from approximately 0V to about max. 1V. However, the upper limit depends on the set amplification factor and how the components behave specifically. The maximum output voltage should not exceed 3.3V at the input of GP26_A0, to avoid the signal being diverted through the Z-diode. Since some voltage is always present due to the frontend clamp diode circuit, which is also amplified, the usable measurement range becomes smaller with greater amplification.

Originally, I aimed for a maximum gain of 55. On my board, Rg is 2.2k instead of the 1k adjusted later in the circuit diagram. Therefore, I subsequently soldered a second resistor underneath to achieve a gain of about 100. For my example application with the microphone, with only a 2mV AC input difference, this amplification is necessary.

With AddOn-Board (and fixed parallel prototype Rg)

Stripboard

The base board looks more or less like the following stripboard graphic.
The pin sockets are, in reality, only 1 hole size, so there is some more space in the area left of LM358. My 3V3 connection, the app config jumpers (right side) and the LED have been placed differently at the end. So there has been no need for crossing 3V3 and VBus.

Stripboard for base board

Dynamic Microphone Measurements

With the AddOn Board it is possible to do some simple measurements with voices and a cheap dynamic microphone.

Dynamic microphone measurement example with AddOn board

9V AC Power Supply Measurement

Another example when using the +-15V range (slightly out of limit) is a 9V AC power supply. You can see the AC Sinus Wave with 50Hz in EU.

Jumpered main board for +-15V range and connected 9V AC power supply

Jumper feature

I describe little bit the jumper feature.
The pins on the left are all connected to the inner pin of the SMC socket.

Then there are 3 single pins right next to this line for selecting 3 different ranges. Top/down big to small range. Over the left red jumper, there is the open bridge jumper for the signal generator output.

At the bottom from left to right is a 2-pin for ground, then there is a red bridging jumper for the LM358 A channel output to the GP26_A0 input.
With the AddOn-Board the bridge is open for B channel usage and the output of B channel is connected to the left pin to GP26_A0 input.
On the right there is another 2-pin for ground.

Top of the LM358 is 3-pin for the B channel pins of LM358 to connect the AddOn-Board.

Left of LM358 is 3 range bridging to the A channel non-inverted input of LM358.

Over these 3 2-pins, there are 3 more 2-pins. 1 a dummy to store the jumper. And the 2 other 2-pins, connect 3.3V to the GP2/3 to configure the app for input range. No bridge, range 0, top bridge range 1, bottom bridge range 2. Both range 3, which is used by the AddOn-Board.

Here now the measurement of the 9V AC supply. You see it hits/flatten the negative limit of the range at -14.8V.

Sinus wave in Scoppy App

Circuit of Base and AddOn Board

Analog Frontend RP Pico Scoppy Oscilloscope Circuit