Driver ASCOM per il Celestron Compustar

Aggiornamento 17 Gennaio 2020: Nuova versione, 1.3!

Dopo aver realizzato alcune versioni del firmware del Compustar che mi sono servite anche per capire meglio i dettagli del firmware stesso, mi sentivo oramai pronto ad aggiungere ciò che sarebbe servito ad implementare un driver ASCOM completo per poter collegare il Compustar ad un PC ed utilizzarlo con un qualunque software di astronomia.

Sapevo che avrei dovuto sviluppare due software diversi ma allo stesso tempo complementari: uno che sarebbe girato sul PC e un altro che sarebbe stato sul Compustar.
Il software sul PC sarebbe stato più complesso, dal momento che il PC è immensamente più potente del Compustar, ma allo stesso tempo sarebbe stato più semplice da sviluppare perché avrei potuto svilupparlo in un linguaggio moderno come il .NET. La parte del Compustar sarebbe stata più limitata, ma anche più ardua da sviluppare, perché andava fatta in assembler utilizzando pochissime risorse.

Il cavo di collegamento Compustar-PC

Il collegamento tra il Compustar e il PC avviene tramite una normale porta RS232 oppure utilizzando un adattatore USB<>RS232 dal momento che i PC moderni normalmente non hanno più una porta seriale. Nel caso utilizziate un adattatore USB, dovete utilizzarne uno con uscite RS232: normalmente hanno un connettore DB9 maschio. Gli adattatori con uscita TTL (tipo quello che si usano con le breadboard o con un Arduino) non vanno bene (e potrebbero danneggiare il PC).
E’ poi necessario un cavo speciale, perché anche se il Compustar ha un connettore femmina DB9 corrispondente a quello della seriale, il suo pinout non è standard, dal momento che il Compustar è nato prima che si utilizzassero i connettori a 9 poli per le seriali (allora si utilizzava un connettore a 25 poli) e perciò non funziona se collegato direttamente (e potrebbe anche danneggiare il Compustar!).

Questo cavo speciale ha i seguenti collegamenti:

DB9-F (Lato PC)DB9-M (Lato Compustar)Funzione del segnale
Pin 2Pin 2Linea dati, dal Compustar verso il PC
Pin 3Pin 3Linea dati, dal PC verso il Compustar
Pin 4Pin 4Abilitazione modo PC (il segnale DTR sul PC)
Pin 5Pin 1Massa

Tutti gli altri pin devono venire lasciati scollegati, in particolare il pin 8 lato Compustar.

Questo cavo deve essere usato per collegare la seriale del PC (o l’adattatore USB) al connettore a 9 poli di sinistra del Compustar.

La configurazione del Compustar

Per usare il driver ASCOM con il Compustar dovrete installare una delle versioni da 64Kbyte del firmware, versione 1.70 o successiva. Le versioni da 32K non contengono la parte di protocollo necessaria (non ci stava) e quindi non possono venire usate. I nuovi firmware li potrete trovare qui.

The Compustar in PC mode

Il protocollo di supporto dell’ASCOM non è sempre attivo nel Compustar: c’è una opzione (OPT-6) per attivarlo. C’è una ragione per questa opzione: il protocollo di supporto dell’ASCOM utilizza una parte del circuito della porta seriale che il firmware originale non ha mai utilizzato e quindi c’è una possibilità (seppur piccola) che questa parte non funzioni come deve.
Per abilitare l’opzione 6, premete OPT e poi il tasto ‘6’. L’opzione è abilitata se l’indicatore ‘6’ lampeggia, oppure non è abilitata se l’indicatore è fisso.
Conviene abilitare questa opzione (almeno la prima volta) senza aver collegato il PC. Abilitando l’opzione non deve succedere nulla. Se invece il Compustar entrasse immediatamente in modo PC (spegnendo tutti i display e visualizzando “PC”) ciò  vorrebbe dire che una parte del circuito seriale non sta funzionando come dovrebbe. In questo caso, premete il tasto di ABORT: ciò disabiliterà l’opzione 6 facendo terminare immediatamente la modalità PC. Se succedesse una cosa simile, o non avete fatto questa modifica, oppure c’è un guasto nel Compustar.

Installazione del driver ASCOM

L’installazione del driver si fa così:

Prima di tutto, dovete scaricare ed installare la piattaforma ASCOM (se non l’avete già installata).
La versione corrente è (Ottobre 2019) la 6.4SP1 e potrete trovarla sul sito ASCOM http://www.ascom-standards.org/.
Troverete il bottone di download nella parte destra dello schermo.

Poi dovete scaricare ed installare il driver Compustar vero e proprio, da qui:

Infine potrete lanciare il vostro software preferito, scegliere di utilizzare un telescopio ASCOM, selezionare “AeM Compustar Telescope” e cliccare il bottone “Properties…” per configurare il driver del Compustar.
Vi comparirà una finestra come questa:
Qui potrete configurare un po’ di cose. La “Serial port” è la porta seriale a cui avete collegato il Compustar. Se non sapete quale sia, potete provarle una alla volta. Solo quando avrete scelto quella corretta il software si collegherà (anche se potrebbe non segnalare nessun errore con le porte seriali sbagliate). Potreste abilitare “Show errors on connection” per avere una segnalazione di errore (questo non è attivo normalmente perchè violerebbe le linee guida dell’ASCOM).
Potete anche scegliere se programmare la data/ora del PC nel Compustar alla connessione (“Set Compustar Date/Time at connect“), scegliere la velocità di guida (“Guide speed“, usata dal metodo PulseGuide dell’ASCOM) e scegliere di visualizzare le coordinate RA/DEC sul display del Compustar mentre il PC lo comanda (“Show RA/DEC on Compustar“, normalmente non viene visualizzato nulla). Per ridurre il carico di lavoro sul Compustar, dalla versione 1.3 il driver cacherà alcune richieste in modo tale da ridurne la frequenza. Il parametro “Cache live” controlla per quanto tempo un valore memorizzato sarà ritenuto valido prima di doverlo richiedere di nuovo (0.25 s di default).

Selezionando “Show telescope Panel” (una opzione introdotta nel driver 1.3) alla connessione del telescopio verrà visualizzato un pannello di controllo in stile Compustar.

Utilizzando questo pannello, sarà possibile muovere il telescopio, cambiare la velocità di movimento manuale (SPEED), la velocità di inseguimento (TRK SPEED), interagire con la cupola (OPT-7 e ALIGN DOME), ridurre la velocità di movimento al 50% (RA, DEC o entrambe) e selezionare una rampa differente per l’accelerazione del telescopio (TS RAMP). Se attivate anche “Show Dome Options“, verranno visualizzate anche le due opzioni 8-2 e 8-3 (che sono relative alla cupola) assieme a due bottoni per poterle modificare.

Notare che questo nuovo driver funziona con tutte le versioni del firmware Compustar che abbiano il supporto ASCOM, MA questo pannello di controllo verrà visualizzato solamente con i firmware 1.90 (64K) o successivi.

Questo driver può venire utilizzato da un programma alla volta (tecnicamente è un “in process server”). Se volete usare il Compustar contemporaneamente da più programmi, dovrete usare il POTH Hub, che è stato installato dalla piattaforma ASCOM. Semplicemente selezionate come telescopio il POTH Hub stesso, e selezionate il Compustar come telescopio solamente all’interno del POTH Hub.
Se usate il POTH Hub, vi conviene deselezionare l’opzione “Can Alt/Az”: anche se il driver Compustar può tranquillamente ritornare le coordinate Alt/Az del telescopio, lasciar fare questo lavoro al POTH Hub riduce il carico di lavoro del Compustar stesso.

Il protocollo del Compustar

Se volete usare il Compustar direttamente senza utilizzare il nostro driver ASCOM, qui di seguito la documentazione del protocollo di supporto.

Questo firmware ha due modalità di funzionamento:

Modo “Utente”, che è il modo originale del Compustar, dove l’utente ha il controllo completo del telescopio e il protocollo sulla porta seriale è quello originale del Compustar (anche se, essendo state spostate alcune celle di memoria ad indirizzi diversi è possibile che vecchi programmi che usano questo protocollo non funzionino più).
Modo “PC”, che è il modo in cui il computer prende il controllo del Compustar lasciando all’utente solo alcune cose, tipo cambiare la velocità tra SET e SLEW, spostare il telescopio con i tasti di movimento e abortire i goto (slew).

La selezione tra i due modi viene fatta usando il segnale DTR della porta seriale: quando è basso (al valore nominale di -12V) il Compustar sarà in modo “Utente”; quando è alto (al valore nominale di +12V) il Compustar sarà in modo “PC”. Effettuando la modifica descritta qui, ci si garantirà che quando non viene collegato nessun cavo alla porta RS232 del Compustar il Compustar stesso sarà in modo “Utente”.

La procedura di connessione è:

  1. Alzare la linea DTR
  2. Dopo circa 100ms il Compustar risponderà con “PCx.xx” dove x.xx è la versione del firmware. Quindi, con la versione 1.70, la risposta sarà <0x50 0x43 0x31 0x2E 0x37 0x30>
  3. Sarebbe meglio avere impostato un timeout (1 secondo, diciamo) per segnalare che la connessione non è avvenuta se non dovreste ricevere questi bytes. In questo caso, abbassate la linea DTR e segnalate un errore.

Per disconnettersi semplicemente abbassate la linea DTR. Il Compustar tornerà in modo “UTENTE”.

Se avete ricevuto la risposta come previsto, potrete cominciare a mandare comandi al Compustar, seguendo queste linee guida:

  • Ogni volta che mandate un byte al Compustar (sia esso un comando o un parametro) DOVETE aspettare che il Compustar faccia l’eco del byte stesso. Non dovete mandare MAI più di un byte alla volta. Il carattere risposto sarà sempre il byte spedito (e quindi potrete fare a meno di controllarne il valore) tranne come risposta al primissimo byte (0x27) che potrebbe venire risposto come 0xFF nel caso il Compustar sia uscito dalla modalità “PC” (ed in questo caso dovreste disconnettervi ed opzionalmente segnalare la disconnessione all’utente).
  • Utilizzate sempre un timeout (1 secondo è normalmente sufficiente) per tornare il controllo al programma chiamante e/o segnalare un problema all’utente nel caso la comunicazione venga interrotta per una ragione qualunque (ed esempio si è staccato il cavo di collegamento, il Compustar è stato spento…)

Esecuzione dei comandi:

  1. Mandare 0x27
  2. Aspettarne l’eco. Se scatta il timeout o il carattere ricevuto indietro non è 0x27, disconnettersi dal Compustar ed abortire l’esecuzione del comando.
  3. Mandare il byte di comando (vedere la tabella qui sotto)(e aspettarne l’eco).
  4. Mandare i parametri del comando (se ce ne sono) un byte alla volta, aspettando sempre l’eco dopo ogni carattere.
  5. Aspettare la risposta del Compustar (o il timeout di sicurezza). La risposta sarà “PC” (0x50 0x43) se il comando è stato riconosciuto ed eseguito oppure “PE” (0x50 0x45) se è un comando sconosciuto.
  6. In caso di timeout o comando sconosciuto agite di conseguenza.
  7. In caso di comando eseguito correttamente (“PC”) ricevere e processare tutti i byte della risposta (vedere la tabella sotto).
ComandoOperazioneParameteriRispostaFormato ed esempi
0x00Chiedi RA0 byte3 byteDiviso per 3200 viene in minuti (di ore). <6E B8 3F> → 0x3FB86E → 4175982 → 1304.994375 min → 21h44.9'
0x01Chiedi Declinazione0 byte3+1 byteDiviso per 128 viene in primi (di grado). <DB 2A 01 00> → 0x012ADB+0x00 → 76507 → 597.7109375' → 9°58'; <00 8C 0A 01> → 0xA8C00+0x01 → 691200 → -90°00'
0x02Chiedi longitudine sito0 byte2 byteIn primi. <49 52> → 0x5249 → 21065' → 351°5'
0x03Chiedi latitudine sito0 byte2+1 byteIn primi. <B0 0A 00> → 0x0AB0+0x00 → 2736' → 45°36'.<B0 0A 01> is -45° 36'
0x04Chiedi Data/Ora0 byte6 byteI primi 3 byte sono l'ora, in decimi di secondo a partire dalle 00:00:00 (UT). Gli ultimi 3 byte sono la data, Anno (dal 1900), Mese, Giorno. <D3 13 06 75 08 1D> → 11:03:49.0, 29 Agosto 2017
0x80Imposta longitudine sito2 byte0 byteIn primi. <27 80 49 52> mette il sito osservativo a 351° 5'.
0x81Imposta latitudine sito2+1 byte0 byteIn primi. L'ultimo byte è il segno: <27 81 B0 0A 00> → +45°36'; <27 81 B0 0A 01> → -45°36'.
0x82Imposta l'ora7 byte0 byte7 byte da 0 a 9 (binari), in ordine: sSmMhHd (s=secondi, S=decina secondi, m=minuti, M=decina minuti, h=ore, H=decina ore, d=decimi di secondo). <27 82 06 04 08 01 03 02 07> imposta l'ora a 23:18:46.7 (UT)
0x83Imposta la data6 byte0 byteImposta la data e forza l'ora a 00:00:00.0. 6 byte da 0 a 9 (binari) in ordine: dDmMyY (d=giorno, D=decina giorni, m=mese, M=decina mese, y=anno, Y=decina anno). L'anno inizia da 2000, giorno e mese da 1. <27 83 09 02 08 00 07 01> imposta la data al 29 Agosto 2017.
0x84Visualizza RA/DEC1 byte0 byteSe il parametro è 0x00, il display del Compustar non visualizzerà nulla, altrimenti visualizzerà le coordinate RA e DEC del telescopio.
0x85Punta alle coordinate7 byte1 byteVai alle coordinate fornite (JNow). <RA RA RA DEC DEC DEC DEC> RA e DEC sono nel formato dei comandi per ottenere RA e Declinazione, con la differenza che nel byte di segno della declinazione c'è anche: Bit 0=segno, Bit 1=Applica la rifrazione atmosferica (1=si), Bit 2=Verifica l'altezza (1=si). Il valore di ritorno sarà 0x00 se il puntamento è partito, 0x01 se l'oggetto non è puntabile (TOO LOW), 0x02 se il telescopio è parcheggiato.
0x86Sync alle coordinate7 byte0 bytealle coordinate indicate (JNow). <RA RA RA DEC DEC DEC DEC> RA e DEC sono nel formato dei comandi per ottenere RA e Declinazione.
0x87Nop0 byte0 byteNessuna operazione
0x88Parcheggia0 bytes1 byteParcheggia il telescopio (chiama la procedura END). Il valore di ritorno sarà 0x00 se il telescopio viene parcheggiato, o un altro valore se il telescopio è già parcheggiato.
0x89Unpark0 byte1 byte"Sparcheggia" il telescopio. Torna 0x00 se il telescopio è stato tolto dal parcheggio, 0x01 se non era parcheggiato.
0x8AChiedi stato0 byte1 byteValore ritornato:
Bit 0: In movimento in RA
Bit 1: In movimento in DEC
Bit 2: In parcheggio (si sta muovendo per parcheggiare)
Bit 3: Parcheggiato
Bit 4: In inseguimento (tracking)
Bit 5: Si sta muovendo
Bit 6: Sta guidando in RA
Bit 7: Sta guidando in DEC
0x8BImposta inseguimento1 byte0 byte0x00 ferma l'inseguimento (tracking), 0x01 lo attiva. Nota: l'inseguimento può essere disabilitato solo in modo PC. Verrà riattivato automaticamente all'uscita della modalità PC.
0x8CImposta velocità di guida1 byte0 byteLa velocità di guida (Pulseguide) varia da 0x01 (1/256 X) a 0xFF (255/256 = 0.99X). 128 è 0.5X.
0x8DGuida a Est1 byte0 byte(Pulse) guida a Est. Il parametro è la durata della guida, in ticks.
0x8EGuida a Ovest1 byte0 byte(Pulse) guida a Ovest. Il parametro è la durata della guida, in ticks.
0x8FGuida a Nord1 byte0 byte(Pulse) guida a Nord. Il parametro è la durata della guida, in ticks.
0x90Guida a Sud1 byte0 byte(Pulse) guida a Sud. Il parametro è la durata della guida, in ticks.
0x91Chiedi tutto0 byte8 byteEquivalente a "Chiedi RA" seguito da "Chiedi DEC" seguito da "Chiedi stato"
0x92Chiedi opzioni0 byte4 byteFW 1.90+. I 4 byte ritornati sono: Options, Options 8, Options 9, 0x00. L'ultimo byte è per un eventuale futuro byte di opzioni aggiuntive.
0x93Imposta opzione1 byte0 byteFW 1.90+. Il parametro è:
Bit 7..6: 00 = Togli, 01 = Attiva, 10 = Inverti, 11 = Non modificare;
Bits 5..4: 00 = Options, 01 = Options 8, 10 = Options 9;
Bit 3: 1 = Salva le opzioni in NVRAM
Bit 2..0: L'opzione da attivare/disattivare/invertire.
0x94Chiedi velocità di inseguimento0 byte1 byteFW 1.90+. Torna la velocità di inseguimento (tracking) corrente: 0 = Siderale, 1 = Lunare, 2 = Solare.
0x95Imposta velocità di inseguimento1 byte0 byteFW 1.90+. Imposta la velocità di inseguimento (tracking): 0 = Siderale, 1 = Lunare, 2 = Solare. La nuova velocità non verrà salvata in NVRAM.
0x96Chiedi Stato 20 byte1 byteFW 1.90+. Valore ritornato:
Bit 0: Velocità (0=SET, 1=SLEW)
Bit 1: "Lato montatura". Messo a 1 quando si è attraversato un polo celeste.
Bit 2: Non usato
Bit 3: Non usato
Bit 4: Non usato
Bit 5: Non usato
Bit 6: Non usato
Bit 7: Non usato
0x97Imposta velocità di movimento1 byte1 byteFW 1.90+. Imposta la velocità di movimento dei tasti NSEW. 0x00=SET, 0x01=SLEW, 0x02 passa da una all'altra. Torna lo stesso byte del comando "Chiedi Stato 2" (0x96).
0x98Nessun movimento manuale0 byte0 byteFW 1.90+. Emulazione tasti NSEO: nessun tasto premuto
0x99Movimento Manuale a Est0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Est (tasto di sinistra)
0x9AMovimento Manuale a Ovest0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Ovest (tasto di destra)
0x9BMovimento Manuale a Sud0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Sud (tasto in basso)
0x9CMovimento Manuale a Sud + Est0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Sud + Est (Tasti basso e sinistra)
0x9DMovimento Manuale a Sud + Ovest0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Sud + Ovest (tasti basso e destra)
0x9EMovimento Manuale a Nord0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Nord (tasto in alto)
0x9FMovimento Manuale a Nord + Est0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Nord + Est (tasti alto e sinistra)
0xA0Movimento Manuale a Nord + Ovest0 byte0 byteFW 1.90+. Emulazione tasti NSEO: Nord + Ovest (tasti alto e destra)
0xA1Forza l'allineamento della cupola0 byte0 byteFW 1.90+. La stessa cosa che premere sulla tastiera SLEW/ALIGN per allineare la cupola al telescopio

Note:

  • Parametri è il numero di byte da mandare come parametri per quel comando
  • Risposta è il numero di byte da ricevere dopo aver ricevuto la risposta “PC”
  • Quando uno dei due numeri ha un +1, l’ultimo byte sarà il segno del parametro o della risposta: 0x00→Positivo, 0x01→Negativo a meno non sia segnalato differentemente
  • I tempi sono in “Ticks”. Un “Tick” dura 18.7245714 ms (131072/7000)
  • Dal momento che il buffer di comunicazione è troppo piccolo per contenere sia la data che l’ora, non c’è un comando di “Imposta Data e Ora”. Dovrete usare il comando “Imposta Data” per primo (che programma la data ma allo stesso tempo imposta l’ora a 00:00:00.0 per evitare cambiamenti di data) e POI dovrete usare il comando di “Imposta Ora” per impostare l’orologio
  • Il comando 0x91 (“Chiedi tutto”) era già presente nella versione 1.80 del firmware. Mi ero solo dimenticato di documentarlo.

Leave a Reply

Your email address will not be published.