Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

An Arduino interface to LadyAda's Data Logger Shield.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .gitignore
Octocat-spinner-32 DataShield.pde
Octocat-spinner-32 README.markdown
README.markdown

DataShield

DataShield is an Arduino-based interface to LadyAda's Data Logger Shield.

Description

HackPittsburgh has launched two high-altitude balloon projects.
One was successful, one was not. Our third launch is pending, and the payload is anticipated to include a number of sensors not previously flown. This will require high-capacity real-time data logging capabilities, as air-to-ground data communication has not yet been developed.

To address this requirement, LadyAda's Data Logging Shield will be attached to the flight computer (an Arduino). Sensors will be periodically read and a string-encoded representation of their data will be written to the Data Logging Shield's SD card file system. In addition, each logged entry will be associated with a timestamp generated by the Data Logging Shield's onboard real-time clock.

This software library provides an interface to the Data Logging Shield.

Previous balloon launch photos are available at the HackPittsburgh Flickr Pool. My favorites, plus my ground photos, are in My Flickr set.

Minimum Requirements

Follow the installation and build instructions at http://www.ladyada.net/make/logshield to ensure that the minimum requirements are met.

Usage

To use DataShield in your project, you must ensure that a few preprocessor definitions are accurate, and you must of course build and connect the shield The best place to see what is required is in Lady Ada's tutorial and the code itself. If you have any questions, email me.

Initialize the logging subsystem by calling the initLog function.

Write strings to the log by calling the logString function. It should be noted that this function does not immediately write log data to the SD card's filesystem. The logFlush function must be periodically called to do so. A good rule of thumb is to call this function approximately once per second. Don't log too much data between calls to logFlush or unsatisfactory performance may result.

When initializing the log subsystem, a new log file is always generated. The subsystem will look at the SD card's filesystem, searching for files named logXX.csv, where XX is a two-digit number between 00 and 99. If a file is found, the log subsystem will try the filename that is one increment above the existing file. This process will continue until a nonexistent file is found.

If there are already files named log00.csv through log99.csv present on the filesystem, the log subsystem will fail to open a log file. Subsequent calls to logString will do nothing. The current filename may be found by calling getLogFilename, but please be aware that if log file opening fails, this function will return a proper filename even though no logging is taking place.

Tests

DataShield has been marginally tested, and is completely unreviewed. The code compiles, and rudimentary tests for log integrity and filename generation have been performed, but the code should in no way be considered robust. I tried to be careful with the coding and design, I read the tutorials, and I tested code before checking it in. Nevertheless, I haven't actually tested this thing yet.

Improvements

  • Error-handling is not my favorite. I think it could be made to be more robust. I did pull out a fair chunk of error handling stuff in favor of fault-tolerance, but I think a happy medium could be found.
  • I think some functions could be refactored; the code that finds the next filename, for example, could be split out of the init code.
  • I feel as though the RTC functionality, the SD card functionality, and the file manipulation functionality all belong as isolated modules/classes.

Credits

I started with Lady Ada's Fridgelogger demo (http://github.com/adafruit/Light-and-Temp-logger), which is an excellent Data Logger Shield demo.

Ed Paradis (http://www.edparadis.com) built the Data Logger Shield I was using, and kicked off the actual code project by getting the thing running, examining and installing the dependencies, and being all-around helpful.

History

0.1

  • Initial release (lightly bench-tested with an Arduino Duemilanove and the Data Logging Shield)

License

The MIT License

Copyright (c) 2010 Jonathan Speicher

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Something went wrong with that request. Please try again.