In this tutorial, we will integrate Surilli GSM with DS3231 Real Time Clock Module and compute the real-time values of date, time, and year with the results shown on the serial monitor of Arduino IDE.
What Is the DS3231 RTC Module?DS3231 RTC Module is a low-cost real-time clock module that can contain hours, minutes, and seconds as well as days, minutes, and year information. Also, it has automatic compensation for leap-years and for months with fewer than 31 days. The module uses the I2C communication protocol.
The module can work on either 3.3 or 5V, which makes it suitable for many development platforms or microcontrollers. The battery input is 3V and a typical CR2032 3V battery can power the module and maintain the information for more than a year.
1. Surilli GSM
2. Arduino IDE
3. Connecting wires
4. Breadboard
5. DS3231 RTC Module
Connections:VCC PIN (DS3231 RTC Module) ---> USB PIN (Surilli GSM)
GND PIN (DS3231 RTC Module) ---> GND PIN (Surilli GSM)
SDA PIN (DS3231 RTC Module) ---> PIN 2 (Surilli GSM)
SCL PIN (DS3231 RTC Module) ---> PIN 3 (Surilli GSM)
There are also two other pins which are the 32K and SQW ones but we will not use them as we get the full functionality through the I2C interface.
Integrating RTC Library Into Arduino IDE:1. Download the RTC Library.
2. Go to Sketch ---> Include Library ---> Add.zip Library.
3. Select the downloaded zip file.
4. If the library is successfully installed, Arduino IDE will show "Library added to your libraries. Check include Library menu" on the status bar.
Set Up Arduino IDE for Surilli:Make sure you have selected the right port, board and processor for the Surilli as shown in the picture below and it is programmable (compile and upload “Blink” from File>Examples>Digital>Blink onto your Surilli to check if everything is working fine).
The CircuitryThe circuitry is very simple. It's mostly the programming. Follow the figure below to set up your hardware.
Now you have completed setting up your hardware and Arduino IDE. Copy and paste the Arduino sketch given below into your Arduino IDE and hit upload. The results can be viewed on the Serial Monitor.
Arduino Code:First, we include a necessary library for Real Time Clock. Then we create an array for a day of the week. In setup, the Serial Monitor is begun at 9600 Baud and Date and Time are set according to system time if the time of RTC is not set. In the loop, we fetch current date and time from Real Time Clock and it is displayed in the serial monitor. To reset Real Time Clock, remove all wires from Arduino and also battery from Real Time Clock for 10 seconds. Then reassemble the circuit and upload the program again.
#include <RTClib.h>
#include <Wire.h>
RTC_DS3231 rtc; //Make a RTC DS3231 object
//Set the names of days
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
Serial.begin(9600); //Begin the Serial at 9600 Baud
//Print the message if RTC is not available
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
//Setup of time if RTC lost power or time is not set
if (rtc.lostPower()) {
//Sets the code compilation time to RTC DS3231
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop () {
//Set now as RTC time
DateTime now = rtc.now();
//Print RTC time to Serial Monitor
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
delay(3000);
}
Play with the program to see how it reacts to different values and logic.
If you make something fun and interesting, do share it with our community.
That’s all for now. If you have any queries, visit surilli.io or contact our support. Stay connected with the Surilli family for more amazing stuff. :-)
Comments