Jam Digital dan alarm dengan RTC berbasis AtMega8535

  

LAPORAN

LABORATORIUM MIKROKONTROLLER 1

 

JAM DIGITAL DAN ALARM DENGAN RTC BERBASIS AT MEGA 8535

 


Dosen Pengampu:

Dr. Samuel Beta K. K., Ing.Tech., M.T.

 

Disusun Oleh:

KELOMPOK 2

 Aditomo Wibowo Mukti       RE-2B           (4.34.22.1.02)
 Maulida Muthmainah           RE-2B           (4.34.22.1.13)
 Muhammad Rafi                   RE-2B           (4.34.22.1.16)

 

 

PROGRAM STUDI TEKNOLOGI REKAYASA ELEKTRONIKA

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI SEMARANG

2023

 

 

BAB 1
PENDAHULUAN

 

1.1.           Latar Belakang

Di era modern ini jam digital dengan alarm bisa membantu menyeselaikan banyak masalah bisa jadi pengingat kegiatan apabila kita mudah lupa akan sesuatu bisa juga. Alat ini juga berfungsi dengan sangat baik untuk pengingat waktu dalam ujian karena terkadang karena fokus mengerjakan sehingga lupa waktu segera berakhir

1.2. Rumusan Masalah

Berdasarkan uraian di atas, beberapa rumusan masalah yang harus diperhatikan, yaitu:

1. Bagaimana waktu yang ditampilkan bisa sesuai dengan masa kini?

2. Bagaimana cara menseting alarm sebagai pesan pengingat?

1.3. Solusi

Berdasarkan masalahan di atas kita dapat membuat program untuk menampilkan waktu yang akurat dengan bantuan RealTimeClock untuk mengakses waktu terkini

Kita juga bisa mengatur waktu alarm dan menyesuaikan pesan yang akan dimunculkan didalam program sesuai kebutuhan kita

 

 

BAB 2

LANDASAN TEORI

 

2.1. Mikrokontroller Atmega8535

Gambar 2.1

Mikrokontroler adalah keseluruhan sistem komputer yang dikemas dalam sebuah chip yang mencakup mikroprosesor, I/O, memori, dan bahkan ADC. Mikrokontroler AVR (prosesor Risc Alfi dan Vegard) memiliki arsitektur 8-bit dimana seluruh instruksi dikemas ke dalam kode 16-bit dan sebagian besar instruksi dieksekusi dalam 1 siklus clock atau dikenal dengan teknologi RISC (Reduksi Instruksi Set Computing). Secara umum AVR dapat dikelompokkan menjadi empat kategori yaitu keluarga AT90Sxx, keluarga ATMega dan kategori AT86RFxx. Pada dasarnya berbeda dalam hal kapasitas memori, periferal dan fungsinya, sedangkan dari segi arsitektur dan instruksi yang digunakan dapat dikatakan hampir sama. pinnya dapat digambarkan sebagai berikut:

 

1.         VCC Input sumber tegangan (+)

2.         GND Ground (-)

3.         Port A (PA7 … PA0) berfungsi sebagai input analog dari ADC (Analog to Digital Converter). Port ini juga berfungsi sebagai port I/O dua arah jika ADC tidak digunakan.

4.         Port B (PB7 … PB0) berfungsi sebagai port I/O dua arah. Port PB5, PB6 dan PB7 juga berfungsi sebagai MOSI, MISO dan SCK yang dipergunakan pada proses downloading.

5.         Port C (PC7 … PC0) berfungsi sebagai port I/O dua arah.

6.         Port D (PD7 … PD0) Berfungsi sebagai port I/O dua arah. Port PD0 dan PD1 juga berfungsi sebagai RXD dan TXD, yang dipergunakan untuk komunikasi serial.

7.         RESET input reset.

8.         XTAL1 input ke amplifier inverting osilator dan input ke sirkuit clock internal.

9.         XTAL2 output dari amplifier inverting osilator.

10.       AVCC input tegangan untuk Port A dan ADC.

11.       AREF tegangan referensi untuk ADC. 11.     AREF tegangan referensi untuk ADC. Arsitektur Atmega8535Dari diagram blok di atas terlihat bahwa ATMega8535 memiliki bagian-bagian sebagai berikut:D

1.       Saluran I/O sebanyak 32 buah, yaitu Port A,Port B,Port C dan Port D.

2.       ADC 8 channel 10 bit.

3.       Tiga buah Timer/Counter dengan kemampuan pembanding.

4.       CPU yang terdiri atas 32 buah register.

5.       Watchdog timer dengan osilator internal.

6.       SRAM sebesar 512 byte.

7.       Memori Flash sebesar 8 KB dengan kemampuan Read While Write.

8.       Interrupt internal dan eksternal.

9.       Port antarmuka SPI (Serial Peripheral Interface).

10.     EEPROM sebesar 512 byte yang dapat diprogram saat operasi.

11.     Antarmuka komparator analog.

12.     Port USART untuk komunikasi serial.

2.2. RTC Ds 1307

RTC atau Real-Time Clock adalah modul yang digunakan untuk mengukur waktu dan tanggal secara real-time. RTC digunakan dalam berbagai aplikasi seperti jam digital, sistem alarm, pemantauan energi, dan lain-lain. Salah satu RTC yang populer adalah RTC DS1307.

RTC DS1307 module adalah chip RTC yang memungkinkan penggunaannya dalam berbagai aplikasi yang memerlukan pengukuran waktu dan tanggal secara real-time. RTC DS1307 memiliki fitur-fitur seperti deteksi daya rendah, konsumsi daya rendah, dan memori SRAM 56-byte yang dapat diakses oleh mikrokontroler.

                                                                                  

Gambar 2.2

                                                     

2.3. Buzzer

Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Pada dasarnya prinsip kerja buzzer hampir sama dengan loud speaker, jadi buzzer juga terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tersebut dialiri arus sehingga menjadi elektromagnet, kumparan tadi akan tertarik ke dalam atau keluar, tergantung dari arah arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm).


Gambar 2.3 Buzzer

 

BAB 3

PEMBAHASAN

 

3.1. Perancangan Sistem

Berikut beberapa perancangan sistem yang digunakan dalam mendukung proses pembuatan jam digital dengan alarm berbasis Atmega8535

3.1.1. Alat dan Komponen

Alat dan komponen yang kami gunakan dalam merancang alat ini, adalah:

- Mikrokontroller Atmega8535

Buzzer

- RTC

Catu daya

Jumper

3.1.2. Diagram Balok Jam Digital dan Alarm dengan RTC

 


Gambar 3.1 Diagran Balok


Input yang digunakan
untuk mendapatkan waktu adalah RTC ds1307 dengan mikrokontroller Atmega8535 dan output berupa buzzer sebagai alarm untuk menandakan ada kegiatan

3.1.3. Flowchart Jam Digital dan Alarm dengan RTC

                        


Gambar 3.2 Diagran Alir

 

Waktu diambil menggunakan Real time clock untuk mengambil waktu masa kini sehingga sesuai dan alarm akan berbunyi sesuai input yang dimasukan dengan buzzer sebagai penanda

Berikut merupakan keseluruhan rangkaian Jam Digital dengan Alarm berbasis Atmega8535.


Gambar 3.3 Rangkaian Jam Digital dan alarm dengan RTC melalui Software Proteus

 

3.2. Program

Berikut merupakan program Jam Digital dan Alarm dengan RTC

#include <mega8535.h>

#include <delay.h>

#include <alcd.h>

#include <i2c.h>

#include <ds1307.h>

 

// Function prototypes

void intToChar(int value, char *str);

 

void main(void) {

    // Variable declarations

    char str_jam[3];

    char str_menit[3];

    char str_detik[3];

unsigned char displayMessage1 = 0; // menampilkan pesan ke1

unsigned char messageStartTime1 = 0; // mengatur waktu pesan

unsigned char displayMessage2 = 0; // menampilkan pesan ke2

unsigned char messageStartTime2 = 0; // mengatur waktu pesan

unsigned char displayMessage3 = 0; // menampilkan pesan ke3

unsigned char messageStartTime3 = 0; // mengatur waktu pesan

 

    lcd_init(16);

    lcd_clear();

    i2c_init(); // initialize I2C communication

    rtc_init(); // initialize DS1307 RTC

 

 

    // Set buzzer pin as output

    DDRB = 0xFF;

    PORTB = 0x00;

 

    while (1) {

        // Read time from DS1307 RTC

        unsigned char rtc_hours = ds1307_get_hours();

        unsigned char rtc_minutes = ds1307_get_minutes();

        unsigned char rtc_seconds = ds1307_get_seconds();

 

        // Display digital clock on LCD

        lcd_gotoxy(0, 0);

 

        // Using sprintf for string conversion

        sprintf(str_jam, "%02d", rtc_hours);

        lcd_puts(str_jam);

        lcd_putchar(':');

 

        sprintf(str_menit, "%02d", rtc_minutes);

        lcd_puts(str_menit);

        lcd_putchar(':');

 

        sprintf(str_detik, "%02d", rtc_seconds);

        lcd_puts(str_detik);

 

        // Add a delay of 1 second

        delay_ms(1000);

 

        // Clear the LCD before displaying the updated time

        lcd_clear();

 

        // untuk menampilkan alarm

        if (rtc_hours == 9 && rtc_minutes == 0 && rtc_seconds == 0 && !displayMessage1) {

            PORTB.0 = 1;

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tinggal 30 menit");

            displayMessage1 = 1;

            messageStartTime1 = rtc_seconds;

        } else if (displayMessage1 && rtc_seconds - messageStartTime1 < 10) {

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tinggal 30 menit");

        } else {

            displayMessage1 = 0;

            PORTB.0 = 0;

        }

 

        // untuk menampilkan alarm

        if (rtc_hours == 9 && rtc_minutes == 15 && rtc_seconds == 0 && !displayMessage2) {

            PORTB.0 = 1;

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tersisa 10 menit");

            displayMessage2 = 1;

            messageStartTime2 = rtc_seconds;

        } else if (displayMessage2 && rtc_seconds - messageStartTime2 < 10) {

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tersisa 10 menit");

        } else {

            displayMessage2 = 0;

            PORTB.0 = 0;

        }

 

        // untuk menampilkan alarm

        if (rtc_hours == 9 && rtc_minutes == 25 && rtc_seconds == 0 && !displayMessage3) {

            PORTB.0 = 1;

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tersisa 5 menit");

            displayMessage3 = 1;

            messageStartTime3 = rtc_seconds;

        } else if (displayMessage3 && rtc_seconds - messageStartTime3 < 10) {

            lcd_gotoxy(0, 1);

            lcd_puts("waktu ujian tersisa 5 menit");

        } else {

            displayMessage3 = 0;

            PORTB.0 = 0;

        }

    }

}

 

BAB 4

PENUTUP

 

4.1. Kesimpulan

Kesimpulan yang dapat diambil untuk mempermudah mendapatkan waktu yang akurat kami menggunakan RTC ds1307 ,kemudian program ini juga bisa diatur sesuai kebutuhan masing masing orang ,program diatas hanyalah contoh untuk mengingatkan waktu ujian sudah hampir habis . kita juga bisa mengatur suara yang dimunculkan dibuzzer dengan mengedit program buzzer nya atau membeli buzzer khusus. Sekian dan terima kasih.

 

 

 

Comments

Popular posts from this blog

KIPAS DAN LAMPU OTOMATIS BERBASIS AT MEGA 8535

Alat Bantu Mobilitas Penyandang Tunanetra Berbasis Atmega8535