ESP8266 Board mit RTC und SD-Modul

Hallo zusammen,
ich versuche auf demBoard ESP 8266 (NodeMCU) ein RTC- und SD-Modul zum laufen zu bringen.

Problem 1.
Die Zeit läuft wieder von Anfang an, wenn die Stromversorgung von dem Board unterbrochen wird.
Die Batterie habe ich bereits ersetzt.

Problem 2:
Die Beschreibung der SD-Karte.
Aufbau:
CS --> D8 (ist uber ein Widerstand 4,7K mit GND (Board) gebrückt (pull-down))
SCK -->D5
MOSI-->D7
MISO-->D6
VCC---> ext. Versorgung5V
GND-->ext. Versorgung 5V

Code:

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // nothing happens after setup
}

Ergebniss:

Vielen Dank

Bitte beachte, dass die ESPxxx mit 3.3V arbeiten. Evtl. kann die SD Karte das nicht...
ext.Gnd und Gnd des ESP sind doch sicherlich verbunden?

Das passt nicht zu Deinem Sketch.
Der sollte schon vollständig sein.

Hallo, ich teste die Elemente erstmal einzeln. Für RTC habe ich folgender Code verwendet. Es funktioniert auch, die Zeit wird geholt. Wenn ich aber das Board von dem Rechner trenne und verbinde es wider, fängt die Zeit von vorne

#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc; 

char daysOfTheWeek[7][12] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};

void setup () {
  while (!Serial); // for Leonardo/Micro/Zero

  Serial.begin(9600);
  if (! rtc.begin()) {
  Serial.println("Keine Echtzeituhr gefunden!");
  while (1);
  }

  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

}

void loop () {
  // mit dem Befehl wird die aktuelle Uhrzeit abgefragt und in now abgelegt
  DateTime now = rtc.now();

  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(" (");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

  Serial.println();
  delay(3000);
}

Die Zeile musst Du nach dem ersten Stellen der RTC wieder raus nehmen, sonst wird immer auf die Compilezeit gestellt.

Gruß Tommy

Ich habs geahnt.
@Tommy56 hat es beschrieben.
Nach dem ersten Aufspielen des Sketches, muss die Zeile vor dem nächsten aufspielen auskommentiert werden.

Sollte die Uhr danach wieder mit einer falschen Zeit starten, dann wäre eine Möglichkeit das die Batt nicht voll genug, das der Inhalt gestützt wird.

Hallo, das SD-Modul läuft über eine externe Stromquelle 5V. Wird hier dann ein Pegelwandler für die Kommunikation benötigt? Nein, die GNDs sind nicht verbunden. Verbinden??
Viel Grüße

Ja!

Mit nicht verbundenem GND (wegen Kabelbruch) habe ich schon ICs gebrutzelt.

Welches? Meines funktioniert mit 5 V und 3,3 V an zwei verschiedenen Pins.

Versorgung mit 5 V -> Pegelwandler ja
Versorgung mit 3,3 V -> Pegelwandler nein

Super, hat funktioniert! Danke

Die SD-Karten funktionieren mit 3,3V. Eeventuell macht die Adapterplatine mit der SD-Slot Probleme.
Grüße Uwe

Nach seiner Beschreibung hat er +5V verbunden...
k.A. ob dann ein 3,3V Pegel zuverlässig funktioniert.

Hallo zusammen,
ich habe beide Varianten ausprobiert 3V und 5V, und auch den GND verbunden. Laut der Beschreibung für das SD-Modul ist für 5V ausgelegt bzw. Für 3.3V nuss der Spannungsregler auf der SD-Platine überbrückt werden. Ich habe mich für den Pegelwandler entschieden. Wird nachbestellt und ausprobiert.

Ein anderes SD-Modul wurde ebenfalls ausprobiert.

Hallo, im Terminal wird mir eine Zeichenfolge ausgegeben. Kann mir jemand erklären woran es liegt?

VG

Stell mal Baud auf 74880

Da kommt eine Start Standart Ausgabe vom ESP.

Das scheint mir doch eher gruselig zu sein!

Und nein, für SD karten braucht mal keinen komplizierten Adapter an 3,3V

Es treten keine Veränderungen wenn ich die Baudrate anpasse.

Nach dem Reset?

Das SD-Modul war bereits vorhanden, wollte es nutzen. Ich habe bereits mehrere Versuche durchgeführt, auch den Spannungsregler überbrückt. Fröhlicher Weise habe ich fest gestellt das die Datei beschrieben wurde, ich weiß aber nicht mehr bei welcher Konstellation. Alles noch einmal durchprobieren.

Also ich habe es im Sketch angepasst... und hochgeladen? Korrekt?

gefunden, du meinst im Terminal. Hilft auch nicht.

es erscheint eine Fehlermeldung:Fehler beim Festlegen der Parameter für den seriellen Port: 74.880 N 8 1