Hi guys welcome to this tutorial. One of the most important thing everyone wants to keep track of daily is, time and with easy to use platforms like the arduino it is very easy to create your own timepiece and in the case of this tutorial add a temperature monitor to it.
For this tutorial, we will be creating a real time clock and temperature monitor using the simple and easy to use DS3231 module.
The DS3231 is a very low power RTC chip, it has the ability to keep time with incredible accuracy such that even after power has been disconnected from your product, it can run for years on a connected coin cell battery. This module has the ability to communicate via I2C or SPI but for this tutorial we will be using the I2C mode for communications between our arduino and the DS3231. The module also comes with a quite accurate temperature sensor which we will be using to get temperature readings. The collected temperature and clock data is then displayed on the 16×2 LCD via the Arduino.
The following components will be needed for this tutorial. They can be purchased via the links attached.
Connect all components as shown in the Fritzing schematics below, kindly note the LCD connection will not be needed if using the shield.
Since the DS3231 is going to communicate via I2C then its I2C pins will be connected to the arduino’s I2C (SDA and SCL) pins which on the mega are located on pin A0 and A1 or pin 20 (SDA) and 21 (SCL) of the arduino mega.
Next connection is between the LCD and the Arduino. If you are using the screen and keypad shield whose link is attached above, all you will just need to do is plug it in to your arduino as shown below.
If not then you can connect it as described in the schematics and illustrated below.
With the connections done, lets jump into writing the code.
The first thing we need to do is to download the arduino library for the ds3231 RTC. The library can be found here and is also attached at the end of this project. Rename the library to “RTC” and install it, by copying and pasting into the Arduino libraries folder.
Launch the Arduino IDE and copy in the Attached code.
To do a break down of the code, the first thing we do in the code is to include the libraries that carry some of the dependencies needed for our code to run. The Libraries include wire.h to enable I2C communication, Ds3231.h and rtc_ds3231.h to enable the RTC to work and the Liquidcrystal.h which makes it easy for us to work with the LCD.
//Written by Nick Koumaris
#include <Wire.h>#include "ds3231.h"#include "rtc_ds3231.h"#include <LiquidCrystal.h>
The next thing is to declare the LCD pins and move into the setup function
The code is a modified version of the example found in the arduino library. The first thing we will be doing with the code is setting the time of the ds3231. The time is set using this line under the setup section.