Skip to main content

Jam Real Time Berbasis Arduino PRO Mini dan RTC DS1307

Jam berbasis Real Arduino ini adalah jam digital untuk menampilkan waktu nyata menggunakan RTC IC DS1307 yang bekerja pada protokol I2C.

RTC (real time clock) tetap akan berjalan meski asupan tegangan mati.

credit img by circuitdigest.com

Rangkaian sederhana jam ini menggunakan LCD 16×2 untuk menampilkan format waktu (tahun, bulan, tanggaljam, menit, dan detik) juga dilengkapi dengan modul alarm.

Opsi Alarm juga ditambahkan dan kita dapat mengatur waktu alarm. Setelah waktu alarm disimpan di EEPROM internal Arduino, itu tetap disimpan bahkan setelah ulang atau kegagalan listrik. Jam biasanya digunakan di komputer, rumah, kantor, dan perangkat elektronik kami agar selalu diperbarui secara real time.

Protokol I2C adalah metode untuk menghubungkan dua atau lebih perangkat menggunakan dua kabel ke sistem tunggal, dan protokol ini juga disebut sebagai dua protokol kawat . Ini dapat digunakan untuk mengkomunikasikan 127 perangkat ke satu perangkat atau prosesor. Sebagian besar perangkat I2C menjalankan frekuensi on100Khz.

Diagram Sirkuit dan Deskripsi

Dalam rangkaian jam digital berbasis Arduino ini, kami telah menggunakan tiga komponen utama yaitu IC DS1307, Arduino Pro Mini Board, dan modul LCD 16×2.

Di sini arduino digunakan untuk membaca waktu dari ds1307 dan menampilkannya pada LCD 16×2. DS1307 mengirim waktu / tanggal menggunakan 2 baris ke arduino. Sebuah buzzer juga digunakan untuk indikasi alarm, yang berbunyi ketika alarm diaktifkan. Diagram blok ditunjukkan di bawah ini untuk memahami kerja Jam Waktu ini.

rangkaian blogk arduino

Seperti yang Anda lihat dalam diagram rangkaian, DS1307 chip pin SDA dan SCL terhubung ke pin arduino SDA dan SCL dengan menarik resistor yang memegang nilai standar TINGGI pada data dan garis jam.

Osilator kristal 32.768KHz terhubung dengan DS1307chip untuk menghasilkan penundaan 1 detik yang tepat, dan baterai 3 volt juga terhubung ke pin 3 rd (BAT) dari DS1307 yang menjaga waktu berjalan setelah kegagalan listrik.

16×2 LCD terhubung dengan Arduino dalam 4-bit mode. Kontrol pin RS, RW dan En secara langsung terhubung ke arduino pin 2, GND dan 3. Dan pin data D0-D7 terhubung ke 4, 5, 6, 7 dari Arduino. Sebuah buzzer terhubung dengan pin arduino nomor 13 melalui transistor NPN BC547 yang memiliki resistor 1k pada dasarnya.

Tiga tombol yaitu set, INC dan Berikutnya digunakan untuk mengatur alarm ke pin 12, 11 dan 10 dari Arduino dalam mode rendah aktif. Ketika kita menekan set, mode alarm set akan aktif dan sekarang kita perlu mengatur alarm dengan menggunakan tombol INC dan tombol Next digunakan untuk memindahkan ke digit.

Pengaturan breadboard lengkap jam real time ini dengan alarm ditunjukkan di bawah gambar. Anda juga dapat memeriksa tutorial rinci tentang jam alarm digital dengan mikrokontroler AVR.

Deskripsi Program

Untuk memprogram jam waktu secara real, kami telah menggunakan beberapa referensi untuk mengekstraksi waktu / tanggal dari DS1307 dan untuk ditampilkan pada LCD, yang diberikan di bawah ini:

Dan inisialisasi RTC, LCD dan output input dilakukan di loop setup.

Sisa dari hal-hal seperti waktu membaca, pengaturan alarm dilakukan di bagian loop void.

 

Kode

/ * —– Program C untuk Arduino berdasarkan Jam Alarm —- * /

#include
#include
#include
#include

LiquidCrystal lcd (3, 2, 4, 5, 6, 7);
RTC_DS1307 RTC;
int temp, inc, hours1, minut, add = 11;

int next = 10;
int INC = 11;
int set_mad = 12;

#define buzzer 13

int HOUR, MINUT, SECOND;

kekosongan setup ()
{
Wire.begin ();
RTC.begin ();
lcd.begin (16,2);
pinMode (INC, INPUT);
pinMode (next, INPUT);
pinMode (set_mad, INPUT);
pinMode (buzzer, OUTPUT);
digitalWrite (next, HIGH);
digitalWrite (set_mad, HIGH);
digitalWrite (INC, HIGH);

lcd.setCursor (0,0);
lcd.print (“Real Time Clock”);
lcd.setCursor (0,1);
lcd.print (“Circuit Digest”);
penundaan (2000);

if (! RTC.isrunning ())
{
RTC.adjust (DateTime (__ DATE __, __ TIME__));
}
}

void loop ()
{
int temp = 0, val = 1, temp4;
DateTime sekarang = RTC.now ();
if (digitalRead (set_mad) == 0) // setel waktu Alarm
{
lcd.setCursor (0,0);
lcd.print (“Set Alarm”);
penundaan (2000);
defualt ();
waktu();
penundaan (1000);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print (“Waktu alarm”);
lcd.setCursor (0,1);
lcd.print (“telah diatur”);
penundaan (2000);
}
lcd.clear ();
lcd.setCursor (0,0);
lcd.print (“Waktu:”);
lcd.setCursor (6,0);
lcd.print (HOUR = now.hour (), DEC);
lcd.print (“:”);
lcd.print (MINUT = now.minute (), DEC);
lcd.print (“:”);
lcd.print (SECOND = now.second (), DEC);
lcd.setCursor (0,1);
lcd.print (“Date:”);
lcd.print (now.day (), DEC);
lcd.print (“/”);
lcd.print (now.month (), DEC);
lcd.print (“/”);
lcd.print (now.year (), DEC);
pertandingan();
penundaan (200);
}

kekosongan defualt ()
{
lcd.setCursor (0,1);
lcd.print (JAM);
lcd.print (“:”);
lcd.print (MINUT);
lcd.print (“:”);
lcd.print (SECOND);
}

/ * Fungsi untuk mengatur waktu alarm dan waktu umpan ke Internal eeprom * /

void time ()
{
int temp = 1, minuts = 0, hours = 0, seconds = 0;
while (temp == 1)
{
if (digitalRead (INC) == 0)
{
HOUR ++;
if (HOUR == 24)
{
HOUR = 0;
}
while (digitalRead (INC) == 0);
}
lcd.clear ();
lcd.setCursor (0,0);
lcd.print (“Set Alarm Time”);
//lcd.print(x);
lcd.setCursor (0,1);
lcd.print (JAM);
lcd.print (“:”);
lcd.print (MINUT);
lcd.print (“:”);
lcd.print (SECOND);
penundaan (100);
if (digitalRead (next) == 0)
{
hours1 = HOUR;
EEPROM.write (tambahkan ++, jam1);
temp = 2;
while (digitalRead (next) == 0);
}
}

while (temp == 2)
{
if (digitalRead (INC) == 0)
{
MINUT ++;
if (MINUT == 60)
{MINUT = 0;}
sementara (digitalRead (INC) == 0);
}
// lcd.clear ();
lcd.setCursor (0,1);
lcd.print (JAM);
lcd.print (“:”);
lcd.print (MINUT);
lcd.print (“:”);
lcd.print (SECOND);
penundaan (100);
if (digitalRead (next) == 0)
{
minut = MINUT;
EEPROM.write (tambahkan ++, minut);
temp = 0;
while (digitalRead (next) == 0);
}
}
delay (1000);
}

/ * Fungsi untuk waktu pengobatan chack * /

kekosongan pertandingan ()
{
int tem [17];
untuk (int i = 11; i <17; i ++)
{
tem [i] = EEPROM.read (i);
}
if (HOUR == tem [11] && MINUT == tem [12])
{
beep ();
berbunyi();
berbunyi();
berbunyi();
lcd.clear ();
lcd.print (“Wake Up ……..”);
lcd.setCursor (0,1);
lcd.print (“Wake Up …….”);
berbunyi();
berbunyi();
berbunyi();
berbunyi();
}

}

/ * berfungsi untuk indikasi buzzer * /

void beep ()
{
digitalWrite (buzzer, HIGH);
penundaan (500);
digitalWrite (buzzer, LOW);
penundaan (500);
}

Video

Pustaka: https://circuitdigest.com/microcontroller-projects/arduino-alarm-clock

Comments

Popular posts from this blog

Jangan Salah Pilih Desainer Wajib Tahu: Rekomendasi Laptop Desain Grafis Tipis Dan Ringan Dengan Fitur Layar Touchscreen Untuk Mobilitas Tinggi

Caratekno - Memilih laptop untuk desain grafis bukan sekadar mencari perangkat dengan spesifikasi tinggi, tetapi menentukan alat kerja yang mampu mendukung kreativitas, produktivitas, dan kualitas hasil visual.  Setiap proyek desain memiliki kebutuhan yang berbeda, mulai dari membuat ilustrasi sederhana, mengedit foto beresolusi tinggi, hingga merancang animasi 3D dan video berkualitas profesional.  Oleh karena itu, memahami kebutuhan sebelum membeli laptop menjadi langkah penting agar investasi yang dilakukan benar-benar memberikan manfaat jangka panjang. Panduan ini dirancang untuk membantu Anda memahami faktor-faktor yang paling berpengaruh dalam memilih laptop desain grafis. Anda akan mempelajari bagaimana menentukan spesifikasi yang tepat sesuai jenis pekerjaan, mengenali kelebihan dan kekurangan berbagai platform, serta memahami komponen teknis yang berpengaruh terhadap performa dan akurasi warna.  Dengan pengetahuan tersebut, Anda dapat memilih perangkat yang tidak...

Cara Memilih VGA Card (GPU) Yang Tepat untuk Rendering 3D Desain Tanpa Lag

Caratekno - Bagi seorang desainer grafis yang mulai merambah ke dunia tiga dimensi atau 3D, memilih laptop bukan lagi sekadar melihat tampilan fisik yang elegan.  Di balik layar yang cemerlang, terdapat satu komponen paling krusial yang menentukan apakah pekerjaan Anda akan selesai lebih cepat atau justru berakhir dengan layar yang membeku dan aplikasi yang tertutup tiba-tiba. Komponen tersebut adalah Unit Pemroses Grafis atau yang lebih dikenal dengan sebutan GPU. Selama bertahun-tahun mengelola konten strategi produk digital, saya melihat banyak desainer pemula melakukan kesalahan fatal. Mereka terlalu fokus pada besaran RAM sistem atau kecepatan prosesor (CPU), namun mengabaikan spesifikasi detail dari GPU.  Padahal, dalam industri visual modern, beban kerja rendering telah berpindah secara masif dari CPU ke GPU. Inilah panduan mendalam untuk memastikan Anda tidak salah langkah dalam memilih kartu grafis. MEMAHAMI PERAN GPU DALAM EKOSISTEM 3D Sebelum masuk ke teknis, Anda h...

Merubah adaptor USB menjadi Lampu LED

Caratekno.com - Lampu led high power led kini semakin populer digunakan pada gedung-gedung kantoran, stadion, fasilitas umum dan rumah-rumah. Tidak ada salahnya apabila Anda ingin membuat sendiri lampu led hasil kreatifitas yang pencahayaannya tidak kalah juga dengan hasil buatan pabrik yang harganya variatif. Nah apabila di rumah banyak perkakas adaptor USB bekas dirumah dan adaptor/ charger bekas tidak terbakai sebaiknya dimanfaatkan saja? Jangan keburu dibuang ya.! Buat apaan?! Nanti adaptor-adaptor tersebut akan saya sulap menjadi sesuatu yang dapat menghemat anggaran listrik di rumah anda. Yuk siapkan bahan-bahannya: Charger bekas LED HPL Luxeon klik sini  Lampu TL bekas Lem bakar/ glue gun Heat sink alumunium Selanjutnya ikuti cara-cara pembuatannya, silahkan anda perhatikan gambar di bawah ini: Langkah 1: Persiapkan charger hp bekas, keluarkan PCB dari casingnya. Potong kabel Langkah 2: Setelah dipotong kabel dan dikeluarkan dari casing charg...