Anfängerhilfe

Hallo,

Ich habe mir vor kurzem auch mal so ein Arduino Uno Board zugelegt. Das Angebot gab es bei Ebay zusammen mit einem 2-zeiligen Display von SAINSmart. Beides habe ich mit Hilfe der Beispiele auch schon mal zum spielen gebracht. Leider fehlen mir aber weitere Kenntnisse zum Programmieren der kleinen Dinger. Ich habe nun erst mal vor mir so ein Buch zu kaufen um als Anfänger die Grundlagen zu vestehen. Trotzdem brauch ich mal eure Hilfe und hoffe das mir auch hier wie in anderen Foren schnelle Hilfe gegeben werden kann. Folgendes habe ich mit dem Gerät vor: Als erstes möchte ich die serielle Schnittstelle ansprechen und sogenannte $GPWPL Daten mit Hilfe des Displays anzeigen lassen. Diese Daten sehen auf einem normalen Terminalprogramm am PC so aus: $GPWPL,5029.19,N,00916.55,E,DB0WOF*6A Hierbei handelt es sich um ein Datenfile welches von einem APRS Tracker zur Verfügung gestellt wird. Diese Daten möchte ich auf dem 2 Zeiligen Display lesen können. Später soll es mal so werden das ich nur die Rufzeichen und die Daten sehe wo die jenige Station sich gerade befindet. Da sich mit Amateurfunksachen nicht so viele Leute beschäftigen ist das Ganze für mich natürlich nicht einfach. Deswegen zuerst das blanke anzeigen der Rohdaten.

Natürlich wird es nicht funktionieren die Schnittstelle einfach zu öffen und die Daten dort einzulesen um sie auf das Display zu bringen. Das Beispiel in der Arduino Software erlaubt mir zwar das ansprechen der Schnittstelle und ich kann auch mit dem SerialMonitor Text an das Display senden aber wenn ich einfach den Tracker (APRS Teil aus dem Amateurfunkbereich) dort anklemme dann kommen natürlich nur wirre Zeichen an. Die Schnittstellengeschwindigkeit ist 4800baud genau wie der Tracker. Ich habe gelesen das man die eingelesenen Daten puffern muß um sie dann auf das Display zu bekommen. Mit Scrolling oder ohne ist irrelevant. Da mir die Erfahrung fehlt und eventuell jemand von Euch die Sache schon mal gemacht hat die ich hier versuchen möchte hoffe ich auf Hilfe. Die Grundlagen möchte ich mir später dann mit Hilfe des Buches erarbeiten. Angefangen hat ja jeder mal :-) Man kommt ja um diese Bausteine kaum noch herum und wenn man die möglichkeiten sieht die einem so ein Teil bietet.... Ich bin allerdings nun auch schon vom älteren Semester und zu meiner Lehrzeit war an solche Dinger noch nicht mal im Traum zu denken.

Ich hoffe das das für einen Anfänger nicht gleich zu viele Wünsche sind.

Lg Mario

Klingt ziemlich spannend, was genau hast du denn schon realisiert und vorallem. Was ist der Hintergrund dieser Daten, sprich was sagen diese Daten aus? mfg Balli

Hallo Balli,

Hintergrund ist folgender. Auf APRS kann man die Spur der Fahrzeuge verfolgen sofern sie ein APRS Sender an Bord haben. Das ist leider nur lizenzierten Funkamateuren vorbehalten. Die Daten werden auf der 144.800Mhz ausgesendet. Irgend eine Station fängt das auf und stellt die Daten ins netz. Auf aprs.fi kann man dann gucken wo an langgefahren ist. Ist eigentlich auch nur eine Spielerei. Aber jeder hat so sein Hobby. Aus diesen Daten bekommt man raus wo jemand ist und wie das Rufzeichen der Station ist die das Paket gesendet hat. APRS ist auf Wikipedia auch gut beschrieben. Diese Anzeige haben auch manche Geräte schon eingebaut, sie werten auch nur die Daten aus. Da mein Funkgerät so eine Anzeige nicht hat möchte ich sie eben auf Basis des Arduino machen. Es reicht wenn ich dann das Rufzeichen angezeigt bekomme. Man kann das ganze auch richtig auswerten und bekommt dann je nach Umfang der Geschichte die Entfernung zu eigenen Station und andere Sachen angezeigt.

Der Arduino fesselt mich aber derart das ich natürlich auch noch einen zweiten anschaffe um mit ihm auch andere Sachen zu machen.

LG Mario

Du mußt die Daten nur in ein Array einlesen und dann Häppchenweise auslesen und interpretieren bzw im Display anzeigen. Grüße Uwe

Hallo Uwe,

Ja Du weißt sicher von was Du sprichst, für mich sind das aber noch ungelöste Rätsel . Ich habe im moment noch das Problem das ich noch lange nicht so weit bin. Wenn Du mir auf die Sprünge helfen könntest wäre ich Dir sehr verbunden. Wie geht das mit den Arrays? Mein Weg ist noch lang und mühsam :-) Wenn ich einen Ansatz hätte ginge es mir vielleicht einfacher von der Hand. Ehe mein Projekt mal das wird was es sein soll vergehen wohl noch einige Monde.....

Lg Mario

Zuert mal: sind die APRS Nachrichten alle gleich lang? Welches Format (Datenfolge) haben sie? Grüße Uwe

Hallo Uwe,

Zuerst einmal Danke das Du mir hilfst. Ich habe den Arduino Uno erst gekauft und habe leider absolut keine Ahnung. Das ist aber wahrschenlich meinem Alter zu verdanken. Ich kann zwar mit dem Lötkolben gut umgehen, habe mehrere Röhrenverstärker gebaut aber eben Programmieren liegt mir noch nicht. Das Buch "Die elektronische Welt mit Arduino entdecken" ist auf dem Weg zu mir. Ich möchte es halt gern lernen. Was man früher mit einem größeren Aufwand an Bauteilen gemacht hat geht ja mit den Dingern besser. OK, das zur Vorgeschichte.

Zum APRS. Der Tracker gibt wenn man sich die Zeichen in einem Terminal Programm anschaut (Tera Term VT) Zeichenfolgen aus die wie folgt aussehen:

$GPWPL,5029.19,N,00916.55,E,DB0WOF*6A Wobei das Rufzeichen und die Zahlen natürlich variieren können. Das Rufzeichen, in dem Beispiel hier können auch noch eine SSID haben, die Daten würden dann etwa so aussehen: $GPWPL,5029.19,N,00916.55,E,DB0WOF-10*6A Die Zahl kann auch einstellig sein. Das ist je nach dem wie die Station sich benennt. Er gibt allerdings auch noch ein anderes Datenstück aus welches aber zum Auswerten nicht nötig ist. Sollte es aber notwendig werden müsste ich ein solches nochmal auslesen und hier mit angeben. Das andere Datenstück beginnt mit $PMGNWPL, es handelt sich hierbei um ein Datenfile was wohl für Magellan Geräte oder solche die es auswerten vorgesehen ist. Im Prinzip kann man aus dem ersten Datenstück welches mit $GPWPL beginnt die Längen und Breitengrade rausfiltern und natürlich das Rufzeichen der betreffenden Station. Da ich aber im Auto eh keine Richtungsangaben verarbeiten kann würde auch das reine filtern des Rufzeichens ausreichen. Oder da es ja ein 2 Zeiliges Display ist auch die letzten beiden die man empangen hat. Je nach dem was weniger Decodieraufwand bedeuten würde. Ich denke das dieses Thema sehr komplex ist und für mich als reinen Praktiker nicht wirklich zu knacken ist.

Ich zitiere hier mal das Textstück von der GPS Homepage eines Amateurfunkers.

Zitat anfang:

Bei den Ausgangsdaten handelt es sich um üblicherweise mit RS232-kompatiblen Pegelwerten seriell ausgegebene ASCII-Textstrings. Dabei werden Datenformate nach NMEA benutzt. Standardmäßig handelt es sich hierbei um den Protokolltyp: "GPWPL". Neben dem Header enthalten sie allerdings lediglich die von der Gegenstation empfangenen Werte von Breitengrad, Längengrad, einem Wegpunktnamen und die CRC-Prüfsumme. Im Amateurfunkeinsatz entspricht der Wegpunktname dabei dem Rufzeichen der absendenden Station.

Zitat ende.

Ich hoffe Du kannst mit diesen Daten etwas anfangen.

LG Mario

Die serielle Schnittstelle ist beim Arduino Uno durch die USB-Verbindung zum PC belegt. Das von der von die Eingestellte Sketch sollte Zeichen die du am Serial Monitor der IDE eingibst auf dem LCD-Display ausgeben. Versuche ob das funktioniert.
Wenn ja kannst du zum nächsten Schritt übergehen. Dazu beschäftigst du dich mit der SoftwareSerial Library http://arduino.cc/hu/Reference/SoftwareSerial und schließt deinen Empfänger an den Arduino an. For dem anschließen solltest du Prüfen ob dein Gerät auch mit 5V TTL-Pegeln arbeitet. Sonst brauchst du noch wenigstens einen Spannungsteiler oder einen Pegelwandler (MAX 232). Dann lässt du dir die Daten am Serial Monitor ausgeben. Ein einfaches Beispiel könnte so aussehen:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX (an die Pins musst du die Datenleitungen von deinem Empfänger legen)

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  delay(10);
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.println(mySerial.read());
}

Der Code sollte die die empfangenen Zeichen zeilenweise ausgeben.
Wenn das Funktioniert kannst du anfangen

Hallo circuit99

Na da war ich wohl völlig auf dem Holzweg. Der Pegelwandlerbaustein liegt hier, vorgestern bestellt, muß nur noch zusammenlöten. Das werde ich am Wochenende machen. Ferner Muß ich dann mal noch ein Datenkabel löten und den APRS Tracker aus dem Auto ausbauen. Dann werde ich die Tests von Dir durchführen. Mal sehen was der macht.
Danke Dir erst einmal für den Code und die Hilfe.

LG
Mario

So,

Also Dein Code geht wunderbar, allerdings mußte ich natürlich den Pegelwandler mit dazwischenschalten da er sonst nicht korrekt einliest. Das Buch ist am Sonnabend auch angekommen, es sind viele schöne Sachen drin. Leider behandelt es mein Vorhaben nicht so richtig. Ist wahrscheinlich auch zu speziell. Die SoftwareSerial habe ich mir zwar angesehen, nur versteh ich davon so viel wie die Kuh vom Eierlegen. Ich habe auch das Wochenende zugebracht mich mit den Arrays zu befassen aber so recht werde ich daraus nicht schlau. Mir fehlt es einfach an Grundwissen und mit meinem Englisch ist es leider auch nicht so weit her da ich es zu meiner Zeit nicht ausreichend in der Schule hatte. Wir mußten russisch lernen und das hat auch bloß keiner begriffen :-) Ich habe allerdings in dem Buch auch ein Beispiel gefunden welches ein Thermometer beschreibt. Diesen Sketch habe ich mir umgeschrieben das er auf mein Display paßt. Nun warte ich noch auf den Fühler und hoffe das es dann geht. Momentan zeigt er was von 499 Grad an, aber das ist klar da er keinen Fühler an seinem analogen Eingang sieht. Der kommt hoffentlich Dienstag an und wird dann natürlich auch gleich probiert. Villeicht habe ich mir auch das falsche Buch zugelegt? Es ist das von Erik Bartmann, die elektronische Welt mit Arduino entdecken. Sein Werk ist aber für mich als absoluten Neuling erst mal gut verständlich geschrieben. Mögen nun auch eventuell einige lachen, aber ich kanns halt nicht und will nun erst mal einiges aus diesem Buch probieren ehe ich mich weiter mit dem Projekt "APRS Daten anzeigen" versuchen werde. Mir ist ja nicht einmal klar ob ich die Daten im Klartext einlesen soll oder ob ich die erst wandeln soll? Auch sind die Datenpakete nicht immer gleich lang.

Danke also an die jenigen die versucht haben mir Hinweise zu geben. Ich kann sie leider im Moment noch nicht interpretieren. Sicher werden nun einige denken "lern Englisch dann verstehste das auch" aber wie sagt mann auch... mühsam ernährt sich das Eichörnchen...

Lg