Kitreview: SD Card RTC LogShield

Snootlab ist ein französiches Unternehmen in Toulouse und hat sich auf die Entwicklung von Opensource Hardware, speziell die Entwicklung von Arduino Shields, spezialisiert.

Freundlicherweise wurde mir von Snootlab ein Memoire Shield zum Test zur Verfügung gestellt. Das Memoire Shield ist eine Erweiterungsplatine mit integriertem SD Card Adapter, Uhrenbaustein und Prototypenfläche. Auf ein Arduino-Board aufgesteckt, eignet sich dieses Shield als Datenlogger und speichert Daten von Sensoren auf einer SD Speicherkarte.

SD Card RTC Shield

Das Shield wird als Bausatz geliefert und muss vom Anwender selbst zusammengelötet werden. Der Bausatz beinhaltet neben der Leiterplatte die Stifleisten und weiteren Bauteile für den Aufbau des Datenloggers. Der Adapter für die SD Card und ein Spannungsregler (auf der Unterseite der Leiterplatte) sind bereits auf der Leiterplatte aufgelötet.

SD Card RTC Shield

Der Aufbau der Leiterplatte ist dank der sehr detailierten Montageanleitung einfach. In der Anleitung wird jeder Schritt in Bildern erklärt. Der Aufbau kann durch diese ausführliche Anleitung auch von einem Einsteiger problemlos ausgeführt werden. Zusätzlich zur Montageanleitung in Französich und Englisch stehen im Downloadbereich der Produktseite weitere Daten wie Stromlaufplan und Bestückungsplan zur Verfügung. Fortgeschrittene Anwender können die Daten des Memoire-Shield als EAGLE-CAD downloaden und weiterverwenden.

Nach dem Bestücken und Prüfen der Leiterplatte kann die Litium-Batterie in den Batteriehalter gesteckt werden und die Platine ist bereit für die ersten Test.

SD Card RTC Shield

Die beiden zu prüfenden Hauptfunktionen sind die Uhrenschaltung mit dem DS1307 und die Speicherung der Daten auf der SD Card. Beide Funktionstests können mit separaten Arduino-Sketchen geprüft werden.

Für die Uhrenschaltung empfiehlt sich der Einsatz der RTClib von Adafruit. Diese Bibliothek eigenet sich hervorragend für Uhrenanwendungen da das Einstellen der Uhrzeit automatisiert wurde. Mit der Aktivierung der Anweisung RTC.adjust() wird die Uhrzeit aus der Compilierungszeit übernommen und gesetzt.

if (! RTC.isrunning())
{
 Serial.println("RTC is NOT running!");
 // following line sets the RTC to the date & time
 // this sketch was compiled
 RTC.adjust(DateTime(__DATE__, __TIME__));
}

Nach dem einmaligen Setzten der Uhrzeit kann die Uhreinstellung wieder deaktiviert werden. Die eingestellte Uhrzeit wird nun für mehrere Jahre durch die Lithium-Zelle auf dem Shield gespeichert.

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

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time
    // this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    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(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
}

Das Speichern von Daten auf einer SD Card, welche nicht im Lieferumfang enthalten ist, kann mit der Standard-Library SD von Arduino 1.0 erfolgen. Die elektrische Ansteuerung der Memorycard erfolgt dabei über die Standardport D10 bis D13. Falls man andere Portleitungen des Arduino-Boards verwenden möchte, kann man die Leiterbahnverbindungen an vorgesehen Stellen mit einem Messer oder Skalpell unterbrechen und nach eigenen Wünschen verdrahten.

Memoire Shield

Beide Schaltungselemente zusammen ergeben nun einen kleinen Datenlogger welcher Temperaturwerte oder andere Umweltdaten erfasst. Mein Datenlogger liest und speichert die Temperaturwerte von angeschlossenen 1-Wire-Sensoren vom Typ DS1820. Auf der freien Prototypenfläche werden die Stiftleisten für die externen Temperatursensoren aufgelötet sowie in Sensor für die interne Temperaturmessung montiert.

Memoire Shield - Internal and external 1-Wire Sensors

Ganz praktisch dabei ist saubere Beschriftung der einzelnen Ports und die Bereiche der Potentiale auf der Bestückungs-und Lötseite des Shields. So findet man ohne Messen die GND- und +5Volt-Signale.

Mein Datenlogger habe ich in eine dichte Frühstücksbox platziert. Ein kleiner Ausschnitt unter dem Deckel ist die Öffnung für das Kabel des angeschlossenen externen Temperatursensors. Der Datenlogger hat bereits in mehreren kalten Nächten die Temperatur gemessen und gespeichert.

Outdoor Datalogger Outdoor Datalogger

Fazit
Das Memoire-Shield von Snootlab ist eine sehr praktische und nützliche Erweiterung für Arduino-Anwendungen. Die Qualität und die saubere Beschriftung der Leiterplatte sowie die grosse Fläche für eigene Protoypenaufbauten sind Punkte die mir am Memoire Shield von Snootlab gefallen haben.


5 Responses to “Kitreview: SD Card RTC LogShield”  

  1. 1 Cetax

    Hallo,
    erstmal, Tolle Seite ! Gibt wirklich viel hier zu entdecken.
    Ich bin auch gerade dabei, einen TemperaturLogger zu bauen, für meine SolarAnlage.
    Und habe hier noch einpaar Probleme mit dem Code.
    Kannst du mir deinen zu Verfügungstellen?

    Vielen Dank und ich freue mich schon auf weitere tolle Projekte.

    *greatz*
    Cetax

  2. 2 arduino-praxis

    @Cetax

    Danke für deinen Feedback.

    Beim Aufbau eines Datenloggers wie im Beispiel empfehle ich jeweils die einzelnen Funktionen RTC und Datenlogger getrennt zu testen. Sobald die Uhrzeit gesetzt werden kann und Daten auf die SD Card geschrieben werden, können die beiden Teile zusammengepackt werden.

    Der Teil für die Uhr ist bereits publiziert und die Funktionen der SD-Card habe ich aus den Beispielen der SD-Card Library übernommen.

  3. 3 Alexander

    Es ist wichtig, den Integer Wert „chipSelect“ (so heißt er bei den examples der Standardlibrary; wird beim card.init benötigt) auf SS zu setzen. Ansonsten gibt es immer eine Fehlermeldung.

  4. 4 arduino-praxis

    @Alexander

    Bei den meisten SD Card Shields, so auch beim hier beschriebenen Memoire-Shield wird der Chip Select an Pin 10 angeschlossen.

    In den Standardbeispielen der SD Card Library wird dies im Kommentar erwähnt

    ...the hardware CS pin (10 on most Arduino boards,...
    

    Und somit muss im Code folgender Eintrag stehen

    const int chipSelect = 10;

    Besten Dank für den Hinweis. 🙂

  1. 1 Kitreview: Power ScrewShield at Arduino Praxis


Leave a Reply



Kategorien