Membuat Jam Akurat Berbasis Arduino dan RTC DS3231

img_20161207_012012

Assalamualaikum.
Salam Sejahtera Untuk Kita Semua Sobat …

Mungkin terpikirkan bagaimana sih cara bikin alarm ? Atau cara bikin sebuah project Arduino yang berbasis jam/timer ? Nah keren kan seumpama kita bisa bikin jam alarm berbasis mobile robot, atau alarm yang mampu menyemprot air saat berbunyi ? Hahaha pasti keren 😀 . Nah pada tutorial kali ini NP akan jelaskan cara membuat jam dengan waktu yang akurat menggunakan Arduino dan dibantu dengan RTC (Real Time Clock) tipe DS3231. Monggo disimak sob 😀 .

Komponen yang perlu kita persiapkan yakni :

  • 1 buah Arduino (bisa UNO, NANO, MEGA, dll, bisa didapat Di Sini
  • 1 buah RTC DS3231 (Bisa didapat Di Sini)
  • 1 buah LCD 16×2 (Bisa didapat Di Sini)
  • 1 buah potensiometer 10K
  • Software Arduino IDE (Jika belum punya, maka download Di Sini)
  • Library LiquidCrystal.h (Jika belum punya, bisa download Di Sini)
  • Library RTClib.h (Jika belum punya, maka download Di Sini) (http://adafruit.com/)
  • Dan cara menambah library Arduino bisa dibaca Di Sini

 

 

 

Lalu silahkan dirangkai sesuai dengan skema berikut ini :

rtc-ds3231-new_bb

Keterngan Rangkaian :

  • Bisa Menggunakan Segala Jenis Arduino (UNO, NANO, MEGA, MINI, dll), Tinggal cocokkan Saja Pin-Pin nya.

  • Kaki RS LCD ===> pin 2 Arduino

  • Kaki E LCD ===> pin 3 Arduino

  • Kaki D1 LCD ===> pin 4 Arduino

  • Kaki D2 LCD ===> pin 5 Arduino

  • Kaki D3 LCD ===> pin 6 Arduino

  • Kaki D4 LCD ===> pin 7 Arduino

  • Kaki RW LCD ===> GND (Ground)

  • Kaki VO LCD ===> Output Potensio

  • Kaki SDA RTC ===> pin A4 Arduino

  • Kaki SCL RTC ===> pin A5 Arduino

 

 

Lalu, silahkan upload program di bawah ini. Program awal ini untuk setting awal tanggal dan jam pada RTC. Bedakan dengan program selanjutnya ya sob.

/* ----- Membuat Jam Akurat dengan Arduino dan RTC ----- */
 /* ----------- Dibuat oleh : M. Nofgi Y.P.U.------------ */
 /* ----------- www.nofgipiston.wordpress.com ----------- */
 /* ----------- NF-308 SHOP, Arduino Workshop ----------- */
 /* ------- Ini Program Untuk Menentukan Waktu Awal------ */

//Pemanggilan library Wire, RTC, dan LCD
 #include<Wire.h>
 #include "RTClib.h"
 #include<LiquidCrystal.h>
 LiquidCrystal lcd(2, 3, 4, 5, 6, 7,);

RTC_DS3231 rtc;

//Inialisasi hari
 char dayOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};

void setup ()
 {
  Serial.begin(9600);
  lcd.begin(16, 2);

delay(10);

if (! rtc.begin())
  {
  Serial.println("RTC Tidak Tersedia");
  while (1);
  }

//Baris dibawah ini untuk setting waktu awal RTC
  //(tahun, bulan, tanggal, jam, menit, detik)
  rtc.adjust(DateTime(2016, 12, 7, 0, 44, 10));

lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Project Jam");
  lcd.setCursor(0, 1);
  lcd.print("Dengan RTC ...");
  delay(3000);
 }

void loop ()
 {
  //Menuliskan waktu yang terbaca pada RTC
  DateTime now = rtc.now();

//Menuliskan tanggal pada lcd
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Tgl : ");
  lcd.setCursor(6, 0);
  lcd.print(now.day());
  lcd.setCursor(8, 0);
  lcd.print("-");
  lcd.setCursor(9, 0);
  lcd.print(now.month());
  lcd.setCursor(11, 0);
  lcd.print("-");
  lcd.setCursor(12, 0);
  lcd.print(now.year());

//Menuliskan jam pada lcd
  lcd.setCursor(0, 1);
  lcd.print("Jam : ");
  lcd.setCursor(6, 1);
  lcd.print(now.hour());
  lcd.setCursor(8, 1);
  lcd.print(":");
  lcd.setCursor(9, 1);
  lcd.print(now.minute());
  lcd.setCursor(11, 1);
  lcd.print(":");
  lcd.setCursor(12, 1);
  lcd.print(now.second());

//Menuliskan tgl dan jam pada 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(dayOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

Serial.print(" since midnight 1/1/1970 = ");
  Serial.print(now.unixtime());
  Serial.print("s = ");
  Serial.print(now.unixtime() / 86400L);
  Serial.println("d");

//Kalkulasi waktu ke depannya
  DateTime future (now + TimeSpan(7, 12, 30, 6));

Serial.print(" now + 7d + 30s: ");
  Serial.print(future.year(), DEC);
  Serial.print('/');
  Serial.print(future.month(), DEC);
  Serial.print('/');
  Serial.print(future.day(), DEC);
  Serial.print(' ');
  Serial.print(future.hour(), DEC);
  Serial.print(':');
  Serial.print(future.minute(), DEC);
  Serial.print(':');
  Serial.print(future.second(), DEC);
  Serial.println();
  Serial.println();
  delay(100);
 }

 

 

Nah setelah jam dan tanggal awal sudah selesai disetting, sekarang silahkan upload program yang selanjutnya. Program ini untuk menampilkan tanggal beserta jamnya.

/* ----- Membuat Jam Akurat dengan Arduino dan RTC ----- */
 /* ----------- Dibuat oleh : M. Nofgi Y.P.U.------------ */
 /* ----------- www.nofgipiston.wordpress.com ----------- */
 /* ----------- NF-308 SHOP, Arduino Workshop ----------- */
 /* -- Ini Program Setelah Waktu Awal Sudah Ditentukan -- */

//Pemanggilan library Wire, RTC, dan LCD
 #include <Wire.h>
 #include "RTClib.h"
 #include <LiqyudCrystal.h>
 LiquidCrystal lcd(2, 3, 4, 5, 6, 7,);

RTC_DS3231 rtc;

//Inialisasi hari
 char dayOfTheWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};

void setup ()
 {
  Serial.begin(9600);
  lcd.begin(16, 2);

delay(10);

if (! rtc.begin())
  {
  Serial.println("RTC Tidak Tersedia");
  while (1);
  }

//rtc.adjust(DateTime(2016, 12, 7, 0, 27, 10)); //===>//Baris ini untuk set waktu awal RTC
  //Jadikan komentar saja jika waktu default awal sudah diset
  //Agar waktu tidak direset ke awal lagi

lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Project Jam");
  lcd.setCursor(0, 1);
  lcd.print("Dengan RTC ...");
  delay(3000);
 }

void loop ()
 {
  //Menuliskan waktu yang terbaca pada RTC
  DateTime now = rtc.now();

//Menuliskan tanggal pada lcd
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Tgl : ");
  lcd.setCursor(6, 0);
  lcd.print(now.day());
  lcd.setCursor(8, 0);
  lcd.print("-");
  lcd.setCursor(9, 0);
  lcd.print(now.month());
  lcd.setCursor(11, 0);
  lcd.print("-");
  lcd.setCursor(12, 0);
  lcd.print(now.year());

//Menuliskan jam pada lcd
  lcd.setCursor(0, 1);
  lcd.print("Jam : ");
  lcd.setCursor(6, 1);
  lcd.print(now.hour());
  lcd.setCursor(8, 1);
  lcd.print(":");
  lcd.setCursor(9, 1);
  lcd.print(now.minute());
  lcd.setCursor(11, 1);
  lcd.print(":");
  lcd.setCursor(12, 1);
  lcd.print(now.second());

//Menuliskan tgl dan jam pada 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(dayOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

Serial.print(" since midnight 1/1/1970 = ");
  Serial.print(now.unixtime());
  Serial.print("s = ");
  Serial.print(now.unixtime() / 86400L);
  Serial.println("d");

//Kalkulasi waktu ke depannya
  DateTime future (now + TimeSpan(7, 12, 30, 6));

Serial.print(" now + 7d + 30s: ");
  Serial.print(future.year(), DEC);
  Serial.print('/');
  Serial.print(future.month(), DEC);
  Serial.print('/');
  Serial.print(future.day(), DEC);
  Serial.print(' ');
  Serial.print(future.hour(), DEC);
  Serial.print(':');
  Serial.print(future.minute(), DEC);
  Serial.print(':');
  Serial.print(future.second(), DEC);
  Serial.println();
  Serial.println();
  delay(100);
 }

 

 

Nah untuk melihat hasil dari project ini silahkan lihat video demonstrasi NP pada channel Youtube di bawah ini 😀 :

 

 

Nah kerja jam ini akan tetap terus berjalan dan update walaupun kondisi Arduino telah dimatikan. Jadi meskipun Arduino telah mati, data waktu akan tersimpan pada RTC DS3231 nya. Jadi saat arduino dinyalakan lagi, maka waktunya akan terupdate.

Silahkan berkreasi tanpa batas😀 .

Silahkan dicoba ….. Silahkan berkomentar kalau masih kebingungan😀 .

Salam Teknologi …🙂 .

Wassalamualaikum.

*

*

*

*

*

********************

#Maaf jika ada kesalahan, ambil sisi positifnya saja.
#Barangkali anda mempunyai kabar/berita seputar otomotif/mekatronika/robotika/elektronika atau ingin mengiklankan suatu produk di blog ini, silahkan kontak saya.

Jual Arduino, Sensor, Modul, SHIELD, dan Berbagai Komponen Elektronika/Robotika murah meriah … Best Quality Product … !!! (Klik di sini)

Menerima jasa pembuatan Project atau alat berbasis Arduino, Elektronika, Robotika, Mekatronika, dan sejenisnya …

Bisa untuk keperluan hobi, tugas kuliah/sekolah, project industri/rumahan, dan sebagainya …

Silahkan kontak saya :

Facebook              : Nofgi Yugo Prasetyo
Fans Page on Facebook : Nofgi Piston Blog
E-Mail                : Nofgimotor@gmail.com
PIN BBM               : D2F100C2
Line                  : nofgi piston
Instagram             : nofgi_piston
Youtube               : NF-308
No. HP/WA             : 088217082017
Iklan

Tentang Nofgi

Suka berbagai hal yang berhubungan dengan otomotif ... Penggemar Motor Sport ... Suka menulis di dunia maya ...
Pos ini dipublikasikan di Arduino, Elektronik, Elektronika, Harley Davidson, Mekatronika, Robotika, Teknologi dan tag , , , , , , , . Tandai permalink.

14 Balasan ke Membuat Jam Akurat Berbasis Arduino dan RTC DS3231

  1. januri berkata:

    keren banget bisa ngoprek arduino, pingin beli tapi ga sempat mulu. semangat om ngopreknya ^_^

  2. Januri berkata:

    keren om bisa ngoprek arduino, pingin beli tapi ga sempat mulu. semangat ngoprek nya ^_^

  3. Aluvimoto berkata:

    Dari sma pengen buat sesuatu pake arduino ini. sampe skripsi juga udah berangan angan miliah milih mikrokontroller apa yang kudu dipake. nyesel dulu ga niat belajar beginian, sekarang pengen belajar ga ada waktunya 😦

  4. Mas ariyanto berkata:

    Ijin sedot boleh gk gan hehhe

  5. fauzi hp berkata:

    mantaps ulasanya masbro, selama ini cuma pake DS1307. kelebihannya pa mas dibanding DS1307?

  6. Ping balik: Jual Berbagai Komponen Untuk Project Robotika, Elektronika, dan Otomasi | Nofgi Piston

  7. Firman electro berkata:

    gan kalau ada error gini harus di apaiin
    sketch_jan10d:37: error: missing terminating ” character
    sketch_jan10d:51: error: missing terminating ” character
    sketch_jan10d:65: error: missing terminating ” character
    sketch_jan10d:95: error: missing terminating ” character
    sketch_jan10d:11: error: expected primary-expression before ‘)’ token
    sketch_jan10d.ino: In function ‘void setup()’:
    sketch_jan10d:38: error: expected `)’ before ‘;’ token
    sketch_jan10d.ino: In function ‘void loop()’:
    sketch_jan10d:52: error: expected `)’ before ‘;’ token
    sketch_jan10d:66: error: expected `)’ before ‘;’ token
    sketch_jan10d:96: error: expected `)’ before ‘;’ token

    tolng bantu gan?

  8. ada koding buat bikin alarm di ds3231 gak mas 😀

Komentar Anda Membuat Semangat Saya Membara ... :D

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s