MioComm è un piccolo tool sviluppato in C# per l'importazione di tracce GPS arbitrarie (in formato Google Earth .kml) sul ciclocomputer Mio 105 H/HC. Le tracce importate possono poi essere ripercorse grazie alla modalità navi del Mio.
Ho deciso di sviluppare questo software per colmare quello che secondo me (e anche per molti altri utenti) è il più grande difetto di questo dispositivo ossia l'impossibilità di importare tracce GPS esterne.
Il software originale a corredo permette infatti solo l'esportazione delle tracce dal Mio al computer, la loro pubblicazione sul network mioshare.com e la condivisione con gli altri utenti. I progettisti hanno dimenticato (?) o non hanno voluto prendere in considerazione il classico caso d'uso del GPS da bici: prendere una traccia GPS scaricata da internet, caricarla sul dispositivo e ripercorrerla.
Il tool è frutto di un lungo lavoro di reverse engineering del protocollo seriale di comunicazione, fortunatamente abbastanza semplice e lineare: il classico protocollo half-duplex (botta e risposta) con pacchetto della forma command+size+payload+crc
Il tool permette fondamentalmente 3 operazioni:
L'utilizzo è abbastanza semplice: basta collegare il Mio al PC tramite cavetto USB e premere "connect". Il software inizierà il discovery del device su tutte le porte COM presenti (virtuali USB e non) e poi scaricherà e mostrerà l'elenco delle tracce correntemente in memoria. Il tasto "export" permette di esportare un traccia (selezionata dall'elenco), il tasto "import" permette invece di importare una.
Download link: MioComm_ver1.1
Per il corretto funzionamento del tool sono necessari i driver STMicroelectronics della porta seriale virtuale scaricabili qui.
Per il momento il tool supporta solo il formato .kml (e anche .kmz: basti sapere che un file .kmz non è altro che una versione zippata di un kml). In futuro è prevista l'introduzione del formato Garmin .gpx e l'esportazione dei parametri non GPS della traccia (velocità, potenza, cadenza, battiti etc..).
Per chiarimenti, bug dell'ultimo minuto o miglioramenti non esitate a contattarmi!
Una breve descrizione del protocollo seriale di comunicazione, per le persone interessate. Il protocollo è stato parizialmente reversato sniffando il traffico da e verso il Mio 105 H/HC. La comunicazione avviene ovviamente in half-duplex, il master (l'applicativo desktop) interroga il dispositivo, il dispositvo risponde. Se il dispositivo non risponde entro un certo timeout lo si considera assente o spento e la richiesta viene annullata. Ho notato alcune incongruenze nella codifica dei valori numerici, ad esempio il campo LENGTH e le coordinate GPS sono codificate big-endian mentre tutti gli altri valori numerici in little-endian.
A livello link il pacchetto si presenta nella classica forma CMD+LENGTH+PAYLOAD+CRC, più nello specifico: