MINI-APRS-TNC
nach Bob Ball,WB8WGA 
Version vom 8. August 2010 
NEU: 9K8 und 4K8-Version zum Downloaden  ( siehe unten )


Begriffsbestimmungen:

APRS ( Automatic Packet Radio Service  ) 
ist ein von Bob Bruninga,WB4APR  entwickeltes Verfahren zur Übertragung von u.a. Standortdaten im Amateurfunk. Dabei handelt es sich um eine Sonderform des zur Datenübertragung weit verbreiteten Packet-Radio-Systems. Mit geeigneten Programmen können die von APRS-Stationen stammenden Positionsdaten z.B. auf digitalisierten Karten am PC ausgewertet werden.  

TNC ( Terminal Node Controller )  ist ein Packet-Radio-Codec zur Übertragung von AX25-Daten. In Verbindung mit APRS wird dabei mit einer Air-Datenrate von 1200bps im Unconnected-Betrieb ( UI ) gearbeitet. Bei der verwendeten Modulationsart AFSK
erfolgt die Datenübertragung durch Umtastung von zwei im menschlichen Hörbereich liegenden Tönen.  Damit ist eine Nutzung der Sprachkanäle ( fast ) beliebiger Funkgeräte möglich.. 

In der Ausgabe März/April 2005 der ARRL-Zeitschrift "QEX" [4] erschien ein Artikel, der mein Interesse weckte. Dabei handelte es sich um einen kleinen Einchip-TNC, der hauptsächlich für einen Einsatz in der Betriebsart "APRS" konzipiert wurde. Das von Bob Ball, WB8WGA [1][2] stammende Konzept basiert im Wesentlichen auf einem PIC-Microcontroller des Typs PIC16F88. Der benötigte Programmcode ist sowohl in Assembler- als auch in Hex-Format verfügbar. Das Konzept ist zudem sehr einfach nachbaubar und verwendet keine teuren oder schwer erhältlichen Bauteile.

DIE WICHTIGSTEN EIGENSCHAFTEN DES TNC'S:

* Decodierung empfangener Packet-Radio-Files ( UI ) im Monitor-Mode
* Funktion als Einchip-Digipeater möglich
* Senden von Bakeninformationen in nutzerdefinierten Zeitabständen
* Senden beliebiger Textinhalte im Converse-Mode
* Senden der von einem angeschlossenen GPS-Empfänger stammenden NMEA-Protokolle
* geringe Leistungsaufnahme ( Batteriebetrieb möglich )

SCHALTUNGSBESCHREIBUNG:



Abb.1 Schaltbild des MINI-TNC's ( modifizierte Version )

Das vom Hörerausgang  eines angeschlossenen Empfängers bzw. Transceivers stammende Tonsignal ist dem Eingang "AFSK-In" zuzuführen.  Mithilfe der "LED1" kann die Präsenz eines  Eingangssignals grob kontrolliert werden. Decodierte Packet-Radio-Files stehen mit einer Datenrate von 9600bps und TTL-Pegel an Pin 11 des Prozessors "PIC16F88" zur Verfügung. Mithilfe des Transistors "TR2" wird erreicht, daß auch RS232-kompatible Verbraucher ( wie PC's, PDA's ) anschließbar sind. Dazu ist der Ausgang "RS232 OUT" zu verwenden.
Über den Eingang "RS232-In" lassen sich die zur Aussendung vorgesehenen seriellen Daten zuführen. Hierbei kann es sich z.B. um die von einem GPS-Empfänger im ca. Sekundentakt zur Verfügung gestellten und Navigationsdaten beinhaltenden NMEA-Protokolle handeln. Zur Aktivierung dieser Betriebsart ist die Brücke "GPS enable" zu schliessen.
Stehen serielle Eingangsdaten nur mit TTL-Pegel zur Verfügung, so ist die Brücke "JP2" aufzutrennen. Die Signale sie daraufhin direkt an Pin 8 des Prozessors zu legen.
Es stellt einen "Schönheitsfehler" dar, daß serielle Eingangssignale nur mit einer Datenrate von 9600bps zugeführt werden dürfen. Davon sind auch eventuelle GPS-Datenprotokolle betroffen. Nachdem bei GPS-Satellitenempfängern aber standardmäßig mit 4800bps gearbeitet wird, ist eine Umstellung der Ausgabedatenrate erforderlich. Abhängig vom jeweils benutzten Empfänger-Chipsatz gibt es hierzu geeignete Software-Tools. Alternativ ist aber auch vorgesehen, eine Version der TNC-Software zur Verfügung zu stellen, bei der generell mit  einer Terminal-Datenraten von 4800bps  gearbeitet wird.
Ein am Prozessor angeschlossenes Widerstandsnetzwerk erzeugt ein sinusnahes AFSK-Ausgangssignal. Mit dem Potentiometer "P1" lässt sich der Tonpegel beeinflussen. Über den Ausgang "AFSK-Out" gelangt das Signal an den Mikrofoneingang eines angeschlossenen Senders bzw. Transceivers.
Für den Zeitpunkt einer Aussendung geht Pin 6 des Prozessors auf H-Pegel. Dabei leuchtet "LED 2" und Transistor "Tr1" schaltet durch. Besitzt ein angeschlossener Sender einen separaten Tasteingang, so ist dieser über "PTT-OUT" mit dem Collector von "Tr1" zu verbinden. Speziell Handfunkgeräte verwenden üblicherweise einen kombinierten Mikrofon-/ Sender-Tasteingang. In diesen Fällen erfolgt die Aktivierung des Senders über den Widerstand "Rx".

BESONDERHEITEN UND AUFBAU:



Abb.2  TNC-Nachbau von DJ7OO

Während die Originalversion des TNC's nur auf Lochrasterplatine aufgebaut wurde, erschien mir das Projekt doch interessant genug zu sein, um auch ein eigenes Platinenlayout zu entwerfen ( Abb.2 und 3 ). Dabei konnten auch
einige erst nach dem Erscheinen des ursprünglichen Artikels gewonnenen Erkenntnisse Berücksichtigung finden. Dazu gehört z.B. eine geringe gleichspannungsmäßige Vorspannung für den AFSK-Eingang an Pin 17 des Processors. Auch wurde auf die Verwendung des im Original eingesetzten Pegelwandler-IC's  "MAX232"  verzichtet und durch die Transistoren "Tr2" und "Tr3" ersetzt. Ausgangsseitig werden damit zwar keine Signale mit 100% normkompatibelem RS-232-Pegel bereitgestellt, in nahezu allen Fällen erfüllt die gewählte Methode aber dennoch ihre Aufgabe und darüberhinaus ergibt sich ein im Vergleich zum "MAX232" geringerer Energiebedarf.
Abb.2 zeigt das Foto eines ersten Musteraufbaus.
Das vom Hörerausgang eines angeschlossenen Empfängers oder Transceivers kommende Tonsignal wird dem Eingang "AFSK-IN" zugeführt. Um eine stabile Decoderfunktion zu erreichen, muß man etwas mit verschiedenen Eingangspegeln experimentieren. Bei zu geringem niederfrequenten Pegel findet keine Decodierung statt und bei zu weit aufgedrehter Empfängerlautststärke wird der damit verbundene Anstieg des Klirrfaktors ebenfalls zu Problemen führen. Es gilt also pegelmäßig etwa die Mitte des erlaubten Bereiches zu ermitteln. Dabei kann u.U. ein an Pin 2 des Processors angeschlossener Oszillograph gute Hilfe leisten. Die empfangenen Daten stehen nach ihrer Decodierung am RS232-Ausgang mit 9600bps Datenrate zur Verfügung.
Im Converse-Mode werden beliebige vorher eingegebene Textzeilen
nach Eingabe von <Enter> ausgesandt. Sie können dabei  aus bis zu 255 Zeichen bestehen. Dieser Modus ist somit z.B. zur Ausgabe von beliebigen Telemetriedaten geeignet. Bei Betrieb als APRS-Bake ist dieser Modus allerdings ungeeignet, da es keinen Sinn machen würde, alle von einem GPS-Empfänger im Sekundentakt zur Verfügung gestellten Daten auch auszusenden. Dafür gibt es aber die Möglichkeit, bestimmte NMEA-Protokolltypen in vom Nutzer festlegbaren Zeitabständen zu verwenden.
Wie sicherlich schon bemerkt wurde, kommt das Konzept ohne einen ggf. teuren und  schwer erhältlichen Modemchip aus. Auf der Sendeseite werden die beiden benötigten sinusähnlichen Tonfrequenzen stattdessen mithilfe von vier an Prozessorausgängen angeschlossenen Widerständen erzeugt. Während im Original dabei mit Werten aus der Standardreihe gearbeitet wurde, habe ich hier zufällig vorhandene Bauteile mit 1% Genauigkeit eingesetzt. Ich schreibe das nur, weil es beim genauen Betrachten von Abb.2 auffallen könnte. Nach allen mir vorliegenden Informationen reicht es aber, wenn mit den im Schaltbild angegebenen Standard-Widerstandswerten gearbeitet wird.


Abb.3  Neues Platinenlayout


EINSTELLEN DER BETRIEBSPARAMETER

Zur Einstellung der Betriebsparameter ist der Baustein über "RS232-Out" und "RS232-In" mit dem Com-Port eines PC's zu verbinden. Dabei wird mit einer Datenrate von 9600bps gearbeitet. Ein am PC zu startendes Terminalprogramm, wie z.B. das im Windows-Zubehör zu findende "HYPERTERMINAL", ist auf den benutzten Com-Port und die genannte Baudrate einzustellen. Nachdem alle Vorbereitungen getroffen wurden, sollte sich der TNC nach dem Einschalten mit folgendem Starttext melden:

WB8WGA Modemless TNC V1.08 Type "Help" for Information
cmd:

Mit "cmd:" wird signalisiert, daß die Eingabe weiterer Kommandos erwartet wird. Diese Aufforderung  gilt auch für alle anderen folgenden Befehle. Zuerst ist aber das eigene Rufzeichen einzugeben:

cmd: mycall WB8WGA <ENTER>
OK
cmd:

Durch Rücksendung von "OK" wird vom TNC-Programm signalisiert, daß die vorherige Eingabe akzeptiert wurde. Anderenfalls erscheint eine Fehlermeldung.
Es folgen Beispiele für die wichtigsten Kommandos:

Verbindungspfad:

cmd: unproto <zieladresse> [v <call1>][ v <call2>][ v <call3>] <ENTER>
siehe dazu auch weiter unten

Sender-Einschaltverzögerung:

txdelay xx  <ENTER> ( wobei  für z.B. 6mS  ein Wert von 60 unter xx einzugeben ist )

Bakenbetrieb:

btext  Hier ist Klaus aus Mainz <ENTER>
beacon every 10
  <ENTER> ( hier: Bakenaussendung alle 10 Minuten; Wert = "0" für Bake "AUS" )

Monitorbetrieb:

monitor off  <ENTER>  ( oder "all" oder "me" )

Alias-Betrieb:

myalias relay <ENTER>

Digipeating:

digi on <ENTER>  ( oder "off" )

Speichern der TNC-Parameter:
Nach Eingabe des Befehls: "perm" werden alle vorher eingegebenen Werte im EEPROM-Bereich des Prozessors abgelegt  und bleiben auch nach Unterbrechen der TNC-Versorgung erhalten.
 

perm <ENTER>

Kontrolle der TNC-Parameter:
Zur Kontrolle aller gespeicherten Einstellungen dient der Befehl: "disp" <ENTER>.
Die nach seiner Eingabe erscheinende Liste kann z.B. folgendermassen aussehen:

TXDELAY 60
ECHO on
GPS $GPRMC
TRace off
MONitor on
DIGIpeater on
BEACON on EVERY 10
UNPROTO aprs v relay v wide v wide
MYCALL wb8wga-0
MYALIAS unit1
BTEXT Bob in Jefferson,NH

Converse-Betrieb:

Mithilfe des Befehls "converse" <ENTER> kann in den gleichnamigen Modus geschaltet werden. Nach Betätigung der Enter-Taste werden daraufhin beliebige, aus max. 255 Zeichen bestehende Texteingaben ausgesandt. Zum Zurückschalten in den Kommandomodus ist die Tastenkombination <CTRL> + <C> zu betätigen.

APRS-Betrieb:

Am einfachsten ist die Bakenaussendung vom Standortdaten eines bekannten Ortes realisierbar. Hierzu ist kein GPS-Empfänger erforderlich. Stattdessen muss man lediglich die geographischen Koordinaten des jeweiligen Standortes wissen. Zusätzlich zum eigenen Rufzeichen MYCALL sind dazu noch die gewünschten Bakenintervalle BEACON EVERY und ein auch die Standortdaten enthaltener Bakentext einzugeben. Beispiel: btext !4967.89N/00812.34E#  /Klaus aus Mainz
Das für die Längen- und Breitengraddaten zu benutze Format ist:  [G]GGMM.MM. Das Zeichen "#" signalisiert dabei eine zusätzliche Nutzung des TNC's auch als Digipeater. Dazu sind allerdings auch noch folgende Einstellungen vorzunehmem:  myalias RELAY und  unproto APRS v RELAY v WIDE v WIDE

Senden von NMEA-Daten eines angeschlossenen GPS-Empfängers:

Bei Nutzung des TNC im Einsatz an wechselnden Standorten müssen die Positionsdaten aktuell sein und daher von einem angeschlossenen GPS-Empfänger stammen. Dabei ist eine Auswahl der zur Aussendung kommenden Protokolltypen zu treffen und eine sinnvolle Sendefolge festzulegen. Die Software des TNC unterstützt die Protokolltypen: $GPRMC, $GPGGA und $GPGLL. Sie unterscheiden sich in der Auswahl der darin enthaltenen Einzelwerte. Vereinfacht lässt sich sagen, daß man über das $GPRMC-Protokoll fast immer alle benötigten Daten erhält und lediglich bei Interesse an Höhenangaben zu $GPGGA wechseln sollte. Zum Treffen einer Auswahl ist der Befehl: "GPS" zu benutzen. Komplett mit Parameter sieht er dann beispielsweise folgendermassen aus: GPS $GPRMC
Nicht vergessen werden dürfen auch die Einstellungen für MYCALL, UNPROTO und BEACON. Eine passende Unproto-Einstellung für den APRS-Betrieb ist z.B.: APRS v RELAY v WIDE v WIDE
Ebenfalls nicht vergessen sollte man die permanente Speicherung der Einstellungen mithilfe des Befehls "perm" und eine Aktivierung der Betriebsart: GPS durch Schliessen der Brücke "GPS enable". Zur Aktivierung dieser Funktion ist die Spannungsversorgung des TNCs danach kurzzeitg zu unterbrechen.

Weitere Infos zum TNC, bezüglich der Programmierung seines Prozessors ( auch mit Boot Loader ) und
über weitere Steuerkommandos findet man in dem über die unten aufgeführte Link herunterladbaren Original-Artikel.

LINKS:

Eine PDF-Kopie des Originalartikels ist unter der in [1] und [2] angegebenen Adresse herunterladbar.  
[1] http://www.n9cx.com/BobBall.htm
[2] http://www.n9cx.com/tnc_pages/tnc_article.htm
[3] http://www.arrl.org/qexfiles/3x05Ball.zip ( Assembler- und HEX-Code * )
[4] http://www.arrl.org/qex

[5] http://www.reichelt.de  ( Bezugsquelle für Bauteile wie z.B. Microcontroller PIC16F88-I/P  und Quarz 20MHz )

* Nachdem die Link [3] leider nicht mehr zu existieren scheint, habe ich die Microcontroller-Software hier zum Download bereitgestellt. Dabei arbeitet die Originalversion mit einer Terminaldatenrate von  9600bps. Das bedingt allerdings, daß auch ein ggf. angeschlossener GPS-Empfänger seine Daten mit dieser Geschwindigkeit liefern muss. Wer dagegen mit der NMEA-Standard-Datenrate von 4800bps arbeiten will oder muss, der kann eine dazu von Bob, N9CX freundlicherweise erstellte modifizierte 4800bps-Softwareversion testen. 

9600bps-Version
minitnc_96.asm
minitnc_96.hex

4800bps-Version
minitnc_48.asm
minitnc_48.hex