INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
GPS auslesen
18.12.2013, 20:38
Beitrag #9
RE: GPS auslesen
Hi,

vielen Dank! Sehe ich das richtig, dass hier nur ein ASCII Zeichen ° ausgegeben wird?
Beim Arduino UNO läuft es schon.

Gruß Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2013, 09:28
Beitrag #10
RE: GPS auslesen
Hallo!

Gibt es bei dem Uno und dem Mega 2560 Unterschiede bezüglich der Grundfunktionen? Ich bekomme mit dem identischen Code und identischen Anschluß keine Werte ausgegeben.

Gruß Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.12.2013, 18:33 (Dieser Beitrag wurde zuletzt bearbeitet: 19.12.2013 19:01 von rkuehle.)
Beitrag #11
RE: GPS auslesen
Hallo Jochen,

yup, es ging nur um die Ausgabe des einen Zeichens. Die BYTE-Variante wird bei den neueren IDE-Versionen nicht (mehr) unterstützt.

Welche Pins benutzt du aktuell um das Modul anzuschließen?

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.12.2013, 12:33
Beitrag #12
RE: GPS auslesen
Hallo Ricardo,

ich wünsche dir Frohe Weihnachten!

Ich habe die Pins 3 und 4 , GND und 3,3V verwendet. Beim weiteren Versuch habe Ich im Code auf 14 und 15 und die passenden Pins 14tx3 und 15rx3 umgestellt.
Leider habe ich keine Zeichen vom GPS im Seriellen Monitor bekommen.
Grüße Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2014, 17:44
Beitrag #13
RE: GPS auslesen
Hi,

leider bekomme ich das auslesen immernochnicht hin. Ich habe folgenden Code im UNO verwendet und ich sehe sowohl im seriellen Monitor als auch im LCD - Display den GPS-Code.

Ein weiteres Display habe ich am Mega 2560 angeschlossen welchen mir einen einfachen "Text" anzeige.

Es ist alles identisch angeschlossen (GPS-TX --> Arduino RX (jeweils Port 3)).

Ich habe keine Idee, woran es liegen könnte.

Zitat:#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9,10,11,12,13);
SoftwareSerial mySerial = SoftwareSerial(3, 4);
#define powerpin 4

#define GPSRATE 9600
//#define GPSRATE 38400


// GPS parser for 406a
#define BUFFSIZ 90 // plenty big
char buffer[BUFFSIZ];
char *parseptr;
char buffidx;
uint8_t hour, minute, second, year, month, date;
uint32_t latitude, longitude;
uint8_t groundspeed, trackangle;
char latdir, longdir;
char status;

void setup()
{
lcd.begin(20, 4);
if (powerpin) {
pinMode(powerpin, OUTPUT);
}
pinMode(13, OUTPUT);
Serial.begin(GPSRATE);
mySerial.begin(GPSRATE);

// prints title with ending line break
Serial.println("GPS parser");

digitalWrite(powerpin, LOW); // pull low to turn on!
}


void loop()
{

uint32_t tmp;
lcd.setCursor(0,0);
Serial.print("\n\rread: ");
readline();

// check if $GPRMC (global positioning fixed data)
if (strncmp(buffer, "$GPRMC",6) == 0) {

// hhmmss time data
parseptr = buffer+7;
tmp = parsedecimal(parseptr);
hour = tmp / 10000;
minute = (tmp / 100) % 100;
second = tmp % 100;

parseptr = strchr(parseptr, ',') + 1;
status = parseptr[0];
parseptr += 2;

// grab latitude & long data
// latitude
latitude = parsedecimal(parseptr);
if (latitude != 0) {
latitude *= 10000;
parseptr = strchr(parseptr, '.')+1;
latitude += parsedecimal(parseptr);
}
parseptr = strchr(parseptr, ',') + 1;
// read latitude N/S data
if (parseptr[0] != ',') {
latdir = parseptr[0];
}

//Serial.println(latdir);

// longitude
parseptr = strchr(parseptr, ',')+1;
longitude = parsedecimal(parseptr);
if (longitude != 0) {
longitude *= 10000;
parseptr = strchr(parseptr, '.')+1;
longitude += parsedecimal(parseptr);
}
parseptr = strchr(parseptr, ',')+1;
// read longitude E/W data
if (parseptr[0] != ',') {
longdir = parseptr[0];
}


// groundspeed
parseptr = strchr(parseptr, ',')+1;
groundspeed = parsedecimal(parseptr);

// track angle
parseptr = strchr(parseptr, ',')+1;
trackangle = parsedecimal(parseptr);


// date
parseptr = strchr(parseptr, ',')+1;
tmp = parsedecimal(parseptr);
date = tmp / 10000;
month = (tmp / 100) % 100;
year = tmp % 100;
// lcd.clear();
lcd.setCursor(0, 0);
Serial.print("\nTime: ");lcd.print("Time:");
Serial.print(hour, DEC); Serial.print(':');lcd.print(hour, DEC); lcd.print(':');
Serial.print(minute, DEC); Serial.print(':');lcd.print(minute, DEC); lcd.print(':');
Serial.println(second, DEC);lcd.println(second, DEC);
lcd.setCursor(0, 1);
Serial.print(" D:");lcd.print("Date: ");
Serial.print(month, DEC); Serial.print('/'); lcd.print(month, DEC); lcd.print('/');
Serial.print(date, DEC); Serial.print('/'); lcd.print(date, DEC); lcd.print('/');
Serial.println(year, DEC); lcd.println(year, DEC);
lcd.setCursor(0, 2);
Serial.print("Lat: ");
lcd.print("Lat");
if (latdir == 'N')
{Serial.print('+'); lcd.print('+');}
else if (latdir == 'S')
{Serial.print('-'); lcd.print('-');}

Serial.print(latitude/1000000, DEC); Serial.print((char)176); Serial.print(' '); lcd.print(latitude/1000000, DEC); lcd.print((char)176); lcd.print(' ');
Serial.print((latitude/10000)%100, DEC); Serial.print('\''); Serial.print(' '); lcd.print((latitude/10000)%100, DEC); lcd.print('\''); lcd.print(' ');
Serial.print((latitude%10000)*6/1000, DEC); Serial.print('.'); lcd.print((latitude%10000)*6/1000, DEC); lcd.print('.');
Serial.print(((latitude%10000)*6/10)%100, DEC); Serial.println('"'); lcd.print(((latitude%10000)*6/10)%100, DEC); lcd.println('"');
lcd.setCursor(0, 3);
Serial.print("Long: ");
lcd.print("Long");
if (longdir == 'E')
{Serial.print('+');lcd.print('+');}
else if (longdir == 'W')
{Serial.print('-');lcd.print('-');}
Serial.print(longitude/1000000, DEC); Serial.print((char)176); Serial.print(' ');
Serial.print((longitude/10000)%100, DEC); Serial.print('\''); Serial.print(' ');
Serial.print((longitude%10000)*6/1000, DEC); Serial.print('.');
Serial.print(((longitude%10000)*6/10)%100, DEC); Serial.println('"');

lcd.print(longitude/1000000, DEC); lcd.print((char)176); lcd.print(' ');
lcd.print((longitude/10000)%100, DEC); lcd.print('\''); lcd.print(' ');
lcd.print((longitude%10000)*6/1000, DEC); lcd.print('.');
lcd.print(((longitude%10000)*6/10)%100, DEC); lcd.println('"');
}
//Serial.println(buffer);
// lcd.setCursor(0,3);
}

uint32_t parsedecimal(char *str) {
uint32_t d = 0;

while (str[0] != 0) {
if ((str[0] > '9') || (str[0] < '0'))
return d;
d *= 10;
d += str[0] - '0';
str++;
}
return d;
}

void readline(void) {
char c;

buffidx = 0; // start at begninning
while (1) {
c=mySerial.read();
if (c == -1)
continue;
Serial.print©;
//lcd.print©;
if (c == '\n')
continue;
if ((buffidx == BUFFSIZ-1) || (c == '\r')) {
buffer[buffidx] = 0;
return;
}
buffer[buffidx++]= c;
}
}

Was könnte das Problem sein?

Ich habe beide GPS-Module am Arduino getestet, hier funktionieren diese.

Gruß Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.01.2014, 13:47
Beitrag #14
RE: GPS auslesen
Hallo Jochen,

deine Aussagen sind ein wenig uneindeutig.
kannst du bitte nochmal genau sagen was an welchem Arduino (Uno oder Mega) mit welcher Pinnutzung (für Display und GPS-Modul) funktioniert und was nicht.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.01.2014, 21:48
Beitrag #15
RE: GPS auslesen
Hallo,

ich schließe wie folg an:

Arduino Uno (Funktioniert):
1. Display an Pin 8-13
2. GPS Modul
- TX an Pin 3
- gnd an gnd Pin
- VCC an 3.3V Pin

Arduino Mega:
1. Display an Pin 8-13
2. GPS Modul
- TX an Pin 3
- gnd an gnd Pin
- VCC an 3.3V Pin

Mega Serialausgabe:

[Bild: 44ofuxe8.jpg]

Ausgabe Bildschirm (links UNO rechts MEGA)
[GPS Modul hatte auf dem Bild noch kein Empfang, sobald diese hergestellt ist sehe ich dies sowohl im Seriellen Monitor als auch auf dem LCD-Monitor]
[Bild: nd2clzf9.jpg]

Code:

Zitat:#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9,10,11,12,13);
SoftwareSerial mySerial = SoftwareSerial(3, 4);
#define powerpin 4

#define GPSRATE 9600
//#define GPSRATE 38400


// GPS parser for 406a
#define BUFFSIZ 90 // plenty big
char buffer[BUFFSIZ];
char *parseptr;
char buffidx;
uint8_t hour, minute, second, year, month, date;
uint32_t latitude, longitude;
uint8_t groundspeed, trackangle;
char latdir, longdir;
char status;

void setup()
{
lcd.begin(20, 4);
if (powerpin) {
pinMode(powerpin, OUTPUT);
}
pinMode(13, OUTPUT);
Serial.begin(GPSRATE);
mySerial.begin(GPSRATE);

// prints title with ending line break
Serial.println("GPS parser");
lcd.print("GPS parser");
digitalWrite(powerpin, LOW); // pull low to turn on!
}


void loop()
{

uint32_t tmp;
lcd.setCursor(0,0);
Serial.print("\n\rread: ");
lcd.setCursor(0,1);
lcd.print("read");
readline();

// check if $GPRMC (global positioning fixed data)
if (strncmp(buffer, "$GPRMC",6) == 0) {

// hhmmss time data
parseptr = buffer+7;
tmp = parsedecimal(parseptr);
hour = tmp / 10000;
minute = (tmp / 100) % 100;
second = tmp % 100;

parseptr = strchr(parseptr, ',') + 1;
status = parseptr[0];
parseptr += 2;

// grab latitude & long data
// latitude
latitude = parsedecimal(parseptr);
if (latitude != 0) {
latitude *= 10000;
parseptr = strchr(parseptr, '.')+1;
latitude += parsedecimal(parseptr);
}
parseptr = strchr(parseptr, ',') + 1;
// read latitude N/S data
if (parseptr[0] != ',') {
latdir = parseptr[0];
}

//Serial.println(latdir);

// longitude
parseptr = strchr(parseptr, ',')+1;
longitude = parsedecimal(parseptr);
if (longitude != 0) {
longitude *= 10000;
parseptr = strchr(parseptr, '.')+1;
longitude += parsedecimal(parseptr);
}
parseptr = strchr(parseptr, ',')+1;
// read longitude E/W data
if (parseptr[0] != ',') {
longdir = parseptr[0];
}


// groundspeed
parseptr = strchr(parseptr, ',')+1;
groundspeed = parsedecimal(parseptr);

// track angle
parseptr = strchr(parseptr, ',')+1;
trackangle = parsedecimal(parseptr);


// date
parseptr = strchr(parseptr, ',')+1;
tmp = parsedecimal(parseptr);
date = tmp / 10000;
month = (tmp / 100) % 100;
year = tmp % 100;
// lcd.clear();
lcd.setCursor(0, 0);
Serial.print("\nTime: ");lcd.print("Time:");
Serial.print(hour, DEC); Serial.print(':');lcd.print(hour, DEC); lcd.print(':');
Serial.print(minute, DEC); Serial.print(':');lcd.print(minute, DEC); lcd.print(':');
Serial.println(second, DEC);lcd.println(second, DEC);
lcd.setCursor(0, 1);
Serial.print(" D:");lcd.print("Date: ");
Serial.print(month, DEC); Serial.print('/'); lcd.print(month, DEC); lcd.print('/');
Serial.print(date, DEC); Serial.print('/'); lcd.print(date, DEC); lcd.print('/');
Serial.println(year, DEC); lcd.println(year, DEC);
lcd.setCursor(0, 2);
Serial.print("Lat: ");
lcd.print("Lat");
if (latdir == 'N')
{Serial.print('+'); lcd.print('+');}
else if (latdir == 'S')
{Serial.print('-'); lcd.print('-');}

Serial.print(latitude/1000000, DEC); Serial.print((char)176); Serial.print(' '); lcd.print(latitude/1000000, DEC); lcd.print((char)176); lcd.print(' ');
Serial.print((latitude/10000)%100, DEC); Serial.print('\''); Serial.print(' '); lcd.print((latitude/10000)%100, DEC); lcd.print('\''); lcd.print(' ');
Serial.print((latitude%10000)*6/1000, DEC); Serial.print('.'); lcd.print((latitude%10000)*6/1000, DEC); lcd.print('.');
Serial.print(((latitude%10000)*6/10)%100, DEC); Serial.println('"'); lcd.print(((latitude%10000)*6/10)%100, DEC); lcd.println('"');
lcd.setCursor(0, 3);
Serial.print("Long: ");
lcd.print("Long");
if (longdir == 'E')
{Serial.print('+');lcd.print('+');}
else if (longdir == 'W')
{Serial.print('-');lcd.print('-');}
Serial.print(longitude/1000000, DEC); Serial.print((char)176); Serial.print(' ');
Serial.print((longitude/10000)%100, DEC); Serial.print('\''); Serial.print(' ');
Serial.print((longitude%10000)*6/1000, DEC); Serial.print('.');
Serial.print(((longitude%10000)*6/10)%100, DEC); Serial.println('"');

lcd.print(longitude/1000000, DEC); lcd.print((char)176); lcd.print(' ');
lcd.print((longitude/10000)%100, DEC); lcd.print('\''); lcd.print(' ');
lcd.print((longitude%10000)*6/1000, DEC); lcd.print('.');
lcd.print(((longitude%10000)*6/10)%100, DEC); lcd.println('"');
}
//Serial.println(buffer);
// lcd.setCursor(0,3);
}

uint32_t parsedecimal(char *str) {
uint32_t d = 0;

while (str[0] != 0) {
if ((str[0] > '9') || (str[0] < '0'))
return d;
d *= 10;
d += str[0] - '0';
str++;
}
return d;
}

void readline(void) {
char c;

buffidx = 0; // start at begninning
while (1) {
c=mySerial.read();
if (c == -1)
continue;
Serial.print©;
//lcd.print©;
if (c == '\n')
continue;
if ((buffidx == BUFFSIZ-1) || (c == '\r')) {
buffer[buffidx] = 0;
return;
}
buffer[buffidx++]= c;
}
}

Ich verstehe nicht, warum beim Mega die Ausgabe nicht funktioniert. Ich habe den Mega und den Uno quasi identisch angeschlossen und denselben Code verwendet.
Gruß Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2014, 18:53
Beitrag #16
RE: GPS auslesen
Hallo,

ich habe nochmal deinen testcode vom Anfang verwendet.Hier bekomme ich beim Arduino Mega im seriellen Monitor nichts angezeigt:

Zitat:#include <SoftwareSerial.h>
SoftwareSerial gps(3, 4);
void setup()
{
Serial.begin(9600);
gps.begin(4800);
}
void loop()
{
if(gps.available()>0)
{
char ch=gps.read();
Serial.print(ch);
}
}

Ich habe hierzo nur das GPS-Modul angeschlossen:

GPS <---> Arduino Mega
----------------------------------
TX <--->Pin3
RX <--->Pin4
VCC <--->3,3V
GND<--->GND

Gruß Jochen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Reifendruck-Sensoren Auslesen? Binatone 18 378 03.12.2016 12:00
Letzter Beitrag: Binatone
  PIR Sensor auslesen / einsetzen go4sea 6 548 28.04.2016 17:11
Letzter Beitrag: hotsystems
  Bosch MAP Sensor auslesen Roman 4 913 12.02.2016 23:02
Letzter Beitrag: Roman
  Touch auslesen? fraju 2 678 27.07.2015 14:23
Letzter Beitrag: fraju
  Arduino Pin mit anderem Arduino auslesen - geht das? Gelegenheitsbastler 8 3.233 08.05.2015 20:49
Letzter Beitrag: Bitklopfer
  Holux GM-210 GPS Modul mit Arduino Auslesen, schlägt fehl Wampo 9 2.527 31.01.2015 08:46
Letzter Beitrag: dqb312
  Wii Nunchuck auslesen? HaWe 4 1.323 02.10.2014 14:31
Letzter Beitrag: HaWe
  Daten von der seriellen Schnittstelle auslesen student1704 7 19.672 16.02.2014 12:07
Letzter Beitrag: student1704

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste