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!
DS1624.zip (2.88 KB)
ClockTempShield.ino (9.85 KB)
I2C Shield.dch (51.5 KB)
i2c Shield v2.dip (43.3 KB)