SVG based Vector Scope

April 2026 ยท 3 minute read
I was gifted a Sencore SC62 oscilloscope from the mid-80s. It had spent a good chunk of its 40+ year life in a barn. This beautiful device along with many similar models are being discarded since modern scopes have become so cheap and capable. To avoid that fate I wanted to repurpose it into something that would allow it to live indoors once again.

Most oscilloscopes have an XY mode which lets you drive the beam position directly with two voltage inputs โ€” one for horizontal, one for vertical. This makes them natural vector displays, capable of drawing anything you can express as a series of coordinates.

As part of my plotter work I have been playing around with vectorizing all sorts of things and decided to build a vector based pipeline so that I could convert SVG files (one layer per frame) into animations, which could then be shown on the Sencore’s CRT.

In all I created 16 animations which fit into the available flash memory of the ESP32 with room to spare.

Full videos are available - here, and here, and also here.

Rotoscoping

The simplest and most pure animations for this project were created in Inkscape. I converted video to a series of frames, stacked them each on their own layer and then started tracing. It was time consuming but enjoyable and I really like the results.

3D Blender + Freestyle

Freestyle is an amazing Blender built-in add-on which can generate line art from a 3D scene. Tuning the parameters to achieve the desired look is an art but the results are impressive.

Freehand

I drew some of these animations by hand as well. I tried a few tools for this without finding anything I liked so I ended up doing this in Inkscape as well. My partner contributed this wolf to sheep morph which was done in Procreate and then I auto traced it in Inkscape.

Processing

I had wanted to play with Processing for awhile and this was a good excuse. I modified some of their examples to generate the text. The text is busy enough that it flickers on film because the CRT electron gun can’t keep up but in person it’s nice and smooth.

Turtles

I’ve made some turtle toys in the past and decided to port the differential growth generator into an animation.

Animation Conversion

The animation frames in SVG format were then traced using some scripts I wrote to convert them to x/y coord pairs in C++ format so they can be imported into the Arduino code that runs on the ESP32. This isn’t the most compact format but luckily I ran out of free time to create the animations before I ran out of storage space.

Hardware

Getting the ESP32 talking to the Sencore was simpler than I expected. The scope’s two probe inputs map directly to the ESP’s DAC outputs โ€” one for X, one for Y โ€” and together they steer the CRT beam to draw each frame. Complex frames can push the electron gun faster than it can keep up, which causes the flickering you might notice in the videos. In person it’s completely smooth, which made the first successful test genuinely exciting to see.

To keep everything self-contained I spliced into the Sencore’s internal 9 volt rail and regulated it down to 3.3V for the ESP. The DAC outputs tap onto the probe lines, so if I ever wanted to hand the scope back to someone for actual electronics work, it’d take about five minutes to revert.

Giphy

I also converted all the animations to GIF so I could uploade them to giphy and use them in FB messenger.