I2C GPS Daten empfangen

Hallo zusammen,

Ich möchte mit meinem Arduino Leonardo die Daten bzw. Koordinaten auswerten die mir mein IC2 GPS sendet.

Dafür verwende ich folgenden Code:

#include <Wire.h>

void setup()
{
  Wire.onReceive(receiveEvent);
  Wire.begin(32);
  delay(5000);
}

void loop() {  
    delay(50);
} 
  
void receiveEvent(int count) {
  byte ausgabe = Wire.read();
  Serial.println(ausgabe);
}

Leider kommt da rein garnichts.
Die Adresse stimmt aber, das habe ich mit dem I2C Scanner getestet.

Muss ich dem I2C GPS Modul erst etwas senden, damit es die Koordinaten ausgibt oder was mache ich da falsch?

Vielen Dank schonmal für alle Antworten
erfus

Hi,

also mit Wire.begin(32) verbindest du dich als Slave auf den Bus. Aber irgendwer muss der Master sein. Das GPS-Modul wird sich wahrscheinlich nicht als Master verbinden. Wenn du nur Wire.begin() verwendest, also ohne Parameter, dann bist du (dein Arduino) der Master.

Und dann musst du wahrscheinlich noch was an das Modul senden. Das es sich initialisieren soll und so weiter... Da musst du irgendwo eine Dokumentation finden. Da liegt auch das Problem bei den günstigen chinesischen Modulen... da habe ich mich neulich auch drüber geärgert. Was du an hier an Geld sparst, steckst du an Zeit für Recherchen locker wieder rein. Diese Erfahrung musste ich leider auch machen. Aber aus Fehlern lernt man :slight_smile:

Und dann solltest du darauf achten, dass einige Module mit 5V und andere mit 3,3V arbeiten. Da brauchst du evtl. einen Pegelconverter. Falls du einen brauchst, achte darauf, das irgendwo was von I2C-Sicher oder so ähnlich steht... Da habe ich am Wochenende auch mehrere Stunden verschwendet...

Ich hoffe, ich konnte dir helfen.

Viele Grüße,
Tobias.

Vielen Dank.
Ich hatte gedacht, dass der Slave nur lesen würde und der Master nur senden.
Aber das ist ja bei I2C nicht der Fall.

Das mit dem initialisieren ist ein guter Tipp, ich werde das mal suchen,
auch wenn es wahrscheinlich nicht so leicht zu finden wird :slight_smile:
Ich werde mich melden, sobald ich da was gefunden habe.

Ja, das ist mir schon aufgefallen. Mein GPS arbeitet mit 5V.

Danke, hat mir sehr geholfen!

erfus:
Ich hatte gedacht, dass der Slave nur lesen würde und der Master nur senden.

Der Slave kann auch Senden. Er kann das nur nicht unaufgefordert tun. Der Master kann mit requestFrom() auch Daten anfordern.