Beispielcode für DB6SW SD-Karten Shield DS1307 RTC

Der DB6SW SD-Karten Shield mit DS1307 Real-Time-Clock (RTC) bietet eine kostengünstige Plattform um Arduino Projekte um eine zuverlässige Zeitreferenz und einen nichtflüchtigen Speicher in Form einer SD-Karte zu ergänzen. Dieser Artikel zeigt anhand eines einfachen Biespielcodes, wie der Shield als Datenlogger eingesetzt werden kann.

Um die DS1307 RTC anzusprechen, bedarf es der Installation einiger Bibliotheken. Für unser Beispiel verwenden wir die TimeLib und DS1307RTC Bibliotheken. Beide können über den Bibliothekenmanager installiert werden.

WICHTIG: Vor dem Auslesen von Datum und Uhrzeit müssen beide natürlich erstmal korrekt eingestellt sein. Wurde der DS1307 nicht mit einem gültigen Wert beschrieben, so gibt dieser beim Auslesen eine Fehlermeldung aus. Es kann also fälschlicherweise der Eindruck entstehen, dass der Chip defekt ist. Die DS1307RTC Bibliothek enthält einen Beispielcode zum Einstellen der aktuellen Zeit.

Weiter ist es wichtig, dass die SD-Karte mit dem FAT16 oder FAT32 Dateisystem formatiert ist. Eine CR1220 Puffer-Batterie sorgt dafür, dass der DS1307 auch bei fehlender Versorgungsspannung die aktuelle Uhrzeit nicht vergisst.

DB6SW SD-Karten Shield mit eingesetzter CR1220 Batterie und FAT31-formatierter SD-Karte

DB6SW SD-Karten Shield mit eingesetzter CR1220 Batterie und FAT31-formatierter SD-Karte

Folgender Beispielcode kann als Startpunkt für erste Gehversuche mit dem Shield dienen. Die Werte der Analogeingänge A0, A1 und A2 werden hier zusammen mit der aktuellen Uhrzeit und Datum auf die SD-Karte geschrieben.

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

// Bibliotheken für die RTC einbinden
#include <TimeLib.h>
#include <DS1307RTC.h>

// Chip-Select PIN, Pin 10 für DB6SW Shield
const int chipSelect = 10;


void setup() {
 
  Serial.begin(9600);

  // Chip-Select PIN als Ausgang definieren
  pinMode(chipSelect, OUTPUT);

  // SD-Karte initialisieren und Ergebnis via serieller Schnittstelle ausgeben
  Serial.print("Initializing SD card...");
  if (!SD.begin(chipSelect)) {
  Serial.println("Card failed, or not present");
  }
}
 
void loop() {

  // Datei Demo.txt für Schreibzugriff öffnen
  File sdFile = SD.open("Demo.txt", FILE_WRITE);

  tmElements_t tm;

  if (RTC.read(tm)) {

    // Uhrzeit auf SD-Karte schreiben
    sdFile.print(tm.Hour);
    sdFile.print(':');
    sdFile.print(tm.Minute);
    sdFile.print(':');
    sdFile.print(tm.Second);
    sdFile.print(",");

    // Datum auf SD-Karte schreiben
    sdFile.print(tm.Day);
    sdFile.print('/');
    sdFile.print(tm.Month);
    sdFile.print('/');
    sdFile.print(tmYearToCalendar(tm.Year));
    sdFile.print(',');

    // Analogeingänge A0, A1 und A2 auslesen und Werte auf SD-Karte schreiben
    sdFile.print(analogRead(0));
    sdFile.print(',');
    sdFile.print(analogRead(1));
    sdFile.print(',');
    sdFile.print(analogRead(2));

    // Zeile abschließen
    sdFile.println();
  }
      
  // Datei schließen
  sdFile.close();
      
  }

Der Inhalt der Demo.txt nach einem Testlauf könnte beispielsweise wie folgt aussehen:

0:52:24,18/8/2019,244,243,239
0:52:24,18/8/2019,240,239,235
0:52:24,18/8/2019,243,243,238
0:52:24,18/8/2019,242,241,237
0:52:24,18/8/2019,240,239,235
0:52:24,18/8/2019,243,243,238
0:52:25,18/8/2019,240,239,235
0:52:25,18/8/2019,240,240,236
0:52:25,18/8/2019,241,240,236
0:52:25,18/8/2019,240,239,235
0:52:25,18/8/2019,243,242,238

[1] Funktechnik-Shop.de, DB6SW SD-Karten Shield mit DS1307 RTC: https://www.funktechnik-shop.de/p/db6sw-sd-karten-shield-fuer-arduino-mit-ds1307-real-rime-clock-rtc-datenlogger-shield

 

Diamex Prog-S2 | Arduino IDE

Der Diamex Prog-S2 ist ein universeller USB ISP Programmierer für diverse Mikrocontroller inklusive Atmel AVRs. Dieser Artikel zeigt, wie man den Diamex Prog-S2 bequem in die Arduino IDE einbindet.

Interessanterweise scheint es wenige Artikel im Internet zu geben, die sich mit dem Diamex Prog-S2 in der Arduino IDE beschäftigen. Die wenigen, die es gibt, sind entweder fehlerhaft oder veraltet.

Dabei ist es eigentlich ganz einfach den Programmieradapter in die Arduino IDE einzubinden. Man muss lediglich die folgenden Zeilen in die programmers.txt Datei im Arduino Stammverzeichnis hinzufügen:

diamexavr.name=DIAMEX-AVR
diamexavr.communication=serial
diamexavr.protocol=stk500v2
diamexavr.program.tool=avrdude
diamexavr.program.extra_params=-P{serial.port} -F

Nach dem Neustart der Arduino IDE sollte der Prog-S2 als „DIAMEX-AVR“ in der Liste der verfügbaren Programmieradapter auftauchen.

The Diamex Prog-S2 appears in the programmer list after updating the programmers file.

Der Diamex Prog-S2 taucht nach dem Hinzufügen eines entsprechenden Eintrages in der programmers.txt Datei in der Liste der verfügbaren Programmieradapter auf

Man darf aber keinesfalls vergessen, dass man neben dem richtigen Programmieradapter natürlich auch den richtigen COM-Port des Diamex Prog-S2 in der Arduino IDE einstellen muss. Beim Upload muss man zusätzlich beachten, dass man die „Hochladen mit Programmer“ Option anstatt der normalen „Upload“ Funktion verwendet. Wenn man dies alles beachtet hat, funktioniert der Prog-S2 ohne Probleme in der Arduino IDE.