SEES 2022: SSTV, What's That?

Guest blog: James E.

Hello everyone!

As my team's resident novice RF engineer, I figured that I'd write a brief article about something so integral to the A.M.E.A. Project!

First, I must introduce some Amateur Radio linguistics and general knowledge that'd be useful in understanding this article! (Note: Originally this section was going to be a lot smaller but then I realized that I needed additional information in order to understand the basics I included!)

>RF Stands for Radio Frequency.

>Amplitude can be roughly defined as Signal Strength.

>According to Wikipedia, Modulation is the process of varying one or more properties of a periodic waveform, called the carrier signal, with a separate signal called the modulation signal that typically contains information to be transmitted.

>AM is a type of radio wave modulation named Amplitude Modulation where you have a carrier signal and two voice signals on either side. 

>FM is another type of radio wave modulation that instead of varying the amplitude, like AM, it varies the frequency so that the amplitude and phase stay the same

>SSB (USB and LSB Variants) is a more efficient way to transmit voice signals where the carrier and one of the voice signals, or sidebands, are suppressed.

>CW, or Continuous Wave, is a form of modulation where only the carrier is transmitted and there is no modulation of any kind, save for the breaks in transmission done by the operator.


>In the chart above, SSB, AM, and FM have all been combined into one category, phone. Although they're all considered phone modes, it doesn't mean that you can use them freely!

>FM takes up the most amount of bandwidth, followed by AM, SBB, then CW. FM is only usable from the 10m Voice Band (28.300 MHz - 29.700) up to all the other VHF (6m, 2m, 1.25m), UHF (70cm, 33cm, 23cm), and all the other extremely high frequency bands due to the bandwidth that it takes up. AM, SSB, and CW are usable in all of the Amateur Radio bands because their bandwidth doesn't violate FCC regulations.

>Broadcasting is a dirty word. Broadcasting is what TV, AM, FM, SW stations do, it's meant to be one way. Transmitting isn't! Transmission is just putting something out there, and in the way that we use it, meant to be replied, responded, or studied.

>SSTV, short for Slow Scan Television, is a form of image transmission where an image is converted, or encoded, as a audio file, then is transmitted, received, and restored, or decoded. Since the decoder listens live on the air for the signal, more often than not, you'll end up with an image that resembles the one below.

So for our project, I'm putting this form of encoding to use!

Below are some testing images I created and decoded with a placeholder tool that can be found on the Google Play Store under the name Robot36 Decoder.

I'll walk you through how I make this work!

First things first, I need to import a lot of modules!

(Note: I'm sure that I don't need a few of them but I'm worried that I'll mess something up if I do...)

Going to the bottom of my script, I have the main components/functions of my script organized into another function that I call as many times as I want.

Since I borrowed major elements of this script from online resources, I had to cobble them together so there are a few portions of my script that need to be amended so they serve their intended function. I've also left the original comments to help better explain what the script is doing. 

I got this portion of script from

I then ask my script to analyze how bright the image I took was and store that value as a variable that I can call later.

I got this portion from

Being as optimistic as I am, I noticed that the extremes of the values produced could be converted into a scale from 0-100, therefore allowing me  to make a brand new unit of measurement named the Deo.

Next, I ask python to use the PIL (or Pillow) library to add text to my image, choosing its color based on the light level, in Deos, that I received from the previous function. It then updates the original image file, saving space and preventing a need to return some sort of variable.

Finally I use the insanely powerful PySSTV Library to convert the image I have stored into a .wav file and then play it using the windows sound library.

Since I can use this simple, basic script to convert my webcam image, I can easily input any image file, as seen in my demo script in my repo below. If you find some time, I highly recommend that you give this a try!

Here's the audio file created by this script!

And here's the image I received from the audio!

A person in a blue shirt

Description automatically generated with medium confidenceAbout the author: James E is a high school student in Austin, Texas, an Amateur Radio Operator (KI5UXW​​​​​​​), and a Former Kerbal Space Program Mod Developer. His virtual internship is part of a collaboration between the Institute for Global Environmental Strategies (IGES) and the NASA  Texas Space Grant Consortium (TSGC) to extend the TSGC Summer Enhancement in Earth Science (SEES) internship for US high school ( James shares his experience in this blog post.

More Blog Entries