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.
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.
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!
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:
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…