CCS811 und 096Zoll Display "blockieren" sich

Hi
Ich nutze einen Nano, ein CCS811 CO2 Sensor angeschaltet über einen Logik-Konverter und ein 096 Zoll Display (AZ-Delivery 0.96" OLED Display).
Wenn ich den CCS811 alleine betreibe funktioniert er (Ausgabe am ser. Monitor), wenn ich das Display alleine betreibe funktioniert es auch.
Wenn ich im beigefügten Code in setup und loop alle Display relevanten Zeilen auskommentiere funktioniert die Ausgabe der Sensordaten am seriellen Monitor und wenn ich im Code alle Sensor relevanten Zeilen auskommentiere funktioniert die Anzeige am Display.
Wenn ich aber den Code komplett ausführe dann funktioniert zwar die Ausgabe der Sensordaten am ser. Monaten das Display bleibt aber dunkel.

Ich habe das auch schon mit einer anderen Codevorlage für das Display probiert, aber dasselbe Ergebnis.

Hat jemand einen Idee?

#include <Arduino.h>
#include <U8g2lib.h>
#include "Adafruit_CCS811.h" // Sensor Library
Adafruit_CCS811 ccs;

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
// Sensor
Serial.begin(9600);
  Serial.println("CCS811 test");
  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1)
      ;  // Warten, bis der Sensor bereit ist while(!ccs.available());
  }
//Display
  u8g2.begin();
}

void loop(void) {

//Sensor
  if (ccs.available()) {
    if (!ccs.readData()) {
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.println(ccs.getTVOC());
    } else {
      Serial.println("ERROR!");
      while (1)
        ;
    }
  }
//Display
  u8g2.setFont(u8g2_font_courB10_tf);
  u8g2.firstPage();
  do {
    u8g2.setCursor(0, 20);
    u8g2.print(F("CO2 "));
    u8g2.setCursor(0, 40);
    u8g2.print("Wert ....");
    u8g2.setCursor(0, 60);
    u8g2.print(F(" ppm"));
  } while ( u8g2.nextPage() );
  delay(1000);
}

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Habe deine Komponenten nicht, versuche das:

#include <Arduino.h>
#include <U8g2lib.h>
#include "Adafruit_CCS811.h" // Sensor Library
Adafruit_CCS811 ccs;

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  // Sensor
  Serial.begin(9600);
  Serial.println("CCS811 test");
  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1)
      ;  // Warten, bis der Sensor bereit ist while(!ccs.available());
  }
  //Display
  u8g2.begin();
}

void loop(void) {

  //Sensor
  if (ccs.available()) {
    if (!ccs.readData()) {
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.println(ccs.getTVOC());
    } else {
      Serial.println("ERROR!");
      while (1)
        ;
    }

    //Display
    u8g2.setFont(u8g2_font_courB10_tf);
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 20);
      u8g2.print(F("CO2 "));
      u8g2.setCursor(0, 40);
      u8g2.print("Wert ....");
      u8g2.setCursor(0, 60);
      u8g2.print(F(" ppm"));
    } while ( u8g2.nextPage() );
    delay(1000);
  }
}

Ich vermute mal das es daran liegen könnte. Der Nano arbeitet mit 5 V. Also muss die BUS-Spannung für den Sensor auf 3.3 Volt runter (Lt. Google).
Dem Display ist das egal. Das frisst 3.3 V - 5 Volt.

Am besten sagst du uns mal wo und WIE du den Level-Shifter eingebaut hast. Schaltplan wäre nett.

Link zu den Sensor den ich gefunden habe mit Prg-Code.
https://www.makershop.de/sensoren/gas/cjmcu-811-gas-sensor-i2c-kohlenstoff-monoxid-co-vocs-air-quality-arduino-ccs811/

Gruß

Pucki

Warum sollten sich blockieren?
Und gehe davon aus @mareinki hat ein Pegelwandler sonst wehre der Sensor schon defekt.

Richtig und dieser

wird es wohl auch sein. Sollte besser "Levelshifter" heißen.

Hallo fony!

Danke, aber bei deinem Code dasselbe Ergebnis: Display bleibt dunkel.

Meine Verschaltung ist wie folgt:
3,3V von Nano geht zu 3,3V am Sensor und Levelshifter
Ground vom Nano geht zum Ground vom Sensor, Levelshifter, Display
5V vom Nano geht zum Levelshifter und Display
A4 und A5 (SCL,SDA) vom Nano gehen zum Display und Levelshifter
Vom Levelshifter gehen die 2 Anschlüsse auf der 3,3v Seite zum Sensor und auf 5V Seit zum Nano

Da das Display nach auskommentieren der Sensor-relevanten Zeilen funktioniert, vermute ich dass die gemeinsame Ansteuerung am Bus (SCL,SDA) das Problem sein könnte.

Grüße
mareinki

Nimm doch mal einen I2C-Scanner und prüfe die Adressen auf dem Bus.

Und sorry, wie du alles verdrahtet hast, ist schwer zu verstehen.
Zeichne bitte ein Schaltbild auf Papier und fotografiere es und lad es dann hier hoch.
Dann sehen wir genau, wie du es verdrahtet hast.
Oder zeige ein gutes Foto deines Aufbaus. Da muss alles zu erkennen sein.

Mit welcher Spannung betreibst du den Nano und wo angeschlossen ?

Habe vorher geschaut CC811 hat 0x5A, OLED 0x3C oder 0x3D

Dann kommt da auch nix in die Quere. Also ein Schaltungsfehler, den wir so nicht sehen können. Dieser wird aber evtl. durch den Scanner "sichtbar".

Noch eine Idee verschiebe im Setup u8g2.begin(); ganz nach oben.

Das kann sein :wink:

Und aus dem Grund finde ich diese unverständlichen Schaltungsbeschreibungen mehr als schlecht. Wenn die dann noch von einem "Anfänger" kommen, noch schlechter, da man die absolut nicht versteht.

Hi

u8g2.begin(); ganz nach oben bringt keine Veränderung

Anbei meine Verdrahtung, die bei dieser Konstellation recht einfach ist, alles was 5V , was 3,3 V, was Ground ist und SCLS und SDA zusammen (ausgenommen Sensor wird über Shifter angeschlossen).

Und dass es an der Verdrahtung liegt wäre extrem unlogisch, denn wenn ich mit dem identischen physischen Aufbau je nach auskommentieren von Zeilen jeweils den Sensor oder das Display zum Laufen bringen und nur beim kompletten Sketch dann das Display nichts tut, ....

Grüße
Mareinki

Ist ok so wie das sehe, habe was gefunden nur mit LCD

somit müsste es Funktionieren mit dem OLED

Nochmal:
Hast du mal mit dem I2C-Scanner geprüft ?
Wie hast du welche Spannung am Nano angeschlossen ?
Ich vermute jetzt ein Problem mit der Versorgung.

Welchen Strom braucht der Sensor ?

Kann stimmen, den ein Nano hat nur wenige mA am 3,3V, nur dann sollte der CCS auch nicht Solo funktionieren, der OLED ist auch kein Stromfresser.

Zeige mall link zum deinem Sensor, mansche sind für 5V vorbereitet mit Level Shifter on Board

Es geht noch. Jedoch nicht mit NanoR3 und allen Was haben CHxxx als USB to Serial!!!

Da wir auch den Nano nicht kennen, bin ich mir nicht sicher.