Data logger shield
This data logger shield provides an Arduino Uno, Leonardo, or Mega with the ability to log sensor data to an SD card with the minimum of set-up. The shield provides several useful features:
Real-Time Clock Module
The shield includes the very popular DS1307 battery-backed real-time clock (RTC). This RTC will keep an accurate track of the date and time for up to several years, even when the shield isn't being powered.
SD Card reader
A standard SD card reader is provided to allow FAT16 or FAT32 formatted SD cards up to 32GB in size to be read or written to and is compatible with the standard SD card library. The shield also contains appropriate level shifting circuitry to protect the 3.3V interface of your SD card.
Prototyping area
A very useful prototyping area consisting of a grid of pads on a standard 0.1" pitch provides an area to add your own components such as sensors to interface to your Arduino board.
LED's L1 & L2
Two additional LEDs have been added which can be mapped to any of your Arduino's digital pins for use as visual indicators.
Standard Arduino headers.
The data logger shield has a standard set of Arduino headers allowing additional compatible shields to be stacked.
*RTC battery NOT included
The library is available Here.
Data logger shield sketch
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { while (!Serial); // for Leonardo/Micro/Zero Serial.begin(57600); if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } 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(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } } 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(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.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future DateTime future (now + TimeSpan(7,12,30,6)); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(3000); }