Archivi categoria: Radioamatori

Altra esperienza col volatile!

Non mi sono mai interessato molto al traffico satellitare. Vuoi per mancanza di spazio per le antenne, vuoi perché non si può fare tutto nella vita.
Recentemente mi sono nuovamente fatto incuriosire dalla ISS, per creare delle registrazioni da mostrare agli studenti del corso di “sistemi di telecomunicazione”.
L’idea è quella di mostrare loro gli effetti del rumore e le caratteristiche di un canale satellitare e di cogliere occasione per parlare di LEO, MEO e GEO.

Obbiettivo dell’esperimento: cercare di registrare un segnale audio decente dai passaggi della ISS, utilizzando il ricevitore SDR (Airspy Mini) che ho installato presso il mio ufficio e collegato ad una antenna Diskona della Hoxin (presa su ebay a circa 60 euro). Qualche problemino è emerso:
– ogni tanto la rete di casa faceva perdere qualche pacchetto di troppo;
– il segnale audio della ISS in modalità SSTV è piuttosto bassino;
– sono un cialtrone ad usare MMSSTV;
– ho avuto troppe difficoltà a salvare i dati in “banda base”, perdo frame. Questa cosa è da approfondire!

Malgrado tutti i limiti, anche quelli ambientali (fare acquisizioni con un lattante in braccio non è proprio agevole), qualche cosa nel paniere c’è rimasto. Tre immagini, piuttosto noisy e anche un po’ fuori sincronia. Per essere una “prima volta” best-effort, sono soddisfatto.

Please follow and like us:
error

Davis Instruments ed rtl-sdr

Da qualche tempo è comparsa, sul tetto dell’Università, una stazione meteo piuttosto carina: Davis Vantage Pro 2. Il sensore è installato sul tetto della torre a quota 195, la stazione nel piano sottostante. Le due unità comunicano “wireless”. I dati della stazione mi interessano per diversi motivi:
– mi piace sapere quanto fa caldo/freddo al lavoro;
-mi interessa correlare questi dati con i dati AIS in modo da valutare la propagazione troposferica in funzione del tempo atmosferico.

I dati della stazione meteo è difficile ottenerli in modo “ufficiale”: la stazione è collegata ad un portatile che non è accessibile dalla rete. Inoltre non ho idea di chi la abbia installata. Pertanto c’è un solo modo: i dati “me li prendo”. Sfortunatamente il programma rtl_433 non riesce a demodulare queste informazioni:
– rtl_433 demodula ASK mentre le Davis usano FSK;
– rtl_433 non interpreta il protocollo Davis;

La soluzione è arrivata da rtldavis, un programma scritto in go lang, che effettua le seguenti operazioni:
– accesso alla chiavetta rtl-sdr;
– algoritmi DSP per la demodulazione del segnale;
– algoritmi per la decodifica del protocollo.
Peccato che l’autore abbia terminato lo sviluppo del codice senza terminarlo (la parte di di decodifica del protocollo non è terminata). Inoltre il codice è studiato per le stazioni americane e deve essere modificato per lavorare nella banda ISM italiana.

Modifica al codice go lang: il file è “protocol.go“. Le informazioni sulla frequenza dei canali usate in Europa ho provato a ricavarle con una chiavetta SDR ma occorre essere piuttosto precisi. Fortunatamente ho trovato questo articolo in cui ci sono parecchie informazioni. In America si usano 51 canali, in Europa 5. Il codice è il seguente:

p.channels = []int{
868066711, 868181885, 868297119, 868412292, 868527466,
}

p.hopPattern = []int{
0, 2, 4, 1, 3,
}

Compilato il codice in “go”, l’output è piuttosto “criptico”:
600222FFC3004DD9
8002241FBB00C0B9

Ho provato a realizzare l’interprete del protocollo in go, ma ammetto che non ho ricavato nulla: non sono stato in grado, in tempi brevi, di trovare informazioni tali da permettermi di implementare delle funzioni facilmente. Ho deciso per un approccio alternativo: scrivere un interprete in Python che esegua queste funzioni:
– ricevere in input il protocollo raw;
– decodificare il protocollo;
– inserire i dati in mysql;
Le specifiche del protocollo sono perfettamente specificate in questo sito.
Nelle parti maggiormente criptiche mi sono fatto aiutare da questo codice, realizzato per arduino ma… sempre buono.

Output del programma:

Data 2019 02 17 Ora: 12 51
91030 500283FF710086F8

Input Lenght 2
Colonna
500283FF710086F8
Output Lenght 8
[’50’, ’02’, ’83’, ‘FF’, ’71’, ’00’, ’86’, ‘F8’]
Element 0 50
Element 1 02
Element 2 83
Element 3 FF
Element 4 71
Element 5 00
Element 6 86
Element 7 F8

Summary
Station id 0
Message Type 5
Message Type Rain Rate

Wind Velocity 3.21
Wind Direction 183.35
Wind Gust 0
Humidity 0
Rain 0.0
Rain Rate mm/h 0.0
Temperature C 0
Solar Radiation 1798.36
UV Index 0
SuperCap 0

Debug inserimento dati nel DB
Debug – anno: 2019
Closing down

Cosa scaricare:
– programma originale in “go” dell’autore Douglas Hall
– si compila e si mette in /usr/local/bin/
– Script in python:
– versione 2 — funziona da riga di comando: rtldavis 2>&1 | python weather_decoder_2.py
– versione 3 — Avvia automaticamente rtldavis come subprocess.
Il pacchetto completo si può scaricare da questo link.


Please follow and like us:
error

Ogni scusa è buona!

Recentemente in casa sono comparsi dei simpatici oggettini che sono detti “baby monitor”. Si tratta di una coppia trasmettitore/ricevitore che dovrebbe dare ai neo-genitori, la sensazione di avere una vita normale, potendo ascoltare da remoto vagiti e gemiti dell’infante.
Non si tratta di una invenzione nuova: ricordo perfettamente che “tanti ani fa” lavoravano in FM a 29700kHz. Si potevano ascoltare molto facilmente con ricevitore, davano parecchio fastidio alle automobiline radiocomandate e li ricevevano anche i walkie-talkie giocattolo (che erano in AM).

I baby-monitor di adesso hanno dimensioni molto contenute, antenne interne e batterie ricaricabili. Per intenderci una cosa di questo tipo. Leggendo le specifiche si apprezza la frequenza di funzionamento compresa tra 1800MHz e 1900MHz, in piena banda DECT. In effetti leggendo il manuale:
– Trasmissione vocale tramite sistema basato su tecnologia digitale DECT.
– Range operativo in campo aperto senza ostacoli di circa 300 metri.
DECT è uno standard che nasce per la telefonia cordless che prevede l’uso di codec audio a 32kbps e 64kbps (G726,G722) su 10 canali nella banda 1800MHz, 1900MHz. Il layer fisico usa FDMA/TDMA con TDD. La modulazione usata è GFSK ma può implementare anche modulazioni più aggressive.

In rete ho trovato un interessante articolo con questo titolo: “RE-DECTED: AN RTL-SDR DECT DECODER”. Nell’articolo si fa riferimento ad un codice contenuto su git-hub: re-DECTED. Il sistema è costruito attorno a Gnuradio e richiede un hardware in grado di sintonizzare i 1900MHz. Per questo è consigliato l’uso di un SDR basato su E4000, il compianto tuner della Elonics o di un ricevitore generico in grado di lavorare a 2.4Ms/s. Anche AIRSPY mini è tagliato fuori: arriva fino a 1700MHz. Pertanto ho deciso di modificare il codice per farlo lavorare con ADALM PLUTO.
Il codice elaborato da “znuh” prevede l’uso di diversi elementi:
– un eseguibile C dectrcv.c che riceve i dati dalla interfaccia localhost, visualizza i frames ricevuti e li redirige alla interfaccia dummy0;
– il codice python che avvia una configurazione su GNURADIO che esegue la ricezione del segnale RF;
– il codice GNURAIO è nel file dectrx.grc che può essere aperto anche con GNURADIO.

Il primo step è modificare il codice grc per introdurre il nuovo “sdr source” adalm pluto. Il primo problema è che il PLUTO non campiona a 2.4Ms/s, ma a 3Ms/s. Il blocco di ricezione invece vuole proprio questo valore. Pertanto è necessario modificare il “rational resampler”. Nella formulazione originale il flusso a 2.4Ms/s viene interpolato per 24 e decimato per 25, ottenendo 2304000. Per avere 2.4Ms/s a partire da 3Ms/s occorre moltiplicare per 0.8, ovvero interpolare per 4 e decimare per 5.

Schema a blocchi originale, credit a znuh
Schema a blocchi modificato per Adalm Pluto

Una volta effettuata la modifica non resta che avviare nella sequenza giusta i software e godersi l’output con “wireshark”. Per creare l’interfaccia dummy in un sistema Ubuntu è meglio seguire questo tutorial.

Output per programma in C, credi znuh
Output del programma GRC, modificato per vedere anche la banda base.
Output di Wireshark, con i pacchetti DECT.

Si potrebbe decodificare anche l’audio ma, sinceramente, non ne ho la minima voglia!
Il nuovo GRC si può scaricare da qui.

Please follow and like us:
error

rtl_433

RTL_433 è un progetto che ho scoperto per caso, navigando senza rotta in giro per la rete. Il sito di riferimento è su github. Si tratta di un simpatico programmino che rileva la presenza di una chiavetta SDR lo sintonizza a 433,920 MHz e si mette in ascolto su una finestra di 250kS/s. In questa fetta di spettro sono allocati sensori e telecomandi a bassa potenza. In particolare le stazioni meteo che hanno sensori wireless usano la modulazione ASK per trasmettere i dati al concentratore.

Universal Radio Hacker alle prese con il segnale in banda base.

Il programma rtl_433 riesce a demodulare i segnali dei sensori ed a interpretare il protocollo ed i dati da esso trasmessi. La cosa è molto interessante soprattutto considerando che i sensori sono dispositivi di debole potenza ed il loro raggio di azione è molto limitato. Pertanto, a meno di installazioni piuttosto bizzare, i dati ricevuti rispecchiano le condizioni meteo della zona in cui sono posizionati.
Il programma si presta bene a “sostituire” una stazione meteo, sfruttando quella di qualche ignaro vicino o consente di confrontare la propria stazione con quelle commerciali.

L’installazione del sistema è banalissima, basta compilare il sorgente scaricato da github ed eseguire il binario rtl_433. Nella mia installazione ho dovuto aumentare la frequenza di campionamento in quanto mi sono reso conto che c’erano diversi sensori “lontani”. Pertanto adesso il sistema lavora a 1024kS/s.

Posizione dei sensori nella banda 433MHz.

Collegata la chiavetta ad una antenna diskona, è iniziata la festa. I segnali dei sensori sono decodificati facilmente ed il programma restituisce un sacco di informazioni utili, anche dal punto di vista comunicazionisitico: SNR – RSSI – NOISE.

A questo punto l’appetito viene mangiando: come fare per immagazzinare i dati ricevuti in un database (MariaDB) in modo da potere rendere in forma grafica alcuni parametri?
In rete ho trovato questo interessante progetto in Python. Ho quindi preso spunto da questo script per cercare di combinare qualche cosa in Python. Ne è venuto fuori uno script che immagazzina tutti i dati nel database e registra i dati grezzi in formato JSON su un file. A corollario di questo ho anche scritto una serie di script php che consentono di accedere ai dati in forma tabulare e di rappresentare l’andamento dei parametri fisici (temperatura, umidità) e radioelettrici (rssi,snr,noise) in funzione del tempo.

Sensori ricevuti e parametri, in forma tabulare.

Grafico dei parametri fisici e radioelettrici:

Andamento della temperatura.

Questa immagine è molto interessante. Mostra l’andamento della temperatura nel tempo. Il fatto è che… le minime sono coerenti con quanto misurato anche da altri sensori. Le massime sono completamente sballate (a gennaio è improbabile raggiungere i 36 gradi). Morale della favola? Il sensore è probabilmente installato al sole, in un contenitore di plastica.

RSSI nel tempo.

Da casa riesco a ricevere una stazione “dignitosa” marca Fine Offset. Penso sia una cosa di questo tipo. Posso confrontare la temperatura rilevata dalla stazione commerciale e la mia: c’è un ottimo accordo di notte. Di giorno c’è qualche discrepanza: 11.7 mia contro 8.8 commerciale ma non conosco l’esatta ubicazione della stazione. Sicuramente il mio schermo solare deve essere perfezionato: apertura sul fondo in primis, ventilazione forzata in secundis.
Chissà cosa viene fuori ad installare il sistema sulla torre di ingegneria?

Please follow and like us:
error

I regali… quelli belli!

Un amico che lavora nel campo della radiotecnica professionale mi ha omaggiato di alcuni fondi di magazzino. Ben conoscendomi mi ha detto: “io devo pulire il magazzino, ho trovato delle cose che ti possono piacere…”:
Bingo!!

La famiglia al completo, pronta per il set fotografico.

Da sinistra verso destra:
4CX5000A – 3CX3000A7 – YC-236+EI

  • 4CX5000A
  • Tetrodo di potenza raffreddato ad aria;
  • Massima frequenza 110MHz;
  • Potenza 10kW;
  • 3CX3000A7
  • Triodo di potenza raffreddato ad aria;
  • Massima frequenza 110MHz;
  • Potenza di uscita 5.5kW in classe C;
  • YC-236
  • Triodo di potenza raffreddato ad aria;
  • Massima frequenza di uscita 250MHz;
  • Potenza di uscita 2kW;

I data sheet possono essere scaricati da questi link:

Please follow and like us:
error

Transverter 76GHz non sincronizzati

Consideriamo due trasnverter 144MHz -> 76GHz. I due sono caratterizzati da un oscillatore locale PLL con riferimento interno 10MHz. L’oscillatore locale genera una frequenza di 12648MHz che viene poi moltiplicata per 6 in modo da avere in uscita un segnale a 75888MHz. A questo viene “sommato” il segnale a 144MHz in modo da ottenere l’uscita a 76032MHz e 75744MHz.

Il transverter 1 è usato in trasmissione e il suo OSC1 genera una frequenza di 12648.005MHz. Il transverter 2 è usato in ricezione ed il suo OSC2 genera una frequenza di 12648.001MHz. In trasmissione abbiamo:
F1=75888,03MHz quindi 76032.03MHz e 75744,03MHz
In ricezione il segnale viene miscelato con 75888.006MHz del secondo oscillatore:
76032,03-75888,006=144.024MHz
75744.03-75888.006=143.976MHz

La situazione è questa: abbiamo una IF, otteniamo 2 setnali a 76GHz e, quando li riconvertiamo in IF, abbiamo due segnali a 144MHz. Questi segnali originano dal fatto che i due PLL non sono sincronizzati e non hanno un riferimento in comune. Pertanto i circuiti PLL cercano di stabilizzare la frequenza di uscita ma non fanno certo miracoli. Osservando le fasi di startup dei transverter è possibile trovare il momento in cui le due IF si incrociano e si scambiano.

Un fenomeno carino, interessante e piacevole da visualizzare con un SDR. Che è spiegabile con 4 operazioni matematiche basilari.

Fornendo ai due transverter un riferimento unico per il PLL (segnale a 10MHz) questo fenomeno non si osserva e si ha una sola componente. Fantastico!

RSS
Facebook
Twitter
LinkedIn

Please follow and like us:
error

Spyserver su Odroid XU3

Finalmente un Spyserver anche a casa. Ho trovato una vecchia scheda Odroid XU3 che ha richiesto un po’ di coccole prima di potere essere messa in produzione. La XU3 è un bel Single Board Computer (SBC), dotato di due processori quad-core:

processor : 7
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 120.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc0f
CPU revision : 3

Il problema principale è trovare una distribuzione che supporti un Kernel “decente”, almeno 4.x . Sul sito di riferimento del prodotto si trovano delle immagini piuttosto recenti e dedicate al prodotto XU4. Per rendere usabile questa immagine sono necessari alcuni step aggiuntivi che sono  descritti in questo articolo. Alla fine di tutto il procedimento il sistema funzione, manca solo di installare spyserver:

  • apt-get install build-essential cmake libusb-1.0-0-dev pkg-config
  • wget https://github.com/airspy/airspyone_host/archive/master.zip
  • apt-get install rtl-sdr
  • apt install librtlsdr-dev
  • installazione di spyserver e configurazione del software.

Messo in esecuzione il software, il carico sulla CPU è piuttosto esiguo.

RSS
Facebook
Twitter
LinkedIn

Please follow and like us:
error

How to dismantle a PhD Thesis

Parafrasando gli U2, mi sono dedicato alla distruzione controllata del prodotto del mio Dottorato di Ricerca. Durante lo studio ho sviluppato un sistema trasmettitore – ricevitore operante a 76GHz, per la caratterizzazione del canale in ambiente marino. Per la realizzazione avevo attinto al catalogo dei prodotti di DL2AM (Phillip Prinz) ed avevo speso una fortuna.

Dopo la fine del dottorato, gli apparati sono stati usati da un paio di tesisti e poi sono rimasti sullo scaffale, in attesa che si concretizzasse un progetto che non ha mai visto la luce. Recentemente, complice il fatto che vorrei investire dei soldi in un acquisto “sportivo”, ho deciso di smontare tutto e vendere i componenti di maggiore pregio.

A 3/4 anni di distanza, sono rimasto molto soddisfatto dello stato di conservazione del sistema e del lavoro che avevo fatto.

Alcune foto dei tempi che furono.

Setup alla “lavagna luminosa” per centraggio del lanciatore nella guida circolare:

Incollaggio dei diodi, eseguito a mano libera e con una lente di ingrandimento delle “patatine”. Lavoro poi controllato allo stereomicroscopio.

A sinistra un diodo per microonde incollato sulle sue microstrisce, a destra il diodo pronto per il trattamento. Le dimensioni sono 0.6×0.3 mm.

Lavoro di tesi (Fioritto – Spoletini) eseguito al mare, per caratterizzare il comportamento del canale in base al mutare dell’umidità dell’aria. Il ricevitore era corredato di sensori di temperatura umidità e pressione atmosferica.

Il ricevitore oggi, in fase di “disinnesco”:

Alcuni dettagli del ricevitore:

distributore di alimentazioni e telaio (la scatola gewiss è nera in quanto pitturata in grafite)

raspberry pi (notare tutti i cavi della GPIO con termorestringente) e preamplificatore 144MHz

scheda di controllo con Si570, convertitori A/D per il monitoraggio delle tensioni e del livello del segnale ricevuto

Il lavoro ultimato. Tutti i blocchi sono stati separati ed ora è il momento di recuperare i componenti attivi e passivi.

RSS
Facebook
Twitter
LinkedIn

Please follow and like us:
error

AIS – OffLine

Due to a server failure, the AIS server is offline. Unfortunately we don’t have any spare hardware to setup a new environment with data backup. We will remain offline till new hardware comes.

Sorry for the inconvenience.

Please follow and like us:
error

Preamplificatore a 1090MHz

Finalmente ho installato il preamplificatore che avevo acquistato su Aliexpress per i 1090MHz, da associare al mio sistema di ricezione ADS-B.

Il cambiamento di prestazioni è notevole: sono passato da una distanza massima ricevuta di 100 miglia nautiche ad oltre 180, con picchi superiori a 200.

Anche il numero di aeromobili “visti” dal sistema è notevolmente aumentato, passando da circa 700 a valori sopra il 1000. Considerando il cablaggio “creativo” sono davvero molto soddisfatto del miglioramento ottenuto!

Nella immagine che segue, la situazione del ricevitore “fotografata” il 14 giugno 2017.

Please follow and like us:
error