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 2 | Pin 2 | Linea dati, dal Compustar verso il PC |
Pin 3 | Pin 3 | Linea dati, dal PC verso il Compustar |
Pin 4 | Pin 4 | Abilitazione modo PC (il segnale DTR sul PC) |
Pin 5 | Pin 1 | Massa |
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.
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.
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 è:
- Alzare la linea DTR
- 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>
- 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:
- Mandare 0x27
- Aspettarne l’eco. Se scatta il timeout o il carattere ricevuto indietro non è 0x27, disconnettersi dal Compustar ed abortire l’esecuzione del comando.
- Mandare il byte di comando (vedere la tabella qui sotto)(e aspettarne l’eco).
- Mandare i parametri del comando (se ce ne sono) un byte alla volta, aspettando sempre l’eco dopo ogni carattere.
- 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.
- In caso di timeout o comando sconosciuto agite di conseguenza.
- In caso di comando eseguito correttamente (“PC”) ricevere e processare tutti i byte della risposta (vedere la tabella sotto).
Comando | Operazione | Parameteri | Risposta | Formato ed esempi |
---|---|---|---|---|
0x00 | Chiedi RA | 0 byte | 3 byte | Diviso per 3200 viene in minuti (di ore). <6E B8 3F> → 0x3FB86E → 4175982 → 1304.994375 min → 21h44.9' |
0x01 | Chiedi Declinazione | 0 byte | 3+1 byte | Diviso 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' |
0x02 | Chiedi longitudine sito | 0 byte | 2 byte | In primi. <49 52> → 0x5249 → 21065' → 351°5' |
0x03 | Chiedi latitudine sito | 0 byte | 2+1 byte | In primi. <B0 0A 00> → 0x0AB0+0x00 → 2736' → 45°36'.<B0 0A 01> is -45° 36' |
0x04 | Chiedi Data/Ora | 0 byte | 6 byte | I 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 |
0x80 | Imposta longitudine sito | 2 byte | 0 byte | In primi. <27 80 49 52> mette il sito osservativo a 351° 5'. |
0x81 | Imposta latitudine sito | 2+1 byte | 0 byte | In primi. L'ultimo byte è il segno: <27 81 B0 0A 00> → +45°36'; <27 81 B0 0A 01> → -45°36'. |
0x82 | Imposta l'ora | 7 byte | 0 byte | 7 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) |
0x83 | Imposta la data | 6 byte | 0 byte | Imposta 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. |
0x84 | Visualizza RA/DEC | 1 byte | 0 byte | Se il parametro è 0x00, il display del Compustar non visualizzerà nulla, altrimenti visualizzerà le coordinate RA e DEC del telescopio. |
0x85 | Punta alle coordinate | 7 byte | 1 byte | Vai 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. |
0x86 | Sync alle coordinate | 7 byte | 0 byte | alle coordinate indicate (JNow). <RA RA RA DEC DEC DEC DEC> RA e DEC sono nel formato dei comandi per ottenere RA e Declinazione. |
0x87 | Nop | 0 byte | 0 byte | Nessuna operazione |
0x88 | Parcheggia | 0 bytes | 1 byte | Parcheggia 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. |
0x89 | Unpark | 0 byte | 1 byte | "Sparcheggia" il telescopio. Torna 0x00 se il telescopio è stato tolto dal parcheggio, 0x01 se non era parcheggiato. |
0x8A | Chiedi stato | 0 byte | 1 byte | Valore 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 |
0x8B | Imposta inseguimento | 1 byte | 0 byte | 0x00 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. |
0x8C | Imposta velocità di guida | 1 byte | 0 byte | La velocità di guida (Pulseguide) varia da 0x01 (1/256 X) a 0xFF (255/256 = 0.99X). 128 è 0.5X. |
0x8D | Guida a Est | 1 byte | 0 byte | (Pulse) guida a Est. Il parametro è la durata della guida, in ticks. |
0x8E | Guida a Ovest | 1 byte | 0 byte | (Pulse) guida a Ovest. Il parametro è la durata della guida, in ticks. |
0x8F | Guida a Nord | 1 byte | 0 byte | (Pulse) guida a Nord. Il parametro è la durata della guida, in ticks. |
0x90 | Guida a Sud | 1 byte | 0 byte | (Pulse) guida a Sud. Il parametro è la durata della guida, in ticks. |
0x91 | Chiedi tutto | 0 byte | 8 byte | Equivalente a "Chiedi RA" seguito da "Chiedi DEC" seguito da "Chiedi stato" |
0x92 | Chiedi opzioni | 0 byte | 4 byte | FW 1.90+. I 4 byte ritornati sono: Options, Options 8, Options 9, 0x00. L'ultimo byte è per un eventuale futuro byte di opzioni aggiuntive. |
0x93 | Imposta opzione | 1 byte | 0 byte | FW 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. |
0x94 | Chiedi velocità di inseguimento | 0 byte | 1 byte | FW 1.90+. Torna la velocità di inseguimento (tracking) corrente: 0 = Siderale, 1 = Lunare, 2 = Solare. |
0x95 | Imposta velocità di inseguimento | 1 byte | 0 byte | FW 1.90+. Imposta la velocità di inseguimento (tracking): 0 = Siderale, 1 = Lunare, 2 = Solare. La nuova velocità non verrà salvata in NVRAM. |
0x96 | Chiedi Stato 2 | 0 byte | 1 byte | FW 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 |
0x97 | Imposta velocità di movimento | 1 byte | 1 byte | FW 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). |
0x98 | Nessun movimento manuale | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: nessun tasto premuto |
0x99 | Movimento Manuale a Est | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Est (tasto di sinistra) |
0x9A | Movimento Manuale a Ovest | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Ovest (tasto di destra) |
0x9B | Movimento Manuale a Sud | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Sud (tasto in basso) |
0x9C | Movimento Manuale a Sud + Est | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Sud + Est (Tasti basso e sinistra) |
0x9D | Movimento Manuale a Sud + Ovest | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Sud + Ovest (tasti basso e destra) |
0x9E | Movimento Manuale a Nord | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Nord (tasto in alto) |
0x9F | Movimento Manuale a Nord + Est | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Nord + Est (tasti alto e sinistra) |
0xA0 | Movimento Manuale a Nord + Ovest | 0 byte | 0 byte | FW 1.90+. Emulazione tasti NSEO: Nord + Ovest (tasti alto e destra) |
0xA1 | Forza l'allineamento della cupola | 0 byte | 0 byte | FW 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.