Simple APT decoder
A simple decoder for NOAA weather satellite images implemented in the GNU Radio Companion.
The recorded 11025 Hz audio is filtered then re-sampled to 9.6 kHz. At this rate the 2.4 kHz sub-carrier will have 4 samples / period, in other words the samples will come with 90 degrees phase difference. This allows measuring the instantaneous amplitude of the 2.4 kHz sub-carrier at a rate of 4.8 kHz using 2 consecutive samples (with 90 degree phase difference):
A = sqrt(s1*s1 + s2*s2)
Finally, the amplitude stream is re-sampled from 4.8 ksps to 4.16 ksps, which happens to be the symbol rate.
The resulting data file can be converted to PNG image using ImageMagick:
convert -size 2080x1500 -depth 8 gray:NOAA19-2010.10.17.14.54.20.dat NOAA19-2010.10.17.14.54.20-e.png
see flic.kr/p/9FncjL
[Note: there is no sqrt function in GRC which is why I convert to complex]
Details about the NOAA APT format:
Simple APT decoder
A simple decoder for NOAA weather satellite images implemented in the GNU Radio Companion.
The recorded 11025 Hz audio is filtered then re-sampled to 9.6 kHz. At this rate the 2.4 kHz sub-carrier will have 4 samples / period, in other words the samples will come with 90 degrees phase difference. This allows measuring the instantaneous amplitude of the 2.4 kHz sub-carrier at a rate of 4.8 kHz using 2 consecutive samples (with 90 degree phase difference):
A = sqrt(s1*s1 + s2*s2)
Finally, the amplitude stream is re-sampled from 4.8 ksps to 4.16 ksps, which happens to be the symbol rate.
The resulting data file can be converted to PNG image using ImageMagick:
convert -size 2080x1500 -depth 8 gray:NOAA19-2010.10.17.14.54.20.dat NOAA19-2010.10.17.14.54.20-e.png
see flic.kr/p/9FncjL
[Note: there is no sqrt function in GRC which is why I convert to complex]
Details about the NOAA APT format: