GPS Modul in Mobiler Datenlogger für Feinstaub (LoRa)

gps

#1

Hi @PaulReichmuth,

In Deinem umfangreichen Projekt gibt es eine schönes Unterprogramm smartDelay das mir die Lösung für viele GPS-Module zu sein scheint. Im vollständigen Code taucht aber eine andere Version dieses UPG’s auf die vermuten läßt. dass das Modul über die serielle Schnitstelle angeschlossen ist:

‘’’ … gps.encode(Serial1.read());
‘’’
während es in der Übersicht heißt:
‘’’ …gps.encode(Wire.read());
‘’’
Ist das GPS-Modul nun am I2C-Port angeschlossen oder am UART?


#2

@altprog Ich hatte damals das Modul per UART angeschlossen, da diese Möglichkeit aus irgendwelchen Gründen besser funktionierte als I²C. Auf Bitte von Mario habe ich dann aber das Script komplett auf I²C umgeschrieben, und dabei wahrscheinlich vergessen, den smartDelay im Gesamtcode zu ändern. Werde das nachher mal eben fixen. Danke für die Info. Zur Frage: es geht sowohl als auch, aber der Einfachheit halber lieber I²C, wie oben im Projekt beschrieben


#3

Hab das jetzt mal als Pull-Request geschickt. Die Änderung sollte also demnächst drin sein.


#4

Hi @PaulReichmuth,

dank für die schnelle Antwort. Mir ist noch aufgefallen: im Definitionsteil des Programms steht:
‘’’ #include <TinyGPS++.h> ‘’’
etwas später heißt es:
‘’’ TinyGPSPlus gps; ‘’’
Woher weiß das Programm dass Tiny++ und TinyPlus zusammengehören?

Nochmals gibt es zwei GPS-Libraries GPS Und TinyGPS++ ?

Viele Grüße
Altprog


#5

Wenn ich das Programm kompiliere, kommt immer folgende Fehlermeldung:
‘’’
Arduino: 1.8.10 (Mac OS X), Board: “senseBox MCU, ON as Default”

WARNUNG: Bibliothek SDS011-select-serial behauptet auf esp8266, avr Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf samd Architektur(en) ausgeführt wird.
mobiler_Datenlogger:44:88: error: braces around scalar initializer for type ‘const u1_t {aka const unsigned char}’
static const u1_t PROGMEM APPEUI[8]={{ 0x43, 0xE0, 0x02, 0xD0, 0x7E, 0xD5, 0xB3, 0x70 }};//Hier muss die APPLICATION-EUI im lsb-Format eingetragen werden.
^
mobiler_Datenlogger:48:89: error: braces around scalar initializer for type ‘const u1_t {aka const unsigned char}’
static const u1_t PROGMEM DEVEUI[8]={{ 0x00, 0x20, 0x33, 0x17, 0x22, 0x04, 0x20, 0x20 }}; //Hier muss die DEVICE-EUI im lsb-Format eingetragen werden.
^
mobiler_Datenlogger:52:139: error: braces around scalar initializer for type ‘const u1_t {aka const unsigned char}’
static const u1_t PROGMEM APPKEY[16] ={{ 0x3F, 0xF1, 0x1A, 0x89, 0x55, 0x10, 0x4F, 0xA7, 0x8E, 0xE9, 0x06, 0xB8, 0x3B, 0x47, 0xE9, 0xE7 }};//Hier muss der APP-KEY im msb-Format eingetragen werden.
^
Mehrere Bibliotheken wurden für “SPI.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/arduino/hardware/samd/1.8.6/libraries/SPI
Mehrere Bibliotheken wurden für “Adafruit_SSD1306.h” gefunden
Benutzt: /Users/rolf/Documents/Arduino/libraries/Adafruit_SSD1306
Nicht benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/Adafruit_SSD1306
Mehrere Bibliotheken wurden für “Adafruit_HDC1000.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/Adafruit_HDC1000
Mehrere Bibliotheken wurden für “SDS011-select-serial.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/SDS011-select-serial
Mehrere Bibliotheken wurden für “lmic.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/LMIC
Nicht benutzt: /Users/rolf/Documents/Arduino/libraries/IBM_LMIC_framework
Mehrere Bibliotheken wurden für “senseBoxIO.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/senseBoxIO
Mehrere Bibliotheken wurden für “TinyGPS++.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/TinyGPSPlus
Mehrere Bibliotheken wurden für “Wire.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/arduino/hardware/samd/1.8.6/libraries/Wire
Mehrere Bibliotheken wurden für “Adafruit_GFX.h” gefunden
Benutzt: /Users/rolf/Documents/Arduino/libraries/Adafruit_GFX_Library
Nicht benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/Adafruit-GFX-Library
Mehrere Bibliotheken wurden für “LoraMessage.h” gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.3.2/libraries/LoraMessage
exit status 1
braces around scalar initializer for type ‘const u1_t {aka const unsigned char}’

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei -> Voreinstellungen aktiviert wäre.
‘’’


#6

Der Fehler scheint daran zu liegen, dass du die Werte in Doppelklammern hast, also static const u1_t PROGMEM APPKEY[16] ={{ 0x3F, 0xF1, 0x1A, 0x89, 0x55, 0x10, 0x4F, 0xA7, 0x8E, 0xE9, 0x06, 0xB8, 0x3B, 0x47, 0xE9, 0xE7 }}; Die geschweiften Klammern sollten nur einmal existieren. Zu deiner Frage mit TinyGPS, hier habe ich mich an die Vorgaben der Libary gehalten. Die Class TinyGPSPlus ist die Hauptinstanz der Libary TinyGPS++.h, deshalb wird diese hier referenziert. Und nein, es gibt im Code nur eine Libary, gps ist hier nur das Alias für TinyGPSPlus. Ich hoffe ich konnte dir weiterhelfen!


#7

Das mit der Library ist mir nun klar, danke.
Das mit den doppelten Klammern ist mir rätselhaft, denn ich habe nur den Text von der Projektseite kopiert. Wie dabei die Klammern sich verdoppeln ist mir schleierhaft. Aber ich werde die doppelten Klammern herausnehmen und dann weitersehen.


#8

Heureka, hat funktioniert. Nach dem ENtfernen der Klammern, läuft der Compiler durch!!


#9

Perfekt! Die doppelten Klammern sind wahrscheinlich ein “Geschenk” von TTN. Wenn man da die EUIs kopiert, werden Klammern hinzugefügt


#10

@PaulReichmuth

Genau das mit den Klammern kommt vom kopieren aus TTN.
Habe mit dem Aufbau begonnen. Dabei kam die Fehlermeldung “kein Device auf UART 1”. Nach dem Umstecken Auf UART 1 lief das Programm durch bis zur Satelittensuche. die ja im Innern problematisch ist.
Die Dokumentation dazu ist aber widersprüchlich, dort ist von UART 2 die Rede?


#11

Das ist noch ein weiteres Überbleibsel aus der Zeit, als der Code noch das GPS auf UART 1 erwartet hat. Ich war da wohl beim überarbeiten etwas schlampig und habe das im Gesamtcode übersehen.
Im Code unter setup müsste sich folgendes Statement befinden:

if(!Serial1.available()){ //Überprüfen, ob das GPS-Modul verbunden ist
      Serial.println("ERR404: DEVICE ON Serial1 NOT FOUND");
      display.println("NO MODULE CONNECTED!");
      display.display();
      while(true){
        delay(100);
      }
  }  

Dieses Statement solltest du löschen, danach müsste es funktionieren.
Zu der Frage, der Feinstaubsensor muss an UART 2, dort wird er ausgelesen. Hoffe das klappt jetzt mal endlich… scheint als müsste ich das Projekt nochmal ordentlich abarbeiten.


#12

@PaulReichmuth
im Gesamtcode ist das Statement immer noch vertreten
Gruß
Altprog


#13

@PaulReichmuth
kann es sein, dass ich der Betatester für dieses Projekt bin?
Jetzt möchte ich die Daten auch auf der senseMap sehen. Frage: welche Sensorwerte muss ich anmelden, in welcher Reihenfolge?
Gibt es außer dem Eintragen der TTN-Werte noch etwas zu beachten?


#14

Nein, eigentlich nicht. Und ja, du bist zumindest der erste der sich bei mir meldet :slight_smile: Schau nur das du die Sensor Ids in den Decoder auf TTN überträgst, sonst kommen die Daten nicht an. Die Reihenfolge der Sensoren ist egal, nur die ID´s müssen im Decoder stimmen, der Rest läuft über HTTP wie sonst auch