BME280 wird nicht erkannt

Hallo,

ich will eine kleine Wetterstation mit dem BME280 und einem Arduino Uno bauen.
Ich nutze den BME280 von Adafruit (also den mit VIN, 3Vo, GND, SCK, SDO, SDI, CS).

Zum Testen hab ich das “Tutorial” von Adafruit genommen:

Ich habe ja die Möglichkeit, die Verbindung entweder mit SPI oder mit I2C zu machen. Bei mir funktioniert aber beides nicht.

Setup bei SPI:

VIN → 3.3V (5V funktioniert aber auch nicht)
GN → GND
SCK-> Digital Pin 13
SDO-> Digital Pin 12
SDI ->Digital Pin 11
CS → Digital Pin 10

Also alles genauso wie bei der Adafruit Seite vorgegeben.

Ausgabe:

BME280 test
Could not find a valid BME280 sensor, check wiring, address, sensor ID!
SensorID was: 0x0
ID of 0xFF probably means a bad address, a BMP 180 or BMP 085
ID of 0x56-0x58 represents a BMP 280,
ID of 0x60 represents a BME 280.
ID of 0x61 represents a BME 680.

(Code kommt später, keine Sorge)

Setup bei I2C:

VIN-> 3.3V (auch hier macht 5V keinen Unterschied)
GND->GND
SCK-> SCL
SDI-> SDA

Ausgabe:

BME280 test
Could not find a valid BME280 sensor, check wiring, address, sensor ID!
SensorID was: 0xFF
ID of 0xFF probably means a bad address, a BMP 180 or BMP 085
ID of 0x56-0x58 represents a BMP 280,
ID of 0x60 represents a BME 280.
ID of 0x61 represents a BME 680.

Den Code habe ich auch direkt von der Adafruit Seite, da sollte also eig. nichts falsch sein denke ich.

Code:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

//#define BME_SCK 13
//#define BME_MISO 12
//#define BME_MOSI 11
//#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
  Serial.begin(9600);
  while(!Serial);    // time to get serial running
  Serial.println(F("BME280 test"));

  unsigned status;
  
  // default settings
  status = bme.begin();  
  // You can also pass in a Wire library object like &Wire2
  // status = bme.begin(0x76, &Wire2)
  if (!status) {
      Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
      Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
      Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
      Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
      Serial.print("        ID of 0x60 represents a BME 280.\n");
      Serial.print("        ID of 0x61 represents a BME 680.\n");
      while (1) delay(10);
  }
  
  Serial.println("-- Default Test --");
  delayTime = 1000;

  Serial.println();
}


void loop() { 
  printValues();
  delay(delayTime);
}


void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");

  Serial.print("Pressure = ");

  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

Je nachdem ob I2C oder SPI sind halt diese Define-Sachen auskommentiert. Genauso ist es bei den 3 Definitionen darunter, hab also alles so gemacht wie auf der Seite erklärt.

Meine einzige Idee wäre jetzt, dass der Sensor nicht funktioniert. Die Kabel habe ich auch schon ausgetauscht.

(deleted)

Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [code] davor und [/code] dahinter ohne *.

Damit wird dieser für alle besser lesbar.

Und poste bitte einen Hyperlink (zum Anklicken) deines verwendeten Sensors.

Peter-CAD-HST:
Moin derkandesbunzler,

mit dem i2c_scanner aus dem IDE das BME280 I²C Interface prüfen.

Viel Erfolg
Gruß Peter
und gesund bleiben

Kannst du das bitte in “Laiensprache” formulieren? :wink: Wo finde ich diesen Scanner und wie funktioniert er?

HotSystems:
Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [code] davor und [/code] dahinter ohne *.

Damit wird dieser für alle besser lesbar.

Und poste bitte einen Hyperlink (zum Anklicken) deines verwendeten Sensors.

Wurde gemacht, hoffe das passt jetzt (Ich nutze dieses Forum zum ersten mal, die Funktion mit dem Code kannte ich nicht)

(deleted)

Peter-CAD-HST:
Moin

Na klar.
Der/die/das IDE ist die Programmierumgebung. Unter dem Tab Datei findest du den Eintrag Beispiele. Und dort solltest du den I²C Scanner finden.

Viel Erfolg
Gruss Peter
und gesund bleiben

Ah danke, habs gefunden.

Es kommt "No I2C devices found". Sieht nicht gut aus würde ich sagen.

(deleted)

Und in Post #2 hatte ich geschrieben:

Und poste bitte einen Hyperlink (zum Anklicken) deines verwendeten Sensors.

HotSystems:
Und in Post #2 hatte ich geschrieben:

Ups, den hatte ich eigentlich beim ersten editieren dabei, dann hat aber was beim Code nicht geklappt und ich habs neu gemacht. Da ging der Link wohl wieder verloren.

Peter-CAD-HST:
Moin derkandesbunzler

Schicke ein Bild, damit wir die Verdrahtung überprüfen können.
Der BME280 ist normalerwiese sehr "pflegeleicht" :slight_smile:
Gruss Peter
und gesund bleiben

IMG-0156 — ImgBB Bitteschön!

(deleted)

Auf der Webseite des Herstellers ist doch alles wunderbar beschrieben.
Da braucht es keine anderen Tutorials. Zumal es da andere Boards mit anderen Spannungen sind.

Nimm bitte das original Tutorial.

derkandesbunzler:
IMG-0156 — ImgBB Bitteschön!

Packe dein Foto bitte direkt ins Forum.
Auf fremden Servern geht das Foto verloren und der Zusammenhang hier im Forum ist futsch.

Hast du die Stiftleiste von deinem Sensor gelötet oder nur gesteckt ?

Wenn gesteckt dann funktioniert das nicht.
Da wirst du immer Fehler bekommen.
Die musst du vorher an der Platine festlöten.

HotSystems:
Pache dein Foto bitte direkt ins Forum.
Auf fremden Servern geht das Foto verloren und der Zusammenhang hier im Forum ist futsch.

Hast du die Stiftleiste von deinem Sensor gelötet oder nur gesteckt ?

Wenn gesteckt dann funktioniert das nicht.
Da wirst du immer Fehler bekommen.
Die musst du vorher an der Platine festlöten.

Dieses direkt ins Forum stellen funktioniert nicht. Wenn ich es als Attchament hinzufügen will, bekomme ich eine Fehlermeldung.

Ok, das es gelötet sein muss wusste ich nicht. solange nichts funktioniert wollte ich nicht löten. Das mache ich jetzt aber gleich. Wenns das wirklich ist, danke schonmal dadrauf wäre ich im Leben nicht gekommen.

derkandesbunzler:
Dieses direkt ins Forum stellen funktioniert nicht. Wenn ich es als Attchament hinzufügen will, bekomme ich eine Fehlermeldung.

Ok, das es gelötet sein muss wusste ich nicht. solange nichts funktioniert wollte ich nicht löten. Das mache ich jetzt aber gleich. Wenns das wirklich ist, danke schonmal dadrauf wäre ich im Leben nicht gekommen.

Welche Fehlermeldung ?

Und du musst die kurzen Stifte anlöten.

(deleted)

Peter-CAD-HST:
och, nöööö

Ich kann es mir wirklich nicht erklären, wie mein Kopf denken konnte, das funktioniert ohne Löten. Macht halt einfach 0 Sinn. Das “gute” ist aber, dass der Beitrag doch nicht komplett unnötig ist. Der I2C Scan gibt jetzt an, dass der Sensor gefunden wird. Die Ausgaben beim Wettercode bleiben aber die gleichen, also immer noch:
BME280 test
Could not find a valid BME280 sensor, check wiring, address, sensor ID!
SensorID was: 0xFF
ID of 0xFF probably means a bad address, a BMP 180 or BMP 085
ID of 0x56-0x58 represents a BMP 280,
ID of 0x60 represents a BME 280.
ID of 0x61 represents a BME 680.

derkandesbunzler:
Die Ausgaben beim Wettercode bleiben aber die gleichen, also immer noch:

Dann lies dir doch mal das Tutorial vom Hersteller durch.

(deleted)

Hier im Anhang sollte ein Bild sein!

The message has the following error or errors that must be corrected before continuing:
1
Warning - while you were typing a new reply has been posted. You may wish to review your post.

There was a problem during the uploading of IMG_0156.jpg.
Your post has been made, however the above attachment was not attached. Please use the Back button to edit your post and submit any required changes.
Due to an error, your attachment could not be uploaded. Please contact the forum administrator if this problem continues.

HotSystems:
Dann lies dir doch mal das Tutorial vom Hersteller durch.

Das Tutorial, das du meinst müsste doch genau das sein, dass ich nutze.Siehe Link von meinem ersten Post) Oder hat Bosch selbst auch eins, das ich gerade übersehe?

Peter-CAD-HST:
Moin
ich hab mal schnell in meinen BME280 mit I²C Sketch geschaut:

if (!bme.begin(0x76)) {

Serial.println(F("Could not find a valid BME280 sensor, check wiring!"));



Gruss Peter 
und gesund bleiben

Alles klar, Fehler wurde gefunden. Jetzt funktionierts. Ich hab SDO und Gnd nicht verbunden gehabt, weil mein Kumpel der behauptete sich damit auszukennen, gesagt hat: 0x76 oder 0x77 macht keinen Unterschied. Nachdem ich bei deinem Code explizit 0x76 gesehen habe, habe ich es doch ausprobiert und siehe da, es funktioniert. Im Endeffekt wohl 2 sehr leicht vermeidbare Fehler, mich würde aber der theoretische Hintergrund noch interessieren, warum 0x77 nicht funktioniert.