WNMEA, messaggi GPS senza segreti!

DIY  da warcomeb il 04 Marzo 2022

Uno degli obiettivi che mi sono prefissato ad inizio anno per questo 2022 è quello di realizzare un progetto molto particolare che prevede anche la geolocalizzazione. Per far ciò bisogna considerare di inserire nel progetto un modulo o un chip in grado di fornire la propria geolocalizzazione, come ad esempio i prodotti di U-Blox, Telit, OriginGPS e tanti altri. Nella maggior parte dei casi questi dispositivi possono comunicare con l'esterno (ad esempio con un microcontrollore) attraverso una interfaccia seriale di tipo UART (alcuni mettono a disposizione anche I2C o SPI), con un protocollo standard denominato NMEA 0183.

Per analizzare le stringhe prodotte da un modulo GPS avevo bisogno di una libreria C/C++ che ottemperasse al compito, e nel web ne esistono veramente tantissime, sia a pagamento sia gratis e soprattutto open source. Nel 2013 anche io ne avevo scritta una che avevo reso disponibile su GitHub qui... riguardando il codice ho avuto qualche brivido lungo la schiena, ma siamo stati tutti giovani! 
Proprio come esercizio (perché bisogna tenere sempre allenata la mente e la voglia di migliorarsi), ho deciso di non usare librerie già disponibili, performanti e di sicuro bug-free, ma ho preferito investire del tempo per dare una nuova veste alla mia vecchia libreria sperando di renderla migliore! Questa libreria si chiama WNMEA, acronimo di Warcomeb NMEA (lo so, lo so, la fantasia nei nomi è indubbiamente il mio punto forte!) e la potete trovare sempre su GitHub qui. Attualmente le funzionalità implementate sono poche, infatti viene fatto il parsing solo delle stringhe RMC e GGA, ma molto presto arriveranno tutte le altre ed inoltre ci sarà anche la possibilità di gestire l'invio di comandi al modulo.
Nella pagina del progetto è presente anche il link per visionare la documentazione della libreria generata con Doxygen.

Vista la necessità di dover utilizzare il modulo GPS in un progetto che sarà ultra-low power, nelle prossime settimane provvederò a fare dei test di precisione sul modulo che ho scelto in diverse circostanze in modo tale da trovare il miglior rapporto tra precisione, tempo di acquisizione e consumo energetico medio. Ovviamente vi terrò aggiornati!