Problem GPS beim sparkfun can bus shield?

Guten Abend

Ich bin seit einiger Zeit daran einen Datenlogger zu konzipieren, doch als ich das GPS modul 406a hinzugefügt habe funktionierte der Demo code von SK pang nicht mehr (http://skpang.googlecode.com/files/Canbus_v4.zip). Das heisst die Logging funktion geht nicht mehr und bei der GPS test funktion passiert gar nichts. Nun habe ich versucht das GPS Modul alleine anzusteuern(siehe Anhang). Dies hat funktioniert . Nun bin ratlos Ich hoffe Ihr könnt mir weiterhelfen?? XD

Freundliche Grüsse

Adrian

Hardware:
http://skpang.co.uk/catalog/20-channel-em406a-sirf-iii-receiver-with-antenna-p-440.html
http://skpang.co.uk/catalog/serial-enabled-16x2-lcd-red-on-black-5v-p-571.html

http://www.play-zone.ch/de/sparkfun-inventor-s-kit-v3.html

sketch_jun14a.ino (189 Bytes)

Das GPS und das LCD verwenden als Schnittstelle die Serielle TTl-Schnittstelle. Das CAN-BUS Shield braucht fast alle Pins des Arduino. Welche Pins verwendest Du für das LCD? https://www.sparkfun.com/datasheets/DevTools/Arduino/canbus_shield-v12.pdf Grüße Uwe

Hallo

Für das LCD verwende ich den pin 6(tx) und 255(rx)( also wird nicht benutzt) und beim GPS Modul verwende ich die Pins 4(RX) 5(Tx)(SJ1 und SJ2 sind dementsprechend gelötet). Habe ich die Pins falsch gewählt?

Gruss Adrian

Und für beides verwendest Du SoftwareSerial? Hast Du darauf geachtet, dass Du das GPS-Modul nach dem LCD definierst (nur eine Instanz von SoftwareSerial kann empfangend sein)? Du bist Dir im Klaren, dass Du vom GPS-Modul nichts empfangen kannst, solange Du etwas an das LCD schickst? Auch die CAN-Schnittstelle kann in dieser Zeit nichts empfangen. SoftwareSerial sollte nur als allerletzte Notlösung genommen werden, es ist kein gleichwertiger Ersatz für eine serielle Schnittstelle in Hardware.

Welche Art von Daten loggst Du mit dem Teil? Kommen die von der seriellen Schnittstelle oder wofür verwendest Du die? "Nur" zum Debuggen? Dann besorge Dir schnell einen Mega2560, der hat 4 Hardware-Schnittstellen, mit der Emulation in Software wirst Du nicht glücklich werden.

Ja ich verwende für beides SoftwareSerial. Das LCD wurde vor dem GPS definiert. Mir war diese Tatsache nicht bekannt :zipper_mouth_face:(Muss hier vllt. noch sagen das ich ein Neuling bin was die Programmiersprache betrifft).

Ich möchte vorerst Motor spezifische Daten loggen und diese sammt GPS daten auf der SD speichern. Um dann die Daten auf einer Map zu zeigen. Mit dem MEGA2560, hätte ich da viel Aufwand das Programm um zuschreiben ?

Danke für die ausführliche Antwort.

Gruss Adrian

Ich möchte vorerst Motor spezifische Daten loggen und diese sammt GPS daten auf der SD speichern. Um dann die Daten auf einer Map zu zeigen. Mit dem MEGA2560, hätte ich da viel Aufwand das Programm um zuschreiben ?

In diesem Fall würde ich Dir dringend raten, auf den Mega2560 zu wechseln, mit zwei SoftwareSerial-Objekten im Einsatz wirst Du sonst mit grosser Wahrscheinlichkeit Datenverluste haben, weil die Interrupts zu lange gesperrt werden.

Das Umschreiben ist nicht sehr kompliziert, anstatt der SoftwareSerial-Objekte verwendest Du einfach Serial1, Serial2 oder Serial3. Etwas komplizierter ist die Hardware-Änderung, denn die Anschlüsse von GPS und LCD müssen auf andere Pins gebracht werden. Wenn Du D4, D5 und D6 nicht anderweitig brauchst (auf dem Mega hast Du ja genügend frei Pins), kannst Du einfach mittels Jumper-Kabeln die Verbindung machen, musst aber darauf achten, dass die 3 Pins nie per Software als Ausgang geschaltet werden. Wenn Du sicher gehen willst, kannst Du die drei Pins am Shield abschneiden, dann kann es bestimmt nie zu einem Kurzschluss kommen.

Ok danke ich sehe ich komme wohl nur mit dem Mega2560 zum Erfolg. Und so wie du es sagst ist es keine grosse Sache. Ich werde wohl das Board gleich morgen bestellen. Danke für den Tipp mit der Hardware. http://www.play-zone.ch/de/original-arduino-mega2560-rev3-retail.html Danke für die rasche Antwort.

gruss Adrian