Modem APRS con PIC16F88
Il progetto di questo semplice TNC, realizzato da Bob Ball WB8WGA con la collaborazione di altri OM e prendendo spunto dal progetto di Mike N0QBH [2], è comparso per la prima volta sul numero Marzo/Aprile 2005 della rivista QEX [1], titolo originale “an inexpensive terminal node controller for packet radio“. Successivamente Claudio Fantino IZ1DNJ diffuse in Italia questo progetto traducendo l’articolo originale e realizzando con la sezione ARI di Asti un kit completo di circuito stampato e componenti per la sua costruzione [3].
Caratteristiche
La particolarità di questo TNC è quella di utilizzare per tutte le funzioni un solo integrato, ovvero un microcontrollore Microchip PIC16F88, che svolge anche la funzione di convertitore A/D e D/A per la codifica e decodifica dei toni audio del packet.
Il mini TNC è in grado di codificare e decodificare i pacchetti APRS, inviare un beacon periodico, funzionare come semplice digipeater, funzionare da Tracker stand-alone con GPS collegato.
Il progetto originario di Bob WB8WGA, soprattutto per quel che riguarda la parte firmware, è sviluppata per funzionare essenzialmente in modalità APRS a 1200 baud standard Bell 202, secondo il protocollo AX.25. Poiché non sono state implementate le procedure di connessione e disconnessione, nonché di acknowledge dei pacchetti, il simple TNC non lavora stand-alone nelle normali modalità previste dal packet, quali ad es. BBS o Cluster (se non in sola ricezione). Ma grazie all’implementazione della modalità KISS, disponibile con il firmware versione 2.30, queste funzionalità possono essere demandate direttamente al software.
Schema elettrico
Clicca sul disegno per visualizzarne la versione ingrandita.
Firmware
Il firmware originale di Bob presentava una serie di problemi, pertanto ho deciso di mettere mano all’assembler, risolvendo i vari bug ed aggiungendo nuove funzionalità. A quel punto la mia versione è diventata, che io sappia, l’unica effettivamente funzionante ed in pratica l’hanno adottata tutti coloro che utilizzano il simple TNC. Ne sono prova le numerose testimonianze e richieste che mi giungono da OM di tutto il mondo. Per evitarne l’utilizzo commerciale non ho reso disponibile l’assembler delle mie versioni di firmware.
Versione | Data | Autore | Change log |
---|---|---|---|
1.08 | 10/03/2005 | WB8WGA | versione originale |
1.09 | 02/03/2011 | N5VRP | supporto packet |
1.10 | 01/08/2007 | IZ8EWD | * implementata ricezione con UI-View: aggiunto tag UI ai pacchetti |
1.11 | 06/10/2007 | IZ8EWD | * risolti problemi di utilizzo con GPS: con GPS collegato la seriale passa a 4800 bps |
1.12 | 20/10/2007 | IZ8EWD | * implementata trasmissione con UI-View: risolti problemi comando Converse e lentezza di risposta comandi + introdotti alcuni miglioramenti |
1.13 | 20/11/2007 | IZ8EWD | + aggiunto comando “restart” * risolti bug minori |
2.00 | ? | WB8WGA | stessi problemi della 1.08 + invio dato di temperatura nel beacon con supporto per sensore Dallas DS18S20 + routine di diagnostica GPS |
2.10 | 18/04/2009 | CT2GYH [4] | stessi problemi della 2.00 * supporto per nuovo sensore di temperatura DS18B20 + trasmissione alternata di stato e posizione |
2.20 | 16/06/2009 | CT2GYH [4] | stessi problemi della 2.00 * trasmissione dello stato ogni 5 posizioni |
2.20 ewd | 06/06/2011 | IZ8EWD | * applicate tutte le modifiche introdotte fino alla 1.13 alla versione 2.20 di CT2GYH – eliminata routine diagnostica GPS – eliminato comando “filter” * comando “converse” abbreviato in “conv” * velocità RS232 a 4800 bps sia in modalità TNC che Tracker * risolto bug su comando “unproto” |
2.30 | 07/08/2014 | IZ8EWD | + supporto protocollo KISS * risolti bug minori |
2.31 | 14/09/2014 | IZ8EWD | + stato abilitazione modo KISS memorizzato in EEPROM * miglioramento routine TX in modo KISS |
2.31 9k6 | 16/09/2018 | IZ8EWD | * velocità RS232 a 9600 bps sia in modalità TNC che Tracker |
Legenda: + Nuovo; – Rimosso; * Aggiornato.
Il firmware è distribuito con le seguenti condizioni:
Copyright (c) 2004, Bob Ball WB8WGA
Adapted from work provided by others, particularly Mike Berg N0QBH
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the ORGANIZATION nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Bug noti
– Mancanza tag UI: Risolto 1.10, da migliorare
– Assenza comunicazione con GPS: Risolto 1.11
– Modalità Converse ha problemi di funzionamento: Risolto 1.12
– Modalità Command lenta: Risolto 1.12
– Comando UNPROTO fuori standard: Risolto 2.20ewd
– Il Beacon non viene immediatamente trasmesso all’accensione o quando s’imposta l’intervallo
– Ricevendo due o più pacchetti concatenati, solo il primo viene decodificato
Miglioramenti
– Implementazione modalità KISS: Aggiunta 2.30
– Modalità Digipeater con limitazioni
– Seriale a 4800 e 9600 bps
– Aggiunta led GPS
Comandi
HELP – Elenca a video la lista dei comandi disponibili
BEACON EVERY n – Imposta l’intervallo di trasmissione n in minuti del beacon, con n = 0 il beacon è off
BTEXT – Definisce il testo del beacon, nella formattazione definita dall’APRS
CAL – Entra nella modalità Calibrate, trasmettendo alternativamente i toni a 1200 e 2200 Hz
CONV – Abilita la modalità Converse
DIGI ON/OFF – Abilita ON o disabilita OFF la modalità Digipeater
DISP – Elenca a video i settaggi impostati sul Mini TNC
ECHO ON/OFF – Abilita ON o disabilita OFF l’eco dei caratteri inseriti a terminale
GPS GPGGA/GPGLL/GPRMC – Seleziona la sentenza NMEA del GPS (tra $GPGGA, $GPGLL o $GPRMC) per il beacon del Tracker
KISS ON/OFF – Abilita ON o disabilita OFF la modalità KISS
MONITOR ALL/ME/OFF – Seleziona i pacchetti da monitorare tra ALL tutti, ME quelli destinati al proprio call o alias, OFF nessuno
MYALIAS – Definisce l’alias utilizzato nella modalità Digipeater
MYCALL – Definisce il proprio call
PERM – Salva nella EEPROM le impostazioni
RESTART – Riavvia il TNC
TEMP F/C – Definisce l’unità di misura della temperatura tra F Farenight o C Centigrade
TR XMIT/RCV/OFF – Stampa a video in esadecimale i caratteri XMIT trasmessi o RCV ricevuti
TXDELAY n – Imposta il ritardo n di trasmissione
UNPROTO – Definisce l’unproto address dei pacchetti nel formato Call1 VIA Call2, Call3
Configurazione
Allo stato attuale (firmware versione 2.30) il Mini TNC consente quattro modalità di funzionamento:
– Stand-alone
– Tracker
– TNC APRS
– TNC KISS
Per configurare il Mini TNC collegarlo al PC tramite un cavo seriale null-modem ed utilizzare un programma per terminale con la porta configurata a 4800bps, 8N1.
Stand-alone
Nel modo Stand-alone, il Mini TNC trasmette autonomamente un beacon fisso a intervalli prefissati, inoltre può essere abilitata la funzionalità Digipeater.
– Inserire il proprio indicativo e l’eventuale SSID: MYCALL IZ8XYZ o MYCALL IZ8XYZ-#
– Specificare l’unproto address: UNPROTO APRS per le connessioni dirette o UNPROTO APRS v WIDE3-3 per andare via digi
– Inserire il testo del beacon nella formattazione APRS: BTEXT xyz
– Definire l’intervallo di trasmissione del beacon: BEACON EVERY ##, per le stazioni fisse è consigliato un intervallo di 30 minuti
– Salvare le impostazioni: PERM
Volendo abilitare il Digipeater di primo livello, che ripete eventuali stazioni mobili presenti in zona e non direttamente ascoltate dal Digi di secondo livello.
– Definire l’alias di primo livello: MYALIAS WIDE1-1
– Abilitare il Digi: DIGI ON
Tracker
Per abilitare la modalità Tracker collegare il ponticello interno J4, quindi collegare al Mini TNC un GPS con uscita NMEA seriale a 4800 bps. La posizione viene trasmessa via radio all’intervallo prefissato, ogni cinque beacon viene trasmesso uno status text.
Prima di collegare il GPS e J4, configurare il TNC via terminale:
– Inserire il proprio indicativo e l’eventuale SSID: MYCALL IZ8XYZ o MYCALL IZ8XYZ-#
– Specificare l’unproto address: UNPROTO GPSC## v WIDE1-1, WIDE2-2, dove ## va sostituito con il codice del simbolo APRS desiderato
– Selezionare il tipo di sentenza NMEA da trasmettere: GPS GPGGA/GPGLL/GPRMC, la $GPRMC è quella che contiene, oltre alla posizione, anche velocità e direzione
– Definire l’intervallo di trasmissione del beacon: BEACON EVERY ##, per le stazioni mobili è consigliato un intervallo di 5 o più minuti
– Inserire il testo di stato: BTEXT >xyz, notare il carattere > che nella formattazione APRS indica appunto uno status text
– Salvare le impostazioni: PERM
TNC APRS
Nel modo Converse il Mini TNC funziona come un normale TNC, ma poiché è in grado di lavorare solo su pacchetti di tipo UI, funziona soltanto in APRS.
Per il noto sofware UI-View utilizzare il file command sottostante, nel .zip sono allegate le istruzioni per l’installazione.
Versione Command | Firmware |
---|---|
1 | 1.13 |
2 | 2.20ewd e successivi |
TNC KISS
La modalità KISS demanda il controllo dei pacchetti trasmessi/ricevuti al software. Il TNC in tal caso si occupa della sola modulazione/demodulazione dei dati sul canale radio e della verifica del checksum.
In questa modo il TNC può lavorare in tutti i modi previsti dal protocollo AX.25, quindi non solo in APRS. Ciò rende questo semplice ed economico TNC un progetto sempre valido e ne estende la flessibilità di utilizzo.
Il canale di default è lo 0 e non può essere modificato, l’unico comando KISS riconosciuto allo stato attuale è quello di uscita C0 FF C0.
Per abilitare il modo KISS:
– KISS ON
– Salvare l’impostazione: PERM
– Riavviare: RESTART
Ad ogni successiva accensione il TNC partirà in modalità KISS.
Per disabilitare il modo KISS:
– Uscire dalla modalità KISS con il comando esadecimale: 0xC0 0xFF 0xC0, UI-View lo fa in automatico, in alternativa utilizzare un terminale che supporta l’invio di hex
– Al prompt dare il comando KISS OFF
– Salvare l’impostazione: PERM
Hardware
Al momento l’unica modifica effettuata, a parte quelle suggerite dall’autore e già implementate nelle varie realizzazioni che si trovano in rete, è stata l’introduzione di un amplificatore audio con chip LM386.
In tal modo non si rende più necessaria la connessione del TNC alla presa altoparlante, ma la ricezione è compatibile con il livello audio presente sul connettore packet della radio.
Per quel che riguarda la realizzazione, in [3], [4] e [5] si trovano alcuni esempi e lo schema elettrico. Sul sito della Fox Delta [6] è possibile acquistare diversi kit di montaggio basati sul sistema del simple TNC.
Altri commenti sul progetto sono in [7] e [8], versioni alternative in [9] [10], [11], [12] e [13]. Sul canale YouTube di PianetaRadio.it vi sono dei video dimostrativi.
Riferimenti
[1] QEX Marzo/Aprile 2005, Bob Ball WB8WGA, “An Inexpensive Terminal Node Controller for Packet Radio”;
[2] Zero Crossing Detector, Mike N0QBH;
[3] Traduzione italiana di Claudio IZ1DNJ;
[4] Enide, João CT2GYH;
[5] Andrew ZL3AME;
[6] Fox Delta;
[7] Julian G4ILO;
[8] Alessandro IZ0OWD;
[9] Klaus DJ700;
[10] Interfaccia USB di Vivien F4FWH;
[11] Shield Arduino di Vivien F4FWH;
[12] Shield Raspberry Pi di OE7MBT;
[13] Versione con PIC16F876 di EW1LN.
Questa opera è distribuita con:
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia.
Si declina ogni responsabilità per eventuali errori ed omissioni e gli eventuali danni che ne dovessero conseguire. Per ulteriori informazioni consultare le note legali.
Hello!
I want Version 2:31 Serial at 38k4
Thank You
Hi Niphon, thanks for writing from Thailand.
I think that this speed is not useful for several reasons:
– The PIC microcontroller isn’t enough fast;
– GPS NMEA standard is 4k8 or 9k6;
– The APRS troughput is very slow, you really don’t need to have a so fast RS232.
Best 73
Спасибо за 2.31-9к6 прошивку!
Мой ноутбук не имеет COM-порта. Из ссылки [6] Fox Delta я познакомился с модулем CH340. Удалил MAX232 и, используя его цанговый, разъем подсоединился:
MAX – CH340
232
==== – =====
TX 10 – 5 RX
RX 12 – 4 TX
GRD 15 – 6 GRD
Получил /dev/ttyUSB0. Работает все хорошо!
Спасибо WB8WGA за подробное описание платы, которую я повторил.
IZ8EWD
Hi!
Thank you for the 2.31-9k6 program.
I use it on a board from the author of CT2GYH.
To connect to a laptop, without a COM port, the article you mentioned [6] Fox Delta helped.
Instead of the MAX232, I put the CH340G, using the landing connectors of the chip.
The ttyUSB0 port appeared, and everything works great.
With best wishes,
R2DWQ
“… I have not made the assembler of my firmware versions available.”
It’s been more than 15 years since “your” version 1.10 release (according to the table in your article). You think it’s about time to publish your modified firmware?
If your intentions are (were) “to avoid commercial use”, well, that’s what the GPL is for — although, AFAICT, it seems that the source code of N0QBH and WB8WGA (which you built upon) was licensed under a BSD/MIT license (so they clearly weren’t worried about commercial use).
You simply license your modifications under the GPL and publish the modified version of the code. Problem solved!
That’s how open source software is *supposed* to work — especially in the amateur radio community! Then, other hams can modify the software to better fit their needs. For example, Niphon (HS2QJJ), who commented above, could recompile it to communicate with his PC’s serial port at 38k4 — regardless of whether you think that “this speed is not useful”.
Turning open-source software into closed-source software is just as bad as taking it for “commercial use” — if not worse. If your modifications were so great, let’s see ‘em!
73,
-j
(November 9 Whiskey Whiskey Victor)