Receiving weather satellite images with Softrock
The National Oceanic and Atmospheric Administration (NOAA) manages a few satellites in low earth orbit. There are three actively transmitting APT (Automatic Picture Transmission) signals at the moment: NOAA-15, NOAA-17, and NOAA-18. Each of these satellites passes overhead a few times a day. I've been interested in learning how to receive their signals for a while now, and I've finally succeeded!
A bit ago, I bought a "SoftRock" SDR (Software Defined Radio, read the excellent 3-part article by Bob Larkin at the ARRL site) receiver kit from Tony Parks. (A note about his site, he puts a few kits up for sale a few times a month, so he's almost always sold out.)
I think SDR is really, really interesting. I don't want to get too bogged down in the details of it, because it's not the point of this post, but I'm going to briefly discuss it. Basically, the idea is that you want to have some minimum amount of electronics to deal with the antenna, and let your computer handle the rest. This can take a variety of forms, but the simplest is the QSD, or Quadrature Sampling Detector.
It sounds complex, but it's quite like using a strobe light to look at a spinning wheel. The bright light of the strobe "samples" the world at a given interval. If it strobe rate matches the speed of the wheel, the wheel appears still. Stretching the analogy a bit further, imagine that information is written on the wheel. Using the strobe you can read it, even if it's spinning. While that is an awful analogy, the idea is that we can sample the radio signal at (nearly) the same frequency as the carrier of our desired signal. When we do this, the signal we want magically appears at the output.
If we're using AM (or its derivatives such as LSB or USB) we can even listen to it directly. It only gets a bit more complex when we consider the quadrature part. Quadrature just means "90 degrees out of phase". Using another copy of the radio signal, and a sampling clock in quadrature, we can cancel out some noise and interfering signals.
Sorry for the tangent, if you read this far (without falling asleep), I recommend you read the linked articles at the top of this paragraph. The math isn't too hard, and it's sooo powerful!
This isn't an image of my SoftRock, it's a slightly different version, but I don't have an image handy. It's a really easy kit to build, and it's fairly inexpensive. More than that, it's really easy to use. Once it's all setup, you just attach it to your computer, power it, and install the antenna!
Once you've attached the receiver hardware to your computer, you need some software to use it. The image above is a screenshot of a very well written SDR program on the Mac called DSP Radio. On the left side of the spectrum window, there is the live radio spectrum coming from the satellite. The green box around it represents the bandwidth of my software radio receiver. In a traditional radio, this bandwidth would be set by a filter circuit, and most communication radios only have about 15 kHz of bandwidth. This makes them unable to properly receive satellite weather images.Traditionally, you would have to build or buy a specially-built satellite receiver.
With SDR, I can move a slider to scale the bandwidth way, way up! In this case, I'm using about 37 kHz of bandwidth! Notice that there's all this empty space on the right, this is radio spectrum that I'm receiving, but there's nothing there. Maybe you can notice the shadow of the satellite data on the right; this is an "image." These images are the bane of all radio designers. The true test of a receiver (other than sensitivity) is how well these images are suppressed. In this case, they're suppressed rather well, notice how bright the lines are on the left compared to the right.
The DSP Radio program takes the signals from the Softrock through the audio input of the computer. When you have something tuned, the demodulated signal appears at the audio output. I've been recording these signals as well as passing them to another program called WXtoIMG. This program is not great, I'll be honest. It's barely maintained, and you can tell it's an ugly cross-platform mess. To even get it to work is tricky. But, when it does does work, it it works well.
The image at the head of this post was generated using WXtoIMG. When I made that image, I literally had to connect the audio out of one computer to the audio in of another. I'm not sure how I'm going to get around that issue. It can accept data in the form of wav files, provided that they're linear PCM sampled at 11,025 Hz with at least 16 bit samples.
The problem with this approach is that the nice political boundaries, latitude and longitude lines, and ground image comes from the program. It does this by computing the location of the satellite and where on the earth its photographing. It has to decode the audio in real time for this to work, which means that I can't use an audio file. For you to play around with, if you wish, I've included a sample wav file. It starts before the satellite pass and ends after, so it begins and ends with static.
While I did use WXtoIMG to generate the image in this article, there is also the open source WXAPT, that could be used under Linux.
NOAA15-baseband.wav (large file warning: 28 MB)
The image below was taken when the satellite was traveling south-north, so I had to flip it vertically and horizontally. On the right side of the image is the A channel, which is visible light, and the left side is the B channel, infrared. Normally, these channels are reversed left-to-right. The stripes and color bars help the decoder line up the image and adjust brightness, contrast, and gamma.