Go Down

Topic: Homemade stackable shield for DS1337+, DS1624 and AT24C1024B (RTC, temp & mem) (Read 7 times) previous topic - next topic


I'd like to share with you the completion of my first homemade Arduino shield. Without the valuable help of users of this forum, this project wouldn't be completed as fast.

The purpose of the project was to create a temperature data logger for the server room I run, using Arduino, and at the same time have an interface that was both efficient and ease to use.

The ICs used are:
RTC: Maxim DS1337+
TEMP: Maxim DS1624
EEPROM: Atmel AT24C1024B (1Mbit)

Everything runs on the I2C bus, which is connected to the UNO's pins A4 and A5.

The jumpers have the following functions:
Red jumper: enable/disables RW on the EEPROM chip.
Blue jumpers: enable/disables the interrupts from the DS1337+ in the Arduino's INT0 and INT1 pins. I did it this way because other shields may use the Arduino's pins 2 and 3.

To work with the DS1624, I modified the library from Federico and Riccardo Galli to add a few more options to it and also to enable R/W from/to the DS1624's built-in EEPROM (256 bytes). In the final project I'll be using this EEPROM to store settings (like LCD contrast, update interval, etc), while the Atmel 1Mbit EEPROM will be used to store the data being logged.

The LCD library is from Adafruit (NewLcdLibrary), and not the stock LCD library. The DS1337+ library is from Tim Gipson.

The PCD was designed using Diptrace, printed on cheap magazine paper using a laser printer and then transfered to the copper plane using an iron in its hottest setting for exacty 2'30". The copper was etched in iron perchlorate for 15 minutes.

Below are some photos of the project:

The video below shows how the shield will be ultimately used :

The sketch used in the video above and the modified DS1624 library are attached below. In the demo I am not using the EEPROM chip yet. Neverthless, the demo has a few nice thing such as:

- setting date and time in the DS1337+
- working with PROGMEM and char arrays
- working with custom chars and the LCD
- working with the DealExtreme LCD keypad
- using states for menus in the Arduino

I know there are several improvements to be made to this project (such as better routing, specially in the 2 INTx lines), and I am already planning a version 2 of this board which will feature:

- reset button
- power led (3mm)
- no jumper wires (there 2, green, on this board)
- thinner tracks
- top layer "silk" (also using thermal tonner transfer)

All your input are very welcome, so please leave them!
Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html


Nice work on the code and the shield!

The code has nice naming and I can follow most of it. A beginner might need more commenting but, a lot of it is understandable because of the naming.

Good work, thanks for sharing!



Arduino high rise building
How many floors next?

XD XD XD The sky is the limit, my friend! I could've added 2 more floors to that building: my IR leds shield and the keypad/lcd shield. I really like the compact footprint of the UNO.

Actually, one thing to note in that high stack of shields is that I changed the ICSP headers of the ethernet and USB host shields, so I can stack them together. I also made my shield's ICSP header stackable, even though it doesn't use any of those pins.

Too bad that doing that on a Mega is a bit expensive, because of the amount of stackable headers required.
Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html


Have I missed something but is the program code and DipTrace schematic & PCB posted somewhere.
Thanks for an inspiring project,

Go Up