Anleitung: Datenlogger-Shield
mit SD-Karte und RTC auf dem Arduino UNO
Diese Anleitung beschreibt, wie man das Datenlogger-Shield mit SD-Karten-Slot und RTC von Christians Technikshop zusammen mit dem UNO R3 Entwicklerboard verwendet, um Zeitdaten zu erfassen und auf einer SD-Karte zu speichern.
Inhaltsverzeichnis
- Benötigte Komponenten
- Schritt 1: Shield aufstecken
- Schritt 2: SD-Karte vorbereiten
- Schritt 3: Benötigte Bibliotheken installieren
- Schritt 4: Beispielcode hochladen
- Hinweise
- Fehlerbehebung
- Weiterführende Links
Benötigte Komponenten
- UNO R3 Entwicklerboard für Arduino IDE (Christians Technikshop)
- Datenlogger-Modul Shield mit RTC und SD-Karten-Slot (Christians Technikshop)
- USB-Anschlusskabel Typ A zu B (Christians Technikshop)
- SD-Karte (FAT32 formatiert)
- Knopfzelle CR1220 für die RTC
- Arduino IDE (ab Version 1.8.x)
Schritt 1: Shield aufstecken
-
Stecke das Datenlogger-Shield auf das UNO R3 Entwicklerboard. Achte darauf, dass alle Pins korrekt verbunden sind.
-
Setze eine passende Knopfzelle (CR1220 oder CR2032) in die RTC-Halterung auf dem Shield ein.
Achten Sie darauf, dass die Polarität der Batterie korrekt ist. Eine falsche Polung kann die RTC beschädigen.
Schritt 2: SD-Karte vorbereiten
-
Formatiere die SD-Karte mit dem Dateisystem FAT16 oder FAT32.
-
Stecke die SD-Karte in den SD-Karten-Slot auf dem Shield.
Verwenden Sie eine SD-Karte mit maximal 32 GB Kapazität für beste Kompatibilität. Größere Karten können Probleme verursachen.
Schritt 3: Benötigte Bibliotheken installieren
Öffne die Arduino IDE und installiere folgende Bibliotheken über den Bibliotheksverwalter:
- SD – Standardmäßig in der Arduino IDE enthalten
- RTClib – Von Adafruit, zur Ansteuerung der RTC
Installation über den Bibliotheksverwalter:
- Gehen Sie zu Sketch > Bibliothek einbinden > Bibliotheken verwalten...
- Suchen Sie nach "RTClib"
- Installieren Sie die Bibliothek von Adafruit
- Die SD-Bibliothek ist bereits enthalten und muss nicht installiert werden
Schritt 4: Beispielcode hochladen
Beispiel: RTC-Zeit auslesen und auf SD-Karte speichern
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
const int chipSelect = 10;
void setup() {
Serial.begin(9600);
// RTC initialisieren
if (!rtc.begin()) {
Serial.println("RTC nicht gefunden!");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC läuft nicht. Setze aktuelle Zeit.");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// SD-Karte initialisieren
if (!SD.begin(chipSelect)) {
Serial.println("SD-Karte konnte nicht initialisiert werden!");
return;
}
Serial.println("SD-Karte erkannt.");
// Log-Datei öffnen und schreiben
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
DateTime now = rtc.now();
dataFile.print(now.timestamp());
dataFile.println(" -> Logeintrag");
dataFile.close();
Serial.println("Logeintrag geschrieben.");
} else {
Serial.println("Fehler beim Öffnen der Datei.");
}
}
void loop() {
// Leerlauf
}
Code-Erklärung:
RTC_DS1307 rtc;– Erstellt ein RTC-Objekt für den DS1307-ChipchipSelect = 10;– Definiert den Chip-Select-Pin für die SD-Karte (Standard bei Arduino UNO)rtc.begin()– Initialisiert die RTCrtc.adjust()– Setzt die RTC-Zeit (beim ersten Start auf Kompilierungszeit)SD.begin(chipSelect)– Initialisiert die SD-KarteSD.open()– Öffnet eine Datei auf der SD-Kartertc.now()– Liest die aktuelle Zeit von der RTC
Hinweise
- Achte darauf, dass die SD-Karte eingesteckt ist, bevor du das Programm startest
- Die RTC behält die Zeit auch bei Stromausfall, solange eine Batterie eingesetzt ist
- Beim ersten Start wird die RTC automatisch auf die Kompilierungszeit des Sketches gesetzt
Erweiterte Nutzung:
Sie können den Code erweitern, um kontinuierlich Daten zu loggen:
void loop() {
DateTime now = rtc.now();
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(now.timestamp());
dataFile.print(",");
dataFile.println(analogRead(A0)); // Beispiel: Analogwert loggen
dataFile.close();
}
delay(1000); // Alle Sekunde einen Eintrag
}
Fehlerbehebung
SD-Karte wird nicht erkannt
- ✅ Überprüfe die Formatierung (FAT16 oder FAT32)
- ✅ Prüfe die Steckverbindung der SD-Karte
- ✅ Überprüfe den Chip-Select-Pin (normalerweise Pin 10)
- ✅ Teste eine andere SD-Karte
- ✅ Stelle sicher, dass die SD-Karte nicht schreibgeschützt ist
RTC funktioniert nicht
- ✅ Stelle sicher, dass eine Batterie eingesetzt ist
- ✅ Überprüfe die Polung der Batterie
- ✅ Prüfe, ob die RTC im Code korrekt angesprochen wird
- ✅ Überprüfe die I2C-Verbindung (SDA/SCL)
Datei kann nicht geschrieben werden
- ✅ Stelle sicher, dass die SD-Karte nicht voll ist
- ✅ Prüfe, ob die Datei bereits geöffnet ist
- ✅ Überprüfe die Schreibrechte der SD-Karte
- ✅ Formatiere die SD-Karte neu (FAT32)