Hi,
ich habe hier einen Arduino Uno mit einem GPS-Shield (Duinopeak). Ich habe mein Programm geschrieben und teste dies aus. Folgendes geht:
GPS: läuft, d.h. ich bekomme meine GPS-Daten
SDS-Sensor: läuft, d.h. ich bekomme die Werte für PM10 und PM2.5.
Beides zusammen? Läuft nicht, genauer: SDS läuft, GPS läuft nicht.
Mein Programm habe ich so geschrieben, daß ich per #ifdef Teile ein- bzw. ausblenden kann.
GPS ist angebunden per:
#define ARDUINO_GPS_RX 2 // GPS TX, Arduino RX pin
#define ARDUINO_GPS_TX 3 // GPS RX, Arduino TX pin
der SDS-Sensor ist angebunden per:
#define SDS_PIN_TX 5
#define SDS_PIN_RX 6
Auf dem Shield wird der Pin 8 verwendet für die SD-Karte.
Meine Frage: was habe ich falsch gemacht? Warum laufen die beiden Teile nicht zusammen?
Schönen Gruß
AugustQ
Aus den 2 Schnipseln soll jetzt jemand herauslesen, was bei Dir klemmt? Du hast zuviel Vertrauen in unsere hellseherischen Fähigkeiten.
Du bist ja nicht mehr ganz neu hier, Weißt also, was wir brauchen: zumindest den kompilierfähigen Sketch und nicht schädlich sind auch Links zu den Baugruppen, besser noch zu deren Datenblättern.
Gruß Tommy
Mein Programm sind ca. 600 Zeilen und ich erwarte nicht, daß Ihr für mich debugging-Aufwand betreibt. Deswegen versuche ich, die wichtigen Punkte zu extrahieren.
Aber ich habe einen Verdacht: ich verwende 2 Objekte vom Typ SoftwareSerial. Kann es sein, daß es davon nur eines geben darf?
Erzeuge ich diese Objekte erst für GPS, dann für SDS-Sensor, dann funktioniert der SDS-Sensor, aber nicht das GPS. Umgekehrt entsprechend.
Kann das die Ursache meines Problems sein?
Schönen Gruß
AugustQ
Ich glaube mich zu erinnern, dass SoftwareSerial nicht gleichzeitig 2 Kanäle empfangen kann.
Wer es genauer weiß, möge mich bitte korrigieren.
2 Instanzen sollten möglich sein.
Gruß Tommy
Hi,
Problem gelöst.
Ursache war, daß SoftwareSerial nicht gleichzeitig auf 2 Kanälen empfangen kann. Wie von Dir angegeben muß man vorher die entsprechende Funktion listen() aufrufen, danach geht es.
Natürlich ging es nicht sofort, denn der Feinstaubsensor (SDS011) braucht nach dem listen()-Aufruf noch 1 Sekunde Ruhepause, d.h. ich erhalte einen Fehlercode. Eine Sekunde später liefert er dann Werte, das ist für mich OK.
Danke für die Anmerkungen.
Schönen Gruß
AugustQ