Go Down

Topic: Stellarium + Arduino (Read 2006 times) previous topic - next topic

Francesco94 aka J.T.Kirk

ho un grosso problema,
come già detto devo controllare un telescopio da computer, in particolare da stellarium (telescopio a forcella quindi devo portarlo nella posizione della stella e poi farlo andare con velocità opposta a quella terrestre).
Tuttavia non riesco a capire che dati Stellarium manda via seriale, e quindi su cosa dovrò lavorare.
Avete già avuto esperienze a riguardo?

Francesco

leo72

#1
Mar 28, 2012, 12:17 am Last Edit: Mar 28, 2012, 12:18 am by leo72 Reason: 1
Devi capire il formato che usa Stellarium.
Fortunatamente è un software opensource per cui potresti scaricare i sorgenti e studiare il protocollo di comunicazione del software.

EDIT:
ho googlato "stellarium arduino" e mi sono venute fuori diverse cose. Hai già guardato Google?  ;)

Francesco94 aka J.T.Kirk

Su google ho già guardato ma i risultati non portano a molto...  :(
comunque adx provo a leggermi i sorgente di stellarium,
Grazie per la risposta :)

astrobeed


Su google ho già guardato ma i risultati non portano a molto...  :(


Hai cercato male  :)
Stellarium è in grado di comandare qualunque telescopio compatibile con il  Meade LX-200, una rapida ricerca ed ecco il pdf con tutto il protocollo di comunicazione.
Usare il GOTO in C è ammettere la propria sconfitta come programmatore

Francesco94 aka J.T.Kirk

Adesso che ho ricevuto i miei arduino posso riesumare questo topic  ]:D ]:D
Allora, ho iniziato a creare uno sketch che mi rispondesse ai veri comandi inviati da stellarium. Quando inizio la connessione stellarium chiede la RA e la Declinazione, sono riuscito a rispondere al comando della RA e mi accetta il valore che do in risposta ma non riesco a rispondere alla richiesta della Declinazione, infatti nella documentazione che mi è stata postata da Astrobeed c'è scritto che il comando
Code: [Select]
:GD# accetta come risposta
Code: [Select]
sDD*MM#
io ho interpretato la s come il segno(+ o -) mentre ai valori DD e MM ne ho sostituiti di fittizi.(es.
Code: [Select]
+45*00#).
Ciò è quello che invio via serial, tuttavia nel file di log:
Code: [Select]
15445, 11:34:00.890104Z: Lx200Connection::sendCommand(Lx200CommandGetRa)
15445, 11:34:00.890104Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetRa): queued
15445, 11:34:00.890104Z: Lx200Connection::sendCommand(Lx200CommandGetDec)
15445, 11:34:00.890104Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GR#
15445, 11:34:05.904390Z: Lx200Connection::resetCommunication
15445, 11:34:05.921391Z: Lx200Connection::sendCommand(Lx200CommandGetRa)
15445, 11:34:05.921391Z: Lx200Connection::sendCommand(Lx200CommandGetDec)
15445, 11:34:15.952965Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetRa): queued
15445, 11:34:15.952965Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GR#
15445, 11:34:16.018969Z: Connection::performReading: readNonblocking returned 11; 03:00:00#


15445, 11:34:16.018969Z: Lx200CommandGetRa::readAnswerFromBuffer: RA = 03:00:00
15445, 11:34:16.018969Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetDec): queued
15445, 11:34:16.077972Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GD#
15445, 11:34:16.138976Z: Connection::performReading: readNonblocking returned 7; +45*00#
15445, 11:34:16.138976Z: Lx200CommandGetDec::readAnswerFromBuffer: error: '+' or '-' expected
15445, 11:34:16.138976Z: Lx200Connection::resetCommunication
15445, 11:34:16.202979Z: Lx200Connection::sendCommand(Lx200CommandGetRa)
15445, 11:34:16.202979Z: Lx200Connection::sendCommand(Lx200CommandGetDec)
15445, 11:34:16.202979Z: Connection::performReading: readNonblocking returned 2;

risulta l'errore:
Code: [Select]
error: '+' or '-' expected nonostante vi sia il più dove dovrebbe essere.
le ho provate tutte ma non ne esco, quindi...
avete idea di come potrei scriverlo( ho provato anche +3:0:0)
oppure anche:
]:) ]:) ]:) ]:) ]:)
c'è qualche anima pia che possiede un telescopio meade lx200 o compatibile che potrebbe connetterlo al pc a stellarium e può postare il file di log( si trova in AppData/Roaming/Stellarium ed è il  file log_TelescopeServer1(o qualsivoglia numero sia il telescopio)) nel caso qui la guida alla configurazione:http://www.stellarium.org/wiki/index.php/Telescope_Control_plug-in

Grazie in anticipo per l'aiuto

Francesco

leo72

Ho dato un'occhiata al file PDF ma il comando :GD dice che preleva la declinazione, mentre per impostare la declinazione di un oggetto devi usare il comando :SdsDD*MM#

Francesco94 aka J.T.Kirk

Appunto, il comando GD# richiede al telescopio, nel mio caso all'arduino la declinazione attuale, in modo da poter visualizzare correttamente sulla sfera celeste virtuale il mio telescopio; so di per certo che è quel comando per il semplice motivo che non sono io a inviarli ma una volta connessa la scheda è il pc che per prima invia delle richieste, la RA e la DEC.
il mio problema è che mentre alla richiesta della RA riesco a rispondere correttamente
Code: [Select]
15445, 11:34:15.952965Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetRa): queued
15445, 11:34:15.952965Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GR#
15445, 11:34:16.018969Z: Connection::performReading: readNonblocking returned 11; 03:00:00#
15445, 11:34:16.018969Z: Lx200CommandGetRa::readAnswerFromBuffer: RA = 03:00:00    //è stata accettata come valore di RA
a quella della DEC non riesco
Code: [Select]
15445, 11:34:16.018969Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetDec): queued
15445, 11:34:16.077972Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GD#
15445, 11:34:16.138976Z: Connection::performReading: readNonblocking returned 7; +45*00#
15445, 11:34:16.138976Z: Lx200CommandGetDec::readAnswerFromBuffer: error: '+' or '-' expected     //mi continua a dare questo errore :(
, ma pur seguendo la documentazione non ne vengo a capo  :smiley-sad-blue: :smiley-sad-blue:


P.S.
il comando Sds è per il pc per dire al telescopio dove deve puntare infatti sulla documentazione viene indicato come "imposta declinazione bersaglio", quindi nel nostro caso di una stella e non del telescopio.

leo72

Ah, scusa. Quindi tu rispondi al posto del telescopio.
Fai una cosa, da Stellarium invia quel comando per impostare la declinazione e guarda cosa Stellarium ti spedisce. A questo punto sai i caratteri che usa e che quindi si aspetta da te in risposta.

Francesco94 aka J.T.Kirk

Ci avevo pensato e pure già provato, tuttavia lui dal momento che non è riuscito a ottenere la posizione del telescopio, a inizializzarlo, non prova neanche a inviare il messaggio via serial, nel log mi compare la funzione richiamata e i parametri con cui la richiama, il nostro RA e DEC, tuttavia con la DEC che usa come parametro continua a non funzionare(lui chiama ad es +3:0:0) che inserita nell'Arduino non funziona :0 :0
purtroppo dal momento che non fa l'invio seriale non so come la manderebbe.

Credo che l'unica sia di trovare qualcuno con un telescopio compatibile e vedere quel log cosa dice  :(

Francesco94 aka J.T.Kirk

Ho provato di tutto ma non ne vengo a capo, non c'è qualcuno con un telescopio con montatura lx200 compatibile che potrebbe provare a collegare il telescopio all'IDE di arduino e inviare tramite il serial monitor il comando
Code: [Select]
#:GD# e postare la risposta ricevuta :smiley-sweat:?
Sarebbe molto apprezzato  :) :).

Grazie
Francesco

charlye52

Scusa Francesco forse è superfluo chiederlo, ma hai provato a girare la domanda anche su un forum di astrofili "fai da te"?
ciao Carlo

Francesco94 aka J.T.Kirk

Ma certo.... :smiley-roll-sweat:

Ho postato su tre forum diversi e inviato pure un'email allo sviluppatore del plugin di stellarium.
Tuttavia sembra di essere giunti a un vicolo cieco.

Francesco

Francesco94 aka J.T.Kirk

Risolto :D :D :D :D,
parlando con lo sviluppatore è venuto fuori che probabilmente veniva inviato via seriale un carattere che però non veniva visualizzato e che veniva controllato al posto del + o -, risolto semplicemente cambiando la funzione di stampa dell'RA
Code: [Select]
da println() a print(), e cosi sarà per tutto il resto della comunicazione.

Grazie a tutti comunque per il supporto
Francesco

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy