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 :
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
keren banget bisa ngoprek arduino, pingin beli tapi ga sempat mulu. semangat om ngopreknya ^_^
keren om bisa ngoprek arduino, pingin beli tapi ga sempat mulu. semangat ngoprek nya ^_^
Hehehe makasih sob, masih belajar juga 😀 .
Monggo bisa order Arduino di saya, ada diskon khusus hehe 😀 .
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 😦
Welleh nggak ada kata terlambat om, belajar sekarang juga masih bisa lho hehehe 😀 .
Ijin sedot boleh gk gan hehhe
Monggo monggo sob hehehe
mantaps ulasanya masbro, selama ini cuma pake DS1307. kelebihannya pa mas dibanding DS1307?
Kelebihan DS3231 ini ada penyimpan memori sperti eeprom plus ada sensor suhunya mas
Ping balik: Jual Berbagai Komponen Untuk Project Robotika, Elektronika, dan Otomasi | Nofgi Piston
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?
Cek comment programnya.
Coba browsing di google banyak jalan keluarnya.
ada koding buat bikin alarm di ds3231 gak mas 😀
Tinggal dimodifikasi saja
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);
maaf mas mau tanya, blok perintah diatas itu maksudnya gimana ya?
untuk setting waktu bila tak cocok gmn mas
selalu gagal tiap di upload,padahal pinnya sdh benar semua
gan, apakah bisa mengganti RTC ds1307 RTC ds3231 tanpa merubah coding? soalnya sy punya jadwal sholat digital msh pke RTC ds1307 jd kurang presisi…
thanks sblumnya….
kalau pakai i2c caranya sama gak ya gan?