Queste brevi note sono scritte allo scopo di velocizzare la realizzazione e la
messa a punto di un progetto a mio parere grandioso, benché costruttivamente molto
semplice. Si tratta di un completo localizzatore GPS in grado di inviare i dati
geografici attraverso i canali in fonia di una radio di bordo. Il progetto è
noto come TinyTrak ed è, limitatamente ad alcune versioni, liberamente
costruibile ed utilizzabile. Il circuito è basato su un PIC 16F84 che, con
l'aggiunta di pochissimi componenti esterni, è in grado di implementare tutte le
funzioni necessarie a realizzare il localizzatore. L'aspetto più interessante di
questo progetto è che le forme d'onda audio da inviare al ricetrasmettitore
vengono sintetizzate e modulate direttamente dal PIC tramite un DAC a 4 bit in
accordo al protocollo AX.25 relativo ai frames UI (Unnumbered
Information). A questo proposito è reperibile nella sezione
Documentazione del sito una serie di
articoli molto validi che trattano approfonditamente l'argomento fornendo anche
degli esempi di codice per ricevere ed inviare frame UI AX.25 e per realizzare
un completo TNC basato su uC.
In dispositivo è poi in grado di gestire la comunicazione sul canale radio
rilevando se è occupato e, in caso contrario, di comandare il PTT per inviare
gli stream digitali con i dati di posizione.
Per
inviare i dati di posizione ci si affida ad un normale sistema packet tradizionale, con
l'aggiunta di un nuovo protocollo di compressione dati chiamato MIC-E, che
praticamente, non fa altro che comprimere una stringa di informazioni in pochi
caratteri per essere poi successivamente decodificati in ricezione. Il MIC-E è
usato per i dati di latitudine/longitudine, altezza e velocità dei mezzi in
movimento e normalmente si attiva sui nuovi apparecchi RTX con TNC entro
contenuto (portatili o veicolari).
Tutto il sistema funziona senza essere connessi l’un l’altro, quindi non servono
comandi come quelli usuali per connettere i soliti BBS o nodi cluster, ma è
basato unicamente sulla sola emissione di beacon (noti in packet come frame di
tipo UI).
I beacon contengono il nominativo della stazione che trasmette ed i dati
relativi alla sua posizione per permettere al software di posizionare l'icona
nella esatta coordinata geografica sulla mappa. Se si inviano messaggi, anche
questi verranno trasmessi come beacon di tipo UI e riceveranno come risposta un
beacon di ACK (ricevuta di ritorno). L'invio dei messaggi viene fatto alla
stazione specificata nel campo "to" della finestra di invio. Il software pensa a
riconoscere quali beacon di messaggio sono destinati alla propria stazione o
meno.
Nella sezione Documentazione>APRS è
presente il documento ufficiale delle specifiche del protocollo APRS con anche
una sezione dettagliata interamente dedicata al MIC-E, con tutti i riferimenti
necessari per interpretarlo correttamente.
Lo schema elettrico dell'interfaccia è molto semplice e di seguito riporto quello originale distribuito dall'autore (Bob Garrabrant - N6BG):
Come si può notare dello schema, il cuore di tutto il dispositivo è il PIC 16F84 che, con l'ausilio di qualche altro componente, consente di:
- sintetizzare le forme d'onda necessarie tramite il DAC costituito da R1,2,3,4,5
- commutare il ricetrasmettitore in trasmissione tramite Q1, R8
- monitorare la presenta di segnale BF sul canale tramite C2 e R9
- leggere le stringhe NMEA dal ricevitore GPS
- gestire la comunicazione con un PC per la configurazione
- pilotare i leds di indicazione (On, Busy, GPS Fix, Send)
A
questo schema ho modificato la sola parte relativa al circuito di clock, che
nell'originale veniva ottenuto tramite un risonatore ceramico: ho preferito
utilizzare un quarzo da 10MHz e ho quindi aggiunto allo schema due condensatori
ceramici da 22pF (C5, C6).
L'elenco componenti è il seguente e fa ovviamente riferimento allo schema
riportato:
Part Description
U1 PIC 16F84-10/P uC (programmed with TinyTrak Firmware)
Y1 10 Mhz xtal
Q1 BC337 NPN transistor
Q2 78L05 +5V voltage regulator
R1 8.2K ohm resistor (gry-red-red)
R2 3.9K ohm resistor (org-wht-red)
R3 2K ohm resistor (red-blk-red)
R4,R10,R11,R12,R13 1K ohm resistor (brn-blk-red)
R5 220K ohm resistor (red-red-yel)
R6,R9 10K trimmer potentiometer (103)
R7,R14 10K ohm resistor (brn-blk-org)
R8 2.2K ohm resistor (red-red-red)
C1,C2,C3,C4 0.1 uf capacitor (104)
C5,C6 22pF capazitor (22p)
D1 Yellow T1-3/4 LED
D2 Green T1-3/4 LED
D3,D4 Red T1-3/4 LED
D5 1N4148 diode
J1 DB9 female connector
18 pin dip socket
Un dettaglio a mio avviso molto interessante dello schema è la soluzione adottata per il rilevamento della fonia nel canale radio (squelch) da parte del uC: infatti allo scopo sono sufficienti un condensatore (C2) ed un trimmer (R9). Il valore di R9 viene regolato fino a portare il livello di tensione presente al pin 10 del PIC poco sotto la soglia di commutazione del livello logico in modo che sia sufficiente un piccolo segnale audio proveniente da C2 per far commutare lo stato del pin e quindi segnalare con il led Busy la presenza di una conversazione nel canale radio impedendone l'utilizzo da parte del localizzatore, che aspetterà un certo tempo (Quiet Time) dopo il silenziamento per inviare i dati di posizione.
Per
assemblare il dispositivo ho disegnato un circuito stampato di dimensioni molto
contenute in grado di ospitare tutti i componenti necessari al corretto
funzionamento del localizzatore. Lo stampato è a singola faccia e prevede un
solo ponticello da far passare sotto lo zoccolo del PIC 16F84 (U1).
I collegamenti per il ricevitore GPS e per il ricetrasmettitore sono prelevato
dalla basetta tramite due connettori SIP (P1 e P2 rispettivamente), mentre il
connettore P3 consente di collegare l'alimentazione. A questo proposito volevo
sottolineare il fatto che la tensione di 12V del veicolo è un po' troppo elevata
per lo stabilizzatore di tensione a 5V, che per ragioni di spazio è stato scelto
di tipo 78L05. Per evitare un eccessiva dissipazione di calore consiglio
di collegare il serie all'alimentazione una resistenza da 47ohm/1W ed un diodo
1N4007 per evitare danni provocati da accidentali inversioni di polarità.


Una
volta assemblato il circuito è sufficiente predisporre i collegamenti per i
dispositivi esterni (GPS e Radio) e collocare il tutto in un piccolo contenitore
plastico.
Ricordo che la commutazione del ricetrasmettitore da rx a tx (PTT)
avviene in molti apparati portando a massa la linea audio in ingresso tramite
una resistenza di 2,2kohm; nel caso alcuni modelli facessero fatica a commutare
consiglio di variare il valore di questo componente. Nel PCB non ho previsto il
diodo per il collegamento di PTT-IN (vedi sotto) e quindi, se si intende
utilizzare questo segnale, lo si deve collegare esternamente, con l'anodo
rivolto verso il pin 11 del PIC (vedi schema elettrico).
Per
collegare un ricevitore GPS al localizzatore è sufficiente collegare SERIAL IN
con la linea di uscita del GPS, lasciando scollegata SERIAL OUT. A questo
proposito voglio ricordare che se si utilizzano, come nel mio caso, dei
ricevitori GPS con connettore PS/2, le linee dati non sono conforme la
piedinatura standard del connettore che ad esempio si trova nel proprio PC.
Infatti il GPS che ho utilizzato (un BR-305 della GlobalSat) ha il seguente
pin-out:

Quindi è sufficiente il collegamento di SERIAL IN con il pin 5 del connettore PS/2 del GPS per far acquisire al localizzatore i dati geografici. Ovviamente per vedere funzionare il ricevitore bisogna collegare i 5V e la massa ai terminali corrispondenti (2, 1). Per il collegamento fisico consiglio di utilizzare in connettore sub-Din a 6 poli volante con un pezzetto di cavo a 3 conduttori non più lungo di 10cm da collegare a connettore P1 del PCB.
Per collegare il localizzatore alla radio di bordo è sufficiente seguire lo schemino seguente:
Con questi collegamenti il firmware del TinyTrak sarà in grado di gestire la comunicazione attraverso il canale radio senza interferire con il normale utilizzo in fonia dell'apparato. Per rendere più pulito e robusto il cablaggio consiglio di predisporre tutti i collegamenti su di un connettore db9 a vaschetta provvisto di torrette di fissaggio, utilizzando ad esempio la disposizione dei pins seguente:

Per
quanto riguarda i collegamenti audio verso la radio è sufficiente utilizzare
quelli richiesti dal proprio apparato: nel mio caso ho utilizzato un jack da
3mm per BF IN verso la presa auricolare ed uno da 2.5mm per BF
OUT proveniente dalla presa microfono.
Infine è stato previsto un connettore da presa accendisigari veicolare per i 12V
di alimentazione, ma si possono sicuramente utilizzare connettori meno
"ingombranti".
Per configurare il localizzatore è sufficiente collegarlo al PC tramite una seriale e lanciare il programma TiniTrakConfig che consente di impostare tutti i parametri di funzionamento come il nominativo (Callsign), l'intervallo di emissione, il tempo di attesa di silenziamento del canale (Quiet Time), il messaggio di Beacon e dopo quante trasmissioni deve essere emesso. Il programma prevede inoltre una utile funzione di test del sintetizzatore di segnali, consentendo la trasmissione dei due toni AFSK (1200/2200 Hz) al fine di valutarne la qualità. Si possono infine impostare dei parametri relativi al protocollo MIC-E in accordo a quanto previsto dalle specifiche APRS.





PCB formato Circad98
PCB format GIF (300dpi)
Firmware ver. 1.4 (.hex)
Programma di Configurazione
Ultimo aggiornamento: 01/01/2009 10.05.24 [Home]