Ricezione Autonoma dei Satelliti NOAA con Raspberry PI

Oggi vi proponiamo la possibilità di ricevere una un Raspberry e una chiavetta SDR le immagini meteo dai satelliti NOAA
Materiali necessari:
Raspberry PI Chiavetta SDR ( io ho usato la chiavetta SDR-RTL )
Io vi consiglio di inserire un filtro 88-108 tra l’antenna e il raspberry. La ricezione migliorerà sicuramente, evitando di mandare in saturazione le chiavette a causa dei forti segnali delle radio commerciali
Preparare la distribuzione ( se non l’avete a portata di mano ) sul raspberry e avviarlo. inserite i seguenti comandi:
sudo apt-get update
sudo apt-get upgrade
sudo reboot now
Andiamo avanti, appena riavviato, installando le libreire ed il tool cmake
sudo apt-get install libusb-1.0
sudo apt-get install cmake
creiamo il file no.rtl.conf con:
sudo nano /etc/modprobe.d/no-rtl.conf
ed inseriamo:
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
Ora installiamo la suite SDR:
cd ~
git clone https://github.com/keenerd/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot now
Per poter registrare l’audio e far partire la decodifica ad un orario prestabilito usiamo:
sudo apt-get install sox
sudo apt-get install at
sudo apt-get install predict
Ora installiamo il software di decodifica:
cd ~ wget https://www.iz0fiu.it/wxtoimg_arm/wxtoimg-armhf-2.11.2-beta.deb sudo dpkg -i wxtoimg-armhf-2.11.2-beta.deb
Adesso, dobbiamo inserire la chiavetta SDR nella porta USB del raspberry. Spegniamo il tutto, inseriamo la chiavetta e riaccendiamo. Per vedere se e’ andato tutto ok inseriamo il comando:
sudo rtl_test
Dovrebbe restituirci una risposta simile:
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 ...
Sampling at 2048000 S/s.
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
Ora prepariamo il software per prevedere i passaggi:
predict
Apparirà una grafica dove dobbiamo inserire i parametri della nostra stazione:
* Ground Station Location Editing Utility *
Station Callsign : IZ0FIU
Station Latitude : 41.2621 [DegN]
Station Longitude : -13.6245 [DegW]
Station Altitude : 50 [m]
Enter the callsign or identifier of your ground station
Ora avviamo WxtoIMG per accettare i termini di utilizzo:
wxtoimg
Chiudiamolo e creiamo il file di configurazione:
sudo nano ~/.wxtoimgrc
Anche qui inseriamo le nostre coordinate:
Latitude: 41.2621 Longitude: 13.6245 Altitude: 50
In questo caso la Longitudine e’ EST, quindi a differenza di prima non dobbiamo inserire il segno “-” davanti il numero. Proseguiamo:
cd ~
mkdir weather
cd weather
mkdir predict
cd predict
sudo nano schedule_all.sh
ed inseriamo all’interno:
#!/bin/bash
# Update Satellite Information
wget -qr https://www.celestrak.com/NORAD/elements/weather.txt -O /home/pi/weather/predict/weather.txt
grep "NOAA 15" /home/pi/weather/predict/weather.txt -A 2 > /home/pi/weather/predict/weather.tle
grep "NOAA 18" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle
grep "NOAA 19" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle
grep "METEOR-M 2" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle
#Remove all AT jobs
for i in `atq | awk '{print $1}'`;do atrm $i;done
#Schedule Satellite Passes:
/home/pi/weather/predict/schedule_satellite.sh "NOAA 19" 137.1000
/home/pi/weather/predict/schedule_satellite.sh "NOAA 18" 137.9125
/home/pi/weather/predict/schedule_satellite.sh "NOAA 15" 137.6200
Usciamo salvando con CTRL+X e proseguiamo:
sudo nano schedule_satellite.sh
ed inseriamo:
#!/bin/bash
PREDICTION_START=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | head -1`
PREDICTION_END=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | tail -1`
var2=`echo $PREDICTION_END | cut -d " " -f 1`
MAXELEV=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | awk -v max=0 '{if($5>max){max=$5}}END{print max}'`
while [ `date --date="TZ=\"UTC\" @${var2}" +%D` == `date +%D` ]; do
START_TIME=`echo $PREDICTION_START | cut -d " " -f 3-4`
var1=`echo $PREDICTION_START | cut -d " " -f 1`
var3=`echo $START_TIME | cut -d " " -f 2 | cut -d ":" -f 3`
TIMER=`expr $var2 - $var1 + $var3`
OUTDATE=`date --date="TZ=\"UTC\" $START_TIME" +%Y%m%d-%H%M%S`
if [ $MAXELEV -gt 19 ]
then
echo ${1//" "}${OUTDATE} $MAXELEV
echo "/home/pi/weather/predict/receive_and_process_satellite.sh \"${1}\" $2 /home/pi/weather/${1//" "}${OUTDATE} /home/pi/weather/predict/weather.tle $var1 $TIMER" | at `date --date="TZ=\"UTC\" $START_TIME" +"%H:%M %D"`
fi
nextpredict=`expr $var2 + 60`
PREDICTION_START=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | head -1`
PREDICTION_END=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | tail -1`
MAXELEV=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | awk -v max=0 '{if($5>max){max=$5}}END{print max}'`
var2=`echo $PREDICTION_END | cut -d " " -f 1`
done
Salvare, uscire e creiamo l’ultimo file:
sudo nano receive_and_process_satellite.sh
ed inseriamo:
#!/bin/bash
# $1 = Satellite Name
# $2 = Frequency
# $3 = FileName base
# $4 = TLE File
# $5 = EPOC start time
# $6 = Time to capture
sudo timeout $6 rtl_fm -f ${2}M -s 60k -g 44.5 -p 55 -E wav -E deemp -F 9 - | sox -t wav - $3.wav rate 11025
PassStart=`expr $5 + 90`
if [ -e $3.wav ]
then
/usr/local/bin/wxmap -T "${1}" -H $4 -p 0 -l 0 -o $PassStart ${3}-map.png
/usr/local/bin/wxtoimg -m ${3}-map.png -e ZA $3.wav $3.png
fi
In questo file facciamo attenzione ad un parametro, ovvero il numero dopo “-g” che dovrà variare da chiavetta a chiavetta a seconda dei parametri supportati del “Gain” che abbiamo letto prima, cerchiamo di trovare il valore che corrisponda al 70-75% del massimo supportato, ci garantirà la migliore qualità. Probabilmente dovremo cambiarlo in futuro a seconda della qualità immagini ricevute. Un altro parametro di cui tener nota è la correzione in ppm (il numero dopo il parametro “-p”) del quarzo della nostra chiavetta, di default è a 0 ma andrà revisionato a seconda del nostro hardware
sudo chmod +x schedule_all.sh
sudo chmod +x schedule_satellite.sh
sudo chmod +x receive_and_process_satellite.sh
rendiamo eseguibile il tutto:
export EDITOR=nano
crontab -e
ed inseriamo in fondo:
1 0 * * * /home/pi/weather/predict/schedule_all.sh
@reboot sleep60 && /home/pi/weather/predict/schedule_all.sh
Riavviamo il tutto e siamo pronti a ricevere le immagini dai satelliti NOAA.
Ad ogni passaggio e successiva decodifica, nella cartella weather ci saranno tre file, 2 immagini di cui una mappa ed un file audio.
5 risposte
Ciao
Ho installato il tutto e funziona perfettamente , ma le immagini hanno sfondo nero e non a colore.
Ho letto che bisogna cambiare le impostazioni di wxtoim .
Non so come fare dal promt dei comandi e dal desktop non ho la possibilità di aprire wxtoimg.
Mi puoi dare qualche suggerimento ?
Grazie
Grazie per il tuo interesse. Da prompt, quindi da terminale, devi digitare wxtoimg e si avvia il programma. Infatti, coma da tuo riferimento, non c’e’ una icona per avviare il software. Fammi sapere
Ciao
grazie della info , ho trovato il percorso e ho cambiato impostazioni.
adesso devo capire perchè il sistema funziona bene per due/tre giorni e poi si blocca
Grazie ancora
Salve, ho provato a fare quanto descritto x poter ricevere qualcosa…purtroppo ho messo solo una jpole che comunque un segnale lo riceve..
Penso che non trovo niente nella cartella perche’ al raspi gli manca qualcosa ….help
Il sistema gira in back-ground? Non vorrei che il software non è attivo al riavvio del Raspberry