Published 2026.09.29
I've been meaning to write about my college senior project for years, and I've finally been compelled to dig it back up to take a look at it. Six years later, and I still really like the idea behind it.
To graduate from the Computer Science program at Northern Michigan University, everyone had to come up with and implement a senior project. The requirements were fairly open-ended, with students writing their own proposal and setting their own goals. Those goals would go on to define the grading scale for the project. I recall there were some specific things the project had to do, or at the very least, it had to be approved by the committee, but you could do essentially whatever you wanted. I assume this is a fairly common practice at other universities, but I really admire the approach to letting students do their own self-guided project then holding them to their own commitments. Beyond the practical application of technological skills, the senior project program also forces students to brainstorm ideas, develop a plan, and see it through. It definitely improved my project management skills.
I'm going to take some time to put down the story of my senior project, my thoughts on it six years on, and implement a new, more minimalist incarnation of it to live permanently on this site.
Slow Scan Television is a way of encoding images as analog signals, akin to traditional analog television in the way that it scans the image line by line, but capable of being sent over small bandwidths (at the expense of being, well, slow). You might think "video" when you hear the word "television" but you'd be mistaken, and you'll want to lower your expectations. SSTV is, to my knowledge, only about sending stills. One person encodes the image and transmits it via a sound that you could be forgiven for mistaking with the harsh drone of a dial-up connection.
A robot36 SSTV example. As homework, decode this on your own.
The other person receives this signal and decodes it into a picture. The result is a fuzzy, usually low-resolution image, whose quality varies greatly depending on how clearly you receive it. To me, this is a great part of the appeal. You can perfectly transmit pictures using any number of digital modes with checksums to ensure that the image remains totally intact on the other end; but there's a nostalgic quality to the imperfect analog images you get with SSTV. It's definitely not the ideal way to send pictures over radio in the 21st century, but it just feels cooler, in a mid-century retro-futuristic kind of way. It's how early images from space were sent. Digital image modes are better, but they won't produce a result that looks like it came from a venusian lander.
There are a bunch of different SSTV modes, which all operate on similar principles, but with differences in terms of picture quality and color coding. I don't remember why I chose Robot36 specifically, but if you look at the different modes, Robot36 offers a good compromise between transmission time and quality, giving you a 256x240 color image in a mere 36 seconds. That might sound like a low resolution and a long time, but in the world of SSTV, that's a pretty good score. And the images look ... well, they look like SSTV images.
A silly photo of my dog, Pretzel, looking fuzzy in more ways than one
This is a quick image I encoded/decoded for this blog post. It could be better, but it could also be worse. I would say this is fairly typical quality. I transmitted it via "acoustic coupling" which is a fancy way of saying I held my phone up to the radio mic. I did this because in 2026 (unlike in 2020) I have succumbed to the inevitability of a phone without a headphone jack. Let's just chalk it up as the noise introduced by acoustic coupling approximating the noise you'd get receiving a more distant transmission (I only sent this across the room).
Over the summer prior to undertaking the project, I had been casually interested in amateur radio. In fact, I would say by and large I was uninterested, except for a few small aspects of the hobby. I had no interest in talking to strangers over the radio, and had no intention to get into building antennas or collecting ever-more-expensive gear, but I did like talking to my friends and I was particularly drawn to the idea of analog image transmission. I had been talked into getting my license by a friend, and soon after began dabbling with slow scan television, primarily to send memes back and forth with my other licensed friends.
I only ever got the basic "technician" license. There are three tiers to amateur radio licenses in the US, and the technician is the easiest one to get, and it likewise confers the most basic privileges. To put it in layman's terms (and to be frank, I am essentially a layperson in this domain), the technician license only really lets you use fairly low-powered, low-range bands for voice, so-called VHF and UHF. This is not an amateur radio blog, and I'd probably get some flak for saying this, but for your understanding, you can picture "walkie talkies like you used as a kid" only very slightly better. Unless you have optimal conditions (such as a very elevated antenna), you're looking at a range that is more aptly measured in feet, rather than miles, on these bands. That is, when you're communicating "directly" from one radio to another. The primary use of VHF and UHF is done by repeater. People set up high-powered stations in good positions (i.e. on top of a tower) that echo what they receive, allowing you to reach much more distant locations, perhaps up to 50 miles away or so. Getting back to the point, this is a type of radio that is scarcely ever used to transmit SSTV. I know this, but it didn't stop me from wanting to try it.
The small group of my friends annoyed the local radio community that summer. After getting licensed, and crucially nailing down my vanity callsign, W9WJK, we used the local repeaters for chatting. Once I'd gotten the inkling that I'd like to try out some SSTV, I had a problem. My problem was that from one handheld radio to another, we didn't have anything like the power needed to send a dumb picture from my house to a friend's house. Having to drive to get closer would defeat the point. Eventually, we resorted to sending some pictures to each other over a repeater. We knew this was a faux pas; after all, this was a wide-reaching public channel to be used by responsible radio operators, and we were about to fill it with unbearable screeching for the purposes of our own amusement. So we did it late at night when the repeater was not in use. Nevertheless, we got some reaction from people who happened to be monitoring at the time. At least one individual managed to decode our images and posted them online. The reaction was largely one of amusement, but the embarrassment of being called out for that transgression put me off that entire scheme, and we only undertook this exercise once.
Still, I was craving some way to incorporate slow scan television into my life. It was simply too much fun to send and receive these blurry pictures to forego it indefinitely. Therefore, when it came time to come up with a proposal for a senior project, I had this on my mind.
What I came up with was pretty ambitious, though at the time I didn't think it was. Only after I had presented and saw the reaction of the grading committee, did I realize that I could have gotten away with something much simpler; but knowing myself, I would have probably made it anyway once I had the idea. I really wracked my brain for a project, and had a number of different ideas, but I'm glad I ended up going with what I did.
The idea was this: to make a system comprised of a web server and a radio station. The idea was that the radio station (based on a Raspberry Pi connected to a portable radio) would decode any SSTV images it received and upload them to the web server, and also had a camera with the ability to send its own SSTV images on demand (or re-send ones from the database). The functionality of the station would be remote controllable via DTMF tones (the discordant beeps and boops produced by old telephones when you dial; these are frequently built into radio transceivers for controlling systems like this remotely). The web server would host a gallery application that let users view and comment on all the images received.
The original diagram from my project proposal
This was envisioned as a sort of public art piece. Anyone could interact with it and, if they possessed the necessary skills, equipment, and proximity to the station, upload their own picture. In practice, of course, it was never deployed like that, but it could have been. I also never managed to get the DTMF controls working quite right; this was an aspect of the project that was unexpectedly difficult. I guess at the time I was unable to find a suitable library for listening and decoding the tones, and the algorithm to do so was beyond me. I ended up getting help from a friend with that part, but didn't want to bother them too much about it, so it remained in an unfinished state, where it worked maybe one out of every 10 tries.
The other failing of mine was the "Push to Talk" controls. Because the radio I intended to use was a cheap handheld transceiver (the ubiquitous and oft-maligned Baofeng), I thought it would be important to allow the station to control transmission automatically, otherwise it would be unable to both listen and transmit. I never determined the right way to wire up the PTT circuit, though I'm fairly certain I'd be able to figure it out today. Instead, I ended up turning on the voice-activated transmission/VOX functionality which luckily worked just fine for detecting if there was any audio output and transmitting, though I seem to recall this would cause the first moment of audio to be cut off.
The rest of the project worked pretty well, though. I don't recall if I ever had it up on the public Internet, and it probably lacked the appropriate security measures for that, but the site was good enough, and all the other station functions worked. Below is a photo of the real-life station in all its glory.
Looking back on it has had me wanting to recreate this project in some more permanent way. It was obviously sort of thrown together, very much a prototype, and I don't have any illusions of deploying this old project again. Nowadays I maintain a strictly static site with no user input, and I think that's probably for the best, security-wise. But I do have a trimmed-down version of just the gallery of received SSTV images up and running.
For what it's worth, the two repos from this project are still available on GitHub for anyone looking to take a look at how awful(ly good) it is.
While the old version of the radio station had bidirectional communication (with the ability to send its own SSTV images) and an onboard camera, the core element I want to recreate is the public gallery of received images. If I skip the transmission, that enables me to build a much simpler station, with just a Raspberry Pi and an SDR (Software-Defined Radio). My plan is to set this up in a semi-permanent location and leave it listening to the (sparsely used) 2-meter SSTV calling frequency, 145.500 MHz.
I'll have a script that just uploads any images detected directly to my server via scp (rather than developing a web API like the old system, which is overkill to this purpose) and then I'll probably just have a script to regenerate a static html file with all the images in it (rather than implementing some kind of actual backend). This is probably the most primitive way to go about it, but that's what I like about my website: it's primitive.
So, if you're ever in the area, and you have a license and access to a radio and want to try to hit my station, give it a try. I recommend this SSTV Encoder app for Android (there are doubtless equivalents for iOS). If you successfully send me a picture, it'll show up in the gallery.
Since this version is receive only, I could hypothetically have it listen on HF (where SSTV is usually transmitted) but unfortunately, my SDR doesn't work on HF and I don't have the right antenna for it. So, I'm sticking to the same frequency as before, even though it's unlikely to ever receive anything. I guess it's more proof of concept than anything. I'll probably just put some of my own pictures up there to test it.
You can visit the new SSTV gallery here.