Arduino -- Elektronik-Experimentierkasten -- Lectron Lehrsytem -- Jugendarbeit -- Elektronik -- Amateurfunk -- Notfunk -- Shop

APRS-Mitteilungen vom ARDUINO aus verschicken

ARPS-Mitteilungen sind APRS-Pakete die einen Text enthalten. Diese Mitteilungen können auf geeigneten Funkgeräten, wie z.B. das Kennwood TH-D7E, TH-D72E, TM-D710E/700E bzw. in den diversen APRS-Clientsoftware gelesen werden. APRS-Mitteilungen können mit oder ohne Bestätigung verschickt werden.

Format für ARPS-Mitteilungen:



Quelle: ARPS PROTOCOL REFERENZ vom 29.08.2000

APRS-Mitteilungen können z.B. mit von einem Terminalprogramm über einen TNC verschickt werden. Dazu muss man ein UNPROTO-Paket entsprechend dem in der APRS PROTOKOL REFERENZ definierten Format aussenden.

Es ist auch möglich die APRS-Messages von einer Mikrocontroller-Schaltung zu generieren. In dem hier beschriebenen Beispiel wird ein Arduino-Board über eine serielle Schnittstelle an ein Kennwood TH-D7E mit eingebautem TNC angeschlossen:



Arduino MEGA 128 mit 2. serieller Schnittstelle und einem Kenwood TH-D7E

Für die Softwareentwicklung dem dem Test wird ein Arduino MEGA 128 verwendet. Diese Variante hat zusätzlich zur USB-Schnittstelle noch weitere serielle Schnittestellen die mit TTL-Pegel auf die Buchsenleisten herausgeführt sind. Über einen RS232-TTL-Wandler ist dann der eingebaute TNC des Kennwood TH-D7E angeschlossen.

Beispielprogramm:

/************************************************************************************************************
*  APRS-Message verschicken, einfaches Beispiel zur Demonstration 
*
*  24.09.2011  Jürgen Mayer, DL8MA
*/
char myCall[] = "DL8MA-15"; // Absender
char zielCall[] = "DL8MA-9"; // Empfänger

void setup() {
  Serial1.begin(9600); // Initialisierung des eingebauten TNC im Kenwood TH-D7E
  Serial1.println( char( 0x03) ); // ESC
  delay( 500 );
  Serial1.print("mycall " ); // Mycall setzen
  Serial1.println( myCall );
  delay( 500 );
  Serial1.println("unproto aprs via wide1-1" ); // UNPROTO-Pfad auf WIDE1-1 setzen
  delay( 500 );
  Serial1.println("converse" ); // Converse-Modus
  delay( 500 );

  aprsMsg( zielcall, "Test II" ); // Testnachricht verschicken
}

void loop() {
}


/************************************************************************************************************
*  APRS-Message verschicken
*
*  24.09.2011  JM, DL8MA
*
*  in:   String zielCall       Afu-Call des Empfängers
*        String msgText        Message-Text, maximal 67 Zeichen
*
*/
void aprsMsg( String zielCall, String msgText )
{
  int i = 0;
  int laenge = zielCall.length(); // Länge des Zielcalls
  
  Serial1.print(":"); // Einleitung mit :
  Serial1.print( zielCall );
  if( laenge < 9 ) { // Adressbereich (9 Zeichen) mit Leerzeichen aufüllen
    for( i = 0; i < 9 - laenge; i++ )
     Serial1.print(" ");
  }
  Serial1.print(":"); // Trenner zwischen Adressebereich und Messagetext
  Serial1.println( msgText); // Messagetext
}

Programmbeschreibung:

Das einfache Beispielprogramm sendet nach dem Start einmalig eine Test-Message aus. Das Absende- und das Zielcall werden in den Variablen myCall und zielCall abgelegt.

Im Setup-Teil wird der eingebaute TNC des TH-D7E initialisiert und in den Converse-Modus geschaltet.

Als APRS-Pfad ist hier nur "WIDE1-1" eingestellt. Alternativ kann hier auch eine andere Pfadeinstellung gewählt werden:

z.B.  
Serial1.println("unproto aprs via wide1-1, wide2-2" );

Das eigentliche Versenden der APRS-Message erfolgt in der Funktion aprsMsg(). Hier wird der String für das APRS-Message-Format zusammengebaut und über die serielle Schnittstelle an den TNC geschickt.

Das Zielcall muss in die neuen Zeichen des Adressbereiches eingepasst werden. Dazu müssen die restlichen Stellen mit Leerzeichen aufgefüllt werden.



Optionen für Weiterentwicklung:

24.09.2011

Dipl.-Ing. (FH) Jürgen Mayer, DL8MA - Weinstadt-Grossheppach
Impressum

zurück zu www.DL8MA.de