satellite tracking con arduino

apro questo topic per dare qualche spiegazione in merito a una delle attività amatoriali e per farmi aiutare da chi ha voglia di costruire un inseguitore di satellite open source!

Iniziamo con darvi un sito per capire di cosa parliamo http://www.n2yo.com/ qui si sta tracciando la iss la stazione spaziale internazionale, a noi serve azimuth ed elevazione e speed da quelle dobbiamo dire a arduino cosa non semplice come inseguirlo, il tutto prevedendo il suo spostamento, esistono i dati kepleriani per farlo e programmi apposta gratuiti ora discutiamo come possiamo interfacciarli accetto consigli per iniziare dal sito che è sempre aggiornato.

In che modo intendi

dire a arduino ... come inseguirlo

?
Deve Arduino pilotare motori per sopostare un telescopio?
Ciao Uwe

Se ti puo' servire a questo indirizzo: This Page Has Moved – Radio Artisan trovi una interfaccia emulatrice degli Yaesu GS-232A e GS-232B che si interfaccia a sua volta con HRD.

73 de IV3OGT - Franco

come funzionano le comunicazioni satellitari?

simile a i ponti ripetitori,

c'è una frequenza di entrata e una frequenza di uscita il satellite si ricarica le pile con i pannelli solari
solo che di solito il satellite radiomatoriale non "fisso" nel cielo come i satelliti tv che prendiamo con la parabolica
ma ruota attorno al pianeta e se non lo insegui non riesci ad adoperarlo

e comunque quando si trova dall'altro lato del pianeta e off limits

GINGARDU:
simile a i ponti ripetitori,

c'è una frequenza di entrata e una frequenza di uscita il satellite si ricarica le pile con i pannelli solari
solo che di solito il satellite radiomatoriale non "fisso" nel cielo come i satelliti tv che prendiamo con la parabolica
ma ruota attorno al pianeta e se non lo insegui non riesci ad adoperarlo

e comunque quando si trova dall'altro lato del pianeta e off limits

esistono satelliti amatoriali? :fearful: è il mio sogno costruirne uno :grin:

@LeopoldGrufus: il progetto che hai postato e ottimo ma io lo volevo fare con un motore step per ora, quello funziona sopratutto per un tipo di rotore, e un rotore e riasaputo che non è economico. Cmq grazie la base di partenza mi sembra più che buona.

@GINGARDU: a spiegato più che bene come funziona, ma esistono anche altri tipi di attività per il quale si usa l'inseguitore, EME o meglrio Earth Moon Earth e una tecnica che sfrutta la luna come satellite ripetitore facendo rimbalzare il segnale su la superficie lunare e ricostruire il segnale che ritorna indietro molto complicato ma da molte soddifisfazioni, e nel mio caso il tutto e per un sistema meteorologico molto famoso, denominato NOAA sono una flotta di satelliti che scattano una foto o meglio scanerizzano la terra e rimandano il tutto su la terra, ci sono software semi gratis che riescono a decodificare il tutto solamente collegando la radio tramite cavo audio al pc, il problema di questi satelliti e che si muovono e con le antenne tradizionali fisse si perde un po di immagine, cosa che con un sistema che lo ineseguie si potrebbe prima di tutto avere un segnale sempre pulito per tutto il passaggio fino all'orizzonte, in teroira dovrebbe calare l'effetto doppler, cioè che durante il pasaggio la frequeza cambia per effetto della velocità e della posizione del satellite rispetto all'antenna ma tutto questo e apparente, e lo stesso effetto che percepite quando un'ambulanza vi sfila davanti a voi, mentre si allontana tende a cambiare di tono la sirena, quello e l'effetto doppler.

Ma tornando a noi e rispodendo alla domanda di Uwe arduino dovrebbe sposare per ora solo una antenna direttiva, tramite i dati kepleriani che rileva da uno dei tanti programmi gratuiti di tracking sat, e volevo qui qualche idea su come realizzarlo perchè effettivamente potrebbe tornare utile anche per questioni astronomiche pensavo di usare stelarium un programma open souce giusto per rimanere in tema con Arduino: http://www.stellarium.org/wiki/index.php/Telescope_Control_plug-in#Device_settings

che potrebbe essere un ottimo inizio di test per chi si vuole cimentare, penso che iniziero con 2 step che ho qui per capire come interfecciarli e poi passare a qualcosa di più impegnativo.

@Madwriter il problema non costruire un satellite ma metterlo in orbita :slight_smile:

this very interesting project.

x iscrizione, grazie!

Una volta ho visto un progetto per Arduino dove si pilotava una parabola per la TV satellitare da montare su un Camper per ottenere un buon segnale in qualsiasi posto.
Come al solito però è stato fatto solo un video su Youtube per dire "ma quanto sono bravo!".
Niente codice, niente lista materiale, niente schemi.

dubito che senza una libreria esterna (o da svilupparte) i float siano sufficienti come precisione per calcolare l'inseguimento. considerando che si sbaglia tantissimo solo col calcolare le coordinate GPS..

I float di Arduino sono una roba assurda.
L'altro giorno ho perso un paio di ore per convertire un algoritmo di calcolo del tempo del sorgere e del tramonto del sole per poi scoprire che come risultato avevo lo stesso istante!
Leggendo bene il reference e facendo un sacco di debug sulla seriale ho focalizzato bene questa frase, che fino ad ora mi era passata sott'occhio senza darmi nessun allarmismo:

Floats have only 6-7 decimal digits of precision. That means the total number of digits, not the number to the right of the decimal point.

Traduco:

I float hanno solo 6-7 cifre decimali di precisione. Ciò indica il numero totale di cifre, non il loro numero alla destra del punto decimale.
Ecco la fregatura!!

Se voi mettere 0.123456 avete le 6 cifre dopo il punto ma se avete 1234567.12345 dopo il punto vi ritroverete solo 0!!!
Cioè 1234567.12345 per il compilatore diventa 1234567.0. Alla faccia della precisione!

non è proprio così, standard IEEE745, il numero è salvato come potenza di 2

per calcoli di questo tipo bisogna usare i fixed point, ci lavorai sopra tempo fa per importare delle librerie, trovi qualcosa sul mio github.

leo72:
I float di Arduino sono una roba assurda.
L'altro giorno ho perso un paio di ore per convertire un algoritmo di calcolo del tempo del sorgere e del tramonto del sole per poi scoprire che come risultato avevo lo stesso istante!
Leggendo bene il reference e facendo un sacco di debug sulla seriale ho focalizzato bene questa frase, che fino ad ora mi era passata sott'occhio senza darmi nessun allarmismo:

Floats have only 6-7 decimal digits of precision. That means the total number of digits, not the number to the right of the decimal point.

Traduco:

I float hanno solo 6-7 cifre decimali di precisione. Ciò indica il numero totale di cifre, non il loro numero alla destra del punto decimale.
Ecco la fregatura!!

Se voi mettere 0.123456 avete le 6 cifre dopo il punto ma se avete 1234567.12345 dopo il punto vi ritroverete solo 0!!!
Cioè 1234567.12345 per il compilatore diventa 1234567.0. Alla faccia della precisione!

Esatto ! io mi son trovato a sbattere la testa su questo problema proprio lavorando con il GPS.
Però.. Astro mi aveva parlato di una lib a pagamento, che però non ho trovato da nessuna parte che ovvierebbe al problema...

lesto:
non è proprio così, standard IEEE745, il numero è salvato come potenza di 2

Internamente non so come vengono salvati i numeri ma ti posso garantire all'atto pratico che se a sinistra del punto decimale ci sono più di 6 cifre, a destra del punto decimale troverai sempre 0.

il numero viene diviso (o multiplicato) per 2 finchè non ottieni 0,XYYYYYYY dove X è diverso da 0.
ora, i numeri dopo la , detti mantissa si salvano le prime cifre, e poi viene salvato il numero di divisioni (esponente, negativo se erano moltiplicazioni).

il numero di cifre salvate, e la dimensione dell'esponente, variano in base al tipo di variabile usata. Usando arduino solo float, da wikipedia:

Type Sign Exponent Significand Total bits Exponent bias Bits precision Number of decimal digits
Single 1 8 23 32 127 24 ~7.2

quidi 1 bit segno, 8 di esponente (che "domina" il numero massimo e minimo rappresentabile), e 23 bit per la mantissa

notare che la precisione in cifre viene arrotondata a 7, ovviamente è arrotondata perchè numeri multipli di 2 non avranno un grosso errore causato dall'arrotondamento della mantissa...

E inserire nel progetto un coprocessore esterno? (Micromega: uM-FPU64)

PaoloP:
E inserire nel progetto un coprocessore esterno? (Micromega: uM-FPU64)

Il micro può eseguire i calcoli con i float a 64bit di precisione, il problema che il compilatore (Arduino) non lo supporta, bisognerebbe vedere se con AVR studio ci si riesce, sarebbe poco sensato usare un altro chip per ovviare al problema secondo me, meglio lavorare a livello software e magari trovare il modo di far eseguire tutto ad arduino tanto, se anche ci mette 20 cicli macchina al posto di due per eseguire il calcolo non fa differenza, non è un drone ma un semplice inseguitore in cui i tempi possone essere un poco più lunghi, no ? :slight_smile:
Sennò bisogna passare alla DUE o alla Tenssy 3.0 che supportano ativamente i float a 64bit

ratto93:
Il micro può eseguire i calcoli con i float a 64bit di precisione, il problema che il compilatore (Arduino) non lo supporta,...

E cosa te ne importa ? Non devi mica usare il compilatore per fare i calcoli a 64bit ... quello è un chip indipendente che parla in I2C o SPI ... gli invii i dati e l'elaborazione la fa lui ... tu devi solo dare i giusti comandi tramite I2C/SPI :wink:

Guglielmo