Nic co tajne nie jest nam obce

MiniTNC

MINI-APRS-TNC
nach Bob Ball,WB8WGA
Version vom 28. April 2007
NEU: 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 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
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 [v ][ v ][ v ]

siehe dazu auch weiter unten

Sender-Einschaltverzögerung:
txdelay xx ( wobei für z.B. 6mS ein Wert von 60 unter xx einzugeben ist )

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

Monitorbetrieb:
monitor off ( oder "all" oder "me" )

Alias-Betrieb:
myalias relay

Digipeating:
digi on ( 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

Kontrolle der TNC-Parameter:
Zur Kontrolle aller gespeicherten Einstellungen dient der Befehl: "disp" . 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" 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 + 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 * )
[3] http://www.arrl.org/qex
[4] http://www.reichelt.de ( Bezugsquelle für Bauteile wie z.B. Microcontroller PIC16F88-I/P und Quarz 20MHz )

* Die Originalsoftware arbeitet 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 die von Bob, N9CX freundlicherweise erstellte modifizierte Softwareversion testen. Da ich sie allerdings noch nicht selbst ausprobiert habe, sind Erfahrungsberichte dazu noch sehr willkommen.
minitnc48.asm
minitnc48.hex
NACHBAU:
Mithilfe der auf dieser Seite befindlichen Informationen und Link-Hinweise sollte ein problemloser Nachbau möglich sein. Interessenten für speziellere Bauteile, wie Platinen , Quarze und auch bereits programmierte Prozessoren können sich an mich wenden. Kleine Mengen davon können auf privater Basis zur Verfügung gestellt werden.
IN PLANUNG:
Ein mit dem Mini-TNC zu betreibender einfacher Decoder, der aus den von einem angeschlossenen GPS-Empfänger stammenden und den via APRS-Funk empfangenen Standortinformationen jeweils Entfernung und Richtung ermittelt und auf einem Standard-LCD-Display anzeigt und ggf. auch als Sprache ausgibt.
Beispiel: "DE JOT SIEBEN OH OH STRICH NEUN IST DREI PUNKT FÜNF KILOMETER IN NORDNORDWEST"

Google