Multichannel datalogger with SD card?

Hey everyone..I'm relatively new to the arduino scene and I've hit another road block. The goal is to make a multichannel datalogger that writes the data in serial, which will come from more than one sensor interfaced with the arduino. As a result, the first hurdle is making the serial display the data properly and not in a confusing method. After that, I want the data to be written into a text file and saved onto an SD card that will also be interfaced with it. The libraries on the Arduino website don't go into enough detail as to the inner workings and most other examples i've seen simply incorporate libraries.. if anyone knows where i can find a working program, or even that will tell me the ins and outs of programming an SD card, then I'd greatly appreciate it. If there are anymore questions, I'll try to answer them to the best of my ability. Thanks in advance.

I don't mean to rain on your parade...

And I'd be the first to admit that I've personally re-invented many wheels over the years...

But for anyone who is reading this, and is mostly interested in acquiring a data logger with those capabilities, the $60 unit from Sparkfun is worth considering...

And for everyone else, a review of what they put into their design might be inspiring.

I came across it in the useful list from another interesting source of a data logger....

(Searching for the above, which I kenw I'd seen somewhere, I also came across....

.. which has some fun stuff, to! (Wildlife "camera trap"! Etc.)

This is what I’ve gone with: The DOSonCHIP uSD module.


  1. No need to waste chip-space with code for FAT, yet has full FAT support
  2. No need for separate Real Time Clock & SD circuits (OpenLog and uLog would still require a separate RTC for timestamps)
  3. Has ultra-low power battery-backup for the RTC (Logomatic doesn’t have a separate RTC as it’s on-chip; I think this means the chip needs power to run the RTC, so would need to have the chip powered all the time or you lose the clock between power-downs. Someone please let me know if I got that wrong!
  4. No need for separate interfaces (RTC and SD accessed through same SPI or UART interface)
  5. No need to learn another programming environment (Logomatic uses an ARM microcontroller) beyond the AVR/Arduino environment already using.
  6. Still quite low unit-cost at $45
  7. SDHC & FAT-32 support - just because :wink:

Sure I could have just got a Logomatic and reprogrammed it - I could have linked that to the display, controls, and loggable inputs, but I already have a Arduino, so…

Oh yeah, a link could help :wink:

Oh and to answer your other question about how to use these devices? has an excellent example using the Wire library (from the Wiring sister-project of Arduino) to talk I2C here.

The SPI example on the main Arduino site is dead-on. Here.

And there’s dozens of Serial comms examples around.

Has anyone successfully used this DOSOnChip module from Sparkfun with SPI?

I just get 0xff back from spi...

I've just implemented a design which logs several channels of data to a SD card.

You can easily use a SD card socket like this one:

I use this SDFat library:

If you use a 3V arduino you can interface directly to the SD card with no voltage level conversion. 4 wires and you're up and running.

This was very easy to implement and the sdfatlib is very well documented and works well.

Total cost - less than $5

Thanks, do you know if this works on the Mega that easily as well? How much space/processing power is needed on the board itself? I’m looking for something that does most of the work on a broken out board itself.

Anyone else ever used the DOSOnChip? I’m still trying to get it working over spi…

Phlogi: I’ll let you know if I get any issues with DOSOnChip via SPI… Been on holiday overseas for a month so haven’t gotten around to actually trying this :wink:

Should be this week.

has anyone ever setup something like this that would be available for viewing online? I have seen setups were people have web based data loggers but its live and would stop if the connection went down. I was trying to figure out a way to log the data locally and than sync to a webserver when the connection is available