In the last two parts, I used my homebrew software-defined radio to receive weather image signals from the NOAA-19 satellite and spent some time trying to calculate the satellite's speed using frequency shift measurements. This time around, I'm going to demodulate the raw signal and turn it back into the image the satellite captured.

The NOAA-19 APT signal is a relatively simple signal to understand. When the satellite captures an image, it scans through it line-by-line, at a rate of two lines per second. The brightness of the image during scanning is amplitude modulated on to a 2.4kHz carrier tone, and sounds like this:

You can hear the (slightly painful) 2.4kHz carrier tone. Also notice the tick-tock-tick-tock pulse of the signal. Each tick and tock is a sync signal followed by a line of image data. Why a tick and a tock? APT transmits two images at a time, so the "tock" is the sync signal between data from the first and second images.

APT video line format
APT video line format

I rigged up a GNU Radio Companion "patch" to demodulate the APT signal. It's based off a APT decoder by Alexandru Csete. It filters and demodulates the signal and outputs a file of demodulated data.

Simple NOAA APT demodulator for GNU Radio
Simple NOAA APT demodulator for GNU Radio

I tweaked the demodulated file a bit with Python, normalizing the data to the range (0,255) and writing out a byte-per-sample file:

import numpy
raw = numpy.fromfile('words.f32', dtype=numpy.float32)
normalized = raw / max(raw) * 255.0
output_u8 = numpy.array(normalized, dtype=numpy.uint8)
output_u8.tofile('pixels.u8')

Following Alexandru's lead, I used ImageMagick's "convert" to translate the byte-samples to a PNG image:

convert -size 2080x1194 -depth 8 gray:pixels.u8 image.png

And behold! A really noisy satellite image!

Raw APT image
Raw APT image

There are two images visible, side-by-side. The left side seems to be a visible spectrum image, while the right seems to be infrared. You can see parts of California, Oregon, and Washington. The Columbia River, a few miles from my house, is somewhat visible, too:

APT image, labeled
APT image, labeled

This was my first attempt at capturing a satellite signal, so I was using a crappy all-purpose dipole antenna. Hence the wretched amount of noise. But still, for my first attempt, I'm pretty pleased! Now, to build a better antenna