Problem mit D1 mini

Mehr
06 Feb 2020 15:03 #634 von jbaben
jbaben erstellte das Thema Problem mit D1 mini
Hallo,

wenn ich in dem beigefügten Sketch das OLED Display und den Sensor BME280 initialisiere, stürzt das Programm ab (TemperCould not find a valid BME280 sensor, check wiring!, wdt reset).

Initialisiere ich nur das Display --> Anzeige OK
Initialisiere ich nur den Sensor --> Anzeige OK
// Import required libraries
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include "SSD1306.h"  // siehe OLEDDisplay.h
#include "modified_font.h"               // modified_font.txt --> modified_font.h         

#define BME_SCK 0    // SCL GPIO0
#define BME_MISO 12
#define BME_MOSI 2   // SDA GPIO2
#define BME_CS 10

// OLED Display
#define SDA D6
#define SCL D5
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

SSD1306  display(0x3c, SDA, SCL);     

#define SEALEVELPRESSURE_HPA (1013.25)
unsigned long delayTime = 1000;

Adafruit_BME280 bme; // I2C: SCL = D1, SDA = D2
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

// Replace with your network credentials
const char* ssid = "ssid";
const char* password = "passwort";

void printValues(void);

 
void setup(){
  // Serial port for debugging purposes
  Serial.begin(115200);

  // Ini OLED Display
  display.init();
  display.flipScreenVertically();
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.setFont(ArialMT_Plain_16); // set a font
  display.clear();
  display.setColor(WHITE);


  // Initialize the sensor
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }


  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }

  // Print D1 Mini Local IP Address
  Serial.println(WiFi.localIP());
  
}
 
void loop(){
  printValues();
  delay(delayTime);
}

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  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();

  // Output OLED Display
    // clear display
    display.clear();
    // display temperature
    display.setFont(ArialMT_Plain_16); // set a font
    display.drawString(0,0, "Temperature: ");
    display.drawString(0,30, String(bme.readTemperature()));
    display.drawString(50, 30, "°C"); 
    display.display(); 

}

Woran kann das liegen ?

MfG

Juergen B.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
08 Feb 2020 09:02 #635 von Greenhouse
Problem mit D1 mini
Hallo Jürgen,

die Fehlemeldung kommt aus Deinem Code und wird nach dem Befehl "bme.begin" geworfen.

Wenn ich Deinen Code richtig verstehe, hängen Display und Sensor beide am I2C Bus.
Die BMx280 (BMP280 oder BME280) können über einen Anschlußpin (eventuell SD0) zwischen den Busadressen 0x76 und 0x77 umgeschaltet werden (Pin über Pulldown Widerstand mit GND verbinden).
Bei der Initialisierung der Verbindung kannst Du bei der Initialisierung der bme Variable mitgeben.
Für den ESP8266 gibt es einen Sketch mit dem Namen I2CBus-Scanner (Google ist Dein Freund).
Diesen Sketch auf den ESP8266 geflashed liefert er die Adressen der am I2C Bus angeschlossenen Devices.
Wenn die Verdrahtung stimmt, sollte der Temperatursensor dort auftauchen.

Für die Fehlersuche würde ich jeweils nur einen Teilnehmer anschließen (erst nur mit Display, dann nur mit Sensor).

Gruß
Greenhouse
Folgende Benutzer bedankten sich: jbaben

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Feb 2020 16:24 #636 von jbaben
Problem mit D1 mini
Hallo,
vielen Dank für die Hinweise.
Konnte das Problem lösen, und zwar so:
1. auch das OLED an den I2C-Bus (Anschluß D1, D2) angeschlossen
2. Sketch I2CBUS-Scanner lieferte die Adressen: 0x76 = Sensor BME280/BMP280, 0x3C = OLED
3. Sensor und OLED mit den entsprechenden Adressen initialisiert.
4. Fertig

MfG

Juergen B.
Folgende Benutzer bedankten sich: supportteam

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum