4
INTRODUZIONE
Questo lavoro di tesi si pone come obiettivo lo sviluppo e l’implementazione del
firmware per un microcontrollore che gestisce un logger GPS con interfaccia
Bluetooth.
Per prima cosa occorre chiarire alcuni concetti fondamentali: innanzi tutto, cos’è
un logger GPS (figura 1). Si tratta di un dispositivo in grado di ricevere
informazioni sulla propria localizzazione geografica via satellite, attraverso il
sistema GPS, di memorizzarle su una flash memory, e successivamente
trasmetterle tramite interfaccia Bluetooth ad un altro dispositivo, ad esempio un
PC. Ad esempio, dopo aver effettuato una sessione di logging, basta
semplicemente scaricare le varie informazioni su un PC, salvarle in un file di
testo con estensione .nmea ed aprire il file così ottenuto in un programma come
Google Earth: verrà visualizzato il percorso corrispondente ai dati memorizzati
nella flash. Un altro utilizzo può essere il controllo degli spostamenti di un
veicolo che sia dotato di un dispositivo del genere. Con la memoria adottata e le
impostazioni scelte, si può arrivare a quasi dodici ore di logging.
Fig. 1 – Il logger GPS oggetto di questa tesi
Il cuore di tale dispositivo è un microcontrollore MC9S08QE128 prodotto da
Freescale Semiconductor, microcontrollore a 8 bit dotato di numerose
interfacce verso l’esterno.
5
Un microcontrollore è fondamentalmente un processore, simile a quelli che
vengono montati ad esempio sui PC, ma con un set ridotto di istruzioni e che
raggruppa su un unico chip oltre alla CPU, anche memoria RAM, EEPROM,
porte I/O, timers, convertitori A/D.
La potenza di questi dispositivi sta nella grande velocità e nella ampia
riprogrammabilità, in quanto con un’adeguata programmazione si può avere sul
proprio dispositivo un componente “intelligente” capace di compiere operazioni
anche complesse. Inoltre, poichØ sono integrate varie periferiche, un altro punto
di forza di questi dispositivi è la possibilità di interagire con l’ambiente
circostante (ad esempio possiamo immaginare un controllo di temperatura).
Oggi siamo letteralmente circondati da microcontrollori, li troviamo nei telefoni
cellulari come in tantissimi elettrodomestici, ma anche il termostato di casa
spesso si basa su un microcontrollore.
Sul logger è installato anche un modulo GPS UP500 prodotto da Fastrax, il
quale riceve le informazioni dai satelliti del sistema GPS. Tale sistema si
compone di una costellazione di ventiquattro satelliti disposti su sei orbite
intorno alla Terra, a circa ventimila Km di altezza.
Il sistema si suddivide in tre segmenti: spaziale, di controllo e utente. Il primo
riguarda appunto i satelliti in orbita, e per la disposizione orbitale degli stessi
satelliti, oltre al tempo di rivoluzione intorno alla Terra, è possibile affermare che
ogni punto sulla superficie terrestre, se non ci fossero ostacoli, avrebbe quattro
satelliti in visibilità. Il segmento di controllo verifica lo stato di funzionamento dei
satelliti e ne aggiorna le relative orbite. ¨ costituito da una serie di stazioni di
terra distribuite lungo l’equatore e si compone di: cinque Monitor Station per il
controllo dei satelliti, tre Upload Station per la trasmissione verso i satelliti dei
comandi di controllo e delle informazioni da inserire nel Navigation Message
destinato ai ricevitori, una Backup Station situata a Sunnyvale (Stati Uniti), una
Master Control Station a Colorado Springs (Colorado, Stati Uniti), per il controllo
dell’intero sistema. Il segmento di utente è costituito dall’insieme dei ricevitori
GPS terrestri.
All’accensione, prima di effettuare il fix (ovvero prima di determinare la propria
posizione) un ricevitore GPS deve acquisire il maggior numero di satelliti della
6
costellazione. Nel caso di accensione dopo molto tempo o quando si operi in
un’area geografica assai diversa da quella in cui operava prima dello
spegnimento, il ricevitore non dispone di informazioni utili per ottimizzare la
ricerca. Per determinare la posizione di un punto nello spazio le incognite
quattro: le tre coordinate del punto X
P
, Y
P
e Z
P
oltre allo sfasamento temporale
rispetto all’orologio interno dei satelliti (estremamente preciso). ¨ quindi
necessario effettuare misure da almeno quattro satelliti. Nel caso in cui sia
sufficiente determinare la posizione sul piano, sono sufficienti tre satelliti. Il
punto è determinato, in maniera intuitiva, come l’intersezione di sfere aventi
come centro la posizione dei satelliti utilizzati; le misure ottenute dal quarto
satellite servono anche per discriminare tra i due punti che si otterrebbero con
tre satelliti. Nei casi pratici, anche per effetto degli errori, la soluzione è
determinata solo in maniera approssimativa. I ricevitori sono in grado di ricevere
i segnali provenienti da piø di quattro satelliti (ricevitori con otto o con dodici
canali), e la precisione teorica ottenibile con questo metodo è limitata dalla
velocità di cifra del segnale con cui si opera.
A proposito di errori, sono molti quelli che si possono presentare nel caso del
GPS, a partire dalle riflessioni del segnale dovute all’atmosfera, al cosiddetto
multipath, ovvero la riflessione multipla del segnale dovuta ad ostacoli presenti
al suolo, fino all’errore dovuto alla posizione dei satelliti rispetto al punto in cui ci
si trova.
Il protocollo usato è l’NMEA 0183, il quale usa frasi (sentences) in formato
testuale contenenti le informazioni piø disparate, relative ai satelliti in visibilità,
al fix, alla posizione geografica (espressa da latitudine e longitudine), all’ora,
alla velocità. Tutte le frasi iniziano col carattere “$” e terminano col carattere “*”,
il quale è seguito dal checksum, ovvero l’XOR a 8 bit dell’intera frase, esclusi i
caratteri di inizio e fine stringa. Infine troviamo i due caratteri <CR><LF>.
La frase memorizzata è la RMC, Recommended Minimun sentence C, la quale
contiene praticamente tutte le informazioni relative alla navigazione (ora, data,
posizione, velocità) e quindi si presta ottimamente agli scopi del logger. Il
protocollo NMEA permette anche di interrogare il modulo GPS, e questo
modulo usa un protocollo denominato MTK allo scopo. Le frasi in questo caso
7
cominciano con “$PMTK” a cui fa seguito un codice relativo al comando
utilizzato, piø le eventuali opzioni, infine troviamo ancora la sequenza “*”,
cheksum, <CR><LF>.
Per quanto riguarda il Bluetooth, si tratta di una tecnologia sviluppata negli anni
Novanta per cercare di connettere tra loro dispositivi diversi senza dover
ricorrere a cavi. Presto si svilupparono altri modelli di utilizzo di Bluetooth, che
hanno permesso di creare Personal Area Network (reti personali nello spazio di
pochi metri), punti di accesso voce/dati e altre applicazioni wireless. Bluetooth
appartiene alle cosiddette ISM (Industrial Scientific Medical), ovvero tutta una
serie di applicazioni che oltre a funzionare a bassa potenza, sono anche libere
da particolari licenze di utilizzo. La portata è solitamente di pochi metri (10 in
campo aperto). Il raggio di trasmissione è limitato dall'esigenza di contenere la
potenza di trasmissione e, di conseguenza, il consumo di energia. Questo fatto
risulta particolarmente importante se si pensa di usare la tecnologia Bluetooth
per la connessione di dispositivi alimentati da batteria, quali telefoni cellulari,
laptop o palmari, per i quali l'autonomia è un requisito critico. I dispositivi
Bluetooth possono interagire in diversi modi. Quello piø semplice, utilizzato ad
esempio tra cellulare e auricolare, coinvolge due dispositivi in una connessione
point-to-point (da punto a punto). Uno dei dispositivi agisce da master e l’altro
da slave. In altre applicazioni, possono esserci piø dispositivi slave (fino a
sette); in questo caso la topologia prende il nome di point-to-multipoint. Una
rete Bluetooth con un master e uno o piø slave si chiama piconet. Quando piø
piconet (fino a 10) interagiscono nella stessa area, formano una scatternet, che
è una forma di rete paritetica (peer to peer). Gli slave di una piconet possono
partecipare in un’altra piconet come master o slave.
L'architettura Bluetooth comprende diversi strati di protocolli, suddivisi in tre
categorie: core (nucleo), cable replacement and telephony control (sostituzione
cavo e controllo telefonia) e adopted (adottati). Un modello d'uso è un insieme
di protocolli che implementa una certa applicazione basata su Bluetooth.
Ogni profilo definisce poi i protocolli e le relative caratteristiche che supportano
un certo modello d'uso. Per collegare due dispositivi Bluetooth, occorre
accertarsi che entrambi supportino il profilo desiderato, inoltre, per motivi di
8
sicurezza, prima che due dispositivi Bluetooth possano scambiare dati, devono
eseguire l'operazione di pairing (accoppiamento), che normalmente richiede
uno scambio di codici d'identificazione.
Il modulo Bluetooth utilizzato in questo lavoro di tesi è l’RN-42 prodotto da
Roving Networks, in configurazione SPP (Serial Port Profile). Con tale
configurazione, il modulo viene visto dal microcontrollore come una semplice
interfaccia di comunicazione seriale.
Il logger GPS è dotato anche di un modulo di memoria AT25DF041A prodotto
da Atmel: si tratta di una flash memory funzionante tramite interfaccia seriale e
con una capacità di 4 Mbit, che viene sfruttata mediante interfaccia SPI del
microcontrollore.
A questo punto possiamo vedere come è stato implementato il firmware:
cominciamo col dire che fondamentalmente è stata implementata una macchina
a stati finiti, in ognuno dei quali vengono compiute delle operazioni che vanno
dallo startup del sistema alla realizzazione delle varie funzioni descritte in
precedenza. Il sistema inizialmente attraversa automaticamente alcuni stati in
cui vengono inizializzate le intefacce usate, ovvero la SCI (Serial
Communication Interface, per il BT e per il GPS) e la SPI (Serial Peripheal
Interface, per la flash), le strutture dati, con particolare importanza ai buffer di
ricezione di BT e GPS, necessari per il corretto funzionamento del dispositivo, e
viene effettuato un check dei led di cui è equipaggiato il logger, la cui funzione è
quella di dare un’indicazione visiva all’utente dello stato del sistema. Al termine
di questa fase il sistema si porta in uno stato di WAIT, in cui semplicemente
attende che l’utente prenda una decisione. All’ingresso nei vari stati, l’utente ha
ancora la possibilità di cambiare stato (possibilità indicata dal lampeggiare del
led relativo alla funzione selezionata) prima che il dispositivo avvii la funzione
relativa allo stato corrente. Inoltre, all’ingresso nei vari stati, vengono attivati e/o
disattivati i moduli GPS e BT a seconda delle esigenze, e viene effettuata una
configurazione del modulo GPS (per lo stato NAVIGATION viene ripristinata
l’impostazione di default, mentre per LOGGING_GPS e LOGGING_GPS_BT
vengono attivate solo le frasi RMC, con frequenza di una ogni 5 secondi).
9
Tutto il sistema è interrupt driven, ovvero pilotato dagli interrupt. In parole
povere, quando un evento esterno accade (es. ricezione di un messaggio dal
GPS, oppure pressione del tasto da parte dell’utente), il microcontrollore ferma
l’esecuzione del programma, salva il proprio stato attuale e avvia l’esecuzione
della routine di gestione dell’interrupt che si è presentato. Alla fine di tale routine
riprende l’elaborazione precedentemente interrotta. Ad esempio, la routine
relativa al tasto semplicemente fa si che ad ogni pressione la macchina si porti
nello stato successivo, quindi il sistema interrompe l’elaborazione, cambia lo
stato della macchina e poi riprende da dove si era interrotto, ovviamente
modificando il proprio comportamento (se necessario) in base al nuovo stato.
Il buffer di ricezione del GPS è organizzato come una coda circolare in cui
come indici vengono usati la posizione corrente nel buffer stesso e il numero di
locazioni libere che viene decrementato ad ogni nuovo inserimento. Il
riempimento avviene mediante interrupt, lo svuotamento invece mediante una
delle funzioni Navigation, Logging_GPS e Logging_GPS_BT, le quali
rispettivamente inviano semplicemente i messaggi nel buffer via BT
(Navigation), memorizzano i messaggi sulla flash (Logging_GPS) ed eseguono
entrambe le operazioni descritte (Logging_GPS_BT), incrementando di volta in
volta il numero di posizioni libere.
Le interrogazioni al modulo GPS avvengono mediante la realizzazione della
frase da inviare in automatico, con la possibilità per il programmatore di variare
la frequenza di invio di un certo tipo di frase, e l’aggiunta del checksum
calcolato in automaticamente. La stessa routine di calcolo del checksum è
usata anche per verificare la correttezza del messaggio ricevuto, requisito
necessario affinchè la frase venga inserita nel buffer.
Per quanto riguarda il BT, si è provveduto ad implementare i comandi relativi
all’ingresso e all’uscita dal cosiddetto command mode, ovvero la modalità in cui
il modulo è pronto a ricevere istruzioni. Fondamentalmente si è trattato anche
qui di creare automaticamente il messaggio da inviare, secondo i parametri
passati dal programmatore, e di effettuare un controllo sulle risposte ricevute,
per avere la certezza del corretto esito delle operazioni richieste e per poter
dare al programmatore un’indicazione, all’occorrenza, circa l’errore verificatosi.
10
Per quanto riguarda la memorizzazione, infine, è necessario innanzi tutto
prevedere funzioni che consentano di sproteggere l’intera memoria (che
normalmente è protetta contro le scritture accidentali), controllare l’integrità
dell’ultimo salvataggio (necessario per preservare anche l’integrità dei dati
successivi), cancellare eventualmente il contenuto dell’intera memoria, oltre
ovviamente alla possibilità di cercare la prima pagina con sufficiente spazio
libero per memorizzare la frase corrente, scrivere fisicamente tale messaggio, e
leggere l’intera memoria per restituire all’utente i dati in essa contenuti.
11
CAPITOLO 1: Il sistema GPS
1.1 Introduzione
Il sistema GPS consente di determinare con elevata precisione la posizione in
tre dimensioni di un qualsiasi punto sulla superficie terrestre. Esso è nato
principalmente per scopi militari, ma oggi le sue applicazioni sono molteplici, e
in diversi campi.
L’interesse della comunità scientifica internazionale verso il sistema GPS ha
consentito, nel tempo, di ottenere risultato ben superiori a quelli ipotizzati dai
progettisti. Oggi le applicazioni del GPS riguardano il controllo della navigazione
aerea, marittima e terrestre, il monitoraggio della posizione dei veicoli (es.
antifurto satellitari), ma anche applicazioni cartografiche, geofisiche ed
idrografiche.
Tramite tale sistema è possibile compiere misurazioni con una precisione, in
particolari condizioni, fino al centimetro, sfruttando un’insieme di satelliti in
orbita a ben 20000 km (circa) di altezza.
La nascita del sistema GPS (in origine GPS NAVSTAR – Global Positiong
System NAVigation Satellite Timing And Ranging) risale agli anni Settanta ad
opera del Dipartimento della Difesa (DoD) degli Stati Uniti, e oltre a consentire
la localizzazione geografica, permette anche di ottenere un riferimento
temporale assoluto molto preciso (tempo GPS), il tutto a patto che un certo
numero di satelliti siano in visibilità radio. Il sistema è gestito anche oggi dal
DoD, che ne stabilisce la fruibilità per applicazioni civili.
Come ogni sistema satellitare, anche il GPS è suddiviso in tre segmenti:
spaziale, di controllo e di utente. Il segmento spaziale (Fig. 1.1) è basato su
una costellazione di ventiquattro satelliti, disposti su sei orbite quasi circolari
inclinate di 55° sul piano equatoriale, a intervall i di longitudine di 60° , e ad
un’altezza (media) di circa 20200 km dalla superficie terrestre.
12
Fig. 1.1 – Costellazione GPS
Il periodo di rivoluzione di ciascun satellite è pari a 11 ore, 58 minuti e 2,0455
secondi, ovvero praticamente ogni satellite compie due orbite complete in poco
meno di un giorno solare, in modo che, per un punto qualsiasi della Terra, tutta
la costellazione si ripresenta quotidianamente con un anticipo di un po’ meno di
quattro minuti rispetto al giorno precedente. I parametri orbitali adottati fanno sì
che, in ogni istante e in ogni luogo, nell’ipotesi di assenza di ostacoli, siano
visibili almeno quattro satelliti. I livelli ricevuti al suolo sono però ottimizzati per
angoli di elevazione intorno ai 40° sull’orizzonte.
I satelliti oggi in orbita, realizzati dalla Lockheed Martin, sono stati lanciati in
date diverse. Essi hanno dimensioni di circa 130x180x200 cm un peso di circa
800 Kg. Utilizzano pannelli solari con una superficie complessiva di circa sette
metri quadrati, in grado di fornire una potenza di circa 700 W. Dal momento che
le misure di distanza effettuate dai ricevitori a terra sono ricavate da misure di