Minggu, 13 Juni 2021

ARDUINO - MEMBUAT JAM ALARM (RTC DS3231)


Dalam postingan kali ini akan dibahas bagaimana membuat jam alarm berbasis Arduino. Menyambung postingan sebelumnya bagaimana kita mekangses RTC dam menampilkan jam pada serial monitor.

Sebagai referensi waktu untuk jam alarm ini tentunya kita menggunakan RTC (RTC DS3231), dan sebagai penanda alarm kita menggunakan buzzer. 


Apa saja komponen / modul yang digunakan?
    
    - Arduino Board (UNO / NANO) 
    - RTC DS3231 
    - BUZZER 
    - Transistor BC547
    - Dioda 1N4007
    - Resistor 1K
    - Bread Board 
    - Kabel Jumper 


Sebelum melakukan proses pemrograman, silahkan membuat rangkaian seperti gambar berikut : 



Untuk membulai pemrograman, tentunya kita siapkan library Arduino yang berhubungan dengan program yang kita buat, berikut library yang digunakan : 
RTClib.h      (Download)
Easybuzzer.h  (Download)

Pastikan library tersebut sudah ter-Install pada software Arduino IDE, dan upload sketch program berikut:



#include "RTClib.h"
#include


RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

int Buzzer = 6;
int Tombol = 7;
int Alarm = 0;

//SET ALARAM(24 HOUR FORMAT):
const int Jam = 5;
const int Menit = 0;
const int Detik = 0;

unsigned long WaktuMillis = 0;

void setup() {
Serial.begin(9600);
rtc.begin();
EasyBuzzer.setPin(Buzzer);

pinMode (Tombol, INPUT);
digitalWrite (Tombol, LOW);

}

void loop() {

EasyBuzzer.update();
DateTime now = rtc.now();

if (millis() - WaktuMillis >= 1000){
WaktuMillis = millis();
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.print(now.second(), DEC);
Serial.println();
}

switch (Alarm){
case 0:
//
break;

case 1:
tone1();
delay(50);
tone2();
delay(50);
break;
 }

if (now.hour() == Jam && now.minute() == Menit && now.second()== Detik){
Alarm = 1;
Serial.println("ALARM ON!!");
 }

if(digitalRead(Tombol) == HIGH){
Alarm = 0;
 }

}



void tone1(){
EasyBuzzer.singleBeep(3000, 50);
delay(50);
EasyBuzzer.stopBeep();
}

void tone2(){
EasyBuzzer.singleBeep(5000, 50);
delay(50);
EasyBuzzer.stopBeep();
}



Untuk melakukan seting waktu alaram yang kita inginkan, silahkan ubah nilai pada baris program berikut:

                //SET TIME (24 HOUR FORMAT):
    const int Jam = 5;      << Ganti 5 dengan jam yang diinginkan
    const int Menit = 0;    << begitu juga dengan menit, dan
    const int Detik = 0;    << detik


Setelah mekakukan seting waktu alarm dan upload sketch program, silahkan buka serial monitor untuk menampilkan waktu dan informasi alarm jika alarm on.


Sekian....Semoga bermabfaat.





0 comments: