Capaso Tiny-Trak

Introduzione

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.

Brevi richiami sul protocollo AX.25 e i frame UI

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.

Schema elettrico

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.

Realizzazione pratica

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).

Collegamento del Ricevitore GPS

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.

Collegamento alla Radio di bordo

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".

Programma di configurazione

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.

 

Photo Gallery

Il kit completo del localizzatore

Il circuito finito

Il circuito lato saldature

I connettori utilizzati

Download

PCB formato Circad98
PCB format GIF (300dpi)
Firmware ver. 1.4 (.hex)
Programma di Configurazione

[Leggi i commenti sul Blog]

Ultimo aggiornamento: 01/01/2009 10.05.24  [Home]