SINKRONISASI JAM DIGITAL NIRKABEL - USD

180
TUGAS AKHIR SINKRONISASI JAM DIGITAL NIRKABEL Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro Disusun oleh: NUGROHO BUDI WICAKSONO NIM : 095114030 PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2011 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Transcript of SINKRONISASI JAM DIGITAL NIRKABEL - USD

Page 1: SINKRONISASI JAM DIGITAL NIRKABEL - USD

TUGAS AKHIR

SINKRONISASI JAM DIGITAL NIRKABEL

Diajukan Untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Teknik

Program Studi Teknik Elektro

Disusun oleh:

NUGROHO BUDI WICAKSONO

NIM : 095114030

PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA

2011

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: SINKRONISASI JAM DIGITAL NIRKABEL - USD

i

TUGAS AKHIR

SINKRONISASI JAM DIGITAL NIRKABEL

Diajukan Untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Teknik

Program Studi Teknik Elektro

Disusun oleh:

NUGROHO BUDI WICAKSONO

NIM : 095114030

PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA

2011

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: SINKRONISASI JAM DIGITAL NIRKABEL - USD

ii

FINAL PROJECT

WIRELESS SYNCHRONIZATION ON

DIGITAL CLOCK

Presented as Partial Fulfillment of the Requirements

To Obtain the Sarjana Teknik Degree

In Electrical Engineering Study Program

By:

NUGROHO BUDI WICAKSONO

NIM : 095114030

ELECTRICAL ENGINEERING STUDY PROGRAM SCIENCE AND TECHNOLOGY FACULTY

SANATA DHARMA UNIVERSITY YOGYAKARTA

2011

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: SINKRONISASI JAM DIGITAL NIRKABEL - USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: SINKRONISASI JAM DIGITAL NIRKABEL - USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: SINKRONISASI JAM DIGITAL NIRKABEL - USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: SINKRONISASI JAM DIGITAL NIRKABEL - USD

vi

HALAMAN PERSEMBAHAN DAN MOTO HIDUP

Moto Hidup:

Tugas Akhir ini kupersembahkan untuk,

Gusti Yesus Pangeran Dalem

Ibu Catharina Elisabeth Sundari

Bapak Athanasius Sunarno

Kakakku Antonius Nugraha Widhi Pratama

“You may delay, but the time will NOT”

~Benjamin Franklin~

“Kabeh kuwi wis tumata, pasrahna uripmu mring Gusti Pangeran”

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: SINKRONISASI JAM DIGITAL NIRKABEL - USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: SINKRONISASI JAM DIGITAL NIRKABEL - USD

viii

INTISARI

Sistem penunjukan waktu di universitas dan perusahaan masih banyak

menggunakan jam dinding. Pencocokan waktu di setiap ruangan masih menggunakan cara

manual, yakni dengan mencocokkan jarum jam dan menit pada setiap jam dinding. Dalam

beberapa bulan, jam dinding menunjukkan waktu yang berbeda. Ketepatan penunjukan

waktu dipengaruhi oleh daya tahan baterai. Dengan menggunakan metode sinkronisasi di

setiap ruangan, maka masalah perbedaan penunjukan waktu dapat diatasi.

Sistem sinkronisasi jam digital nirkabel terdiri dari 2 subsistem, yakni master dan

slave. Sistem terdiri dari 1 subsistem master dan 2 subsistem slave. Subsistem master

berfungsi sebagai pusat kontrol yang terhubung dengan komputer pada saat sinkronisasi

waktu dengan server NTP, dan mengatur waktu alarm. Antarmuka yang digunakan

subsistem master pada saat sinkronisasi waktu dengan server NTP adalah Visual Basic.

Subsistem slave berfungsi sebagai penerima data waktu yang dikirimkan oleh master dan

penampil jam digital dan alarm.

Prototipe jam digital dapat tersinkronisasi secara nirkabel pada jarak optimal 3

meter. Komunikasi GUI dengan server NTP dan komunikasi GUI dengan subsistem

master berhasil diimplementasikan pada sistem. Jarak 45 meter sesuai dengan tujuan

penelitian belum terpenuhi.

Kata kunci: Sinkronisasi Waktu, Jam Digital Nirkabel, Server NTP, nRF24L01.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: SINKRONISASI JAM DIGITAL NIRKABEL - USD

ix

ABSTRACT

Universities and companies still use wall clock. Each clock in different room is

manually synchronized. In recent months, the clock will show different minutes or hour.

The accuracy of the time is affected by the battery of the clock. Using the synchronization

method, the problem can be solved.

Wireless synchronization on digital clock consists of 2 subsystems, master and

slave. The system consists of a master and 2 slaves. Master is used as a control center that

connected to the computer at the time synchronization with NTP server and set the alarm

time. Visual Basic is used to connecting master with the NTP server. Slave serves as time

receiver, clock display and alarm ringer.

The prototype of wireless digital clock can be synchronized at 3 meters.

Communication between GUI with NTP server and communication between GUI with

master are successfully implemented on the system. The distance of 45 meters according to

the research objective is not achieved.

Key words: Time Synchronization, Wireless Digital Clock, NTP Server, nRF24L01.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: SINKRONISASI JAM DIGITAL NIRKABEL - USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xi

DAFTAR ISI

HALAMAN JUDUL .............................................................................................................. i

TITLE PAGE ......................................................................................................................... ii

LEMBAR PERSETUJUAN ................................................................................................. iii

LEMBAR PENGESAHAN .................................................................................................. iv

LEMBAR PERNYATAAN KEASLIAN KARYA .............................................................. v

HALAMAN PERSEMBAHAN DAN MOTO HIDUP ....................................................... vi

HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK

KEPENTINGAN AKADEMIS ........................................................................................... vii

INTISARI ........................................................................................................................... viii

ABSTRACT ......................................................................................................................... ix

KATA PENGANTAR ........................................................................................................... x

DAFTAR ISI ........................................................................................................................ xi

DAFTAR GAMBAR .......................................................................................................... xiv

DAFTAR TABEL .............................................................................................................. xvi

BAB I PENDAHULUAN ..................................................................................................... 1

1.1 Latar Belakang ................................................................................................................. 1

1.2 Tujuan dan Manfaat Penelitian ........................................................................................ 2

1.3 Batasan Masalah .............................................................................................................. 2

1.4 Metodologi Penelitian ..................................................................................................... 3

1.5 Sistematika Penulisan ...................................................................................................... 4

BAB II DASAR TEORI ........................................................................................................ 5

2.1 Network Time Protokol ................................................................................................... 5

2.2 Arduino Duemilanove ..................................................................................................... 5

2.2.1 Mikrokontroler ATmega328 ................................................................................... 7

2.2.2 Serial Peripheral Interface ...................................................................................... 8

2.2.3 Komunikasi Serial USART .................................................................................. 11

2.2.4 Rangkaian Reset .................................................................................................... 13

2.3 Real-Time Clock DS1307 ............................................................................................. 13

2.3.1 Konfigurasi Pin RTC DS1307 .............................................................................. 14

2.3.2 Komunikasi Serial antar-IC (I2C/TWI) ................................................................ 14

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xii

2.3.3 Definisi Kondisi Bus I2C ...................................................................................... 15

2.3.4 Peta Alamat (Address Map) RTC DS1307 ........................................................... 16

2.4 Transceiver Nordic nRF24L01 ...................................................................................... 16

2.5 Penampil Liquid Crystal Display (LCD) ....................................................................... 18

2.6 Penampil 7 Segment ...................................................................................................... 20

2.7 IC 74HC595 ................................................................................................................... 21

2.8 Buzzer ............................................................................................................................ 22

2.9 Visual Basic ................................................................................................................... 23

2.10 UNIX Timestamp ......................................................................................................... 24

BAB III RANCANGAN PENELITIAN ............................................................................. 25

3.1 Diagram Blok Sistem .................................................................................................... 25

3.2 Perancangan Perangkat Keras ....................................................................................... 26

3.2.1 Perancangan Subsistem Master ............................................................................ 26

3.2.1.1 Board Arduino Duemilanove ....................................................................... 27

3.2.1.2 Rangkaian RTC DS1307 .............................................................................. 28

3.2.1.3 Rangkaian Penampil LCD ............................................................................ 29

3.2.1.4 Rangkaian Transceiver nRF24L01 .............................................................. 29

3.2.1.5 Rangkaian Alarm.......................................................................................... 30

3.2.2 Perancangan Subsistem Slave ............................................................................... 31

3.2.2.1 Sistem Minimum ATmega328 ..................................................................... 31

3.2.2.2 Rangkaian Penampil 7 Segment ................................................................... 32

3.3 Perancangan Perangkat Lunak ...................................................................................... 33

3.3.1 Perancangan Program Visual Basic ...................................................................... 33

3.3.1.1 Subrutin Atur Sinkronisasi dan Port Komunikasi........................................ 36

3.3.1.2 Subrutin Atur Alarm..................................................................................... 37

3.3.1.3 Subrutin Kirim Data ke Arduino .................................................................. 38

3.3.2 Diagram Alir Subsistem Master ........................................................................... 38

3.3.3 Diagram Alir Subsistem Slave .............................................................................. 40

3.3.3.1 Subrutin Tampilkan Data Waktu RTC ke 7 Segment .................................. 40

BAB IV HASIL DAN PEMBAHASAN ............................................................................. 42

4.1 Implementasi Perancangan Perangkat Keras ................................................................. 42

4.2 Implementasi Perancangan Perangkat Lunak ................................................................ 45

4.2.1 Implementasi Program Visual Basic ..................................................................... 45

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xiii

4.2.2 Implementasi Diagram Alir Subsistem Master .................................................... 48

4.2.3 Implementasi Diagram Alir Subsistem Slave ....................................................... 51

4.3 Hasil Pengamatan dan Pembahasan .............................................................................. 52

4.3.1 Komunikasi GUI dengan Server NTP .................................................................. 52

4.3.2 Komunikasi GUI dengan Subsistem Master ........................................................ 53

4.3.3 Hasil Pengamatan pada Sistem Sinkronisasi Jam Digital Nirkabel ...................... 54

4.3.3.1 Metode Penskalaan Waktu Pengiriman Data ............................................... 55

4.3.3.2 Metode Uji Coba Sistem .............................................................................. 68

4.3.4 Hasil Pengamatan pada Subsistem Master dan Subsistem Slave ......................... 73

4.3.4.1 Hasil Pengamatan pada Subsistem Master................................................... 73

4.3.4.2 Hasil Pengamatan pada Subsistem Slave ..................................................... 74

BAB V KESIMPULAN DAN SARAN .............................................................................. 76

5.1 Kesimpulan .................................................................................................................... 76

5.2 Saran .............................................................................................................................. 76

DAFTAR PUSTAKA .......................................................................................................... 77

LAMPIRAN ........................................................................................................................ 78

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xiv

DAFTAR GAMBAR

Gambar 1.1 Blok model perancangan ................................................................................... 3

Gambar 2.1 Modul mikrokontroler Arduino Duemilanove .................................................. 5

Gambar 2.2 Konfigurasi pin ATmega168/ATmega328 pada Arduino Duemilanove ......... 6

Gambar 2.3 Perangkat lunak Arduino .................................................................................. 6

Gambar 2.4 Komunikasi master-slave pada SPI ................................................................... 9

Gambar 2.5 Diagram pewaktuan pemindahan data dengan Clock Phase (CPHA)=0 ........ 10

Gambar 2.6 Diagram pewaktuan pemindahan data dengan CPHA=1 ................................ 10

Gambar 2.7 Register UBRRn .............................................................................................. 12

Gambar 2.8 Diagram waktu untuk reset eksternal .............................................................. 13

Gambar 2.9 Konfigurasi pin RTC DS1307 ......................................................................... 14

Gambar 2.10 Transfer data pada I2C................................................................................... 15

Gambar 2.11Konfigurasi pin nRF24L01 ............................................................................. 17

Gambar 2.12 Bentuk fisik modul LCD Topway ................................................................. 19

Gambar 2.13 Tampilan 7 segment ....................................................................................... 20

Gambar 2.14 Konfigurasi 7 segment tipe common anode ................................................... 20

Gambar 2.15 Konfigurasi 7 segment tipe common cathode ................................................ 21

Gambar 2.16 Konfigurasi pin IC 74HC595 ........................................................................ 21

Gambar 2.17 Diagram waktu IC 74HC595 ......................................................................... 22

Gambar 2.18 Rangkaian buzzer ........................................................................................... 22

Gambar 2.19 IDE Visual Basic ........................................................................................... 24

Gambar 2.20 Ilustrasi object, property, method dan event .................................................. 24

Gambar 3.1 Diagram blok sistem ........................................................................................ 25

Gambar 3.2 Alokasi pin subsistem master .......................................................................... 28

Gambar 3.3 Rangkaian RTC DS1307 ................................................................................. 28

Gambar 3.4 Rangkaian penampil LCD ............................................................................... 29

Gambar 3.5 Modul transceiver nRF24L01 ......................................................................... 29

Gambar 3.6 Rangkaian penghubung modul transceiver nRF24L01 ................................... 30

Gambar 3.7 Rangkaian Alarm ............................................................................................. 30

Gambar 3.8 Sistem minimum dan alokasi pin subsistem slave ........................................... 31

Gambar 3.9 Rangkaian penampil 7 segment ....................................................................... 32

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xv

Gambar 3.10 GUI Visual Basic ........................................................................................... 34

Gambar 3.11 Diagram alir utama GUI Visual Basic ........................................................... 34

Gambar 3.12 Diagram alir subrutin atur sinkronisasi dan port komunikasi ....................... 36

Gambar 3.13 Diagram alir subrutin atur alarm.................................................................... 37

Gambar 3.14 Diagram alir subrutin kirim data ke Arduino ................................................ 38

Gambar 3.15 Diagram alir subsistem master ...................................................................... 39

Gambar 3.16 Diagram alir utama subsistem slave .............................................................. 40

Gambar 3.17 Subrutin tampilkan data waktu RTC ke 7 segment ....................................... 41

Gambar 4.1 Hasil implementasi subsistem master .............................................................. 42

Gambar 4.2 Tampilan LCD subsistem master .................................................................... 43

Gambar 4.3 Hasil implementasi subsistem slave 1 ............................................................. 44

Gambar 4.4 Hasil implementasi subsistem slave 2 ............................................................. 44

Gambar 4.5 Implementasi perancangan perangkat lunak .................................................... 45

Gambar 4.6 Peringatan adanya kesalahan pengaturan data mode alarm jam tertentu ........ 47

Gambar 4.7 Jumlah kesalahan dalam pengaturan data alarm .............................................. 47

Gambar 4.8 Data yang dikirim GUI .................................................................................... 48

Gambar 4.9 Isi data yang dikirim GUI ................................................................................ 48

Gambar 4.10 Data dari GUI ................................................................................................ 53

Gambar 4.11 Data dari Terminal ......................................................................................... 54

Gambar 4.12 Denah lokasi metode penskalaan pengamatan pertama................................. 60

Gambar 4.13 Denah lokasi metode penskalaan pengamatan ke-2 ...................................... 61

Gambar 4.14 Denah lokasi metode penskalaan pengamatan ke-3 ...................................... 64

Gambar 4.15 Denah lokasi metode uji coba sistem............................................................. 69

Gambar 4.16 Selisih waktu yang ditampilkan LCD ............................................................ 72

Gambar 4.17 Data yang dikirim subsistem slave 1 ............................................................. 72

Gambar 4.18 Pembacaan osiloskop fungsi loop subsistem master ..................................... 74

Gambar 4.19 Pembacaan osiloskop fungsi loop subsistem slave 1 ..................................... 74

Gambar 4.20 Pembacaan osiloskop fungsi loop subsistem slave 2 ..................................... 75

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xvi

DAFTAR TABEL

Tabel 2.1 Konfigurasi dan deskripsi pin ATmega328 .......................................................... 7

Tabel 2.2 Konfigurasi alternatif port D ................................................................................ 8

Tabel 2.3 Pin ATmega328 yang digunakan sebagai SPI .................................................... 11

Tabel 2.4 Perhitungan register UBRRn .............................................................................. 12

Tabel 2.5 Keterangan konfigurasi pin DS1307 .................................................................. 14

Tabel 2.6 Register RTC dan RAM ..................................................................................... 16

Tabel 2.7 Keterangan konfigurasi pin nRF24L01 .............................................................. 17

Tabel 2.8 Keterangan konfigurasi pin LCD Topway ......................................................... 19

Tabel 2.9 Keterangan konfigurasi pin IC 74HC595 ........................................................... 21

Tabel 3.1 Alokasi pin ATmega328 dengan RTC DS1307 .................................................. 26

Tabel 3.2 Alokasi pin ATmega328 dengan LCD ................................................................ 27

Tabel 3.3 Alokasi pin ATmega328 dengan nRF24L01 ....................................................... 27

Tabel 3.4 Alokasi pin ATmega328 dengan buzzer ............................................................. 27

Tabel 3.5 Alokasi pin ATmega328 dengan 7 Segment (74HC595), dan LED .................... 32

Tabel 3.6 Susunan biner pin-pin 7 segment ......................................................................... 33

Tabel 3.7 Obyek pada GUI Visual Basic ............................................................................ 35

Tabel 4.1 Perubahan pada GUI............................................................................................ 46

Tabel 4.2 Header data GUI ................................................................................................. 47

Tabel 4.3 Alamat dan Fungsi EEPROM ............................................................................. 49

Tabel 4.4 Identitas alarm pada subsistem master ................................................................ 50

Tabel 4.5 Format data dan header data subsistem master ................................................... 51

Tabel 4.6 Format data dan header data subsistem slave 1 dan subsistem slave 2 .............. 51

Tabel 4.7 Identitas alarm pada subsistem slave ................................................................... 52

Tabel 4.8 Komunikasi GUI dengan server NTP ................................................................. 52

Tabel 4.9 Perbandingan data yang dikirim dan diterima ..................................................... 53

Tabel 4.10 Perbandingan waktu komputer dengan subsistem master ................................. 54

Tabel 4.11 Format pewaktuan metode penskalaan .............................................................. 55

Tabel 4.12 Metode penskalaan pengamatan pertama jarak 1 m – 3 m ................................ 57

Tabel 4.13 Metode penskalaan pengamatan pertama jarak 4m, 5m, 10m, dan 15m ........... 58

Tabel 4.14 Metode penskalaan pengamatan pertama jarak 20 m - 45 m ............................ 59

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: SINKRONISASI JAM DIGITAL NIRKABEL - USD

xvii

Tabel 4.15 Persentase keberhasilan metode penskalaan pengamatan pertama ................... 60

Tabel 4.16 Metode penskalaan pengamatan ke-2 jarak 5 m & 10 m .................................. 61

Tabel 4.17 Persentase keberhasilan metode penskalaan pengamatan ke-2 ......................... 61

Tabel 4.18 Metode penskalaan pengamatan ke-3 jarak 1 m & 2 m .................................... 62

Tabel 4.19 Metode penskalaan pengamatan ke-3 jarak 3 m – 6 m ..................................... 63

Tabel 4.20 Persentase keberhasilan metode penskalaan pengamatan ke-3 ......................... 64

Tabel 4.21 Metode penskalaan pengamatan ke-4 jarak 1 m – 4 m ..................................... 65

Tabel 4.22 Persentase keberhasilan metode penskalaan pengamatan ke-4 ......................... 66

Tabel 4.23 Metode penskalaan pengamatan ke-5 ................................................................ 66

Tabel 4.24 Uji coba sistem pengamatan pertama mode alarm interval ............................... 69

Tabel 4.25 Uji coba sistem pengamatan ke-2 mode alarm jam tertentu .............................. 70

Tabel 4.26 Uji coba sistem pengamatan ke-3 mode alarm mati .......................................... 71

Tabel 4.27 Persentase keberhasilan metode uji coba sistem ............................................... 72

Tabel 4.28 Waktu loop subsistem master ............................................................................ 73

Tabel 4.29 Waktu loop subsistem slave 1 ........................................................................... 74

Tabel 4.30 Waktu loop subsistem slave 2 ........................................................................... 75

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: SINKRONISASI JAM DIGITAL NIRKABEL - USD

1

1BAB I

PENDAHULUAN

1.1 Latar Belakang

Jam adalah alat untuk mengukur waktu [1]. Sistem penunjukan waktu di universitas

dan perusahaan masih banyak menggunakan jam dinding. Pencocokan waktu di setiap

ruangan masih menggunakan cara manual, yakni dengan mencocokkan setiap jam dinding.

Dalam beberapa bulan, jam dinding menunjukkan waktu yang berbeda. Ketepatan

penunjukan waktu dipengaruhi oleh daya tahan baterai [2, 3].

Dengan menggunakan metode sinkronisasi di setiap ruangan, maka masalah

perbedaan penunjukan waktu dapat diatasi. Salah satu mekanisme sinkronisasi waktu yang

digunakan pada jaringan komputer adalah sinkronisasi berbasis Network Time Protocol

(NTP). Mekanisme ini memungkinkan setiap komputer dalam satu jaringan dapat

tersinkronisasi dengan server NTP, sehingga setiap komputer menunjukkan informasi

waktu yang sama. Adanya informasi waktu yang standar dari NTP bisa dibuat sistem jam

digital yang disinkronisasikan secara terpusat [4].

Berdasarkan latar belakang ini, penulis ingin membuat sebuah sistem sinkronisasi

jam digital nirkabel. Sistem menggunakan jaringan internet, kontroler Arduino, dan modul

transceiver nRF24L01 frekuensi radio (RF) dengan modulasi Gaussian Frequency Shift-

Keying (GFSK) [5]. Daya jangkau transceiver nRF24L01 mencapai 45-55 meter di tempat

yang dikelilingi banyak gedung [6].

Sistem ini dikembangkan dari sistem yang sudah ada sebelumnya, yaitu

sinkronisasi jam digital [4], perencanaan dan pembuatan sistem penunjuk waktu

tersinkronisasi secara digital [7], penampil jamak jam digital berbasis mikrokontroler

AT89C2051 menggunakan komunikasi serial [8], dan jam dan alarm sekolah berbasis

mikrokontroler ATmega16 [9]. Penelitian-penelitian tersebut menggunakan teknologi

inframerah yang jarak maksimal transmisinya 7,5 meter [7], dan menggunakan kabel

(wired) [8, 9]. Sistem yang akan dibuat dapat mengatasi permasalahan jarak transmisi dan

kerumitan instalasi jam digital menggunakan kabel.

Pengaturan sinkronisasi sistem ini diperoleh dari server NTP yang terhubung

dengan komputer. Sinkronisasi antara komputer dengan server NTP menggunakan

perangkat lunak Visual Basic. Data yang diperoleh Visual Basic dikirimkan ke

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: SINKRONISASI JAM DIGITAL NIRKABEL - USD

2

mikrokontroler. Subsistem master digunakan untuk mengirimkan dan menerima data

sinkronisasi. Data sinkronisasi diterima oleh subsistem slave dan diolah mikrokontroler

untuk ditampilkan pada jam digital. Data hasil sinkronisasi pada subsistem slave

dikirimkan kembali ke subsistem master. Komunikasi data antara subsistem master dan

subsistem slave menggunakan modul nRF24L01. Masing-masing subsistem memiliki IC

RTC (Real Time Clock) yang digunakan sebagai pewaktu. Sistem dikondisikan hanya

bekerja jika terdapat arus listrik dari PLN. Kondisi tidak terdapat arus listrik PLN di luar

perancangan sistem. Fasilitas alarm ditambahkan pada sistem ini dapat digunakan sebagai

penanda waktu tertentu. Fasilitas alarm sistem ini dapat diaplikasikan pada perusahaan

yang memiliki waktu kerja yang berbeda, yaitu area produksi dengan waktu kerja shift

(contoh: 3 shift dalam 1 hari, @ shift 8 jam) dan administrasi dengan waktu kerja tertentu

(contoh: pukul 08.00 – 16.00).

1.2 Tujuan dan Manfaat Penelitian

Tujuan penelitian ini adalah:

1. Menghasilkan prototipe jam digital yang tersinkronisasi nirkabel dan

tersinkronisasi dengan server NTP,

2. Menghasilkan prototipe jam digital yang dapat tersinkronisasi dengan jarak 45

meter pada lokasi yang dikelilingi banyak gedung.

Manfaat penelitian ini adalah:

1. Dapat digunakan sebagai penunjuk waktu pada ruang kuliah dan laboratorium,

2. Dapat digunakan sebagai acuan, rujukan, dan bahan pertimbangan untuk

memperbanyak prototipe jam digital.

1.3 Batasan Masalah

Penelitian ini dibatasi pada sinkronisasi antara 1 subsistem master dengan penampil

LCD dan 2 subsistem slave dengan tampilan 4 digit 7 segment. Masing-masing subsistem

slave mempunyai identitas atau alamat yang berbeda. Pengujian subsistem master dan

subsistem slave dalam gedung dengan ketinggian yang sama pada ruang terbuka dan ruang

tertutup. Spesifikasi sistem sebagai berikut:

1. Modul mikrokontroler menggunakan Arduino Duemilanove pada subsistem master.

2. Modul transceiver yang digunakan adalah nRF24L01.

3. Fasilitas alarm pada setiap jam.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: SINKRONISASI JAM DIGITAL NIRKABEL - USD

3

4. Sistem sinkronisasi bersifat close loop.

5. Topologi jaringan yang digunakan adalah topologi star.

1.4 Metodologi Penelitian

Metodologi yang digunakan penelitian ini adalah

1. Studi pustaka mengumpulkan bahan-bahan referensi berupa buku-buku, dan jurnal-

jurnal penelitian.

2. Perancangan perangkat keras dan perangkat lunak. Tahap ini bertujuan untuk

mencari bentuk optimal dari sistem yang akan dibuat dengan mempertimbangkan

faktor permasalahan, dan ketersediaan komponen.

Gambar 1.1 Blok model perancangan

3. Pembuatan perangkat keras dan lunak yang digambarkan pada Gambar 1.1. Sistem

memulai proses sinkronisasi saat user menjalankan program Visual Basic dan

menyetel waktu sinkronisasi dan alarm. Data waktu sinkronisasi dan alarm diolah

oleh mikrokontroler dan subsistem master untuk dikirimkan ke subsistem slave.

Data tampilan jam digital pada subsistem slave dikirimkan kembali ke subsistem

master untuk mengamati tampilan jam digital pada subsistem slave.

4. Proses pengambilan data. Pengambilan data dilakukan dengan membandingkan

data tampilan waktu subsistem slave dengan subsistem master dalam jeda waktu

sinkronisasi tertentu, dan mengetahui jarak maksimal antarsubsistem. Pengambilan

data dilakukan pada ruang terbuka dan tertutup. Kondisi ruang terbuka adalah tidak

adanya penghalang (tembok, sekat, dll) antar-transceiver atau LOS (Line Of Sight),

kondisi ruang tertutup adalah lokasi kondisi pengambilan data dilakukan pada

ruangan yang terpisah.

5. Analisis dan penyimpulan hasil percobaan. Analisis data dilakukan dengan

membandingkan keakuratan data tampilan waktu subsistem slave dengan subsistem

Subsistem

Master

Subsistem

Slave

T

X

Network

Time

Protokol Komputer Kontroler

LCD

Alarm

nRF24L01

T

X

R

X

R

X

Kontroler Jam Digital

Alarm

nRF24L01

Kontroler Jam Digital

Alarm

nRF24L01

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: SINKRONISASI JAM DIGITAL NIRKABEL - USD

4

master. Penyimpulan hasil percobaan dilakukan dengan melihat persentase

keberhasilan sistem. Indikator keberhasilan sistem adalah subsistem slave

menunjukkan waktu yang sama dengan subsistem master.

1.5 Sistematika Penulisan

BAB I : PENDAHULUAN

Bab ini berisi latar belakang masalah, tujuan dan manfaat penelitian, batasan

masalah, metodologi penelitian, serta sistematika penulisan.

BAB II : DASAR TEORI

Bab ini berisi studi pustaka mengenai teori-teori yang mendasari penelitian ini.

BAB III : RANCANGAN PENELITIAN

Bab ini berisi blok diagram sistem, diagram alir perancangan, dan rancangan

tampilan pada software.

BAB IV : HASIL DAN PEMBAHASAN

Bab ini berisi hasil perancangan, data pengujian, analisis data, dan pembahasan

data.

BAB V : KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan akhir dan saran-saran penulis mengenai sistem yang

dibuat.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: SINKRONISASI JAM DIGITAL NIRKABEL - USD

5

2BAB II

DASAR TEORI

[1-9]

Bab ini menjelaskan tentang teori komponen-komponen utama dan protokol-

protokol yang mendasari sistem “Sinkronisasi Jam Digital Nirkabel”. Komponen-

komponen yang digunakan adalah Network Time Protokol , Arduino Duemilanove,

Mikrokontroler ATmega328, Real-Time Clock DS1307, Transceiver Nordic nRF24L01,

Penampil Liquid Crystal Display (LCD), Penampil 7 Segment, IC 74HC595, Buzzer, dan

Visual Basic. Pemaparan dasar teori diurutkan sesuai dengan blok model perancangan pada

Gambar 1.1.

2.1 Network Time Protokol

Network Time Protocol (NTP) merupakan protokol yang digunakan untuk

melakukan time-synchronization antara satu host dengan host lainnya. NTP menggunakan

port User Datagram Protocol (UDP) 123 pada layer transpor. NTP pertama kali didesain

oleh Dave Mills dari University of Delaware [10]. Host yang dimaksud adalah komputer

yang terhubung dengan jaringan internet [11]. Salah satu contoh dibutuhkannya penunjuk

waktu yang sama pada komputer adalah kebutuhan ketepatan penjadwalan dalam proses

kontrol industri [12].

2.2 Arduino Duemilanove

Arduino Duemilanove adalah sebuah perangkat keras dari Arduino berupa sistem

minimum dengan mikrokontroler ATmega168/ATmega328 [13].

Gambar 2.1 Modul mikrokontroler Arduino Duemilanove [13]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: SINKRONISASI JAM DIGITAL NIRKABEL - USD

6

Arduino Duemilanove memiliki 14 pin input/output digital (6 pin diantaranya dapat

digunakan sebagai output Pulse Width Modulation/PWM), 6 pin input analog, osilator 16

MHz, dan koneksi USB dengan cip Future Technology Devices International (FTDI).

Modul mikrokontroler Arduino Duemilanove ditunjukkan pada Gambar 2.1, sedangkan

Gambar 2.2 menunjukkan konfigurasi pin ATmega168/ATmega328 pada Arduino

Duemilanove.

Pemrograman Arduino Duemilanove menggunakan perangkat lunak Arduino

(Gambar 2.3). ATmega168/ATmega328 pada Arduino sudah terpasang bootloader yang

memungkinkan pengguna untuk mengunggah kode tanpa menggunakan perangkat keras

tambahan.

Gambar 2.2 Konfigurasi pin ATmega168/ATmega328 pada Arduino Duemilanove [13]

Gambar 2.3 Perangkat lunak Arduino [13]

Fasilitas komunikasi Arduino Duemilanove meliputi komunikasi antara Arduino

Duemilanove dengan komputer, Arduino Duemilanove dengan Arduino yang lain, dan

Arduino Duemilanove dengan mikrokontroler yang lain. ATmega168/ATmega328

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: SINKRONISASI JAM DIGITAL NIRKABEL - USD

7

menyediakan fasilitas Universal Synchronous and Asynchronous serial Receiver and

Transmitter (USART) pada pin D0 (RX) dan pin D1 (TX). Cip FTDI FT232RL digunakan

untuk komunikasi serial lewat USB dan driver FTDI yang terdapat pada perangkat lunak

digunakan untuk mengkonfigurasikan virtual COM port.

2.2.1 Mikrokontroler ATmega328

Mikrokontroler sering dipakai sebagai komponen pengendali pada suatu peralatan

karena memiliki kelengkapan-kelengkapan yang diperlukan untuk bekerja dalam sistem

cip tunggal dan juga pertimbangan ekonomis [14]. Dalam penelitian ini digunakan

mikrokontroler ATmega328 karena kompatibilitasnya dengan Arduino dan fiturnya cukup

lengkap. ATmega328 memiliki fitur 32 kByte downloadable flash memory, 1 kByte

Electrically Erasable Programmable Read-Only Memory (EEPROM), 2 kByte internal

Static Random-Access Memory (SRAM), 2 Timer/Counter 8 bit dan 1 Timer/Counter 16

bit, 6 kanal PWM, Serial USART yang dapat diprogram, dan frekuensi kerja sampai

dengan 20 MHz [15].

Fungsi masing-masing pin pada Gambar 2.2 dijelaskan pada Tabel 2.1. Fungsi

khusus port D dijelaskan pada Tabel 2.2.

Tabel 2.1 Konfigurasi dan deskripsi pin ATmega328 [15]

No Pin Nama Pin Keterangan

7 VCC Sumber tegangan

8,22 GND Ground

14,15,16,17,

18,19,9,10

Port B

(PB7:0)

Masing-masing pin pada port B memiliki resistor pull-

up internal dan dapat digunakan sebagai 8 bit I/O digital.

pin PB6 dan pin PB7 terhubung dengan kristal 16 MHz,

tidak digunakan sebagai I/O. Pin PB1 - pin PB3 dapat

digunakan sebagai output PWM.

23,24,25,26,

27,28,1

Port C

(PC6:0)

Masing-masing pin pada port C memiliki resistor pull-

up internal dan dapat digunakan sebagai 7 bit I/O analog.

Pin PC6 digunakan sebagai input reset , tidak digunakan

sebagai I/O.

2,3,4,5,6,11,

12,13

Port D

(PD7:0)

Masing-masing pin pada port D memiliki resistor pull-

up internal dan dapat digunakan sebagai 8 bit I/O digital.

Pin PD3 dapat digunakan sebagai output PWM.

Konfigurasi alternatif port D dapat dilihat pada Tabel 2.2

20 AVcc Sumber tegangan untuk konversi analog ke digital

21 Aref Tegangan referensi untuk konversi analog ke digital

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: SINKRONISASI JAM DIGITAL NIRKABEL - USD

8

Tabel 2.2 Konfigurasi alternatif port D [15]

No Pin Nama Pin Keterangan

AIN1 (Analog Comparator Negative Input)

PCINT23 (Pin Change Interrupt 23)

AIN0 (Analog Comparator Positive Input)

OC0A (Timer/Counter0 Output Compare Match A Output)

PCINT22 (Pin Change Interrupt 22)

T1 (Timer/Counter 1 External Counter Input)

OC0B (Timer/Counter0 Output Compare Match B Output)

PCINT21 (Pin Change Interrupt 21)

XCK (USART External Clock Input/Output)

T0 (Timer/Counter 0 External Counter Input)

PCINT20 (Pin Change Interrupt 20)

INT1 (External Interrupt 1 Input)

OC2B (Timer/Counter2 Output Compare Match B Output)

PCINT19 (Pin Change Interrupt 19)

INT0 (External Interrupt 0 Input)

PCINT18 (Pin Change Interrupt 18)

TXD (USART Output Pin)

PCINT17 (Pin Change Interrupt 17)

RXD (USART Input Pin)

PCINT16 (Pin Change Interrupt 16)

7 PD1

6 PD0

10 PD4

9 PD3

8 PD2

13 PD7

12 PD6

11 PD5

2.2.2 Serial Peripheral Interface

Serial Peripheral Interface (SPI) merupakan salah satu metode pengiriman data

dari suatu perangkat ke perangkat lainnya [16]. Metode ini merupakan metode yang

bekerja pada metode full duplex dan merupakan standar sinkronisasi serial data link yang

dikembangkan oleh Motorola. Pada SPI, perangkat dibagi menjadi dua bagian yaitu master

dan slave, dengan master sebagai perangkat yang menginisiasi pengiriman data. Sebuah

master dalam aplikasinya dapat digunakan untuk mengatur pengiriman data dari atau ke

beberapa slave sekaligus. Komunikasi serial data antara master dan slave pada SPI diatur

melalui 4 buah pin yang terdiri dari SCLK, MOSI, MISO, dan SS. Keempat pin tersebut

dijelaskan sebagai berikut:

a. Serial Clock (SCLK) merupakan data biner yang keluar dari master ke slave yang

berfungsi sebagai clock dengan frekuensi tertentu. Clock merupakan salah satu

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: SINKRONISASI JAM DIGITAL NIRKABEL - USD

9

komponen prosedur komunikasi data SPI. Dalam beberapa perangkat, istilah yang

digunakan untuk pin ini adalah SCK.

b. Master Output Slave Input (MOSI) merupakan pin yang berfungsi sebagai jalur

data pada saat data keluar dari master dan masuk ke dalam slave. Istilah lain untuk

pin ini antara lain Slave Input Master Output (SIMO), Serial Data In (SDI), Data

In (DI), dan Serial In (SI).

c. Master Input Slave Output (MISO) merupakan pin yang berfungsi sebagai jalur

data yang keluar dari slave dan masuk ke dalam master. Istilah lain untuk pin ini

adalah Slave Output Master Input (SOMI), Serial Data Out (SDO), Data Out (DO),

dan Serial Out (SO).

d. Slave Select (SS) merupakan pin yang berfungsi untuk mengaktifkan slave

sehingga pengiriman data hanya dapat dilakukan jika slave dalam keadaan aktif

(active low). Istilah lain untuk SS antara lain Chip Select (CS), nCS, nSS, dan Slave

Transmit Enable (STE).

Pin SCLK, MOSI, dan SS merupakan pin dengan arah pengiriman data dari master

ke slave. Sebaliknya, MISO mempunyai arah komunikasi data dari slave ke master.

Pengaturan hubungan antara pin MISO dan MOSI harus sesuai dengan ketentuan.

Ketentuan tersebut adalah pin MISO pada master harus dihubungkan dengan pin MOSI

pada slave, begitu juga sebaliknya. Hal ini dilakukan untuk menghindari terjadinya

kesalahan prosedur pada pengiriman data. Istilah pin-pin SPI untuk berbagai perangkat

mungkin saja mempunyai istilah yang berbeda dengan istilah di atas tergantung pada

produsen.

Gambar 2.4 Komunikasi master-slave pada SPI [15]

Komunikasi data SPI dimulai pada saat master mengirimkan clock melalui SCK

dengan frekuensi lebih kecil atau sama dengan frekuensi maksimum pada slave.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: SINKRONISASI JAM DIGITAL NIRKABEL - USD

10

Kemudian, master memberi logika low atau 0 pada SS untuk mengaktifkan slave sehingga

pengiriman data (berupa siklus clock) siap untuk dilakukan. Pada saat siklus clock terjadi,

transmisi data full duplex terjadi dengan dua keadaan sebagai berikut:

a. Master mengirim sebuah bit pada jalur MOSI dan slave membacanya pada jalur

yang sama.

b. Slave mengirim sebuah bit pada jalur MISO dan master membacanya pada jalur

yang sama.

Transmisi dapat menghasilkan beberapa siklus clock. Jika tidak ada data yang

dikirim lagi maka master menghentikan clock tersebut dan menonaktifkan slave.

Gambar 2.5 Diagram pewaktuan pemindahan data dengan Clock Phase (CPHA)=0 [15]

Gambar 2.6 Diagram pewaktuan pemindahan data dengan CPHA=1 [15]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: SINKRONISASI JAM DIGITAL NIRKABEL - USD

11

Diagram pewaktuan (timing diagram) SPI dimulai pada saat SS diaktifkan (low).

Pada Gambar 2.5 dan Gambar 2.6 menunjukkan bahwa satu siklus clock terdiri dari 8 bit

data. Saat SS aktif, MISO/MOSI mulai mengirimkan data mulai dari Most Significant Bit

(MSB) data tersebut. Pada saat clock berubah maka proses pengiriman data dilanjutkan

pada bit yang lebih rendah. Proses tersebut berlangsung sampai pengiriman data selesai

dengan mengirimkan bit Least Significant Bit (LSB) dan siklus clock berakhir serta SS

kembali dinonaktifkan (high). Saat siklus clock berakhir, biasanya slave mengirimkan

interrupt ke master yang mengindikasikan bahwa pengiriman data telah selesai dan siap

untuk melakukan pengiriman data selanjutnya. Dalam diagram pewaktuan, clock

mempunyai beberapa mode pengaturan polaritas (Clock Polarity/CPOL) dan fase (Clock

Phase/CPHA). Pin-pin ATmega328 yang digunakan sebagai SPI ditunjukkan pada Tabel

2.3

Tabel 2.3 Pin ATmega328 yang digunakan sebagai SPI [15]

No Pin Nama Pin Keterangan

SCK (SPI Bus Master clock Input)

PCINT5 (Pin Change Interrupt 5)

MISO (SPI Bus Master Input/Slave Output)

PCINT4 (Pin Change Interrupt 4)

MOSI (SPI Bus Master Output/Slave Input)

OC2A (Timer/Counter2 Output Compare Match A Output)

PCINT3 (Pin Change Interrupt 3)

SS (SPI Bus Master Slave select)

OC1B (Timer/Counter1 Output Compare Match B Output)

PCINT2 (Pin Change Interrupt 2)

16 PB2

19 PB5

18 PB4

17 PB3

2.2.3 Komunikasi Serial USART

Universal Synchronous and Asynchronous serial Receiver and Transmitter

(USART) merupakan salah satu mode komunikasi serial yang memiliki fleksibilitas tinggi.

USART dapat digunakan untuk melakukan transfer data antarmikrokontroler maupun

modul-modul eksternal termasuk komputer yang memiliki fitur Universal Asynchronous

serial Receiver and Transmitter (UART). USART memungkinkan transmisi data secara

sinkron maupun asinkron, sehingga USART kompatibel dengan UART.

Pengaturan mode USART pada mikrokontroler ATmega328 dilakukan pada

register UDRn (USART I/O Data Register n), UCSRnA (USART Control and Status

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: SINKRONISASI JAM DIGITAL NIRKABEL - USD

12

Register n A), UCSRnB (USART Control and Status Register n B), UCSRnC (USART

Control and Status Register n C), dan UBRRn (UBRRnL dan UBRRnH – USART Baud

Rate Registers). Register UBRRn digunakan untuk menentukan baud rate mikrokontroler

pada saat terhubung dengan komputer.

Gambar 2.7 Register UBRRn [15]

Register UBRRn adalah register 16 bit. Bit 15-12 belum digunakan (reserved bits)

saat register UBRRnH digunakan, sehingga bit 15-12 harus bernilai 0. Bit 11-0 adalah

register 12 bit untuk mengatur baud rate USART dengan 4 bit pada UBRRnH dan 8 bit

pada UBRRnL. Penentuan nilai baud rate dan nilai register UBRRn ditunjukkan pada

Tabel 2.4.

Tabel 2.4 Perhitungan register UBRRn [15]

Mode Operasi Penentuan nilai Baud Rate Penentuan nilai Register UBRRn

Asinkron. Mode

Normal (U2Xn = 0)

Asinkron. Mode

Kecepatan Ganda

(U2Xn = 1)

Sinkron. Mode

Master

Keterangan :

BAUD = baud rate (bps)

f osc = frekuensi osilator (frekuensi kristal)

UBRRn = nilai register UBRRn (UBRRnH-UBRRnL)

116

UBRRn

fBAUD OSC

18

UBRRn

fBAUD OSC

1UBRRn2

fBAUD OSC

116

BAUD

fUBRRn OSC

1BAUD8

fUBRRn OSC

12

BAUD

fUBRRn OSC

Perhitungan yang digunakan untuk menentukan nilai error baud rate adalah

sebagai berikut:

%1001[%]

BaudRate

BaudRateError chClosestMat (2.1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: SINKRONISASI JAM DIGITAL NIRKABEL - USD

13

2.2.4 Rangkaian Reset

Pin reset pada mikrokontroler AVR adalah aktif low. Jika sinyal berlogika low

diberikan pada pin reset, maka kondisi mikrokontroler pada keadaan reset.

Gambar 2.8 Diagram waktu untuk reset eksternal [15]

Tujuan reset pada mikrokontroler adalah sebagai berikut [17]:

a. Melepas semua jalur, dan mengkondisikan semua pin (kecuali pin XTAL) dalam

keadaan awal (tri-state), menginisialisasi register I/O, dan mengubah nilai counter

dalam keadaan 0.

b. Mengkondisikan mikrokontroler dalam mode program.

Pin reset memiliki resistor pull-up internal. Pada lingkungan yang memiliki

gangguan, resistor pull-up internal tidak dapat berfungsi dengan baik. Oleh karena itu,

resistor pull-up eksternal dibutuhkan untuk menjaga agar pin reset tidak berlogika 0 secara

tidak disengaja. Nilai resistor pull-up eksternal secara teori bernilai bebas, tetapi secara

aplikatif digunakan nilai resistor tertentu, agar logika pin reset dapat diubah menjadi 0 saat

diprogram. Nilai resistor yang direkomendasikan adalah lebih besar dari 4,7 kOhm [17].

2.3 Real-Time Clock DS1307

Serial Real Time Clock (RTC) DS1307 merupakan jam/kalender full binary code

decimal (BCD) yang dilengkapi NV RAM sebesar 56 Byte. RTC mengkonsumsi daya kecil

dan arus yang dipakai sebesar 500 nA. Alamat dan data dikirim secara serial melalui jalur

komunikasi I2C (bidirectional bus). Informasi kalender meliputi tahun, bulan, tanggal dan

hari sedangkan informasi jam meliputi detik, menit, dan jam. Akhir dari suatu bulan

disesuaikan lagi dengan bulan berikutnya secara otomatis, termasuk pengecekan tahun

kabisat. Jam beroperasi dalam bentuk 24 jam atau 12 jam dengan indikator AM/PM.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: SINKRONISASI JAM DIGITAL NIRKABEL - USD

14

DS1307 memiliki rangkaian power sense yang dapat mengetahui kegagalan daya dan

secara otomatis menggunakan sumber tegangan cadangan [14].

2.3.1 Konfigurasi Pin RTC DS1307

Gambar 2.9 dan Tabel 2.5 di bawah ini merupakan konfigurasi dan keterangan pin

pada IC Real Time Clock DS1307.

Gambar 2.9 Konfigurasi pin RTC DS1307 [18]

Tabel 2.5 Keterangan konfigurasi pin DS1307 [18]

No Pin Nama Pin Keterangan

1 X1

2 X2

3 VBAT Terhubung dengan baterai 3 V untuk catu daya cadangan

4 GND Ground

5 SDA I/O data serial (serial data input/output)

6 SCL Input clock serial (serial clock input)

7 SQW/OUT Output gelombang kotak/output driver

8 VCC Sumber tegangan

Terhubung dengan kristal 32,768 kHz

2.3.2 Komunikasi Serial antar-IC (I2C/TWI)

Inter Integrated Circuit (I2C) adalah sebuah protokol untuk komunikasi serial antar

Integrated Circuit (IC) dan sering disebut Two Wire Interface (TWI). I2C digunakan untuk

komunikasi antara mikrokontroler dan perangkat periferal seperti memori, sensor

temperatur dan I/O expander [19].

Komunikasi I2C dilakukan melalui dua jalur, yaitu: SDA dan SCL. Setiap

perangkat I2C memiliki 7 bit alamat yang unik. Alamat MSB selalu tetap dan ditujukan

untuk kategori perangkat yang digunakan. Sebagai contoh, 1010 biner ditujukan untuk

serial EEPROM. Tiga bit berikutnya memungkinkan 8 kombinasi alamat dengan 8

perangkat bertipe sama dan beroperasi pada jalur I2C yang sama. Pengiriman data hanya

dapat dimulai saat kondisi bus I2C tidak sibuk, ditandai dengan logika high yang cukup

lama pada pin SCL maupun SDA. Selama pengiriman data, SDA harus dalam keadaan

stabil saat SCL berlogika high. Perubahan kondisi SDA pada saat SCL high dianggap

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: SINKRONISASI JAM DIGITAL NIRKABEL - USD

15

sebagai sinyal-sinyal kendali, seperti: sinyal start (high ke low) atau sinyal stop (low ke

high). Gambar 2.10 menunjukkan transfer data pada I2C.

Gambar 2.10 Transfer data pada I2C [18]

2.3.3 Definisi Kondisi Bus I2C [18]

Definisi kondisi bus pada sistem komunikasi serial I2C/TWI dijelaskan sebagai

berikut:

a. Bus tidak sibuk (bus not busy): menyatakan kondisi bus tidak sibuk, yaitu pada saat

SCL dan SDA berlogika high.

b. Mulai transfer data (start data transfer): ditandai dengan perubahan kondisi SDA

dari high ke low saat SCL berlogika high.

c. Akhiri transfer data (stop data transfer): ditandai dengan perubahan kondisi SDA

dari low ke high saat SCL dalam berlogika high.

d. Data valid: jika setelah start, kondisi SDA tidak berubah selama SCL high, baik

SDA high maupun SDA low tergantung dari bit yang ingin ditransfer, maka data

yang dikirim bit demi bit dianggap valid. Setiap siklus SCL high baru menandakan

pengiriman bit baru. Duty cycle untuk SCL tidak harus 50%, tetapi frekuensi

kemunculannya hanya ada dua macam, yaitu mode standar 100 kHz dan fast mode

atau mode cepat 400 kHz. Setelah SCL mengirimkan sinyal high yang ke-8, arah

transfer SDA berubah dan sinyal ke-9 pada SDA ini dianggap sebagai acknowledge

dari receiver ke transmitter. DS1307 hanya bisa melakukan transfer pada mode

standar 100 kHz.

e. Pemberitahuan (Acknowledge): receiver wajib mengirimkan sinyal acknowledge

atau sinyal balasan setiap selesai pengiriman 1 Byte (8 bit data). Master harus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: SINKRONISASI JAM DIGITAL NIRKABEL - USD

16

memberikan extra clock atau clock tambahan pada SCL, yaitu clock ke-9 yang

memberikan kesempatan receiver untuk mengirimkan sinyal acknowledge ke

transmitter berupa logika low pada SDA selama SCL high. Meskipun master

berperan sebagai receiver, master tetap berperan sebagai penentu sinyal stop. Pada

bit akhir penerimaan Byte terakhir, master tidak mengirimkan sinyal acknowledge.

SDA dibiarkan high oleh receiver dalam hal ini master, kemudian master

mengubah logika SDA dari low menjadi high yang berarti sinyal stop.

2.3.4 Peta Alamat (Address Map) RTC DS1307

Peta alamat RTC dan register RAM DS1307 ditunjukkan pada Tabel 2.6. Register

RTC terletak di alamat 00h sampai 07h, sedangkan register RAM terletak di alamat 08h

sampai 3Fh.

Tabel 2.6 Register RTC dan RAM [18]

Alamat Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Fungsi Keterangan

00h CH Detik 00-59

01h 0 Menit 00-59

12 10 jam 1-12+AM/PM

24 PM/AM

03h 0 0 0 0 0 Hari 01-07

04h 0 0 Tanggal 01-31

05h 0 Bulan 01-12

06h Tahun 00-99

07h out 0 0 SQWE 0 0 RS1 RS0 Kontrol -

08h-3Fh RAM 56 x 8 00h-FFh

Menit

Detik

10 menit

10 detik

JamJam

Tahun

Bulan

002h 10 jam

Hari

10 hari (tanggal) Tanggal

2.4 Transceiver Nordic nRF24L01

nRF24L01 adalah transceiver radio dengan cip tunggal yang digunakan pada band

ISM (Industrial, Scientific, dan Medical) 2,4 GHz - 2,5 GHz. Transceiver nRF24L01

terdiri dari frekuensi synthesizer yang terintegrasi, penguat daya, osilator kristal,

demodulator, modulator dan protokol Enhanced ShockBurst™. Daya output, kanal

frekuensi, dan protokol diprogram melalui SPI [5]. Modulasi yang digunakan adalah

modulasi GFSK. Parameter kanal frekuensi, daya output, dan data rate GFSK dapat

diubah. Konfigurasi pin dan keterangan konfigurasi pin nRF24L01 ditunjukkan pada

Gambar 2.11 dan Tabel 2.7.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: SINKRONISASI JAM DIGITAL NIRKABEL - USD

17

Gambar 2.11Konfigurasi pin nRF24L01 [5]

Tabel 2.7 Keterangan konfigurasi pin nRF24L01 [5]

No Pin Nama Pin Fungsi Pin Keterangan

1 CE Input digital Pin enable untuk mengaktifkan mode RX atau TX

2 CSN Input digital SPI chip select /SPI slave select

3 SCK Input digital SPI clock

4 MOSI Input digital SPI slave data input

5 MISO Output digital SPI slave data output dengan pilihan tri-state

6 IRQ Output digital Pin maskable interrupt, aktif rendah

7 VDD Sumber tegangan Sumber tegangan (+1,9 V sampai dengan +3,6 V)

8 VSS Sumber tegangan Ground

9 XC2 Output analog Terhubung dengan kristal pin 2

10 XC1 Input analog Terhubung dengan kristal pin 1

11 VDD_PA Sumber Tegangan Output Output untuk penguat daya internal

12 ANT1 RF Antarmuka antena 1

13 ANT2 RF Antarmuka antena 2

14 VSS Sumber tegangan Ground

15 VDD Sumber tegangan Sumber tegangan (+1,9 V sampai dengan +3,6 V)

16 IREF Input analogArus referensi, terhubung dengan resistor 2,2 kΩ dengan

ground

17 VSS Sumber tegangan Ground

18 VDD Sumber tegangan Sumber tegangan (+1,9 V sampai dengan +3,6 V)

19 DVDD Output Output internal untuk de-coupling

20 VSS Sumber tegangan Ground

Arus yang digunakan sangat rendah, yaitu 9 mA pada daya output -6 dBm dan 12,3

mA pada mode RX. Mode Power Down dan Standby membuat penghematan daya dapat

direalisasikan. Metode penanganan paket (packet handling) yang digunakan adalah [20]:

a. ShockBurst™ (kompatibel dengan nRF2401, nRF24E1 nRF2402 dan nRF24E2

dengan data rate 1 Mbps),

b. Enhanced ShockBurst™.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: SINKRONISASI JAM DIGITAL NIRKABEL - USD

18

nRF24L01 yang dikonfigurasi sebagai RX primer (PRX) dapat menerima data

melalui 6 pipa data (data pipe) yang berbeda. Sebuah pipa data akan memiliki alamat unik,

tetapi memiliki kanal frekuensi yang sama [20]. Enam pipa data multiceiver ini dapat

dikonfigurasikan dalam topologi star 1:6 [5]. Fitur multiceiver nRF24L01 dapat digunakan

untuk membangun Personal Area Network dalam berbagai aplikasi [21].

nRF24L01 dilengkapi dengan baseband protocol engine (Enhanced ShockBurst™)

yang mendukung aplikasi nirkabel berdaya rendah. Fitur utama Enhanced ShockBurst™

adalah:

a. Panjang data yang dinamis (dynamic payload length) dari 1 sampai 32 Byte,

b. Penanganan paket data otomatis (automatic packet),

c. Penanganan transaksi paket data otomatis (auto packet transaction),

d. Pengenalan otomatis (auto acknowledgement),

e. Pengiriman data kembali secara otomatis (auto retransmit).

Mode dynamic payload memungkinkan komunikasi half duplex antara slave dan

master dan komunikasi half duplex lebih menghemat konsumsi daya. Selain itu, dengan

auto packet transaction komunikasi menjadi cukup aman dan kuat [22].

GFSK adalah teknik modulasi dimana data melewati low-pass filter Gaussian

sebelum dimodulasi dengan FSK [23]. GFSK adalah salah satu bentuk dari Continuous

Phase Frequency Shift Keying (CPFSK). Dua teknik modulasi ini merupakan turunan dari

FSK yang efisiensi dayanya rendah, tetapi kebutuhan bandwidth FSK semakin lebar

dengan meningkatnya simbol modulasi. Pada aplikasi modern dengan data-rate yang

rendah, modulasi GFSK menggunakan fungsi Gaussian sebagai pulsa membentuk filter

untuk mengurangi bandwidth transmisi [24].

Kata Gaussian pada GFSK mengacu pada bentuk sinyal radio. GFSK membatasi

pancaran/emisi untuk sebuah jalur spektrum yang relatif sempit dan dengan demikian

sesuai untuk keperluan sekunder. Teknik pemrosesan sinyal yang baik adalah mencegah

meluasnya kebocoran energi RF, terutama bagi pengguna sekunder dari sebuah jalur

frekuensi [25].

2.5 Penampil Liquid Crystal Display (LCD)

LCD adalah material yang mengalir seperti cairan, tetapi memiliki struktur molekul

dengan sifat-sifat yang bersesuaian dengan padatan (solid). Ada 2 tipe utama LCD yang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: SINKRONISASI JAM DIGITAL NIRKABEL - USD

19

dikembangkan, yaitu field effect dan dynamic scattering. Keunggulan LCD dibandingkan

dengan LED adalah daya yang diperlukan lebih rendah, tampilan yang lebih lengkap

(angka, huruf grafis dan warna) dan kemudahan dalam memprogram. Kerugian LCD

dibandingkan dengan LED adalah waktu hidup (lifetime) yang lebih singkat, waktu

tanggap yang lebih lambat dan memerlukan sumber cahaya baik internal atau eksternal

[26].

LCD yang dipakai adalah LCD Topway LMB162AFC 2x16 karakter yang

kompatibel dengan Hitachi tipe HD44780U. LCD memerlukan tiga jalur kontrol dan

delapan jalur data (untuk mode 8 bit) atau empat jalur data (untuk mode 4 bit). Ketiga jalur

kontrol yang dimaksud adalah pin E, RS, dan R/W. Gambar 2.12 menunjukkan bentuk

fisik modul LCD, dan Tabel 2.8 menunjukkan konfigurasi pin 1-16 pada LCD Topway.

Gambar 2.12 Bentuk fisik modul LCD Topway [27]

Tabel 2.8 Keterangan konfigurasi pin LCD Topway [28]

No Pin Nama Pin Fungsi Pin Keterangan

1 VSS Sumber tegangan Ground

2 VDD Sumber tegangan Sumber tegangan positif

3 V0 Sumber tegangan Sumber tegangan referensi untuk mengatur kontras LCD

4 RS Sumber tegangan Register select

5 R/W Input Read/write control bus

6 E Input Data enable, biasanya juga disebut EN

7 DB0

8 DB1

9 DB2

10 DB3

11 DB4

12 DB5

13 DB6

14 DB7

15 BLA Sumber tegangan Sumber tegangan positif backlight

16 BLK Sumber tegangan Sumber tegangan negatif backlight

I/O Bi-directional tri-state data bus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: SINKRONISASI JAM DIGITAL NIRKABEL - USD

20

Pin E adalah pin Enable yang digunakan untuk mengaktifkan LCD. Sebelum

mengirim data ke LCD pin E harus berlogika high, kemudian jalur kontrol yang lain

diprogram. Data yang dikirim terletak pada jalur data. Transisi dari logika high ke logika

low memberitahu LCD untuk mengambil data pada jalur kontrol dan jalur data. Pin RS

adalah pin register select. Saat pin RS berlogika low, data yang dikirim adalah perintah-

perintah seperti membersihkan layar, posisi kursor, dan lain-lain. Jika pin RS berlogika

high, maka data yang dikirim adalah teks data dimana teks ini yang harus ditampilkan pada

layar. Pin R/W adalah pin Read/Write. Pada saat pin R/W berlogika low, informasi pada

jalur data berupa pengiriman data ke LCD (write). Sedangkan saat pin R/W berlogika high,

informasi pada jalur data berupa pengambilan data dari LCD (read) [26].

2.6 Penampil 7 Segment

Seven segment merupakan LED yang disusun atas 7 segment yang dipergunakan

untuk menampilkan angka 0 sampai 9 dan sejumlah karakter alfabet.

Gambar 2.13 Tampilan 7 segment [19]

Seven segment terdiri dari dua konfigurasi, yaitu common anode dan common

cathode. Seven segment tipe common anode, anode dari setiap LED dihubungkan menjadi

satu dan dihubungkan dengan sumber tegangan positif [19]. Katode dari masing-masing

LED berfungsi sebagai input dari 7 segment, seperti ditunjukkan pada Gambar 2.14.

Gambar 2.14 Konfigurasi 7 segment tipe common anode [19]

Sesuai dengan Gambar 2.14, untuk menyalakan salah satu segmen, maka katode

diberi logika low. Jika segmen „a‟ akan dinyalakan, maka katode pada segmen „a‟ harus

diberi logika low, dengan demikian segmen „a‟ akan menyala.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: SINKRONISASI JAM DIGITAL NIRKABEL - USD

21

Seven segment tipe common cathode, katode dari setiap LED dihubungkan menjadi

satu dan dihubungkan dengan ground dan anode dari masing-masing LED berfungsi

sebagai input dari 7 segment.

Gambar 2.15 Konfigurasi 7 segment tipe common cathode [19]

Sesuai dengan Gambar 2.15, untuk menyalakan salah satu segmen, maka diberi

logika high. Jika segmen „a‟ akan dinyalakan, maka anode pada segmen „a‟ harus diberi

logika high, dengan demikian maka segmen „a‟ akan menyala.

2.7 IC 74HC595

IC 74HC595 adalah IC dengan 8-bit serial-in, serial or parallel-out shift register

with output latches. Salah satu aplikasi IC 74HC595 adalah menambah jumlah I/O

mikrokontroler.

Gambar 2.16 Konfigurasi pin IC 74HC595 [29]

Tabel 2.9 Keterangan konfigurasi pin IC 74HC595 [29]

No Pin Nama Pin Keterangan No Pin Nama Pin Keterangan

1 Q1 9 Q7' Output data serial

2 Q2 10 MR Master reset

3 Q3 11 SH_CP Shift register clock input

4 Q4 12 ST_CP Storage register clock input

5 Q5 13 OE Output enable

6 Q6 14 DS Input data serial

7 Q7 15 Q0 Output data pararel

8 GND Ground 16 Vcc Sumber tegangan

Output data pararel

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: SINKRONISASI JAM DIGITAL NIRKABEL - USD

22

Konfigurasi pin IC 74HC595 ditunjukkan pada Gambar 2.16 dan keterangan

konfigurasi pin ditunjukkan pada Tabel 2.9. Diagram waktu IC 74HC595 ditunjukkan pada

Gambar 2.17.

Gambar 2.17 Diagram waktu IC 74HC595 [29]

2.8 Buzzer

Buzzer digunakan sebagai penghasil bunyi. Frekuensi bunyi buzzer dapat diatur

sesuai yang diinginkan dengan cara mengatur program pada mikrokontroler [9]. Rangkaian

buzzer ditunjukkan pada Gambar 2.18.

Gambar 2.18 Rangkaian buzzer

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: SINKRONISASI JAM DIGITAL NIRKABEL - USD

23

Nilai buzz_RE dan buzz_RB

ditentukan dengan perhitungan:

MAXCC I

2

1I (2.2)

FE

C

Bh

II (2.3)

E

ECC

B

REE

I

VV

I

Vbuzz_R

(2.4)

B

1BEBRECC

B

RBB

I

VPVVV

I

Vbuzz_R

(2.5)

2.9 Visual Basic

Visual Basic adalah salah satu bahasa pemrograman komputer. Bahasa

pemrograman adalah perintah-perintah yang dimengerti oleh komputer untuk melakukan

tugas-tugas tertentu. Visual Basic dikembangkan oleh Microsoft sejak tahun 1991 dan

merupakan pengembangan dari bahasa pemrograman BASIC (Beginner’s All-purpose

Symbolic Instruction Code) yang dikembangkan pada era 1950-an. Visual Basic

merupakan salah satu development tool, yaitu alat bantu untuk membuat berbagai macam

program komputer, khususnya yang menggunakan sistem operasi Windows. Visual Basic

merupakan salah satu bahasa pemrograman komputer yang mendukung penggunaan obyek

(Object Oriented Programming = OOP) [30].

Tampilan Integrated Development Environment Visual Basic ditunjukkan pada

Gambar 2.19. Bagian-bagian utama IDE Visual Basic yang ditunjukkan Gambar 2.19

adalah sebagai berikut:

a. Palang Menu/Menubar

b. Toolbar

c. Toolbox

d. Jendela Form

e. Jendela Code

f. Project Explorer

g. Jendela Property

Dalam pemrograman berbasis obyek (OOP) perlu dipahami istilah object, property,

method dan event. Object adalah komponen di dalam sebuah program. Property adalah

karakteristik yang dimiliki object. Method adalah aksi yang dapat dilakukan oleh object.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: SINKRONISASI JAM DIGITAL NIRKABEL - USD

24

Event adalah kejadian yang dapat dialami oleh object. Ilustrasi object, property, method

dan event ditunjukkan Gambar 2.20.

Gambar 2.19 IDE Visual Basic

Gambar 2.20 Ilustrasi object, property, method dan event

2.10 UNIX Timestamp

UNIX timestamp juga biasa disebut sebagai POSIX/epoch time [31]. Tipe data

UNIX timestamp adalah integer 32-bit yang digunakan untuk merepresentasikan jumlah

detik sejak tanggal 1 Januari 1970s. Salah satu contoh representasi UNIX timestamp adalah

1314067316 yang berarti tanggal 23 Agustus 2011 pukul 02:41:56.

OBJECT: FORM

Property:

- Caption

- Enable

- Visible

Method:

- Hide

- Show

- Move

Event:

- Click

- Load

- Resize

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: SINKRONISASI JAM DIGITAL NIRKABEL - USD

25

3BAB III

RANCANGAN PENELITIAN

[1-31]

Bab ini menjelaskan mengenai perancangan sistem “Sinkronisasi Jam Digital

Nirkabel” terdiri dari Diagram Blok Sistem, Perancangan Perangkat Keras, dan

Perancangan Perangkat Lunak.

3.1 Diagram Blok Sistem

Perancangan diagram blok sistem Sinkronisasi Jam Digital Nirkabel ditunjukkan

pada Gambar 3.1:

Gambar 3.1 Diagram blok sistem

RTC

DS1307

NTP dan Komputer

LCD

Alarm

Mikrokontroler

ATmega328

(Master)

USART

SPI

Out I2C

Transceiver

nRF24L01

RTC

DS1307

Mikrokontroler

ATmega328

(Slave)

SPI

Out I2C

Transceiver

nRF24L01

Alarm 7 Segment RTC

DS1307

Mikrokontroler

ATmega328

(Slave)

SPI

Out I2C

Transceiver

nRF24L01

Alarm 7 Segment

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: SINKRONISASI JAM DIGITAL NIRKABEL - USD

26

Diagram blok penelitian ini terdiri dari 2 subsistem, yakni master dan slave. Sistem

terdiri dari 1 subsistem master dan 2 subsistem slave. Subsistem master berfungsi sebagai

pusat kontrol yang terhubung dengan komputer pada saat sinkronisasi waktu dengan server

NTP, dan mengatur waktu alarm. Subsistem slave berfungsi sebagai penerima data waktu

yang dikirimkan oleh master dan penampil jam digital dan alarm.

Subsistem master terdiri dari board Arduino Duemilanove ATmega328, rangkaian

RTC DS1307, rangkaian transceiver nRF24L01, rangkaian LCD, dan rangkaian alarm.

Komunikasi board Arduino dengan komputer melalui port USART ATmega328.

Pengaturan waktu dan alarm ditangani oleh Visual Basic (VB) agar memperoleh Graphical

User Interface (GUI) yang memudahkan pengguna (user friendly). VB terhubung dengan

internet untuk mendapatkan data waktu dari server NTP. Data waktu yang diperoleh VB

dikirimkan ke ATmega328 dan disimpan pada RTC. Data waktu RTC diolah ATmega328

untuk ditampilkan pada LCD dan secara periodik data waktu dikirimkan ke subsistem

slave. Agar subsistem slave memenuhi validasi sinkronisasi waktu, maka subsistem slave

akan mengirimkan data waktu yang ditampilkan jam digital pada subsistem master dalam

periode waktu tertentu. Jika terdapat kesalahan dalam penunjukan waktu dalam skala menit

pada subsistem slave, maka subsistem master mengirimkan data waktu ke subsistem slave

secara otomatis.

3.2 Perancangan Perangkat Keras Perancangan perangkat keras sistem dibagi menjadi dua bagian, yaitu subsistem

master dan subsistem slave. Perbedaan subsistem master dengan subsistem slave pada

perancangan perangkat keras terdapat pada rangkaian penampil. Rangkaian penampil pada

subsistem master adalah LCD, sedangkan subsistem slave adalah 7 segment.

3.2.1 Perancangan Subsistem Master

Perancangan subsistem master terdiri dari 5 bagian, yaitu Board Arduino

Duemilanove, Rangkaian RTC DS1307, Rangkaian Penampil LCD, Rangkaian

Transceiver nRF24L01, dan Rangkaian Alarm.

Tabel 3.1 Alokasi pin ATmega328 dengan RTC DS1307

Nomor Pin Nama Pin Nomor Pin Nama Pin

28 PC5 (SCL) 6 SCL

27 PC4 (SDA) 5 SDA

ATmega328 dan RTC DS1307

ATmega328 RTC DS1307

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: SINKRONISASI JAM DIGITAL NIRKABEL - USD

27

Tabel 3.2 Alokasi pin ATmega328 dengan LCD

Nomor Pin Nama Pin Nomor Pin Nama Pin

4 PD2 11 D4

5 PD3 12 D5

6 PD4 13 D6

11 PD5 14 D7

13 PD7 4 RS

14 PB0 6 E

ATmega328 dan LCD

ATmega328 LCD

Tabel 3.3 Alokasi pin ATmega328 dengan nRF24L01

Nomor Pin Nama Pin Nomor Pin Nama Pin

12 PC0 1 CE

16 PB2 (SS) 2 CSN

19 PB5 (SCK) 3 SCK

17 PB3 (MOSI) 4 MOSI

18 PB4 (MISO) 5 MISO

23 PD6 6 IRQ

ATmega328 dan nRF24L01

ATmega328 nRF24L01

Tabel 3.4 Alokasi pin ATmega328 dengan buzzer

Nomor Pin Nama Pin

15 PB1

ATmega328 dan Buzzer

ATmega328

Buzzer

Alokasi pin yang digunakan board Arduino Duemilanove (ATmega328) dengan

RTC DS1307 ditunjukkan pada Tabel 3.1. Alokasi pin ATmega328 dengan LCD

ditunjukkan pada Tabel 3.2. Alokasi pin ATmega328 dengan nRF24L01 ditunjukkan pada

Tabel 3.3. Alokasi pin ATmega328 dengan buzzer ditunjukkan pada Tabel 3.4.

3.2.1.1 Board Arduino Duemilanove

Sistem minimum ATmega328 yang digunakan subsistem master adalah board

Arduino Duemilanove. Penggunaan sistem minimum ATmega328 produksi Arduino Team

diharapkan dapat mengoptimalkan kinerja subsistem master. Alokasi pin untuk

ATmega328 yang digunakan subsistem master ditunjukkan pada Gambar 3.2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: SINKRONISASI JAM DIGITAL NIRKABEL - USD

28

Gambar 3.2 Alokasi pin subsistem master

Rangkaian osilator menggunakan crystal 16 MHz dan kapasitor 22 pF. Penentuan

nilai crystal 16 MHz sesuai dengan datasheet [15] dan penentuan nilai kapasitor M_C1 dan

M_C2 sebesar 22pF sesuai dengan anjuran nilai kapasitor pada application note dari Atmel

[17].

3.2.1.2 Rangkaian RTC DS1307

Protokol komunikasi serial yang digunakan RTC DS1307 adalah I2C/TWI. Pin

RTC DS1307 dan ATmega328 yang digunakan pada I2C adalah pin SCL dan SDA.

Perancangan rangkaian RTC DS1307 ditunjukkan Gambar 3.3.

Gambar 3.3 Rangkaian RTC DS1307

Penggunaan resistor pull-up RTC_R1 dan RTC_R2 dikarenakan pin SDA dan SCL

adalah open drain [18]. Frekuensi Crystal X_RTC sebesar 32,768 kHz sesuai dengan nilai

yang disarankan pada datasheet [18]. Baterai eksternal RTC_B1 digunakan sebagai sumber

tegangan cadangan saat RTC DS1307 tidak mendapatkan sumber tegangan Vcc.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: SINKRONISASI JAM DIGITAL NIRKABEL - USD

29

3.2.1.3 Rangkaian Penampil LCD

Penampil yang digunakan adalah LCD Topway LMB162AFC 2x16 karakter dan

dikonfigurasikan menggunakan 4 jalur data (mode 4 bit). Pin LCD nomor 5 dihubungkan

dengan ground, sehingga berlogika rendah dan pin R/W LCD dalam keadaan W (Write).

Perancangan rangkaian penampil LCD ditunjukkan Gambar 3.4

Gambar 3.4 Rangkaian penampil LCD

3.2.1.4 Rangkaian Transceiver nRF24L01

Rangkaian transceiver nRF24L01 yang digunakan sudah dalam bentuk modul yang

diproduksi oleh Sparkfun. Modul transceiver nRF24L01 ditunjukkan pada Gambar 3.5.

Modul transceiver nRF24L01 menggunakan cip nRF24L01+ yang diproduksi oleh Nordic

Semiconductor dan bekerja pada band ISM 2,400 GHz - 2,4835 GHz. Modul ini dilengkapi

dengan regulator tegangan 3,3 V dan chip antenna. Modul transceiver nRF24L01

digunakan sebagai pengirim dan penerima data waktu dari atau menuju ATmega328.

Gambar 3.5 Modul transceiver nRF24L01 [32]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: SINKRONISASI JAM DIGITAL NIRKABEL - USD

30

Penghubungan modul transceiver nRF24L01 dengan ATmega328 ditunjukkan

pada Gambar 3.6. Metode pengiriman data antara nRF24L01 dengan ATmega328

menggunakan SPI.

Gambar 3.6 Rangkaian penghubung modul transceiver nRF24L01

3.2.1.5 Rangkaian Alarm

Perancangan rangkaian alarm menggunakan transistor PNP A733 yang

dikonfigurasikan sebagai saklar untuk mengaktifkan buzzer dan output transistor aktif

rendah. Bunyi output buzzer dapat diubah sesuai dengan frekuensi output pin PB1 pada

program mikrokontroler. Rangkaian alarm ditunjukkan pada Gambar 3.7.

Gambar 3.7 Rangkaian Alarm

Perancangan rangkaian alarm mengikuti persamaan 2.2, 2.3, 2.4, dan 2.5. Tegangan

EV yang diinginkan adalah 3 V. Arus penguatan dc transistor A733 ( FEh ) adalah 90 dan

arus maksimal pada kaki collector (MAXCI ) sebesar 150 mA [33].

Nilai buzzRB _ dan buzzRE _ adalah

mA75101502

1maxI

2

1I 3

CC

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: SINKRONISASI JAM DIGITAL NIRKABEL - USD

31

A32,83390

1075

h

II

3

FE

CB

Karena BI sangat kecil, maka CE II

67,261075

35

I

VV

I

Vbuzz_R

3

E

ECC

B

REE

Rangkaian aktif saat basis berlogika low (tegangan pada 1BVP 0 V)

27601032,833

07,025

I

VPVVV

I

Vbuzz_R

6

B

1BEBRECC

B

RBB

Menyesuaikan ketersediaan nilai resistor di pasaran, maka nilai buzzRE _ yang

digunakan 27 dan buzzRB _ yang digunakan 2700 .

3.2.2 Perancangan Subsistem Slave

Subsistem slave yang dibuat terdiri dari 2 buah perangkat keras. Dua perangkat

keras ini mempunyai 2 komponen rangkaian yang sama. Perancangan subsistem slave

terdiri dari Sistem Minimum ATmega328 dan Rangkaian Penampil 7 Segment. Alokasi pin

yang digunakan ATmega328 subsistem slave dengan RTC DS1307, nRF24L01, dan buzzer

sama dengan alokasi pin untuk subsistem master (Tabel 3.1, Tabel 3.3, dan Tabel 3.4).

3.2.2.1 Sistem Minimum ATmega328

Sistem minimum ATmega328 untuk subsistem slave mengadaptasi rangkaian

board Arduino Duemilanove.

Gambar 3.8 Sistem minimum dan alokasi pin subsistem slave

Sistem minimum ATmega328 berfungsi sebagai penerima data waktu dari

subsistem master, menampilkan data waktu ke penampil 7 segment, dan mengirimkan data

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: SINKRONISASI JAM DIGITAL NIRKABEL - USD

32

waktu ke subsistem master dalam periode tertentu. Sistem minimum dan alokasi pin

subsistem slave ditunjukkan pada Gambar 3.8.

Rangkaian osilator menggunakan crystal 16 MHz dan kapasitor 22 pF. Penentuan

nilai crystal 16 MHz sesuai dengan datasheet [15] dan penentuan nilai kapasitor S_C1 dan

S_C2 sebesar 22pF sesuai dengan anjuran nilai kapasitor pada application note dari Atmel

[17].

3.2.2.2 Rangkaian Penampil 7 Segment

Alokasi pin ATmega328 dengan rangkaian penampil 7 segment ditunjukkan pada

Tabel 3.5. Rangkaian penampil 7 segment ditunjukkan pada Gambar 3.9.

Tabel 3.5 Alokasi pin ATmega328 dengan 7 Segment (74HC595), dan LED

Nomor Pin Nama Pin Nomor Pin Nama Pin

4 PD2 14 DS (SERIN)

5 PD3 12 ST_CP (LATCH)

6 PD4 11 SH_CP (CLK)

11 PD5

ATmega328, 7 Segment (74HC595), dan LED

ATmega328 74HC595

LED

Gambar 3.9 Rangkaian penampil 7 segment

Data waktu yang ditampilkan adalah jam dan menit. LED L_D1 berfungsi sebagai

data waktu untuk detik. Penampilan data waktu dari ATmega328 ke 7 segment melalui

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: SINKRONISASI JAM DIGITAL NIRKABEL - USD

33

komunikasi serial lewat IC 74HC595. Jika pin 12 (LATCH) IC 74HC595 berlogika low,

maka IC 74HC595 dalam kondisi mendengarkan (listening). Pin 11 (CLK) IC 74HC595

berfungsi untuk mengatur pergeseran bit input. Pin 14 (SERIN) IC 74HC595 digunakan

untuk meneruskan data bit yang akan digeser.

Daftar susunan biner pada tampilan 7 segment, berdasarkan susunan pin-pin LED 7

segment ditunjukkan pada Tabel 3.6

Tabel 3.6 Susunan biner pin-pin 7 segment

Desimal h g f e d c b a

0 0 0 1 1 1 1 1 1

1 0 0 0 0 0 1 1 0

2 0 1 0 1 1 0 1 1

3 0 1 0 0 1 1 1 1

4 0 1 1 0 0 1 1 0

5 0 1 1 0 1 1 0 1

6 0 1 1 1 1 1 0 1

7 0 0 0 0 0 1 1 1

8 0 1 1 1 1 1 1 1

9 0 1 1 0 1 1 1 1

3.3 Perancangan Perangkat Lunak

Perancangan perangkat lunak digunakan untuk memudahkan implementasi

program Visual Basic dan dalam pemrograman Arduino. Perancangan perangkat lunak

ditunjukkan dalam bentuk diagram alir. Perancangan perangkat lunak terdiri dari

Perancangan Program Visual Basic, Diagram Alir Subsistem Master, dan Diagram Alir

Subsistem Slave.

3.3.1 Perancangan Program Visual Basic

Perancangan GUI Visual Basic ditunjukkan pada Gambar 3.10. Salah satu obyek

VB yang digunakan pada perancangan GUI sistem Sinkronisasi Jam Digital Nirkabel

adalah frame. Frame pada sistem ini digunakan untuk memudahkan penunjukan urutan

program (program sequence) dengan mengatur property enabled-nya. Diagram alir utama

GUI Visual Basic ditunjukkan pada Gambar 3.11 dan memiliki 3 subrutin program, yakni:

subrutin atur sinkronisasi dan port komunikasi, subrutin atur alarm, dan subrutin kirim data

ke Arduino.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: SINKRONISASI JAM DIGITAL NIRKABEL - USD

34

Sinkronisasi Waktu

Gambar 3.10 GUI Visual Basic

Atur

SINKRONISASI

dan COMM PORT

Atur alarm

Command button

Kirim ditekan?

Kirim data ke

Arduino

Y

T

Inisialisasi

Selesai

Mulai

Command button

Tutup GUI ditekan?

T

Y

Gambar 3.11 Diagram alir utama GUI Visual Basic

Obyek-obyek yang digunakan pada perancangan GUI pada Gambar 3.10

ditunjukkan pada Tabel 3.7.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: SINKRONISASI JAM DIGITAL NIRKABEL - USD

35

Tabel 3.7 Obyek pada GUI Visual Basic

Nama Obyek

(Caption/Text)Format Data Fungsi

Kirim ke Arduino -Untuk mengirimkan data waktu komputer dan

data waktu alarm ke Arduino (subsistem master )

Tutup GUI - Untuk mengakhiri program VB

Status Sinkronisasi StringUntuk mengetahui selisih data waktu komputer

dengan waktu NTP

Pilih Server String Untuk memilih server NTP

Ambil Data Waktu

NTP-

Untuk mengambil data waktu NTP, dan digunakan

untuk mengoreksi data waktu komputer

COM PORT StringUntuk menentukan port komunikasi yang

digunakan, contohnya : COM 1, COM 2, d.s.t.

Jam Mulai Time(HH)Untuk memilih jam memulai alarm. Isi combo box

adalah angka 01-24.

Menit Mulai Time (MM)Untuk memilih menit memulai alarm. Isi combo

box adalah angka 00-55, kelipatan 5 menit.

Jam Akhir Time(HH)Untuk memilih jam mengakhiri alarm. Isi combo

box adalah angka 01-24.

Menit Akhir Time (MM)Untuk memilih menit mengakhiri alarm. Isi combo

box adalah angka 00-55, kelipatan 5 menit.

Jam Interval Time(HH)Untuk memilih jam interval alarm. Isi combo box

adalah angka 01-24.

Menit Interval Time(MM)Untuk memilih menit interval alarm. Isi combo box

adalah adalah angka 00-55, kelipatan 5 menit.

Alarm 1 - 6 Boolean Untuk mengaktifkan alarm yang dipilih

Jam Alarm 1 - 6 Time(HH)Untuk memilih jam alarm. Isi combo box adalah

angka 01-24.

Menit Alarm 1 - 6 Time (MM)Untuk memilih menit alarm. Isi combo box adalah

angka 00-55, kelipatan 5 menit.

Frame Pengaturan Sinkronisasi Waktu

Frame COM PORT (Port Komunikasi)

Frame Mode Interval (Alarm)

Frame Mode Jam Tertentu (Alarm)

Proses pertama yang dilakukan VB adalah inisialisasi obyek dan variabel, lalu

mengecek kondisi command button tutup GUI. Jika command button tutup GUI ditekan,

maka form VB ditutup. Jika command button tutup GUI tidak ditekan, maka proses

berlanjut ke subrutin atur sinkronisasi dan port komunikasi dan subrutin atur alarm.

Setelah pengguna mengatur waktu alarm, program mengecek kondisi command button

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: SINKRONISASI JAM DIGITAL NIRKABEL - USD

36

kirim ke Arduino. Jika dalam keadaan tidak ditekan, maka program kembali mengecek

kondisi command button tutup GUI. Jika dalam keadaan ditekan, maka program berlanjut

ke subrutin kirim data ke Arduino.

3.3.1.1 Subrutin Atur Sinkronisasi dan Port Komunikasi

Frame yang dapat diatur pada saat program dijalankan adalah frame pengaturan

sinkronisasi waktu dan COMM PORT. Hal ini dimaksudkan agar pengguna memilih time

server dan mengatur port komunikasi (communication port) sebelum mengatur alarm.

Frame pengaturan sinkronisasi digunakan untuk mengatur komunikasi antara GUI dengan

NTP server dan komponen VB yang digunakan adalah Microsoft Winsock Control 6.0

[34]. Frame COMM PORT digunakan untuk memilih port komunikasi antara GUI dengan

Arduino Duemilanove dan komponen VB yang digunakan adalah Microsoft Common

Control 6.0. Diagram alir subrutin atur sinkronisasi dan port komunikasi ditunjukkan pada

Gambar 3.12.

Pilih server

NTP

Command button Ambil

Data Waktu NTP

ditekan?

Cocokkan waktu

komputer

Tampilkan status

sinkronisasi

Tampilkan

waktu komputer

Ret

Mulai

Atur COMM PORT ?

Pilih

COMM PORT

Y

T

Y

T

Terima

data waktu

dari NTP?

Y

T

Gambar 3.12 Diagram alir subrutin atur sinkronisasi dan port komunikasi

Program dimulai dengan memilih server NTP, kemudian mengatur port

komunikasi. Jika command button ambil data waktu NTP ditekan, maka program

mengecek apakah menerima data waktu dari server NTP. Jika tidak menerima data waktu,

maka pengguna harus memilih server NTP lagi. Proses pencocokan waktu komputer

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: SINKRONISASI JAM DIGITAL NIRKABEL - USD

37

dilakukan jika program menerima data waktu dari server NTP. Status sinkronisasi

digunakan untuk menampilkan selisih waktu komputer dengan waktu server NTP.

3.3.1.2 Subrutin Atur Alarm

Diagram alir subrutin atur alarm ditunjukkan pada Gambar 3.13.

Mode Alarm

MATI?

Mulai

Ret

Y

Mode Alarm

INTERVAL?T

Mode Alarm

JAM TERTENTU?

T

Slave 1

dipilih?

Frame Slave 1

enabled=FalseT

Frame Slave 2

enabled=False

T

Atur waktu alarm

Slave 1

Y

Frame Mode Interval

enabled=True

Y

Frame Mode

Interval

enabled=False

Frame Mode

Jam Tertentu

enabled=False

T

Atur waktu alarm

Slave 2

Slave 2

dipilih?

Y

A

A

Slave 1

dipilih?

Frame Slave 1

enabled=FalseT

Frame Slave 2

enabled=False

T

Atur waktu

alarm 1-6

Slave 1

Y

Frame Mode

Jam Tertentu

enabled=True

Slave 2

dipilih?

Y

Y

A

Atur waktu

alarm 1-6

Slave 2

Gambar 3.13 Diagram alir subrutin atur alarm

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: SINKRONISASI JAM DIGITAL NIRKABEL - USD

38

Subrutin atur alarm digunakan untuk mengatur mode alarm dan menentukan waktu

alarm. Terdapat 3 mode alarm pada sistem ini, yaitu: mode alarm mati, mode alarm

interval, dan mode alarm jam tertentu. Mode alarm hanya berfungsi pada subsistem slave.

Mode alarm mati menandakan bahwa tidak ada pengaturan waktu alarm untuk subsistem

slave. Mode alarm interval digunakan untuk mengatur waktu alarm dengan interval waktu

tertentu. Mode alarm interval memiliki 3 input, yaitu: waktu mulai alarm, waktu akhir

alarm, dan interval alarm. Mode alarm jam tertentu memiliki 6 input waktu alarm yang

dapat digunakan untuk mengatur waktu alarm pada jam-jam tertentu.

3.3.1.3 Subrutin Kirim Data ke Arduino

Diagram alir subrutin kirim data ke Arduino ditunjukkan pada Gambar 3.14.

Subrutin ini digunakan untuk mengirimkan data waktu komputer dan data waktu alarm ke

Arduino. Data waktu komputer yang dikirimkan ke Arduino dalam bentuk Unix timestamp.

Data dikirim melalui port USB atau port serial komputer. Waktu komputer digunakan

sebagai acuan pengiriman data waktu karena sudah tersinkronisasi dengan server NTP.

Mulai

Ambil data waktu alarm

dan tambahkan header

Ambil waktu komputer

dan tambahkan header

Kirim waktu komputer

dan data waktu alarm

Ret

Ambil nilai COMM PORT

Gambar 3.14 Diagram alir subrutin kirim data ke Arduino

3.3.2 Diagram Alir Subsistem Master

Diagram alir subsistem master ditunjukkan pada Gambar 3.15. Program subsistem

master diawali dengan pengecekan data dari VB. Jika ada masukan data waktu komputer

dan data waktu alarm, maka subsistem master menyimpan data waktu pada RTC dan

EEPROM Arduino. Jika tidak ada masukan data dari VB, maka subsistem master

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: SINKRONISASI JAM DIGITAL NIRKABEL - USD

39

membandingkan data waktu RTC dengan data waktu EEPROM. Jika data waktu RTC

sebanding dengan data waktu EEPROM yang menandakan bahwa slave 1 dan/atau slave 2

harus membunyikan alarm, maka subsistem master memberikan peringatan alarm pada

subsistem slave 1 dan/atau slave 2 untuk membunyikan alarm. Data waktu pada RTC

dikirimkan ke subsistem slave setiap 1 jam. Akhir program dari subsistem master adalah

pengecekan kiriman data waktu subsistem slave yang dapat digunakan untuk memonitor

data waktu yang ditampilkan subsistem slave.

Mulai

Ada data waktu

komputer?

Y

Terima data

waktu komputer

Simpan data di

RTC

Ada data waktu

alarm?T

Terima data

alarm

Simpan data di

EEPROM Arduino

Y

Bandingkan data

waktu RTC dan

data waktu alarm

T

Data waktu RTC

=

Data waktu alarm?

Kirim peringatan

alarm ke Slave

Y

Waktu sinkronisasi

=

1 jam?

T

Kirim data waktu

RTC ke Slave

Y

T

Terima data waktu

dari Slave

Y

T

Selesai

Ada data waktu

dari Slave?

Tampilkan

ke LCDTampilkan

data waktu

RTC ke LCD

Gambar 3.15 Diagram alir subsistem master

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: SINKRONISASI JAM DIGITAL NIRKABEL - USD

40

3.3.3 Diagram Alir Subsistem Slave

Diagram alir utama subsistem slave ditunjukkan pada Gambar 3.16. Program

subsistem slave diawali dengan pengecekan data waktu dari subsistem master dan

pengecekan peringatan alarm dari subsistem master. Data waktu yang diterima subsistem

slave disimpan di RTC dan ditampilkan pada 7 segment. Setiap 15 menit subsistem slave

mengirimkan data waktu RTC ke subsistem master.

Mulai

Selesai

Apakah

ada data waktu

dari Master?

Apakah

ada peringatan alarm

dari Master?

Simpan data di

RTC

Bunyikan

alarm

Waktu

kirim balik ke master

=

15 menit?

Kirim data waktu

RTC ke MasterY

T

Y Y

T T

Tampilkan

data waktu

RTC ke 7 segment

Gambar 3.16 Diagram alir utama subsistem slave

3.3.3.1 Subrutin Tampilkan Data Waktu RTC ke 7 Segment

Diagram alir subrutin tampilkan data waktu RTC ke 7 segment ditunjukkan pada

Gambar 3.17. Pin PD3 ATmega328 (pin latch IC 74HC595) diatur pada kondisi low agar

IC 74HC595 dalam kondisi mendengarkan (listening). Program selanjutnya adalah

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: SINKRONISASI JAM DIGITAL NIRKABEL - USD

41

mengambil data waktu RTC untuk dikirimkan ke IC 74HC595 melalui pin PD2 (pin serin

IC 74HC595). Pin PD4 (pin clock IC 74HC595) dikondisikan pada keadaan toggle agar

dapat menggeser data waktu pada pin PD2, kemudian menampilkan data waktu ke 7

segment. Jika masih ada data yang harus digeser, maka program kembali mengirimkan data

waktu RTC selanjutnya melalui pin PD4 dan digeser oleh pin PD2. Jika sudah tidak ada

data waktu yang akan digeser, pin PD3 diatur pada kondisi high agar menghiraukan data

(keadaan deaf).

Mulai

Ret

Ambil data waktu RTC

Pin PD3 = 0

(pin latch 74HC595

kondisi listening)

Toggle Pin PD4

(pin clock 74HC595)

kirim data waktu RTC

PD2 = data waktu

(pin serin 74HC595)

T

Y Masih ada data yang

digeser?

Pin PD3 = 1

(pin latch 74HC595

kondisi deaf)

Tampilkan data waktu

ke 7 segment

Gambar 3.17 Subrutin tampilkan data waktu RTC ke 7 segment

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: SINKRONISASI JAM DIGITAL NIRKABEL - USD

42

4BAB IV

HASIL DAN PEMBAHASAN

[1-34]

Bab ini menjelaskan implementasi perancangan penelitian dan hasil pengamatan

beserta pembahasannya untuk mengetahui kesesuaian antara perancangan dan

implementasi. Implementasi perancangan dibagi menjadi 2 bagian, yakni: implementasi

perancangan perangkat keras dan implementasi perancangan perangkat lunak. Hasil

pengamatan dan pembahasan dibagi menjadi 4 bagian, yakni: Komunikasi GUI dengan

server NTP, komunikasi GUI dengan subsistem master, hasil pengamatan pada sistem, dan

hasil pengamatan pada subsistem. Pengamatan pada sistem dilakukan dengan tiga metode,

yakni: metode pengiriman secara manual, metode penskalaan waktu pengiriman data, dan

metode uji coba sistem.

4.1 Implementasi Perancangan Perangkat Keras

Implementasi perangkat keras dibagi menjadi 3 bagian, subsistem master,

subsistem slave 1, dan subsistem slave 2. Dokumentasi hasil implementasi perangkat keras

pada subsistem master ditunjukkan pada Gambar 4.1. Tampilan LCD subsistem master

ditunjukkan pada Gambar 4.2.

Gambar 4.1 Hasil implementasi subsistem master

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: SINKRONISASI JAM DIGITAL NIRKABEL - USD

43

Ada beberapa perubahan antara perancangan dan implementasi perangkat keras.

Pertama, Arduino Duemilanove digantikan dengan Arduino Uno karena pada saat

dilakukan pembelian, Arduino Duemilanove sudah tidak diproduksi lagi. Kedua,

ditambahkan 1 tombol pada subsistem master yang dapat digunakan sebagai pemicu

pengiriman data waktu subsistem master ke subsistem slave secara manual. Tombol ini

terhubung dengan pin nomor 24 (PC1) ATmega328 dan selanjutnya disebut sebagai

tombol Kirim.

Gambar 4.2 Tampilan LCD subsistem master

Tampilan LCD pada subsistem master menunjukkan waktu 19:42:31. Selisih

dengan slave 1 pada Gambar 4.2 adalah selisih waktu antara subsistem master dengan

subsistem slave 1 dalam satuan detik, pada Gambar 4.2 selisih waktu yang ditunjukkan

adalah -1s (s adalah second/detik). Selisih dengan slave 2 pada Gambar 4.2 adalah selisih

waktu antara subsistem master dengan subsistem slave 2 dalam satuan detik, pada Gambar

4.2 selisih waktu yang ditunjukkan adalah -2s. Tanda minus (‘-’) sebelum angka

menunjukkan bahwa tampilan waktu pada subsistem slave lebih lambat dari subsistem

master, sedangkan tanda plus (‘+’) sebelum angka menunjukkan bahwa tampilan waktu

pada subsistem slave lebih cepat dari subsistem master.

Dokumentasi hasil implementasi pada subsistem slave 1 ditunjukkan pada Gambar

4.3, dan dokumentasi hasil implementasi pada subsistem slave 2 ditunjukkan pada Gambar

4.4. Perbedaan hasil implementasi perangkat keras pada subsistem slave 1 dan subsistem

slave 2 terletak pada sistem minimum yang digunakan. Sistem minimum pada subsistem

slave 1 dapat terhubung dengan komputer untuk mengamati data yang dikirim/diterima

oleh subsistem slave 1. Pengambilan dokumentasi subsistem master dan subsistem slave

dilakukan pada jam dan menit yang sama.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: SINKRONISASI JAM DIGITAL NIRKABEL - USD

44

Gambar 4.3 Hasil implementasi subsistem slave 1

Gambar 4.4 Hasil implementasi subsistem slave 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: SINKRONISASI JAM DIGITAL NIRKABEL - USD

45

4.2 Implementasi Perancangan Perangkat Lunak

Implementasi perancangan perangkat lunak meliputi pembahasan hasil yang

dicapai dari implementasi perancangan program Visual Basic, implementasi diagram alir

subsistem master, dan implementasi diagram alir subsistem slave.

4.2.1 Implementasi Program Visual Basic

Implementasi program Visual Basic (program Visual Basic selanjutnya disebut

sebagai GUI) ditunjukkan pada Gambar 4.5, yang menunjukkan GUI pada saat pertama

kali dieksekusi. Ada penambahan 4 obyek command button dan 1 frame pada GUI yang

fungsi dan nama obyeknya dijelaskan pada Tabel 4.1.

Gambar 4.5 Implementasi perancangan perangkat lunak

Saat GUI pertama kali dijalankan, pengguna dapat menentukan akan melakukan

sinkronisasi/tidak melakukan sinkronisasi waktu komputer dengan waktu NTP. Hal ini

dilakukan agar pengguna tidak harus selalu terhubung dengan internet. Jika tidak

melakukan sinkronisasi dengan NTP, pengguna harus memilih port komunikasi yang

digunakan untuk menghubungkan GUI dengan subsistem master dan mengirimkan data

waktu komputer dan alarm ke subsistem master. Untuk menghubungkan GUI dengan

subsistem master, pengguna harus menekan command button CONNECT. Jika command

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: SINKRONISASI JAM DIGITAL NIRKABEL - USD

46

button DISCONNECT ditekan, maka pengguna tidak dapat memilih mode alarm dan

mengatur waktu alarm.

Tabel 4.1 Perubahan pada GUI

Nama Obyek

(Caption/Text)Format Data Fungsi

CONNECT -Untuk menghubungkan GUI dengan subsistem master sesuai

dengan port komunikasi yang dipilih.

DISCONNECT -Untuk memutus menghubungkan GUI dengan subsistem master

sesuai dengan port komunikasi yang dipilih.

CEK DATA -Untuk mengetahui apakah data alarm yang dimasukkan sudah

sesuai atau belum.

CEK DATA -Untuk mengetahui apakah data alarm yang dimasukkan sudah

sesuai atau belum.

Data Alarm Mode INTERVAL

SLAVE 1 dan SLAVE 2String

Untuk mengetahui data alarm mode interval pada subsistem

slave 1 dan slave 2 yang akan dikirim ke Arduino.

Data Alarm Mode JAM

TERTENTU SLAVE 1String

Untuk mengetahui data alarm mode jam tertentu pada subsistem

slave 1 yang akan dikirim ke Arduino.

Data Alarm Mode JAM

TERTENTU SLAVE 2String

Untuk mengetahui data alarm mode jam tertentu pada subsistem

slave 2 yang akan dikirim ke Arduino.

DATA WAKTU KOMPUTER

dan DATA SEMUA ALARM String

Untuk mengetahui data waktu komputer dan data waktu alarm

yang akan dikirim ke Arduino

Frame CO M PO RT (Port Komunikasi)

Frame Mode Interval (Alarm)

Frame Mode Jam Tertentu (Alarm)

Frame DATA ALARM yang akan dikirim ke Arduino

Tiga mode alarm dapat dipilih oleh pengguna jika GUI telah terhubung dengan

subsistem master. Jika mode alarm mati dipilih, maka frame mode alarm interval dan

mode alarm jam tertentu dalam kondisi tidak aktif. Jika mode alarm interval dipilih, maka

frame mode alarm interval dalam kondisi aktif dan frame mode alarm jam tertentu dalam

kondisi tidak aktif. Jika mode alarm jam tertentu dipilih, maka frame mode alarm jam

tertentu dalam kondisi aktif dan frame mode alarm interval dalam kondisi tidak aktif.

Aktif/tidaknya frame diatur oleh property enable dari obyek frame.

Untuk mengaktifkan command button Kirim ke Arduino, pengguna harus

memverifikasi data alarm yang telah dimasukkan dengan menekan command button CEK

DATA. Jika ada kesalahan dalam pengaturan data alarm, maka GUI menampilkan message

box yang berisi peringatan. Salah satu contoh peringatan yang ditampilkan GUI dengan

pengaturan mode alarm jam tertentu ditunjukkan pada Gambar 4.6. GUI juga didesain

dapat menampilkan jumlah kesalahan dalam pengaturan data alarm. Salah satu contoh

jumlah kesalahan pengisian data mode alarm jam tertentu ditunjukkan pada Gambar 4.7.

Contoh pada Gambar 4.7 menunjukkan ada 24 kesalahan yang dihitung oleh GUI,

kesalahan tersebut adalah tidak mengisi nilai jam dan menit untuk alarm 1-6 untuk

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: SINKRONISASI JAM DIGITAL NIRKABEL - USD

47

subsistem slave 1 dan subsistem slave 2. Jika tidak ada kesalahan dalam pengaturan waktu

alarm atau pengguna memilih mode alarm mati, maka command button Kirim ke Arduino

dalam kondisi aktif.

Gambar 4.6 Peringatan adanya kesalahan pengaturan data mode alarm jam tertentu

Gambar 4.7 Jumlah kesalahan dalam pengaturan data alarm

Data-data yang dikirimkan ke subsistem master adalah data waktu komputer, dan

semua data waktu alarm. Data waktu komputer dikirimkan ke subsistem master dalam

bentuk UNIX timestamp. Untuk memudahkan Arduino pada subsistem master memilah

data yang dikirimkan GUI, maka data-data yang dikirimkan GUI diberi header. Header

data yang digunakan GUI ditunjukkan pada Tabel 4.2.

Tabel 4.2 Header data GUI

Jenis Data Header Contoh

Data waktu komputer T T1315015783

Mode alarm interval untuk

subsistem slave 1 dan slave 2I I656565656565656565656565

Mode alarm jam tertentu untuk

subsistem slave 1A A656565656565656565656565

Mode alarm jam tertentu untuk

subsistem slave 2B B656565656565656565656565

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: SINKRONISASI JAM DIGITAL NIRKABEL - USD

48

Urutan pengiriman data setelah command button Kirim ke Arduino ditekan adalah

data waktu komputer, data waktu mode alarm interval untuk subsistem slave 1 dan slave 2,

data waktu mode alarm jam tertentu untuk subsistem slave 1, dan data waktu mode alarm

jam tertentu untuk subsistem slave 2. Pengiriman antara data satu dengan yang lainnya

diberi jeda waktu untuk memudahkan pembacaan data oleh subsistem master. Contoh

keseluruhan data yang dikirimkan GUI ke Arduino ditunjukkan pada Gambar 4.8.

Penjelasan data-data yang dikirimkan GUI ditunjukkan pada Gambar 4.9. Jika nilai data

alarm tidak diatur sesuai dengan Tabel 3.7/mode alarm mati, maka nilai jam/menitnya

adalah 65.

Gambar 4.8 Data yang dikirim GUI

Gambar 4.9 Isi data yang dikirim GUI

4.2.2 Implementasi Diagram Alir Subsistem Master

Dengan menggunakan perangkat lunak Arduino, ada 2 fungsi yang harus ada pada

sketch (source code) yang ditulis, yakni fungsi setup dan loop. Setup digunakan untuk

persiapan/inisialisasi program dan loop digunakan untuk eksekusi program. Setup yang

digunakan untuk subsistem master terdiri dari inisialisasi library, pembacaan EEPROM,

pembacaan register waktu RTC DS1307, inisialisasi pin, inisialisasi modul nRF24L01, dan

pengaturan waktu alarm yang digunakan untuk mengirimkan data waktu subsistem master

ke subsistem slave setiap 60 menit. Loop digunakan untuk menampilkan data waktu ke

LCD, menampilkan selisih waktu antara subsistem master dengan subsistem slave 1 dan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: SINKRONISASI JAM DIGITAL NIRKABEL - USD

49

selisih waktu antara subsistem master dengan subsistem slave 2, pemeriksaan masukan

data dari GUI, dan pemeriksaan data dari subsistem slave 1 dan subsistem slave 2. Siklus

loop diatur untuk dieksekusi setiap 1 detik.

Alamat EEPROM yang digunakan untuk menyimpan data alarm ditunjukkan pada

Tabel 4.3. Jika nilai jam dan menit yang disimpan pada EEPROM bernilai 65 dan 65, maka

program membaca nilai jam menjadi 18 dan nilai menit menjadi 05. Hal ini terjadi karena

pengaturan nilai jam pada library time maksimal adalah 24 dan nilai menit maksimal

adalah 60.

Identitas (ID) alarm pada subsistem master ditunjukkan pada Tabel 4.4. Identitas

alarm digunakan untuk membedakan mode alarm dan mengatur aktif tidaknya alarm.

Tabel 4.3 Alamat dan Fungsi EEPROM

Alamat

EEPROMData yang Disimpan

Alamat

EEPROMData yang Disimpan

171 Jam alarm 1 183 Jam alarm 1

172 Menit alarm 1 184 Menit alarm 1

173 Jam alarm 2 185 Jam alarm 2

174 Menit alarm 2 186 Menit alarm 2

175 Jam alarm 3 187 Jam alarm 3

176 Menit alarm 3 188 Menit alarm 3

177 Jam alarm 4 189 Jam alarm 4

178 Menit alarm 4 190 Menit alarm 4

179 Jam alarm 5 191 Jam alarm 5

180 Menit alarm 5 192 Menit alarm 5

181 Jam alarm 6 193 Jam alarm 6

182 Menit alarm 6 194 Menit alarm 6

Alamat

EEPROM

Data yang Disimpan Alamat

EEPROM

Data yang Disimpan

200 Jam mulai alarm 206 Jam mulai alarm

201 Menit mulai alarm 207 Menit mulai alarm

202 Jam akhir alarm 208 Jam akhir alarm

203 Menit akhir alarm 209 Menit akhir alarm

204 Jam interval alarm 210 Jam interval alarm

205 Menit interval alarm 211 Menit interval alarm

subsistem slave 1

Mode Alarm Interval

subsistem slave 2

Mode Alarm JamTertentu

subsistem slave 1

Mode Alarm JamTertentu

subsistem slave 2

Mode Alarm Interval

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: SINKRONISASI JAM DIGITAL NIRKABEL - USD

50

Tabel 4.4 Identitas alarm pada subsistem master

No. ID Nama ID Mode Alarm Fungsi

0 intervalStart1 Mengaktifkan alarm intervalTimer1

1 intervalStop1 Me-non-aktifkan alarm intervalTimer1

2 intervalTimer1 Waktu interval yang diatur dari GUI untuk subsistem slave 1

3 intervalStart2 Mengaktifkan alarm intervalTimer2

4 intervalStop2 Me-non-aktifkan alarm intervalTimer2

5 intervalTimer2 Waktu interval yang diatur dari GUI untuk subsistem slave 2

6 slave1Time1 Mengaktifkan alarm slave1Time1 untuk subsistem slave 1

7 slave1Time2 Mengaktifkan alarm slave1Time2 untuk subsistem slave 1

8 slave1Time3 Mengaktifkan alarm slave1Time3 untuk subsistem slave 1

9 slave1Time4 Mengaktifkan alarm slave1Time4 untuk subsistem slave 1

10 slave1Time5 Mengaktifkan alarm slave1Time5 untuk subsistem slave 1

11 slave1Time6 Mengaktifkan alarm slave1Time6 untuk subsistem slave 1

12 slave2Time1 Mengaktifkan alarm slave2Time1 untuk subsistem slave 2

13 slave2Time2 Mengaktifkan alarm slave2Time2 untuk subsistem slave 2

14 slave2Time3 Mengaktifkan alarm slave2Time3 untuk subsistem slave 2

15 slave2Time4 Mengaktifkan alarm slave2Time4 untuk subsistem slave 2

16 slave2Time5 Mengaktifkan alarm slave2Time5 untuk subsistem slave 2

17 slave2Time6 Mengaktifkan alarm slave2Time6 untuk subsistem slave 2

18 startCount60 - Mengaktifkan alarm everyHourAlarm

19 everyHourAlarm -Digunakan untuk mengirimkan data waktu pada subsistem

master ke subsistem slave

Interval

Jam Tertentu

Pengaturan jam mulai dan menit mulai pada GUI mode alarm interval hanya

mengaktifkan alarm dengan ID intervalStart, sehingga tidak mengirimkan peringatan alarm

kepada subsistem slave yang dituju. Alarm dengan ID intervalTimer yang bertugas

mengirimkan peringatan alarm kepada subsistem slave.

Menghindari terjadinya tidak terkirimnya data alarm ke subsistem slave, maka

pengiriman peringatan alarm untuk subsistem slave diatur. Pengaturan dilakukan dengan

membedakan detik pengiriman untuk subsistem slave. Pengiriman peringatan untuk

subsistem slave 1 dilakukan pada detik ke-3, dan untuk subsistem slave 2 dilakukan pada

detik ke-8. Pengaturan untuk alarm dengan ID intervalStop dilakukan pada detik ke-30

untuk me-non-aktifkan (men-disable) alarm dengan ID intervalTimer. Pengaturan untuk

alarm dengan ID startCount60 dilakukan pada detik ke-10.

Alamat transceiver subsistem master adalah mast1. Identifikasi alamat transceiver

digunakan untuk mempermudah pengiriman data yang dikirim/diterima subsistem master.

Format data dan header data yang digunakan oleh subsistem master untuk dikirimkan ke

subsistem slave ditunjukkan pada Tabel 4.5. Data waktu yang dikirimkan subsistem master

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: SINKRONISASI JAM DIGITAL NIRKABEL - USD

51

dalam bentuk UNIX timestamp, dengan angka yang terdepan diubah menjadi header

seperti yang tertulis pada Tabel 4.5 kolom contoh penggunaan. Seharusnya, data UNIX

timestamp yang dikirim adalah 1314622562, tetapi angka yang terdepan diganti dengan

header, sehingga data yang dikirim adalah U314622562.

Tabel 4.5 Format data dan header data subsistem master

Header Header dan Format DataContoh

PenggunaanFungsi

U U dan UNIX timestamp U314622562Mengirimkan data waktu subsistem

master ke subsistem slave 1

V V dan UNIX timestamp V314622562Mengirimkan data waktu subsistem

master ke subsistem slave 2

A A dan 1111111111 A111111111Mengirimkan peringatan waktu alarm ke

subsistem slave 1

B B dan 1111111111 B111111111Mengirimkan peringatan waktu alarm ke

subsistem slave 2

4.2.3 Implementasi Diagram Alir Subsistem Slave

Fungsi setup yang dilakukan pada subsistem slave meliputi inisialisasi library,

pembacaan register waktu RTC DS1307, inisialisasi pin, inisialisasi modul nRF24L01,

inisialisasi tampilan angka 7 segment, dan pengaturan waktu alarm yang digunakan untuk

mengirimkan data waktu subsistem slave ke subsistem master setiap 15 menit. Fungsi loop

pada subsistem slave meliputi penampilan jam dan menit RTC DS1307 ke penampil 7

segment, dan pemeriksaan data alarm/data waktu dari subsistem master.

Alamat transceiver subsistem slave 1 adalah slav1 dan untuk subsistem slave 2

adalah slav2. Format data dan header data yang digunakan oleh subsistem slave untuk

dikirimkan ke subsistem master ditunjukkan pada Tabel 4.6. Data waktu yang dikirimkan

subsistem slave dalam bentuk UNIX timestamp, dengan angka yang terdepan diubah

menjadi header seperti yang ditulis pada Tabel 4.6.

Tabel 4.6 Format data dan header data subsistem slave 1 dan subsistem slave 2

Header Header dan Format DataContoh

PenggunaanFungsi

U U dan UNIX timestamp U314622562Mengirimkan data waktu subsistem

slave 1 ke subsistem master

V V dan UNIX timestamp V314622562Mengirimkan data waktu subsistem

slave 2 ke subsistem master

Menghindari terjadinya pengiriman data waktu slave yang bersamaan, maka

pengiriman data waktu untuk subsistem slave 1 dan subsistem slave 2 diatur. Pengaturan

dilakukan dengan membedakan detik pengiriman. Pengiriman data waktu subsistem slave

1 dilakukan pada detik ke-13, dan pengiriman data waktu subsistem slave 2 dilakukan pada

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: SINKRONISASI JAM DIGITAL NIRKABEL - USD

52

detik ke-18. Subsistem slave 1 dan subsistem slave 2 mempunyai identitas alarm yang

sama. Identitas alarm yang digunakan pada subsistem slave ditunjukkan pada Tabel 4.7

Tabel 4.7 Identitas alarm pada subsistem slave

No. ID Nama ID Fungsi

0 startCount15 Mengaktifkan alarm every15MinuteAlarm

1 every15MinuteAlarmDigunakan untuk mengirimkan data waktu pada subsistem

slave ke subsistem master

4.3 Hasil Pengamatan dan Pembahasan

Hasil pengamatan dan pembahasan sistem Sinkronisasi Jam Digital Nirkabel

meliputi komunikasi GUI dengan server NTP, komunikasi GUI dengan subsistem master,

hasil pengamatan pada sistem Sinkronisasi Jam Digital Nirkabel, dan hasil pengamatan

pada subsistem master dan subsistem slave.

4.3.1 Komunikasi GUI dengan Server NTP

Pengaksesan GUI dengan server NTP menggunakan Microsoft Winsock Control

6.0 dengan mengatur property Protocol menjadi sckTCPProtocol dan RemotePort menjadi

37. Port komunikasi dengan NTP diatur pada port 37 karena program developer berbasis

GUI (Visual Basic, C-Builder, Delphi, atau Lazarus) biasanya dilengkapi dengan

komponen standar untuk protokol DAYTIME dan TIME, tetapi tidak untuk NTP [35].

Server NTP yang digunakan pada saat pengujian data adalah ntp.kim.lipi.go.id.

Hasil pengamatan data ditunjukkan pada Tabel 4.8. Adanya selisih antara data waktu

komputer dengan server NTP karena protokol TIME tidak bisa memperkirakan delay

jaringan atau melaporkan informasi tambahan [36].

Tabel 4.8 Komunikasi GUI dengan server NTP

No.

Pengujian

Selisih Data Waktu Komputer

dengan Server NTP (detik)

1 26/08/2011 1:15:29 -2

2 27/08/2011 20:31:34 1

3 27/08/2011 23:14:14 1

4 27/08/2011 23:14:58 0

5 04/09/2011 20:01:40 1

Pengambilan Data

(Tanggal dan Waktu)

4.3.2 Komunikasi GUI dengan Subsistem Master

Pengamatan komunikasi GUI dengan subsistem master dilakukan dengan

mengirimkan data waktu komputer, data waktu alarm-mode interval, dan data waktu

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: SINKRONISASI JAM DIGITAL NIRKABEL - USD

53

alarm-mode jam tertentu. Pengiriman data dilakukan oleh GUI. Pengamatan dan verifikasi

data dilakukan dengan melihat keluaran data serial dari subsistem master dengan

menggunakan perangkat lunak Terminal. Perbandingan data yang dikirimkan GUI dengan

data yang diterima subsistem master ditunjukkan pada Tabel 4.9. Salah satu data yang

dikirimkan GUI ditunjukkan pada Gambar 4.10, dan data yang diterima Terminal

ditunjukkan pada Gambar 4.11. Tabel 4.9 menunjukkan bahwa pengiriman data dari GUI

ke subsistem master berhasil dilakukan untuk 3 data yang berbeda pengaturan waktu

alarmnya.

Tabel 4.9 Perbandingan data yang dikirim dan diterima

T1315057325 T

I134514150005135014200010 I 13 45 14 15 00 05 13 50 14 20 00 10

A656565656565656565656565 A 65 65 65 65 65 65 65 65 65 65 65 65

B656565656565656565656565 B 65 65 65 65 65 65 65 65 65 65 65 65

T1315062256 T

I656565656565656565656565 I 65 65 65 65 65 65 65 65 65 65 65 65

A150515101515152015251530 A 15 05 15 10 15 15 15 20 15 25 15 30

B153515401520151565656565 B 15 35 15 40 15 20 15 15 65 65 65 65

T1315060928 T

I656565656565656565656565 I 65 65 65 65 65 65 65 65 65 65 65 65

A656565656565656565656565 A 65 65 65 65 65 65 65 65 65 65 65 65

B656565656565656565656565 B 65 65 65 65 65 65 65 65 65 65 65 65

No.

PengujianData dari GUI

Data Waktu Komputer (UNIX Time)

Data yang Diterima Subsistem Master

Data Waktu Alarm Mode Interval untuk Slave 1 dan Slave 2

Data Waktu Alarm Mode Jam Tertentu untuk Slave 1

Data Waktu Alarm Mode Jam Tertentu untuk Slave 2

1

Data Waktu Alarm Mode Jam Tertentu untuk Slave 2

2

Data Waktu Komputer (UNIX Time)

1315062256

Data Waktu Alarm Mode Interval untuk Slave 1 dan Slave 2

Data Waktu Alarm Mode Jam Tertentu untuk Slave 1

1315057325

3

Data Waktu Komputer (UNIX Time)

1315060928

Data Waktu Alarm Mode Interval untuk Slave 1 dan Slave 2

Data Waktu Alarm Mode Jam Tertentu untuk Slave 1

Data Waktu Alarm Mode Jam Tertentu untuk Slave 2

Gambar 4.10 Data dari GUI

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: SINKRONISASI JAM DIGITAL NIRKABEL - USD

54

Gambar 4.11 Data dari Terminal

Pengamatan waktu komputer dengan waktu yang ditampilkan LCD pada subsistem

master ditunjukkan pada Tabel 4.10. Akurasi subsistem master adalah 3 - 4 detik lebih

lambat dari waktu komputer, dalam jangka waktu 13 jam. Keterlambatan subsistem master

dikarenakan proses pengiriman data dari GUI dan pemilihan komponen kristal 32,768 kHz

[18, 37].

Tabel 4.10 Perbandingan waktu komputer dengan subsistem master

Selisih

(detik)

1 23 : 18 : 50 23 : 18 : 54 4

2 23 : 39 : 0 23 : 39 : 4 4

3 0 : 42 : 40 0 : 42 : 44 4

4 2 : 49 : 20 2 : 49 : 24 4

5 9 : 49 : 0 9 : 43 : 3 3

6 12 : 37 : 20 17 : 37 : 23 3

NoWaktu Master

(hh:mm:ss)

Waktu Komputer

(hh:mm:ss)

4.3.3 Hasil Pengamatan pada Sistem Sinkronisasi Jam Digital Nirkabel

Pengamatan sistem sinkronisasi jam digital nirkabel menggunakan 2 metode

pengamatan, yakni metode penskalaan waktu pengiriman data dan metode uji coba sistem.

Metode penskalaan waktu pengiriman data (selanjutnya disebut sebagai metode

penskalaan) digunakan untuk mempersingkat waktu pengamatan antara subsistem master

dengan subsistem slave 1 dan subsistem slave 2. Waktu pengiriman data dari subsistem

master ke subsistem slave dilakukan setiap 4 menit sekali, dan pengiriman data dari

subsistem slave ke subsistem master dilakukan setiap 1 menit.

Metode penskalaan digunakan untuk menguji tingkat keberhasilan

pengiriman/penerimaan data sebelum melakukan pengamatan dengan metode uji coba

sistem. Selain itu, metode penskalaan digunakan untuk mengetahui jarak optimal sistem

dan jarak maksimal antara subsistem master dengan subsistem slave 1 dan subsistem slave

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: SINKRONISASI JAM DIGITAL NIRKABEL - USD

55

2. Jarak optimal sistem adalah jarak terjauh antara subsistem master dengan subsistem

slave untuk dapat saling mengirim dan menerima data dengan persentase keberhasilan

100%. Jarak maksimal adalah jarak terjauh antara subsistem master dengan subsistem

slave untuk dapat mengirim atau menerima data walaupun dengan persentase keberhasilan

yang rendah.

Pengamatan dengan metode uji coba sistem dilakukan sesuai dengan perancangan

penelitian, yaitu waktu pengiriman data dari subsistem master ke subsistem slave

dilakukan setiap 60 menit sekali, dan pengiriman data dari subsistem slave ke subsistem

master dilakukan setiap 15 menit.

4.3.3.1 Metode Penskalaan Waktu Pengiriman Data

Format pewaktuan pengiriman dan penerimaan data pada subsistem master untuk

metode penskalaan ditunjukkan pada Tabel 4.11. Format pewaktuan ini digunakan sebagai

format acuan untuk tabel-tabel pada metode penskalaan.

Tabel 4.11 Format pewaktuan metode penskalaan

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

jam : menit ke-0 : 0 Kirim Kirim

jam : (menit + 2) : detik 1 Terima Selisih 1

jam : (menit + 2) : detik 2 Terima Selisih 2

jam : (menit + 3) : detik 1 Terima Selisih 1

jam : (menit + 3) : detik 2 Terima Selisih 2

jam : (menit + 4) : 0 Kirim Kirim

jam : (menit + 6) : detik 1 Terima Selisih 1

jam : (menit + 6) : detik 2 Terima Selisih 2

jam : (menit + 7) : detik 1 Terima Selisih 1

jam : (menit + 7) : detik 2 Terima Selisih 2

1.

(menit + 2)

(menit + 3)

(menit + 4)

(menit + 6)

(menit + 7)

2.

3.

detik 1

detik 2

4.

5.

Kirim adalah data waktu subsistem master yang dikirimkan ke subsistem

Terima adalah data waktu subsistem slave yang diterima subsistem master

Selisih 1 adalah selisih waktu antara subsistem master dengan subsistem slave 1

Selisih 2 adalah selisih waktu antara subsistem master dengan subsistem slave 2

Yang dimaksud detik 1 dan detik 2 adalah

= 13 + Selisih 1

= 18 + Selisih 2

= 16

= 17

Yang dimaksud Selisih 1 dan Selisih 2 adalah

Keterangan pada Tabel dan Contoh:

Jika subsistem master mengirimkan data waktu ke subsistem slave pada

menit ke 10 (menit ke-0 = 10), maka

= 12

= 13

= 14

Jarak: dalam satuan meter

Timeline (Master)

(hh:mm:ss)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: SINKRONISASI JAM DIGITAL NIRKABEL - USD

56

Persentase keberhasilan metode penskalaan menggunakan persamaan berikut:

%100seharusnyayangdatajumlah

seharusnyatidakyangdatajumlahmastersubsistempadadatajumlah

definisi jumlah data pada subsistem master adalah jumlah data waktu yang dikirim

subsistem master dan jumlah data waktu yang diterima oleh subsistem master. Definisi

jumlah data yang tidak seharusnya adalah jumlah data yang tidak seharusnya diterima oleh

subsistem master karena waktu penerimaannya tidak sesuai dengan menit yang telah

ditentukan pada Tabel 4.11. Jika ada data waktu yang diterima subsistem master pada

menit ke-0, (menit+1), (menit+4) dan/atau (menit+5), maka data waktu pada menit

selanjutnya dihiraukan karena data waktu yang dikirim subsistem master tidak diterima

oleh subsistem slave.

Berdasarkan pada Tabel 4.11, indikator keberhasilan penerimaan data oleh

subsistem slave adalah tidak adanya data waktu yang dikirimkan subsistem slave dan

diterima oleh subsistem master pada (menit+1) dan (menit+5). Verifikasi penerimaan data

pada subsistem slave 1 dilakukan dengan melihat hasil pencatatan data (log data) oleh

perangkat lunak terminal pada subsistem slave 1.

Definisi jumlah data yang seharusnya adalah jumlah data yang seharusnya adalah

jumlah data yang seharusnya diterima oleh subsistem master saat pengamatan dilakukan.

Berdasarkan format pewaktuan pada Tabel 4.11, jumlah data yang seharusnya diterima

oleh subsistem master sebanyak 12 data. Dua belas data tersebut adalah 4 data waktu yang

dikirimkan subsistem master ke subsistem slave, dan 8 data waktu yang diterima subsistem

master dari subsistem slave.

Pengamatan dengan metode penskalaan dilakukan 5 kali. Pengamatan pertama

dilakukan dengan mengkondisikan subsistem master dan subsistem slave pada keadaan

LOS. Pengamatan ke-2 dilakukan dengan mengkondisikan subsistem master dan subsistem

slave pada keadaan terhalang oleh batas koridor. Pengamatan ke-3 dilakukan pada ruangan

yang terpisah dengan sekat asbes. Pengamatan ke-4 dilakukan pada ruangan yang terpisah

dengan sekat tembok, dan pengamatan ke-5 dilakukan untuk menguji sistem close loop

sistem sinkronisasi jam digital nirkabel.

Hasil pengamatan pertama ditunjukkan pada Tabel 4.12 - Tabel 4.14. Lokasi

pengamatan pertama dilakukan di koridor Laboratorium Perancangan Teknik Elektro Lt.3

Kampus III Universitas Sanata Dharma. Denah lokasi pengamatan ditunjukkan pada

Gambar 4.12.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: SINKRONISASI JAM DIGITAL NIRKABEL - USD

57

Tabel 4.12 Metode penskalaan pengamatan pertama jarak 1 m – 3 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 52 : 0 U316623920 V316623920

16 : 54 : 14 U316624053 -1

16 : 54 : 19 V316624058 -1

16 : 55 : 14 U316624113 -1

16 : 55 : 19 V316624118 -1

16 : 56 : 0 U316624160 V316624160

16 : 58 : 15 U316624293 -2

16 : 58 : 19 V316624298 -1

16 : 59 : 15 U316624353 -2

16 : 59 : 20 V316624358 -2

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 43 : 0 U316623380 V316623380

16 : 45 : 15 U316623513 -2

16 : 45 : 19 V316623518 -1

16 : 46 : 15 U316623573 -2

16 : 46 : 19 V316623578 -1

16 : 47 : 0 U316623620 V316623620

16 : 49 : 14 U316623753 -1

16 : 49 : 19 V316623758 -1

16 : 50 : 14 U316623813 -1

16 : 50 : 19 V316623818 -2

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 29 : 0 U316622540 V316622540

16 : 31 : 15 U316622673 -2

16 : 31 : 20 V316622678 -2

16 : 32 : 15 U316622733 -2

16 : 32 : 20 V316622738 -2

16 : 33 : 0 U316622780 V316622780

16 : 35 : 15 U316622913 -2

16 : 35 : 20 V316622918 -2

16 : 36 : 15 U316622973 -2

16 : 36 : 20 V316622978 -2

Jarak: 1 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 2 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 3 meter

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: SINKRONISASI JAM DIGITAL NIRKABEL - USD

58

Tabel 4.13 Metode penskalaan pengamatan pertama jarak 4m, 5m, 10m, dan 15m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 16 : 0 U316621700 V316621700

16 : 17 : 15 U316621833 0

16 : 17 : 20 V316621838 -2

16 : 18 : 20 V316621898 -2

16 : 19 : 0 U316621940 V316621940

16 : 21 : 13 U316622073 0

16 : 21 : 20 V316622078 -2

16 : 22 : 14 U316622133 -1

16 : 22 : 21 V316622138 -3

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

13 : 18 : 0 U316611080 V316611080

13 : 20 : 15 U316611213 -2

13 : 20 : 20 V316611218 -2

13 : 21 : 20 V316611278 -2

13 : 22 : 0 U316611320 V316611320

13 : 24 : 20 V316611458 -2

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

13 : 38 : 0 U316612280 V316612280

13 : 40 : 16 U316612413 -3

13 : 40 : 22 V316612418 -4

13 : 41 : 21 V316612478 -3

13 : 42 : 0 U316612520 V316612520

13 : 44 : 14 U316612653 -1

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

13 : 54 : 0 U316613240 V316613240

13 : 58 : 0 U316613480 V316613480

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 4 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 5 meter

Jarak: 10 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 15 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: SINKRONISASI JAM DIGITAL NIRKABEL - USD

59

Tabel 4.14 Metode penskalaan pengamatan pertama jarak 20 m - 45 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

14 : 11 : 0 U316614260 V316614260

14 : 15 : 0 U316614500 V316614500

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

14 : 27 : 0 U316615220 V316615220

14 : 31 : 0 U316615460 V316615460

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

14 : 45 : 0 U316616300 V316616300

14 : 49 : 0 U316616540 V316616540

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 2 : 0 U316617320 V316617320

15 : 6 : 0 U316617560 V316617560

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 21 : 0 U316618460 V316618460

15 : 25 : 0 U316618700 V316618700

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 41 : 0 U316619660 V316619660

15 : 45 : 0 U316619900 V316619900

Jarak: 45 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 40 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 35 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 30 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 25 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 20 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: SINKRONISASI JAM DIGITAL NIRKABEL - USD

60

Gambar 4.12 Denah lokasi metode penskalaan pengamatan pertama

Hasil pengamatan pertama pada Tabel 4.12 - Tabel 4.14 pada kolom Selisih jika

menunjukkan tanda ‘-’, maka subsistem slave lebih lambat daripada subsistem master. Jika

menunjukkan tanda ‘+’, maka subsistem slave lebih cepat daripada subsistem master.

Persentase keberhasilan hasil pengamatan pertama ditunjukkan pada Tabel 4.15. Jarak

optimal sistem agar subsistem master dapat mengirim dan menerima data dengan

persentase keberhasilan 100% adalah 3 meter. Jarak maksimal antara subsistem master

dengan subsistem slave untuk dapat mengirim dan menerima data adalah 10 meter.

Tabel 4.15 Persentase keberhasilan metode penskalaan pengamatan pertama

Jarak

(meter)

Jumlah Data pada

Subsistem Master

Jumlah Data yang

TIDAK Seharusnya

Jumlah Data yang

Seharusnya

Persentase

Kebehasilan (%)

1 12 0 12 100

2 12 0 12 100

3 12 0 12 100

4 11 0 12 91,67

5 8 0 12 66,67

10 8 0 12 66,67

15 0 0 12 0

20 0 0 12 0

25 0 0 12 0

30 0 0 12 0

35 0 0 12 0

40 0 0 12 0

45 0 0 12 0

Pengamatan ke-2 metode penskalaan dilakukan dengan mengkondisikan subsistem

master dan subsistem slave pada keadaan terhalang oleh batas koridor. Lokasi pengamatan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: SINKRONISASI JAM DIGITAL NIRKABEL - USD

61

ke-2 dilakukan di koridor Laboratorium Perancangan Teknik Elektro Lt.3 Kampus III

Universitas Sanata Dharma. Hasil pengamatan ke-2 ditunjukkan pada Tabel 4.16. Denah

lokasi pengamatan ditunjukkan pada Gambar 4.13. Persentase keberhasilan pengamatan

ke-2 ditunjukkan pada Tabel 4.17.

Tabel 4.16 Metode penskalaan pengamatan ke-2 jarak 5 m & 10 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

17 : 7 : 0 U316624820 V316624820

17 : 11 : 0 U316625060 V316625060

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

17 : 18 : 0 U316625480 V316625480

17 : 22 : 0 U316625720 V316625720

Jarak: 10 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 5 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Gambar 4.13 Denah lokasi metode penskalaan pengamatan ke-2

Tabel 4.17 Persentase keberhasilan metode penskalaan pengamatan ke-2

Jarak

(meter)

Jumlah Data pada

Subsistem Master

Jumlah Data yang

TIDAK Seharusnya

Jumlah Data yang

Seharusnya

Persentase

Kebehasilan (%)

5 0 0 12 0

10 0 0 12 0

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: SINKRONISASI JAM DIGITAL NIRKABEL - USD

62

Berdasarkan pada Tabel 4.16 dan Tabel 4.17, tidak ada data yang dikirimkan

subsistem master dan berhasil diterima subsistem slave maupun data yang dikirimkan

subsistem slave dan berhasil diterima subsistem master. Ketidakberhasilan pengiriman dan

penerimaan data oleh subsistem master dan subsistem slave dikarenakan adanya

penghalang.

Pengamatan ke-3 dilakukan pada ruangan yang terpisah (ruang tertutup) dengan

sekat asbes. Pengamatan dilakukan di ruang Tugas Akhir Lt. 4 dan bengkel laboratorium

teknik kendali. Hasil pengamatan ke-3 ditunjukkan pada Tabel 4.18. Denah lokasi

pengamatan ditunjukkan pada Gambar 4.14. Persentase keberhasilan pengamatan ke-3

ditunjukkan pada Tabel 4.20.

Tabel 4.18 Metode penskalaan pengamatan ke-3 jarak 1 m & 2 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

14 : 44 : 0 U316702640 V316702640

14 : 46 : 14 U316702773 -1

14 : 46 : 20 V316702778 -2

14 : 47 : 15 U316702833 -2

14 : 47 : 20 V316702838 -2

14 : 48 : 0 U316702880 V316702880

14 : 50 : 14 U316703013 -1

14 : 50 : 19 V316703018 -1

14 : 51 : 15 U316703073 -2

14 : 51 : 19 V316703078 -1

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 4 : 0 U316703840 V316703840

15 : 6 : 15 U316703973 -2

15 : 6 : 20 V316703978 -2

15 : 7 : 15 U316704033 -2

15 : 7 : 20 V316704038 -2

15 : 8 : 0 U316704080 V316704080

15 : 10 : 14 U316704213 -1

15 : 10 : 18 V316704218 0

15 : 11 : 14 U316704273 -1

15 : 11 : 19 V316704278 -1

Jarak: 1 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 2 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: SINKRONISASI JAM DIGITAL NIRKABEL - USD

63

Tabel 4.19 Metode penskalaan pengamatan ke-3 jarak 3 m – 6 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 12 : 0 U316704320 V316704320

15 : 14 : 14 U316704453 -1

15 : 14 : 19 V316704458 -1

15 : 15 : 16 U316704513 -3

15 : 15 : 20 V316704518 -2

15 : 16 : 0 U316704560 V316704560

15 : 18 : 18 V316704698 0

15 : 19 : 19 V316704758 -1

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 30 : 0 U316705400 V316705400

15 : 32 : 19 V316705538 -1

15 : 33 : 19 V316705598 -1

15 : 34 : 0 U316705640 V316705640

15 : 34 : 19 V316705658 -1

15 : 35 : 19 V316705718 -1

15 : 36 : 19 V316705778 -1

15 : 37 : 19 V316705838 -1

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 50 : 0 U316706600 V316706600

15 : 50 : 19 V316706618 -1

15 : 51 : 19 V316706678 -1

15 : 52 : 19 V316706738 -1

15 : 53 : 19 V316706798 -1

15 : 54 : 0 U316706840 V316706840

15 : 54 : 19 V316706858 -1

15 : 55 : 19 V316706918 -1

15 : 56 : 14 U316706973 -1

15 : 56 : 20 V316706978 -2

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 9 : 0 U316707740 V316707740

16 : 13 : 0 U316707980 V316707980

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 3 meter

Kirim Data (ke) Terima Data (dari)

Jarak: 4 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 5 meter

Jarak: 6 meter

Timeline

(Master)

Master

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: SINKRONISASI JAM DIGITAL NIRKABEL - USD

64

Gambar 4.14 Denah lokasi metode penskalaan pengamatan ke-3

Tabel 4.20 Persentase keberhasilan metode penskalaan pengamatan ke-3

Jarak

(meter)

Jumlah Data pada

Subsistem Master

Jumlah Data yang

TIDAK Seharusnya

Jumlah Data yang

Seharusnya

Persentase

Kebehasilan (%)

1 12 0 12 100

2 12 0 12 100

3 10 0 12 83,33

4 10 10 12 0

5 12 12 12 0

6 0 0 12 0

Pada Tabel 4.19 jarak 4 meter dan 5 meter menunjukkan bahwa subsistem master

dan subsistem slave dapat melakukan penerimaan dan pengiriman data, tetapi tidak sesuai

dengan format pewaktuan yang telah ditentukan pada Tabel 4.11. Ketidaksesuaian dengan

format pewaktuan menyebabkan data yang sudah diterima subsistem master didefinisikan

sebagai data yang tidak seharusnya. Berdasarkan persentase keberhasilan pengamatan ke-

3, menunjukkan bahwa jarak optimal sistem adalah 2 meter dan jarak maksimal sistem

adalah 5 meter.

Pengamatan ke-4 dilakukan pada ruangan yang terpisah (ruang tertutup) dengan

sekat tembok. Pengamatan dilakukan di ruang Tugas Akhir Lt. 4 dan koridor ruang Tugas

Akhir. Hasil pengamatan ke-4 ditunjukkan pada Tabel 4.21. Persentase keberhasilan

pengamatan ke-4 ditunjukkan pada Tabel 4.22. Berdasarkan persentase keberhasilan

pengamatan ke-4, menunjukkan bahwa jarak optimal sistem adalah 1 meter dan jarak

maksimal sistem adalah 3 meter.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: SINKRONISASI JAM DIGITAL NIRKABEL - USD

65

Tabel 4.21 Metode penskalaan pengamatan ke-4 jarak 1 m – 4 m

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 37 : 0 U316709420 V316709420

16 : 39 : 14 U316709553 -1

16 : 39 : 19 V316709558 -1

16 : 40 : 14 U316709613 -1

16 : 40 : 19 V316709618 -2

16 : 41 : 0 U316709660 V316709660

16 : 43 : 13 U316709793 0

16 : 43 : 19 V316709798 -1

16 : 44 : 13 U316709853 0

16 : 44 : 18 V316709858 0

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

16 : 57 : 0 U316710620 V316710620

16 : 57 : 19 V316710638 -1

16 : 58 : 19 V316710698 -1

16 : 59 : 20 V316710758 -2

17 : 0 : 21 V316710818 -3

17 : 1 : 0 U316710860 V316710860

17 : 1 : 21 V316710878 -3

17 : 2 : 21 V316710938 -3

17 : 3 : 15 U316710993 -2

17 : 3 : 20 V316710998 -2

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

17 : 5 : 0 U316711100 V316711100

17 : 8 : 20 V316711298 -2

17 : 9 : 0 U316711340 V316711340

17 : 9 : 20 V316711358 -2

17 : 10 : 20 V316711418 -2

17 : 11 : 19 V316711478 -1

17 : 12 : 19 V316711538 -1

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

17 : 21 : 0 U316712060 V316712060

17 : 25 : 0 U316712300 V316712300

Jarak: 4 meter

Timeline (Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 3 meter

Timeline (Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 2 meter

Timeline (Master)

Master

Kirim Data (ke) Terima Data (dari)

Jarak: 1 meter

Timeline (Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: SINKRONISASI JAM DIGITAL NIRKABEL - USD

66

Tabel 4.22 Persentase keberhasilan metode penskalaan pengamatan ke-4

Jarak

(meter)

Jumlah Data pada

Subsistem Master

Jumlah Data yang

TIDAK Seharusnya

Jumlah Data yang

Seharusnya

Persentase

Kebehasilan (%)

1 12 0 12 100

2 12 10 12 16,67

3 10 8 12 16,67

4 0 0 12 0

Pengamatan ke-5 dilakukan untuk menguji sistem close loop. Saat subsistem

master menerima data waktu dari subsistem slave 1/subsistem slave 2, subsistem master

membandingkan data waktu yang diterima dari subsistem slave dengan data waktu pada

subsistem master.

Pengiriman data waktu dari subsistem slave ke subsistem master menggunakan

format UNIX timestamp. Sehingga, kesalahan penunjukan waktu dalam skala menit

diterjemahkan menjadi selisih antara subsistem master dengan subsistem slave adalah 60

detik. Jika selisih waktu antara subsistem master dengan subsistem slave lebih besar/lebih

kecil dari 60 detik, maka subsistem master akan mengirimkan data waktunya kepada

subsistem slave. Hasil pengamatan ketiga ditunjukkan pada Tabel 4.23. Variasi waktu

untuk pengujian dilakukan dengan mengirimkan data waktu komputer secara manual ke

subsistem master.

Tabel 4.23 Metode penskalaan pengamatan ke-5

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

U314622513 0

V314622458 -78

V314622536 Diterima

U314622633 +71

U314622562 Diterima

V314622638 +71

V314622567 Diterima

U314622813 -33

V314622818 -33

U314622873 +45

V314622878 +45

1314622828

1314622833

1

1314622513

1314622536

:

2

1314622562

1314622567

31314622846

1314622851

4

NoUnixTime

(Master)

Master

Kirim Data (ke) Terima Data (dari)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: SINKRONISASI JAM DIGITAL NIRKABEL - USD

67

Tabel 4.23 (lanjutan) Metode penskalaan pengamatan ke-5

Slave 1 Slave 2

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

U314622933 -75

U314623008 Diterima

V314622938 -75

V314623013 Diterima

U314623293 +260

U314623033 Diterima

V314623238 +154

V314623084 Diterima

5

1314623008

1314623013

6

1314623033

1314623084

NoUnixTime

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Hasil pengamatan ke-5 menunjukkan bahwa jika selisih antara data waktu yang

diterima dari subsistem slave dengan data waktu subsistem master lebih kecil dari 60 detik,

maka subsistem master tidak mengirimkan data waktunya ke subsistem slave. Jika selisih

antara data waktu yang diterima dari subsistem slave dengan data waktu subsistem master

lebih besar dari 60 detik, maka subsistem master mengirimkan data waktunya ke subsistem

slave. Melihat tanggapan subsistem master terhadap selisih data waktu dengan subsistem

slave dan melihat hasil penerimaan data oleh subsistem slave, maka persentase

keberhasilan sistem adalah 100%.

Contoh pembacaan Tabel 4.23 adalah sebagai berikut, pada pukul 12:55:13

(1314622513) subsistem master menerima data dari subsistem slave 1. Selisih data yang

diterima adalah 0 detik, sehingga subsistem master tidak mengirimkan data waktu ke

subsistem slave. Pada pukul 12:55:36 (1314622536), subsistem master menerima data dari

subsistem slave 2. Data yang diterima adalah V314622458 yang kemudian dihapus header

datanya, sehingga datanya menjadi 1314622458. Data tersebut menunjukkan bahwa

subsistem slave 2 lebih lambat 78 detik dibandingkan dengan subsistem master, maka

subsistem master kemudian mengirimkan data waktunya ke subsistem slave 2.

Hasil pengamatan pertama sampai dengan ke-5 dengan metode penskalaan

menunjukkan bahwa:

a. Semakin jauh jarak antara subsistem master dengan subsistem slave pada

kondisi LOS, persentase keberhasilan pengiriman dan penerimaan data oleh

subsistem master semakin rendah. Jarak optimal yang dapat dijangkau

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: SINKRONISASI JAM DIGITAL NIRKABEL - USD

68

sistem dalam kondisi LOS adalah 3 meter, dan jarak maksimal yang dapat

dijangkau sistem adalah 10 meter.

b. Tingkat kerapatan penghalang/sekat mempengaruhi persentase keberhasilan

pengiriman dan penerimaan data antara subsistem master dengan subsistem

slave. Jarak optimal yang dapat dijangkau sistem dalam kondisi terhalang

oleh sekat asbes adalah 2 meter, dan jarak maksimal yang dapat dijangkau

sistem adalah 5 meter. Jarak optimal yang dapat dijangkau sistem dalam

kondisi terhalang oleh sekat tembok adalah 1 meter, dan jarak maksimal

yang dapat dijangkau sistem adalah 3 meter.

c. Tidak adanya data yang diterima oleh subsistem master pada pengamatan

yang ke-2 karena antara subsistem master dan subsistem slave dihalangi

tembok.

d. Tanggapan subsistem master terhadap selisih 60 detik terhadap data waktu

dari subsistem slave menunjukkan bahwa sistem close loop dapat bekerja

dengan baik dengan persentase keberhasilan 100% .

4.3.3.2 Metode Uji Coba Sistem

Metode uji coba sistem dilakukan dengan mempertimbangkan hasil pengamatan

pada metode penskalaan waktu pengiriman data. Jarak optimal terjauh yang dapat

dijangkau sistem pada metode penskalaan adalah 3 meter dan antara subsistem master

dengan subsistem slave dalam kondisi LOS, sehingga jarak tersebut yang digunakan untuk

pengamatan metode uji coba sistem. Pengamatan metode uji coba sistem dilakukan 3 kali

dengan variasi mode alarm. Persentase keberhasilan dilakukan dengan mengakumulasi

penerimaan data oleh subsistem master dan keberhasilan pengiriman peringatan alarm ke

subsistem slave, akumulasi dilakukan dari pengamatan pertama hingga pengamatan ke-3.

Pengamatan pertama dilakukan dengan mengatur waktu alarm-mode interval,

pengamatan ke-2 dilakukan dengan mengatur waktu alarm-mode jam tertentu, dan

pengamatan ke-3 mode alarm yang digunakan mode alarm mati. Pengaturan waktu alarm

dilakukan dari GUI. Data-data pengaturan waktu alarm ditunjukkan pada Tabel 4.9.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: SINKRONISASI JAM DIGITAL NIRKABEL - USD

69

Gambar 4.15 Denah lokasi metode uji coba sistem

Jarak pengamatan antara subsistem master dengan subsistem slave adalah 3 meter.

Denah lokasi pengamatan ditunjukkan pada Gambar 4.15. Hasil pengamatan metode uji

coba subsistem ditunjukkan pada Tabel 4.24 - Tabel 4.26.

Tabel 4.24 Uji coba sistem pengamatan pertama mode alarm interval

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

13 : 43 : 9

13 : 45 : 3

13 : 50 : 3 A111111111 Berbunyi

13 : 50 : 8

13 : 55 : 3 A111111111 Berbunyi

14 : 0 : 3 A111111111 Berbunyi

14 : 0 : 8 B111111111 Berbunyi

14 : 0 : 10

14 : 5 : 3 A111111111 Berbunyi

14 : 10 : 3 A111111111 Berbunyi

14 : 10 : 8 B111111111 Berbunyi

14 : 15 : 3 A111111111 Berbunyi

14 : 15 : 14 U315059313 -1

14 : 15 : 19 V315059318 -1

14 : 15 : 30

14 : 20 : 8 B111111111 Berbunyi

14 : 20 : 30

14 : 30 : 15 U315060213 -2

14 : 30 : 21 V315060218 -3

14 : 45 : 14 U315061113 -1

14 : 45 : 14 V315061118 -1

15 : 0 : 10 U315062010 V315062010 Diterima Diterima

13:0:14aktif

startCount15

alarm dengan ID intervalStart1 aktif

alarm dengan ID startCount60 aktif

alarm dengan ID intervalStart2 aktif

Data waktu alarm pada subsistem master : (mode alarm interval)

I134514150005135014200010 A656565656565656565656565 B656565656565656565656565

Alarm

waktu mulai pengambilan data

Timeline

(Master)

Master Slave 1 Slave 2

Kirim Data Terima DataAlarm

alarm dengan ID intervalStop2 aktif

startCount15

aktif

alarm dengan ID intervalStop1 aktif

14 : 0 : 18

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: SINKRONISASI JAM DIGITAL NIRKABEL - USD

70

Pengamatan ke-2dilakukan setelah alarm mode interval selesai dijalankan dan

mode alarm diubah menjadi alarm mode jam tertentu. Pengubahan mode alarm dari GUI

menyebabkan subsistem master ter-reset. Sehingga, alarm dengan ID everyHourAlarm

menjadi tidak aktif dan akan diaktifkan lagi pada pukul 16:00:10. Diterimanya waktu

subsistem master oleh subsistem slave menyebabkan subsistem slave ter-reset, sehingga

alarm dengan ID every15MinuteAlarm dalam kondisi tidak aktif dan akan diaktifkan lagi

pada pukul 16:15:10. Hasil pengamatan ke-2 ditunjukkan pada Tabel 4.25.

Tabel 4.25 Uji coba sistem pengamatan ke-2 mode alarm jam tertentu

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

15 : 4 : 40

15 : 5 : 3 A111111111 Berbunyi

15 : 10 : 3 A111111111 Berbunyi

15 : 15 : 3 A111111111 Berbunyi

15 : 15 : 8 B111111111 Berbunyi

15 : 20 : 3 A111111111

15 : 20 : 8 B111111111 Berbunyi

15 : 25 : 3 A111111111

15 : 30 : 3 A111111111

15 : 30 : 13 U315063813 0

15 : 30 : 19 V315063818 -1

15 : 35 : 8 B111111111 Berbunyi

15 : 40 : 8 B111111111 Berbunyi

waktu mulai pengambilan data

Terima DataAlarm Alarm

Timeline

(Master)

Master

I656565656565656565656565 A150515101515152015251530 B153515401520151565656565

Data waktu alarm pada subsistem master : (mode alarm jam tertentu)

Slave 1 Slave 2

Kirim Data

Pengamatan ke-3 dilakukan setelah mode alarm jam tertentu selesai dijalankan dan

mode alarm diubah menjadi alarm mode mati. Pengubahan mode alarm dari GUI

menyebabkan subsistem master dalam kondisi ter-reset. Sehingga, alarm dengan ID

everyHourAlarm menjadi tidak aktif dan akan diaktifkan lagi pada pukul16:00:10 karena

pe-reset-an dilakukan pada jam yang sama dengan pe-reset-an sebelumnya. Tidak

dilakukan reset terhadap subsistem slave 1 dan subsistem slave 2, sehingga alarm dengan

ID every15MinuteAlarm tetap dalam kondisi aktif. Hasil pengamatan ke-3 ditunjukkan

pada Tabel 4.26.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: SINKRONISASI JAM DIGITAL NIRKABEL - USD

71

Tabel 4.26 Uji coba sistem pengamatan ke-3 mode alarm mati

Selisih Selisih

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

14 : 42 : 15

15 : 45 : 14 U315064713 -1

15 : 45 : 19 V315064718 -1

16 : 0 : 10

16 : 0 : 13 U315065613 0

16 : 0 : 18 V315065618 0

16 : 15 : 13 U315066513 0

16 : 15 : 18 V315066518 0

16 : 30 : 18 V315067418 0

16 : 45 : 18 V315068318 0

17 : 0 : 10 U315069210 V315069210

17 : 30 : 15 U315071013 -2

17 : 30 : 19 V315071018 -1

17 : 45 : 14 U315071913 -1

17 : 45 : 20 V315071918 -2

18 : 0 : 10 U315072810 V315072810

Slave 1 Slave 2

Kirim Data Terima DataAlarm Alarm

Diterima Diterima

alarm dengan ID startCount60 aktif

Diterima Diterima

waktu mulai pengambilan data

Data waktu alarm pada subsistem master : (mode alarm mati)

I656565656565656565656565 A656565656565656565656565 B656565656565656565656565

Timeline

(Master)

Master

Hasil pengamatan pertama sampai dengan ke-3 adalah sebagai berikut:

a. Subsistem master berhasil mengirimkan peringatan alarm ke setiap

subsistem slave pada waktu yang telah diatur oleh GUI.

b. Masing-masing subsistem slave dapat membedakan data waktu subsistem

master dan data waktu peringatan alarm.

c. Subsistem master dapat mengirimkan data waktunya ke subsistem slave

setiap 60 menit dan subsistem slave dapat mengirimkan data waktunya ke

subsistem master setiap 15 menit.

d. Subsistem master dapat menampilkan selisih waktu subsistem master

dengan subsistem slave 1 dan selisih waktu subsistem master dengan

subsistem slave 2, selisih waktu yang ditampilkan di LCD ditunjukkan pada

Gambar 4.16. Adanya selisih waktu antara subsistem master dengan

subsistem slave terjadi karena keterlambatan pembacaan data oleh

subsistem master.

e. Subsistem master tidak menerima 2 data dari subsistem slave 1, 2 data

tersebut seharusnya diterima pada pukul 16:30:13 dan 16:45:13. Data waktu

tersebut sudah dikirimkan oleh subsistem slave 1, hasil pencatatan (log)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: SINKRONISASI JAM DIGITAL NIRKABEL - USD

72

pengiriman data waktu oleh subsistem slave 1 ditunjukkan pada Gambar

4.17. Pencatatan data pada subsistem slave 1 dilakukan oleh perangkat

lunak Terminal. Sehingga, dengan adanya 2 data yang tidak diterima oleh

subsistem master karena transceiver tidak menerima data dan pada saat

subsistem master melakukan pemeriksaan data dari subsistem slave pada

program loop, waktu pemeriksaannya tidak sinkron dengan waktu

pengiriman data dari subsistem slave. Dengan tidak adanya 2 data dari

subsistem slave 1, subsistem master menampilkan hasil selisih waktu

terakhir yang diterima dari subsistem slave 1, yaitu: 0 detik.

Gambar 4.16 Selisih waktu yang ditampilkan LCD

Gambar 4.17 Data yang dikirim subsistem slave 1

Tabel 4.27 Persentase keberhasilan metode uji coba sistem

No DATAJumlah

Data

Jumlah Data yang

Seharusnya

Persentase

Keberhasilan

(% )

1Data waktu yang dikirmkan subsistem slave 1 dan

diterima oleh subsistem master9 11 81,82

2Data waktu yang dikirmkan subsistem slave 2 dan

diterima oleh subsistem master11 11 100

3Data waktu yang dikirmkan subsistem master dan

diterima oleh subsistem slave 13 3 100

4Data waktu yang dikirmkan subsistem master dan

diterima oleh subsistem slave 23 3 100

5Data peringatan alarm yang dikirimkan subsistem

master dan diterima subsistem slave 19 9 100

6Data peringatan alarm yang dikirimkan subsistem

master dan diterima subsistem slave 27 7 100

96,97Rata-rata persentase keberhasilan metode uji coba sistem

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: SINKRONISASI JAM DIGITAL NIRKABEL - USD

73

Persentase keberhasilan metode uji coba sistem ditunjukkan pada Tabel 4.27. Rata-

rata keberhasilan sistem adalah 96,97%. Adanya 3,03% kesalahan pada pengamatan tidak

mempengaruhi tampilan waktu subsistem slave 1.

4.3.4 Hasil Pengamatan pada Subsistem Master dan Subsistem Slave

Hasil pengamatan pada subsistem master dan subsistem slave dilakukan untuk

mengetahui waktu yang dibutuhkan mikrokontroler untuk 1 siklus fungsi loop.

Pengamatan dilakukan dengan menambahkan program toggle agar data pengamatan dapat

dibaca oleh osiloskop. Hasil pembacaan osisloskop adalah 1 periode gelombang kotak,

yang berarti 2 kali pembacaan pin toggle.

Program toggle yang disisipkan adalah sebagai berikut, karakter ‘…’ pada cuplikan

program adalah baris program yang dapat ditunjukkan pada lampiran.

4.3.4.1 Hasil Pengamatan pada Subsistem Master

Pin toggle yang digunakan adalah pin no 15 (PB1) ATmega328. Hasil pengamatan

pada pin toggle ditunjukkan pada Tabel 4.28. Salah satu hasil pembacaan data osiloskop

ditunjukkan pada Gambar 4.18.

Tabel 4.28 Waktu loop subsistem master

Vpp Periode ½ Periode

(Volt) (Detik) (Detik)

1 5,2 2,189 1,0945

2 5,2 2,189 1,0945

3 5,2 2,19 1,095

4 5,2 2,19 1,095

5 5,4 2,19 1,095

1,0948

No.

Pengujian

Rata-rata ½ periode waktu

Hasil pengamatan menunjukkan bahwa rata-rata waktu yang dibutuhkan untuk

fungsi loop adalah 1,0948 detik, termasuk tunda waktu 1 detik untuk menampilkan detik

pada LCD. Program pada subsistem master tidak dilengkapi fasilitas interrupt, sehingga

tunda waktu untuk menampilkan detik mempengaruhi proses pemeriksaan data dari

subsistem slave.

void setup()

//akhir fungsi setup

void loop()

digitalToggle(9);//program toggle yang disisipkan

delay(1000);

//akhir fungsi loop

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: SINKRONISASI JAM DIGITAL NIRKABEL - USD

74

Gambar 4.18 Pembacaan osiloskop fungsi loop subsistem master

4.3.4.2 Hasil Pengamatan pada Subsistem Slave

Pin toggle yang digunakan untuk subsistem slave adalah pin no 4 (PD2)

ATmega328. Hasil pengamatan pada pin toggle subsistem slave 1 ditunjukkan pada Tabel

4.29. Salah satu hasil pembacaan data osiloskop subsistem slave 1 ditunjukkan pada

Gambar 4.19.

Tabel 4.29 Waktu loop subsistem slave 1

Vpp Periode ½ Periode

(Volt) (Detik) (Detik)

1 5,44 2,29 1,145

2 5,44 2,29 1,145

3 5,36 2,28 1,14

4 5,36 2,28 1,14

5 5,36 2,28 1,14

1,142

No.

Pengujian

Rata-rata ½ periode waktu

Hasil pengamatan pada subsistem slave 2 menunjukkan bahwa rata-rata waktu yang

dibutuhkan untuk fungsi loop adalah 1,142 detik, termasuk tunda waktu 1 detik. Program

pada subsistem slave 1 tidak dilengkapi fasilitas interrupt, sehingga tunda waktu untuk

menampilkan detik mempengaruhi proses pemeriksaan data dari subsistem master.

Gambar 4.19 Pembacaan osiloskop fungsi loop subsistem slave 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: SINKRONISASI JAM DIGITAL NIRKABEL - USD

75

Hasil pengamatan pada pin toggle subsistem slave 2 ditunjukkan pada Tabel 4.30.

Salah satu hasil pembacaan data osiloskop subsistem slave 2 ditunjukkan pada Gambar

4.20.

Tabel 4.30 Waktu loop subsistem slave 2

Vpp Periode ½ Periode

(Volt) (Detik) (Detik)

1 5,2 2,28 1,14

2 5,2 2,28 1,14

3 5,2 2,28 1,14

4 5,2 2,28 1,14

5 5,2 2,28 1,14

1,14Rata-rata ½ periode waktu

No.

Pengujian

Hasil pengamatan pada subsistem slave 2 menunjukkan bahwa rata-rata waktu yang

dibutuhkan untuk fungsi loop adalah 1,14 detik, termasuk tunda waktu 1 detik. Program

pada subsistem slave 2 tidak dilengkapi fasilitas interrupt, sehingga tunda waktu untuk

menampilkan detik mempengaruhi proses pemeriksaan data dari subsistem master.

Gambar 4.20 Pembacaan osiloskop fungsi loop subsistem slave 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: SINKRONISASI JAM DIGITAL NIRKABEL - USD

76

5BAB V

KESIMPULAN DAN SARAN

Bab ini menjelaskan mengenai penarikan kesimpulan berdasarkan implementasi

sistem dan data pengamatan pada bab IV, dan beberapa saran yang dapat digunakan untuk

pengembangan sistem selanjutnya.

5.1 Kesimpulan

Berdasarkan hasil data pengamatan dan pembahasan, maka penarikan kesimpulan

Sistem Sinkronisasi Jam Digital Nirkabel adalah sebagai berikut:

1. Dengan menggunakan metode uji coba sistem, sistem dapat bekerja pada jarak

optimal 3 meter pada kondisi LOS dengan persentase keberhasilan 96,97%. Jarak

45 meter sesuai dengan tujuan penelitian belum terpenuhi.

2. Dengan menggunakan metode penskalaan waktu pengiriman data, kondisi

pengamatan LOS, dan lokasi pengamatan dikelilingi gedung, 10 meter adalah

jarak maksimum untuk pengiriman dan penerimaan data dengan persentase

keberhasilan sebesar 66,67%. Jarak optimal untuk pengiriman dan penerimaan

data dengan persentase keberhasilan 100% sejauh 3 meter.

3. Komunikasi GUI dengan server NTP dapat dilakukan dengan memperhatikan

protokol TIME pada Visual Basic dan server NTP tidak dapat memperkirakan

delay jaringan atau melaporkan informasi tambahan.

4. Pengamatan close loop pada sistem menunjukkan bahwa sistem dapat

menanggapi kesalahan dalam skala menit dengan persentase keberhasilan 100%.

5.2 Saran

Saran untuk pengembangan Sistem Sinkronisasi Jam Digital Nirkabel adalah

sebagai berikut:

1. Melakukan pengujian dengan variabel jarak pada modul transceiver yang akan

digunakan.

2. Pembuatan algoritma pemrograman yang lebih baik, sehingga sistem dapat

menangani kesalahan saat data waktu pada subsistem slave tidak diterima oleh

subsistem master.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: SINKRONISASI JAM DIGITAL NIRKABEL - USD

77

[1-37]

DAFTAR PUSTAKA

[1] Tim Penyusun, 2008, Kamus Bahasa Indonesia, Pusat Bahasa Departemen

Pendidikan Nasional, Jakarta.

[2] Mumford, B., 2002, The Eureka Clock and how to improve it,

http://www.bmumford.com/clocks/eureka/eureka.html, diakses 15 Februari 2011.

[3] ------, 2007, Intel® ICH Family Real Time Clock (RTC) Accuracy and

Considerations under Test Conditions, Intel.

[4] Ariyanto, E., Yulianto, F. A., dan Brotohars, T., 2010, Sinkronisasi Jam Digital,

http://www.ittelkom.ac.id/soppii/index.php, diakses 23 September 2010.

[5] ------, 2008, Datasheet nRF24L01, Nordic Semiconductor.

[6] Hainan, L., dan Zhiqiang, L., 2009, Design Wireless Data Transmission System for

Small Hydropower Stations Based on nRF24L01, ICISE 2009 First International

Conference on Information Science and Engineering, hal. 4008-4010.

[7] Idris, R., dan Sasmita, P. E., 2008, Perancangan dan Pembuatan Jam Digital

Tersinkronisasi secara Otomatis, Program Studi D3 Teknik Elektro, Institut

Teknologi Sepuluh Nopember.

[8] Syamsi, M. N., 2005, Penampil Jamak Jam Digital Berbasis Mikrokontroller

AT89C2051 Menggunakan Komunikasi Serial, Program Studi Teknik Elektro,

Universitas Sanata Dharma.

[9] Palungkun, E. S. F. W., 2009, Jam dan Alarm Sekolah Berbasis Mikrokontroler

ATMEGA 16, Program Studi Teknik Elektro, Universitas Sanata Dharma.

[10] Sukaridhoto, S., 2007, Implementasi Sinkronisasi Adzan Masjid, Politeknik

Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember.

[11] Padkipsky, M. A., 1982, A Perspective on The Arpanet Reference Model,

http://tools.ietf.org/html/rfc871, diakses 2 Oktober 2010.

[12] Martinec, M., 2000, Time with Focus on NTP and Slovenia, http://www.ntp.org/,

diakses 2 Oktober 2010.

[13] Mellis, D. A., 2008, Arduino Duemilanove,

http://arduino.cc/en/Main/ArduinoBoardDuemilanove, diakses 5 Oktober 2010.

[14] Hidayatullah, S., dan Pirngadi, H., 2009, Rancang Bangun Counter Product Logger

(CP Logger) Menggunakan Sensor Infrared Berbasis Internet, Jurusan Teknik

Elektro, Institut Teknologi Sepuluh Nopember.

[15] ------, 2009, Datasheet ATmega48PA/88PA/168PA/328P, Atmel.

[16] Sanandra, R., 2009, Perancangan Stand Alone RFID Reader untuk Aplikasi Sistem

Keamanan Pintu, Jurusan Teknik Elektro, Universitas Komputer Indonesia.

[17] ------, 2010, AVR042: AVR Hardware Design Considerations, Atmel.

[18] ------, 2008, Datasheet DS1307, Dallas Semiconductor.

[19] Pasaribu, T., 2010, Perancangan Software Jam Digital dengan Sistem Kalender

Berbasis Mikrokontroller DS1307, Program Studi Diploma III Fisika Instrumentasi,

Universitas Sumatera Utara.

[20] Yuansheng, L., 2010, Analysis of the Maximal Transmission Rate Based on

NRF24L01 Chip System, Information Engineering and Computer Science

(ICIECS), 2010 2nd International Conference on, hal. 1-3.

[21] Kumar, V., Sonavane, S. S., dan Patil, B. P., 2009, Designing Ultra Low Power

Wireless Sensor Network with TCP/IP link, Adaptive Science & Technology, 2009.

ICAST 2009. 2nd International Conference on, hal. 86 - 91.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: SINKRONISASI JAM DIGITAL NIRKABEL - USD

78

[22] Zhoua, Y., Yuana, Y., Gaob, J., Yanga, L., Zhangb, F., Zhub, G., dan Gaob, X.,

2010, An Implanted Closed-loop Chip System for Heart Rate Control: System

Design and Effects in Conscious Rats, Journal of Biomedical Research, vol. 24, hal.

107-114.

[23] Gilb, J. P. K., 2005, The IEEE Wireless Dictionary, Standards Information Network

IEEE Press, New York - USA.

[24] Chang, D. C., 2009, Least Squares/Maximum Likelihood Methods for the Decision-

Aided GFSK Receiver, IEEE SIGNAL PROCESSING LETTERS, vol. 16, no. 6,

hal. 517-520.

[25] Gast, M., 2005, 802.11® Wireless Networks: The Definitive Guide, Second Edition,

O'Reilly Media, Inc., California.

[26] Agung, I. G. A. P. R., dan Suryawan, K. A., 2007, Perancangan dan Realisasi

Penghitung Frekuensi Detak Jantung Berbasis Mikrokontroler AT89S52, Majalah

Ilmiah Teknologi Elektro Universitas Udayana, vol. 6, no. 2, hal. 13-19.

[27] ------, 2007, Datasheet LCD LMB162AFC, Shenzhen Topway Technology Co.,

Ltd.

[28] GrahaTunasMuda, 2011, Character LCD 16x2 Blue Topway,

http://grahatm.blogspot.com/2011/01/character-lcd-16x2-blue-topway.html, diakses

Februari 2011.

[29] ------, 2004, Datasheet 74HC595; 74HCT595, Philips Semiconductor.

[30] Octovhiana, K. D., 2003, Cepat Mahir Visual Basic 6,

http://ilmukomputer.org/2008/11/25/cepat-mahir-visual-basic-6/, diakses Februari

2011.

[31] ------, 2011, What is Unix time?, http://unixtime.info/, diakses September 2011.

[32] ------, 2010, Transceiver nRF24L01+ Module with Chip Antenna,

http://www.sparkfun.com/datasheets/Wireless/Nordic/nRF24L01-Chip-v11.pdf,

diakses Maret 2011.

[33] ------, 2003, A733 PNP Epitaxial Silicon Transistor, Elite Enterprises.

[34] Rijmenants, D., 2004, [Time Synchronizer], http://www.planet-source-

code.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=56177&strZipAccessCo

de=tp%2F%5B561771710, diakses Oktober 2010.

[35] [email protected], tanggal 5 Juli 2011.

[36] PuslitKIM-LIPI, 2006, Network Time Protocol (NTP), http://ntp.kim.lipi.go.id/,

diakses September 2011.

[37] ------, 2001, APPLICATION NOTE 58 Crystal Considerations with Dallas Real-

Time Clocks (RTCs), MAXIM.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: SINKRONISASI JAM DIGITAL NIRKABEL - USD

79

LAMPIRAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.1

Rangkaian Elektronik

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.3

L

TABEL

Tabel 1 Pengamatan pada ruang tertutup metode penskalaan

Slave 1 Slave 2

Selisih* Selisih*

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

10 : 50 : 28

10 : 59 : 0 U315393140 V315393140

11 : 1 : 14 U315393273 -1

11 : 2 : 14 U315393333 -1

11 : 3 : 0 U315393380 V315393380

11 : 5 : 14 U315393513 -1

11 : 6 : 15 U315393573 -2

11 : 7 : 0 U315393620 V315393620

11 : 9 : 14 U315393753 -1

11 : 10 : 14 U315393813 -1

11 : 11 : 0 U315393860 V315393860

11 : 13 : 14 U315393993 -1

11 : 14 : 14 U315394053 -1

11 : 15 : 0 U315394100 V315394100

11 : 17 : 15 U315394233 -2

11 : 18 : 15 U315394293 -2

11 : 19 : 0 U315394340 V315394340

11 : 21 : 14 U315394473 -1

11 : 22 : 14 U315394533 -1

Lokasi pengambilan data: Jl.Kanigoro 224, Pomahan, Maguwoharjo, Sleman, Yogyakarta. Subsistem master

diletakkan di ruang yang bersebelahan dengan subsistem slave 1 dan slave 2.

Metode Pengamatan : Penskalaan

waktu mulai pengambilan data

Kondisi ruangan: Ruang tertutup

jarak subsistem master dengan subsistem slave 1 : + 1 meter

jarak subsistem master dengan subsistem slave 2 : + 1,5 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Denah Lokasi Pengamatan:

subsistem slave 1 dan slave 2 diletakkan pada ruang yang sama

Ket: *: Selisih adalah waktu antara subsistem master dan subsistem slave

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.4

Tabel 2 Pengamatan pada ruang terbuka metode penskalaan

Slave 1 Slave 2

Selisih* Selisih*

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

12 : 24 : 2

12 : 29 : 0 U315398540 V315398540

12 : 30 : 21 V315398618 -3

12 : 31 : 15 U315398673 -2

12 : 32 : 15 U315398733 -2

12 : 32 : 21 V315398738 -3

12 : 33 : 0 U315398780 V315398780

12 : 37 : 0 U315399020 V315399020

12 : 40 : 16 U315399213 -3

12 : 40 : 20 V315399218 -2

12 : 41 : 0 U315399260 U315399260

12 : 43 : 14 U315399393 -1

12 : 44 : 14 U315399453 -1

12 : 45 : 0 U315399501 V315399501

12 : 48 : 14 U315399693 -1

12 : 49 : 0 U315399740 V315399740

12 : 51 : 15 U315399873 -2

12 : 52 : 15 U315399933 -2

Ket: *: Selisih adalah waktu antara subsistem master dan subsistem slave

Kondisi ruangan: Ruang terbuka (LOS) jarak + 10 meter

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Lokasi pengambilan data: Jl.Kanigoro 224, Pomahan, Maguwoharjo, Sleman, Yogyakarta.

waktu mulai pengambilan data

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.5

Tabel 3 Pengamatan pada ruang terbuka metode penskalaan dengan jendela terbuka

Slave 1 Slave 2

Selisih* Selisih*

Slave 1 Slave 2 Slave 1 Slave 2 (detik) (detik)

17 : 31 : 45

17 : 32 : 0 U314639120 V314639120

17 : 34 : 20 V314639258 -2

17 : 35 : 20 V314639318 -2

17 : 36 : 0 U314639360 V314639360

17 : 39 : 14 U314639553 -1

17 : 40 : 0 U314639600 V314639600

17 : 42 : 14 U314639733 -1

17 : 43 : 14 U314639793 -1

17 : 44 : 0 U314639840 V314639840

17 : 46 : 17 U314639973 -3

17 : 47 : 17 U314640033 -3

17 : 48 : 1 U314640081 V314640081

17 : 50 : 14 U314640213 -1

17 : 51 : 14 U314640273 -1

Ket: *: Selisih adalah waktu antara subsistem master dan subsistem slave

waktu mulai pengambilan data

Timeline

(Master)

Master

Kirim Data (ke) Terima Data (dari)

Lokasi pengambilan data: Ruang Tugas Akhir

Kondisi ruangan/jarak: Ruang terbuka (LOS) dan Jendela Terbuka / + 3 meter

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: SINKRONISASI JAM DIGITAL NIRKABEL - USD

L.6

Library Arduino diunduh dari

1. Time.h, TimeAlarms.h, DS1307RTC.h diunduh di

http://www.arduino.cc/playground/Code/Time

2. Mirf.h, nRF24L01.h, MirfHardwareSpiDriver.h diunduh di

www.arduino.cc/playground/InterfacingWithHardware/Nrf24L01

3. EEPROM.h, LiquidCrystal.h, SPI.h sudah

Urutan Lampiran pada Source Code adalah sebagai berikut:

1. Program Arduino untuk subsistem master

2. Program Arduino untuk subsistem slave 1

3. Program Arduino untuk subsistem slave 2

4. Program GUI (Form wireLessClockSync.frm)

5. Program GUI (Module modMain.bas)

6. Program GUI (Module RS232.bas)

7. Program GUI (Class Module cInetTime.cls)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.1

1 /*2 ######################################################################

###3 ### Many Thanks To:4 ### ARDUINO TEAM5 # <Time.h>, <TimeAlarms.h>, <DS1307RTC.h> : Michael Margolis [Mem]6 # <Mirf.h>, <MirfHardwareSpiDriver.h> : Aaron Shrimpton [Aaronds]7 # <nRF24L01.h> : Stefan Engelke8 ######################################################################

###9 * FINAL PROJECT : SINKRONISASI JAM DIGITAL NIRKABEL10 [WIRELESS SYNCHRONISATION on DIGITAL CLOCK]11 * AUTHOR : NUGROHO BUDI WICAKSONO12 * LAST MODIFIED : SEPT, 12 201113 * PROGRAM NAME : WiSyncMaster.pde14 * BOARD : UNO15 * IDE VERSION : ALPHA (022)16 * HARDWARE REQ. : RTC DS1307, nRF24L01+, LCD17 ######################################################################

###18 */19 #include <Time.h>20 #include <TimeAlarms.h>21 #include <Wire.h> 22 #include <DS1307RTC.h>23 #include <EEPROM.h>24 #include <LiquidCrystal.h>25 #include <SPI.h>26 #include <Mirf.h>27 #include <nRF24L01.h>28 #include <MirfHardwareSpiDriver.h>29 #include "stdlib.h"30 LiquidCrystal lcd(7, 8, 2, 3, 4, 5);31 //variables for RTC Function32 #define TIME_MSG_LEN 1133 #define TIME_HEADER 'T'34 //variables for Interval Alarm Function35 #define DATA_INTERVAL 2536 #define INT_SLAVE 'I'37 //variables for Exact Time Alarm Function38 #define DATA_EXACT1 25 // ROOM 139 #define EXACT_SLAVE1 'A' // ROOM 140 #define DATA_EXACT2 25 // ROOM 241 #define EXACT_SLAVE2 'B' // ROOM 242 //variable for Testing43 #define OTHERS 'O'44 //===========end============45 //internal mode Alarm for ROOM 146 byte hourStart1 = 0;47 byte minuteStart1 = 0;48 byte hourStop1 = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.2

49 byte minuteStop1 = 0;50 byte hourInterval1 = 0;51 byte minuteInterval1 = 0;52 unsigned long s1intTime; //slave 1 interval calculation53 //internal mode Alarm for ROOM 254 byte hourStart2 = 0;55 byte minuteStart2 = 0;56 byte hourStop2 = 0;57 byte minuteStop2 = 0;58 byte hourInterval2 = 0;59 byte minuteInterval2 = 0;60 unsigned long s2intTime; //slave 2 interval calculation61 //=================================================62 //exactTime mode Alarm for ROOM 163 byte exactHour1Slave1 = 0; //HOUR EXACTtime 1 ROOM 164 byte exactMinute1Slave1 = 0; //MINUTE EXACTtime 1 ROOM 165 byte exactHour2Slave1 = 0; //HOUR EXACTtime 2 ROOM 166 byte exactMinute2Slave1 = 0; //MINUTE EXACTtime 2 ROOM 167 byte exactHour3Slave1 = 0; //HOUR EXACTtime 3 ROOM 168 byte exactMinute3Slave1 = 0; //MINUTE EXACTtime 3 ROOM 169 byte exactHour4Slave1 = 0; //HOUR EXACTtime 4 ROOM 170 byte exactMinute4Slave1 = 0; //MINUTE EXACTtime 4 ROOM 171 byte exactHour5Slave1 = 0; //HOUR EXACTtime 5 ROOM 172 byte exactMinute5Slave1 = 0; //MINUTE EXACTtime 5 ROOM 173 byte exactHour6Slave1 = 0; //HOUR EXACTtime 6 ROOM 174 byte exactMinute6Slave1 = 0; //MINUTE EXACTtime 6 ROOM 175 //===========end===========76 //exactTime mode Alarm for ROOM 277 byte exactHour1Slave2 = 0; //HOUR EXACTtime 1 ROOM 278 byte exactMinute1Slave2 = 0; //MINUTE EXACTtime 1 ROOM 279 byte exactHour2Slave2 = 0; //HOUR EXACTtime 2 ROOM 280 byte exactMinute2Slave2 = 0; //MINUTE EXACTtime 2 ROOM 281 byte exactHour3Slave2 = 0; //HOUR EXACTtime 3 ROOM 282 byte exactMinute3Slave2 = 0; //MINUTE EXACTtime 3 ROOM 283 byte exactHour4Slave2 = 0; //HOUR EXACTtime 4 ROOM 284 byte exactMinute4Slave2 = 0; //MINUTE EXACTtime 4 ROOM 285 byte exactHour5Slave2 = 0; //HOUR EXACTtime 5 ROOM 286 byte exactMinute5Slave2 = 0; //MINUTE EXACTtime 5 ROOM 287 byte exactHour6Slave2 = 0; //HOUR EXACTtime 6 ROOM 288 byte exactMinute6Slave2 = 0; //MINUTE EXACTtime 6 ROOM 289 //===========end===========90 //variables for EEPROMread91 int address = 200;92 byte value;93 //===========end===========94 //variables for MiRF95 int count, txORrx; //slave 196 char dataSend[11]; //slave 197 char dataRecieve[11]; //slave 198 byte positive1; //slave 199 byte positive2; //slave 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.3

100 101 unsigned long substract1; //slave 1102 unsigned long substract2; //slave 2103 //===========end===========104 //==================================================== ALARM ID

====================================================105 AlarmID_t intervalStart1, intervalStop1, intervalTimer1; //ID for

interval Slave 1106 AlarmID_t intervalStart2, intervalStop2, intervalTimer2; //ID for

interval Slave 2107 AlarmID_t slave1Time1, slave1Time2, slave1Time3, slave1Time4,

slave1Time5, slave1Time6; //ID for exacted Time Slave 1108 AlarmID_t slave2Time1, slave2Time2, slave2Time3, slave2Time4,

slave2Time5, slave2Time6; //ID for exacted Time Slave 2109 AlarmID_t startCount60, everyHourAlarm; //alarm to Sending RTC time

to Slave110 //=======================================================end==========

==============================================111 112 //====================================================================

================ SETUP SETUP SETUP SETUP SETUP113 void setup()114 Serial.begin(9600);115 lcd.begin(16,2);116 setSyncProvider(RTC.get);117 setSyncInterval(600);118 if(timeStatus()!= timeSet)119 lcd.println("Can't sync RTC! ");120 else121 lcd.println(" Can sync RTC! ");122 delay(600);123 //====== Alarm inialisation. INTERVAL MODE ALARM124 byte h1Start = EEPROM.read (200); //hourEEPROM ==>1//START HOUR125 byte m1Start = EEPROM.read (201); //minuteEEPROM ==>1//START

MINUTE126 byte h1Stop = EEPROM.read (202); //hourEEPROM ==>1//STOP HOUR127 byte m1Stop = EEPROM.read (203); //minuteEEPROM ==>1//STOP MINUTE128 byte h1Int = EEPROM.read (204); //hourEEPROM ==>1//INTERVAL

HOUR129 byte m1Int = EEPROM.read (205); //minuteEEPROM ==>1//INTERVAL

MINUTE130 byte h2Start = EEPROM.read (206); //hourEEPROM

==>2//START HOUR131 byte m2Start = EEPROM.read (207); //minuteEEPROM

==>2//START MINUTE132 byte h2Stop = EEPROM.read (208); //hourEEPROM

==>2//STOP HOUR133 byte m2Stop = EEPROM.read (209); //minuteEEPROM

==>2//STOP MINUTE134 byte h2Int = EEPROM.read (210); //hourEEPROM

==>2//INTERVAL HOUR

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.4

135 byte m2Int = EEPROM.read (211); //minuteEEPROM ==>2//INTERVAL MINUTE

136 //ROOM 1137 intervalStart1 = Alarm.alarmRepeat(h1Start, m1Start, 3,

enableAlarm1); //==start alarm mode interval room 1138 intervalStop1 = Alarm.alarmRepeat(h1Stop, m1Stop, 30,

disableAlarm1); //==stop alarm mode interval room 1139 s1intTime = m1Int + (h1Int * 60);140 intervalTimer1 = Alarm.timerRepeat( s1intTime * SECS_PER_MIN,

doRingAlarm1 );141 Alarm.disable(intervalTimer1);142 //ROOM 2143 intervalStart2 = Alarm.alarmRepeat(h2Start, m2Start, 8,

enableAlarm2); //==start alarm mode interval room 2144 intervalStop2 = Alarm.alarmRepeat(h2Stop, m2Stop, 30,

disableAlarm2); //==stop alarm mode interval room 2145 s2intTime = m2Int + (h2Int * 60);146 intervalTimer2 = Alarm.timerRepeat( s2intTime * SECS_PER_MIN,

doRingAlarm2 );147 Alarm.disable(intervalTimer2);148 149 //====== Alarm inialisation. EXACTTIME MODE ALARM150 //ROOM 1151 byte h1Slave1 = EEPROM.read (171); //hourEEPROM ==> HOUR

1 SLAVE 1152 byte m1Slave1 = EEPROM.read (172); //minuteEEPROM ==> MINUTE

1 SLAVE 1153 byte h2Slave1 = EEPROM.read (173); //hourEEPROM ==> HOUR

2 SLAVE 1154 byte m2Slave1 = EEPROM.read (174); //minuteEEPROM ==> MINUTE

2 SLAVE 1155 byte h3Slave1 = EEPROM.read (175); //hourEEPROM ==> HOUR

3 SLAVE 1156 byte m3Slave1 = EEPROM.read (176); //minuteEEPROM ==> MINUTE

3 SLAVE 1157 byte h4Slave1 = EEPROM.read (177); //hourEEPROM ==> HOUR

4 SLAVE 1158 byte m4Slave1 = EEPROM.read (178); //minuteEEPROM ==> MINUTE

4 SLAVE 1159 byte h5Slave1 = EEPROM.read (179); //hourEEPROM ==> HOUR

5 SLAVE 1160 byte m5Slave1 = EEPROM.read (180); //minuteEEPROM ==> MINUTE

5 SLAVE 1161 byte h6Slave1 = EEPROM.read (181); //hourEEPROM ==> HOUR

6 SLAVE 1162 byte m6Slave1 = EEPROM.read (182); //minuteEEPROM ==> MINUTE

6 SLAVE 1163 slave1Time1 = Alarm.alarmRepeat(h1Slave1, m1Slave1, 3,

doRingAlarm1);164 slave1Time2 = Alarm.alarmRepeat(h2Slave1, m2Slave1, 3,

doRingAlarm1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.5

165 slave1Time3 = Alarm.alarmRepeat(h3Slave1, m3Slave1, 3,doRingAlarm1);

166 slave1Time4 = Alarm.alarmRepeat(h4Slave1, m4Slave1, 3,doRingAlarm1);

167 slave1Time5 = Alarm.alarmRepeat(h5Slave1, m5Slave1, 3,doRingAlarm1);

168 slave1Time6 = Alarm.alarmRepeat(h6Slave1, m6Slave1, 3,doRingAlarm1);

169 170 //ROOM 2171 byte h1Slave2 = EEPROM.read (183); //hourEEPROM ==> HOUR

1 SLAVE 2172 byte m1Slave2 = EEPROM.read (184); //minuteEEPROM ==> MINUTE

1 SLAVE 2173 byte h2Slave2 = EEPROM.read (185); //hourEEPROM ==> HOUR

2 SLAVE 2174 byte m2Slave2 = EEPROM.read (186); //minuteEEPROM ==> MINUTE

2 SLAVE 2175 byte h3Slave2 = EEPROM.read (187); //hourEEPROM ==> HOUR

3 SLAVE 2176 byte m3Slave2 = EEPROM.read (188); //minuteEEPROM ==> MINUTE

3 SLAVE 2177 byte h4Slave2 = EEPROM.read (189); //hourEEPROM ==> HOUR

4 SLAVE 2178 byte m4Slave2 = EEPROM.read (190); //minuteEEPROM ==> MINUTE

4 SLAVE 2179 byte h5Slave2 = EEPROM.read (191); //hourEEPROM ==> HOUR

5 SLAVE 2180 byte m5Slave2 = EEPROM.read (192); //minuteEEPROM ==> MINUTE

5 SLAVE 2181 byte h6Slave2 = EEPROM.read (193); //hourEEPROM ==> HOUR

6 SLAVE 2182 byte m6Slave2 = EEPROM.read (194); //minuteEEPROM ==> MINUTE

6 SLAVE 2183 slave2Time1 = Alarm.alarmRepeat(h1Slave2, m1Slave2, 8,

doRingAlarm2);184 slave2Time2 = Alarm.alarmRepeat(h2Slave2, m2Slave2, 8,

doRingAlarm2);185 slave2Time3 = Alarm.alarmRepeat(h3Slave2, m3Slave2, 8,

doRingAlarm2);186 slave2Time4 = Alarm.alarmRepeat(h4Slave2, m4Slave2, 8,

doRingAlarm2);187 slave2Time5 = Alarm.alarmRepeat(h5Slave2, m5Slave2, 8,

doRingAlarm2);188 slave2Time6 = Alarm.alarmRepeat(h6Slave2, m6Slave2, 8,

doRingAlarm2);189 190 //disabling alarm for slave 1 mode Interval 191 if (h1Start == 65 && m1Start == 65)192 Alarm.disable(intervalStart1);193 Alarm.disable(intervalStop1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.6

194 Serial.println ("INT Slave 1 disabled");195 196 //disabling alarm for slave 2mode Interval197 if (h2Start == 65 && m2Start == 65)198 Alarm.disable(intervalStart2);199 Alarm.disable(intervalStop2);200 Serial.println ("INT Slave 2 disabled");201 202 //disabling alarm for slave 1 mode ExactTime

=============================203 if (h1Slave1 == 65 && m1Slave1 == 65)//alarm 1 slave 1204 Alarm.disable(slave1Time1);205 Serial.println ("JT Slave 1 ID 1 disabled");206 207 if (h2Slave1 == 65 && m2Slave1 == 65)//alarm 2 slave 1208 Alarm.disable(slave1Time2);209 Serial.println ("JT Slave 1 ID 2 disabled");210 211 if (h3Slave1 == 65 && m3Slave1 == 65)//alarm 3 slave 1212 Alarm.disable(slave1Time3);213 Serial.println ("JT Slave 1 ID 3 disabled");214 215 if (h4Slave1 == 65 && m4Slave1 == 65)//alarm 4 slave 1216 Alarm.disable(slave1Time4);217 Serial.println ("JT Slave 1 ID 4 disabled");218 219 if (h5Slave1 == 65 && m5Slave1 == 65)//alarm 5 slave 1220 Alarm.disable(slave1Time5);221 Serial.println ("JT Slave 1 ID 5 disabled");222 223 if (h6Slave1 == 65 && m6Slave1 == 65)//alarm 6 slave 1224 Alarm.disable(slave1Time6);225 Serial.println ("JT Slave 1 ID 6 disabled");226 227 //disabling alarm for slave 2 mode ExactTime

=============================228 if (h1Slave2 == 65 && m1Slave2 == 65)//alarm 1 slave 2229 Alarm.disable(slave2Time1);230 Serial.println ("JT Slave 2 ID 1 disabled");231 232 if (h2Slave2 == 65 && m2Slave2 == 65)//alarm 2 slave 2233 Alarm.disable(slave2Time2);234 Serial.println ("JT Slave 2 ID 2 disabled");235 236 if (h3Slave2 == 65 && m3Slave2 == 65)//alarm 3 slave 2237 Alarm.disable(slave2Time3);238 Serial.println ("JT Slave 2 ID 3 disabled");239 240 if (h4Slave2 == 65 && m4Slave2 == 65)//alarm 4 slave 2241 Alarm.disable(slave2Time4);242 Serial.println ("JT Slave 2 ID 4 disabled");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.7

243 244 if (h5Slave2 == 65 && m5Slave2 == 65)//alarm 5 slave 2245 Alarm.disable(slave2Time5);246 Serial.println ("JT Slave 2 ID 5 disabled");247 248 if (h6Slave2 == 65 && m6Slave2 == 65)//alarm 6 slave 2249 Alarm.disable(slave2Time6);250 Serial.println ("JT Slave 2 ID 6 disabled");251 252 253 time_t curr_time = now();254 int everyHour = hour(curr_time);255 everyHour += 1; //should be

uncommented!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

256 // int everyMinute = minute(curr_time); // unused,just for testing

257 // everyMinute = everyMinute + 1; // unused,just for testing

258 startCount60 = Alarm.alarmOnce(everyHour, 00, 10, enableEveryHour); // should be Alarm.alarmOnce(everyHour, 00, 00, enableEveryHour, for testing : everyHour, everyMinute, 00, enableEveryHour)

259 everyHourAlarm = Alarm.timerRepeat( 60 * SECS_PER_MIN,sendDataToSlave); // should be repeat every 60 minutes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

260 Alarm.disable(everyHourAlarm);261 262 pinMode(9, OUTPUT);263 digitalWrite(9,HIGH);264 265 Serial.print(hour());266 Serial.print(":");267 Serial.print(minute());268 Serial.print(":");269 Serial.println(second());270 lcd.clear();271 digitalWrite(9, HIGH); //Alarm Inisialitation272

//======================================================================== SETTING THE MiRF

273 Mirf.cePin = 6; //CE pin Setup274 Mirf.csnPin = 10; //CSN pin Setup275 Mirf.spi = &MirfHardwareSpi;276 Mirf.init();277 Mirf.setRADDR((byte *)"mast1");278 Mirf.payload = 11;279 Mirf.channel = 110;280 Mirf.config();281

//==================================================================

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.8

== end SETTING THE MiRF282 // Serial.println("Beginning ... ");283 checkAlarm(); //check the Alarms, please..dont delete this

line,this line just to check the alarms284 Serial.println("Setup is DONE");285 positive1 = 2;286 positive2 = 2;287 pinMode(A1, INPUT); //inisialisastion of SEND BUTTON288 //setup289 290 //====================================================================

===================== LOOP LOOP LOOP LOOP LOOP291 void loop()292 masterMiRFlooping();293 Alarm.delay(0);294 if(Serial.available())295 296 char header = Serial.read();297 if (header == TIME_HEADER)298 processSyncMessage();299 else if (header == INT_SLAVE)300 Interval();301 else if (header == EXACT_SLAVE1)302 exactTimeSlave1();303 else if (header == EXACT_SLAVE2)304 exactTimeSlave2();305 else if (header == OTHERS)306 BlinkBlink();307 308 // checkAlarm(); //check the Alarms, please..dont delete this

line,this line just to check the alarms309 masterMiRFlooping();310 digitalClockDisplay();311 masterMiRFlooping();312 showLine2();313 delay(1000);314 masterMiRFlooping();315 manualSEND(); //new feature316 // checkAlarmValue(); //like setup again317 //loop318 void manualSEND()319 int BUTTON = digitalRead(A1);320 if (BUTTON == LOW)321 sendDataToSlave();322 323 else324 325 //manualSEND326 /*============================= receive serial data from VB

=============================*/327 //======================== reading Visual Basic UNIX TIME data

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.9

==========================//328 void processSyncMessage()329 time_t pctime = 0;330 while (Serial.available() > TIME_MSG_LEN);331 for(int i=0; i < TIME_MSG_LEN -1; i++)332 333 char c = Serial.read();334 if( c >= '0' && c <= '9')335 pctime = (10 * pctime) + (c - '0');336 337 338 time_t t = pctime;339 RTC.set(t);340 setTime(t);341 //processSyncMessage342 343 /*==================== CHECKing DATA from SLAVE =================*/344 //=================================================================345 void masterMiRFlooping()346 dataRecieve[Mirf.payload];347 //Receive from master348 if(!Mirf.isSending() && Mirf.dataReady())349 Serial.print("MASTER GOT PACKET : ");350 Mirf.getData((byte *) dataRecieve);351 if (count == 0 && dataRecieve[0] == 'U') //RTC data from

SLAVE 1 = U352 time_t slave1Time = 0;353 dataRecieve[0] = '1';354 count = 1;355 for (count = 1; count < 11; count++) 356 char c = dataRecieve[count];357 Serial.print(c);358 if( c >= '0' && c <= '9')359 slave1Time = (10 * slave1Time) + (c - '0');360 361 362 slave1Time = slave1Time + 1000000000;363 Serial.print ("||| this is SLAVE 1 unixTime : ");364 Serial.print (slave1Time);365 Serial.println ("");366 367 unsigned long slave1RecTime = slave1Time;368 unsigned long masterRecTime = now();369 unsigned long resultRecTime;370 371 if (masterRecTime > slave1RecTime)372 resultRecTime = masterRecTime - slave1RecTime;373 substract1 = resultRecTime;374 positive1 = 0;375 376 else if (masterRecTime < slave1RecTime)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.10

377 resultRecTime = slave1RecTime - masterRecTime;378 substract1 = resultRecTime;379 positive1 = 1;380 381 else if (masterRecTime = slave1RecTime)382 resultRecTime = 0;383 substract1 = 0;384 positive1 = 2;385 386 count = 0;387 Serial.print ("this is the substraction result : ");388 Serial.print (substract1);389 Serial.println("");390 Serial.println ("RTC's TIME Slave 1 has been calculated");391 Serial.println("");392 bip();393 394 else if (count == 0 && dataRecieve[0] == 'V') //data from SLAVE

2, header = 'V'395 time_t slave2Time = 0;396 dataRecieve[0] = '1';397 count = 1;398 for (count = 1; count < 11; count++) 399 char c = dataRecieve[count];400 Serial.print(c);401 if( c >= '0' && c <= '9')402 slave2Time = (10 * slave2Time) + (c - '0');403 404 405 slave2Time = slave2Time + 1000000000;406 Serial.print ("||| this is SLAVE 2 unixTime : ");407 Serial.print (slave2Time);408 Serial.println ("");409 410 unsigned long slave2RecTime = slave2Time;411 unsigned long masterRecTime = now();412 unsigned long resultRecTime;413 414 if (masterRecTime > slave2RecTime)415 resultRecTime = masterRecTime - slave2RecTime;416 substract2 = resultRecTime;417 positive2 = 0;418 419 else if (masterRecTime < slave2RecTime)420 resultRecTime = slave2RecTime - masterRecTime;421 substract2 = resultRecTime;422 positive2 = 1;423 424 else if (masterRecTime = slave2RecTime)425 resultRecTime = 0;426 substract2 = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.11

427 positive2 = 2;428 429 count = 0;430 Serial.print ("this is the substraction result : ");431 Serial.print (substract2);432 Serial.println("");433 Serial.println ("RTC's TIME Slave 2 has been calculated");434 Serial.println("");435 bip();436 437 438 count = 0;439 //masterMiRFlooping440 441 /*==================== START, STOP and RINGing the ALARMS for ROOM 1

=================*/442 //====================================================================

==================443 void enableAlarm1()444 Alarm.enable(intervalTimer1);445 Serial.print(now());446 Serial.println(" || ===intStart 1===");447 Serial.println("");448 lcd.setCursor(0,1);449 lcd.print("===intStart 1===");450 delay(2000);451 lcd.clear();452 //enableAlarm1453 void disableAlarm1()454 Serial.print(now());455 Serial.println("====intEnd 1====");456 Serial.println("");457 Alarm.disable(intervalTimer1);458 lcd.setCursor(0,1);459 lcd.print("====intEnd 1====");460 delay(2000);461 lcd.clear();462 //disableAlarm1463 464 void doRingAlarm1()465 count = 0;466 //Transmit data to Slave467 Mirf.setTADDR((byte *)"slav1"); //should be slav1468 delay(5);469 unsigned long dataNow = 1111111111; // example data length for

now()=//1312841340470 ltoa(dataNow, dataSend, 10);471 if (count == 0)472 dataSend[0] = 'A';473 count = 1;474 for (count = 1; count < 11; count++)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 115: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.12

475 Serial.print(dataSend[count]);476 477 Mirf.send((byte *) dataSend);478 Serial.println(now());479 Serial.println("SLAVE 1's Alarm has been SET");480 Serial.println("");481 count = 0;482 483 //doRingAlarm1484 /*==================== START, STOP and RINGing the ALARMS for ROOM 2

=================*/485 //====================================================================

==================486 void enableAlarm2()487 Serial.print(now());488 Serial.println(" || ===intStart 2===");489 Serial.println("");490 Alarm.enable(intervalTimer2);491 lcd.setCursor(0,1);492 lcd.print("===intStart 2===");493 delay(2000);494 lcd.clear();495 //enableAlarm2496 497 void disableAlarm2()498 Serial.print(now());499 Serial.println(" || ===intEnd 2===");500 Serial.println("");501 Alarm.disable(intervalTimer2);502 lcd.setCursor(0,1);503 lcd.print("====intEnd 2====");504 delay(2000);505 lcd.clear();506 //disableAlarm2507 508 void doRingAlarm2()509 count = 0;510 //Transmit data to Slave511 Mirf.setTADDR((byte *)"slav2"); //should be slav1512 delay(5);513 unsigned long dataNow = 1111111111; // example data length for

now()=//1312841340514 ltoa(dataNow, dataSend, 10);515 if (count == 0)516 dataSend[0] = 'B';517 count = 1;518 for (count = 1; count < 11; count++) 519 Serial.print(dataSend[count]);520 521 Mirf.send((byte *) dataSend);522 Serial.println(now());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 116: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.13

523 Serial.println("SLAVE 2's Alarm has been SET");524 Serial.println("");525 count = 0;526 527 //doRingAlarm2528 529 /*==================== ENABLING 60 MINUTES ALARM to SEND DATA to

SLAVE =================*/530 //====================================================================

==================531 void enableEveryHour()532 Serial.println("Enable successfully");533 Alarm.enable(everyHourAlarm);534 //enableEveryHour535 536 void sendDataToSlave()//Read RTC time data and send it to slave537 //Transmit data to Slave1538 count = 0;539 Mirf.setTADDR((byte *)"slav1");//should be slav1540 delay(5);541 Serial.println(" ");542 unsigned long dataNow1 = now();543 ltoa(dataNow1, dataSend, 10);544 if (count == 0)545 dataSend[0] = 'U'; //for testing replaced to 'V', it should be 'U'546 count = 1;547 for (count = 1; count < 11; count++) 548 Serial.print(dataSend[count]);549 550 Mirf.send((byte *) & dataSend);551 Serial.println("||| FinishedSending RTC time to SLAVE 1");552 Serial.println("");553 554 count = 0;555 delay(100);556 Mirf.setTADDR((byte *)"slav2");//should be slav2557 delay(5);558 Serial.println(" ");559 unsigned long dataNow2 = now();560 ltoa(dataNow2, dataSend, 10);561 if (count == 0)562 dataSend[0] = 'V'; //SLAVE 2 HEADER563 count = 1;564 for (count = 1; count < 11; count++) 565 Serial.print(dataSend[count]);566 567 Mirf.send((byte *) & dataSend);568 Serial.println("||| FinishedSending RTC time to SLAVE 2");569 Serial.println("");570 571 count = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 117: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.14

572 //sendDataToSlave573 574 /*========================== Reading EEPROM value

========================*/575 void EEPROMread()576 value = EEPROM.read(address);577 Serial.print(address);578 Serial.print("\t");579 Serial.print(value, DEC);580 Serial.println();581 address = address + 1;582 if (address == 212)583 address = 200;584 delay(10);585 //EEPROMread586 587 void showLine2()588 // line 2 for slave 1589 lcd.setCursor(0,1);590 lcd.print("S1:");591 lcd.setCursor(3,1);592 if (positive1 == 0)593 lcd.print("-");594 else if (positive1 == 1)595 lcd.print("+");596 else if (positive1 == 2)597 lcd.print(" ");598 if (substract1 < 10)599 lcd.setCursor(4,1);600 lcd.print('0');601 lcd.setCursor(5,1);602 lcd.print(substract1);603 604 else if (substract1 == 0)605 lcd.setCursor(4,1);606 lcd.print('00');607 608 else if (substract1 >= 10 && substract1 <= 60)609 lcd.setCursor(4,1);610 lcd.print(substract1);611 612 else if (substract1 > 60) // cannot calling sendDataToSlave

Function,613 lcd.setCursor(3,1);614 lcd.print(" ");615 lcd.setCursor(4,1);616 lcd.print("FF");617 count = 0;618 Mirf.setTADDR((byte *)"slav1");//should be slav1619 delay(5);620 Serial.println(" ");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 118: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.15

621 unsigned long dataNow = now();622 ltoa(dataNow, dataSend, 10);623 if (count == 0)624 dataSend[0] = 'U'; //for testing replaced to 'V', it should be

'U'625 count = 1;626 for (count = 1; count < 11; count++) 627 Serial.print(dataSend[count]);628 629 Mirf.send((byte *) & dataSend);630 substract1 = 0;//==============>IMPORTANT LINE, without this

the sistem unstable..substract still > 60.631 Serial.println(substract1);632 Serial.println("FinishedSending RTC time to SLAVE

1--------------------");633 634 count = 0;635 636 lcd.setCursor(6,1);637 lcd.print("s");638 // line 2 for slave 2639 lcd.setCursor(8,1);640 lcd.print("S2:");641 lcd.setCursor(11,1);642 if (positive2 == 0)643 lcd.print("-");644 else if (positive2 == 1)645 lcd.print("+");646 else if (positive2 == 2)647 lcd.print(" ");648 if (substract1 < 10)649 lcd.setCursor(12,1);650 lcd.print('0');651 lcd.setCursor(13,1);652 lcd.print(substract2);653 654 else if (substract2 == 0)655 lcd.setCursor(13,1);656 lcd.print('00');657 658 else if (substract2 >= 10 && substract2 <= 60)659 lcd.setCursor(12,1);660 lcd.print(substract2);661 662 else if (substract2 > 60) // cannot calling sendDataToSlave

Function,663 lcd.setCursor(12,1);664 lcd.print(" ");665 lcd.setCursor(13,1);666 lcd.print("FF");667 count = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 119: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.16

668 Mirf.setTADDR((byte *)"slav2");//should be slav2669 delay(5);670 Serial.println(" ");671 unsigned long dataNow = now();672 ltoa(dataNow, dataSend, 10);673 if (count == 0)674 dataSend[0] = 'V'; //for testing replaced to 'V', it should be

'U'675 count = 1;676 for (count = 1; count < 11; count++) 677 Serial.print(dataSend[count]);678 679 Mirf.send((byte *) & dataSend);680 substract2 = 0;//==============>IMPORTANT LINE, without this

the sistem unstable..substract still > 60.681 Serial.println(substract2);682 Serial.println("FinishedSending RTC time to SLAVE

1--------------------");683 684 count = 0;685 686 lcd.setCursor(14,1);687 lcd.print("s");688 //showLine2689 690 691 void digitalClockDisplay()692 time_t t = now();693 lcd.setCursor(0,0);694 lcd.print("Time");695 printTimeDigits(hour(t));696 printTimeDigits(minute(t));697 printTimeDigits(second(t));698 //digitalClockDisplay699 700 void printTimeDigits(int timeDigits)701 lcd.print(":");702 if(timeDigits < 10) lcd.print("0");703 lcd.print(timeDigits);704 //printTimeDigits705 706 void printDayDigits(int dayDigits)707 lcd.print("/");708 if(dayDigits < 10) lcd.print("0");709 lcd.print(dayDigits);710 //printDayDigits711 712 /*====================receive Serial data from Visual

Basic====================*/713 //====================================================================

================ EXACT TIME MODE ALARM SLAVE 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 120: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.17

714 void exactTimeSlave1()715 while (Serial.available() < 24);716 717 char setString[DATA_EXACT1];718 int index = 0;719 for (int i = 0; i < DATA_EXACT1 - 1; i++)720 721 char d = Serial.read();722 setString[index++] = d - '0';723 724 int count = index;725 int element = 0;726 for( index = 0; index < count; index += 2)727 728 byte val = setString[index] * 10 + setString[index+1];729 switch (element++)730 //===========ALARM EXACTTIME MODE ROOM 1===========731 case 0:732 exactHour1Slave1 = val;733 if (exactHour1Slave1 == 0)734 EEPROM.write(171, 0);735 EEPROM.write(171, exactHour1Slave1);736 break;737 case 1:738 exactMinute1Slave1 = val;739 if (exactMinute1Slave1 == 0)740 EEPROM.write(172, 0);741 EEPROM.write(172, exactMinute1Slave1);742 break;743 case 2:744 exactHour2Slave1 = val;745 if (exactHour2Slave1 == 0)746 EEPROM.write(173, 0);747 EEPROM.write(173, exactHour2Slave1);748 break;749 case 3:750 exactMinute2Slave1 = val;751 if (exactMinute2Slave1 == 0)752 EEPROM.write(174, 0);753 EEPROM.write(174, exactMinute2Slave1);754 break;755 case 4:756 exactHour3Slave1 = val;757 if (exactHour3Slave1 == 0)758 EEPROM.write(175, 0);759 EEPROM.write(175, exactHour3Slave1);760 break;761 case 5:762 exactMinute3Slave1 = val;763 if (exactMinute3Slave1 == 0)764 EEPROM.write(176, 0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 121: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.18

765 EEPROM.write(176, exactMinute3Slave1);766 break;767 case 6:768 exactHour4Slave1 = val;769 if (exactHour4Slave1 == 0)770 EEPROM.write(177, 0);771 EEPROM.write(177, exactHour4Slave1);772 break;773 case 7:774 exactMinute4Slave1 = val;775 if (exactMinute4Slave1 == 0)776 EEPROM.write(178, 0);777 EEPROM.write(178, exactMinute4Slave1);778 break;779 case 8:780 exactHour5Slave1 = val;781 if (exactHour5Slave1 == 0)782 EEPROM.write(179, 0);783 EEPROM.write(179, exactHour5Slave1);784 break;785 case 9:786 exactMinute5Slave1 = val;787 if (exactMinute5Slave1 == 0)788 EEPROM.write(180, 0);789 EEPROM.write(180, exactMinute5Slave1);790 break;791 case 10:792 exactHour6Slave1 = val;793 if (exactHour6Slave1 == 0)794 EEPROM.write(181, 0);795 EEPROM.write(181, exactHour6Slave1);796 break;797 case 11:798 exactMinute6Slave1 = val;799 if (exactMinute6Slave1 == 0)800 EEPROM.write(182, 0);801 EEPROM.write(182, exactMinute6Slave1);802 break;803 804 805 806 //exactTimeSlave1807 //====================================================================

================ EXACT TIME MODE ALARM SLAVE 2808 void exactTimeSlave2()809 while (Serial.available() < 24);810 811 char setString[DATA_EXACT2];812 int index = 0;813 for (int i = 0; i < DATA_EXACT2 - 1; i++)814

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 122: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.19

815 char d = Serial.read();816 setString[index++] = d - '0';817 818 int count = index;819 int element = 0;820 for( index = 0; index < count; index += 2)821 822 byte val = setString[index] * 10 + setString[index+1];823 switch (element++)824 //===========ALARM EXACTTIME MODE ROOM 2===========825 case 0:826 exactHour1Slave2 = val;827 if (exactHour1Slave2 == 0)828 EEPROM.write(183, 0);829 EEPROM.write(183, exactHour1Slave2);830 break;831 case 1:832 exactMinute1Slave2 = val;833 if (exactMinute1Slave2 == 0)834 EEPROM.write(184, 0);835 EEPROM.write(184, exactMinute1Slave2);836 break;837 case 2:838 exactHour2Slave2 = val;839 if (exactHour2Slave2 == 0)840 EEPROM.write(185, 0);841 EEPROM.write(185, exactHour2Slave2);842 break;843 case 3:844 exactMinute2Slave2 = val;845 if (exactMinute2Slave2 == 0)846 EEPROM.write(186, 0);847 EEPROM.write(186, exactMinute2Slave2);848 break;849 case 4:850 exactHour3Slave2 = val;851 if (exactHour3Slave2 == 0)852 EEPROM.write(187, 0);853 EEPROM.write(187, exactHour3Slave2);854 break;855 case 5:856 exactMinute3Slave2 = val;857 if (exactMinute3Slave2 == 0)858 EEPROM.write(188, 0);859 EEPROM.write(188, exactMinute3Slave2);860 break;861 case 6:862 exactHour4Slave2 = val;863 if (exactHour4Slave2 == 0)864 EEPROM.write(189, 0);865 EEPROM.write(189, exactHour4Slave2);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 123: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.20

866 break;867 case 7:868 exactMinute4Slave2 = val;869 if (exactMinute4Slave2 == 0)870 EEPROM.write(190, 0);871 EEPROM.write(190, exactMinute4Slave2);872 break;873 case 8:874 exactHour5Slave2 = val;875 if (exactHour5Slave2 == 0)876 EEPROM.write(191, 0);877 EEPROM.write(191, exactHour5Slave2);878 break;879 case 9:880 exactMinute5Slave2 = val;881 if (exactMinute5Slave2 == 0)882 EEPROM.write(192, 0);883 EEPROM.write(192, exactMinute5Slave2);884 break;885 case 10:886 exactHour6Slave2 = val;887 if (exactHour6Slave2 == 0)888 EEPROM.write(193, 0);889 EEPROM.write(193, exactHour6Slave2);890 break;891 case 11:892 exactMinute6Slave2 = val;893 if (exactMinute6Slave2 == 0)894 EEPROM.write(194, 0);895 EEPROM.write(194, exactMinute6Slave2);896 break;897 898 899 900 //exactTimeSlave2901 //====================================================================

========================== INTERVAL MODE ALARM902 void Interval()903 char setString[DATA_INTERVAL];904 int index = 0;905 for (int i = 0; i < DATA_INTERVAL - 1; i++)906 907 char d = Serial.read();908 setString[index++] = d - '0';909 910 int count = index;911 int element = 0;912 for( index = 0; index < count; index += 2)913 914 byte val = setString[index] * 10 + setString[index+1];915 switch (element++)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 124: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.21

916 //===========ALARM INTERVAL MODE ROOM 1===========917 case 0:918 hourStart1 = val;919 if (hourStart1 == 0)920 EEPROM.write(200, 0);921 EEPROM.write(200, hourStart1);922 break;923 case 1:924 minuteStart1 = val;925 if (minuteStart1 == 0)926 EEPROM.write(201, 0);927 EEPROM.write(201, minuteStart1);928 break;929 case 2:930 hourStop1 = val;931 if (hourStop1 == 0)932 EEPROM.write(202, 0);933 EEPROM.write(202, hourStop1);934 break;935 case 3:936 minuteStop1 = val;937 if (minuteStop1 == 0)938 EEPROM.write(203, 0);939 EEPROM.write(203, minuteStop1);940 break;941 case 4:942 hourInterval1 = val;943 if (hourInterval1 == 0)944 EEPROM.write(204, 0);945 EEPROM.write(204, hourInterval1);946 break;947 case 5:948 minuteInterval1 = val;949 if (minuteInterval1 == 0)950 EEPROM.write(205, 0);951 EEPROM.write(205, minuteInterval1);952 break;953 //===========ALARM INTERVAL MODE ROOM 2===========954 case 6:955 hourStart2 = val;956 if (hourStart2 == 0)957 EEPROM.write(206, 0);958 EEPROM.write(206, hourStart2);959 break;960 case 7:961 minuteStart2 = val;962 if (minuteStart2 == 0)963 EEPROM.write(207, 0);964 EEPROM.write(207, minuteStart2);965 break;966 case 8:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 125: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.22

967 hourStop2 = val;968 if (hourStop2 == 0)969 EEPROM.write(208, 0);970 EEPROM.write(208, hourStop2);971 break;972 case 9:973 minuteStop2 = val;974 if (minuteStop2 == 0)975 EEPROM.write(209, 0);976 EEPROM.write(209, minuteStop2);977 break;978 case 10:979 hourInterval2 = val;980 if (hourInterval2 == 0)981 EEPROM.write(210, 0);982 EEPROM.write(210, hourInterval2);983 break;984 case 11:985 minuteInterval2 = val;986 if (minuteInterval2 == 0)987 EEPROM.write(211, 0);988 EEPROM.write(211, minuteInterval2);989 break;990 991 992 //Interval993 994 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================995 //============================ %%%% ARCHIEVED for TEST only %%%%

============================996 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================997 void bip()998 digitalWrite(9, LOW);999 delay(10);1000 digitalWrite(9, HIGH);1001 delay(10);1002 //bip1003 1004 void checkAlarm()1005 1006 showAlarmTime(intervalStart1);1007 showAlarmTime(intervalStop1);1008 showAlarmTime(intervalTimer1);1009 showAlarmTime(intervalStart2);1010 showAlarmTime(intervalStop2);1011 showAlarmTime(intervalTimer2);1012 1013 showAlarmTime(slave1Time1);1014 showAlarmTime(slave1Time2);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 126: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.23

1015 showAlarmTime(slave1Time3);1016 showAlarmTime(slave1Time4);1017 showAlarmTime(slave1Time5);1018 showAlarmTime(slave1Time6);1019 1020 showAlarmTime(slave2Time1);1021 showAlarmTime(slave2Time2);1022 showAlarmTime(slave2Time3);1023 showAlarmTime(slave2Time4);1024 showAlarmTime(slave2Time5);1025 showAlarmTime(slave2Time6);1026 1027 showAlarmTime(startCount60);1028 showAlarmTime(everyHourAlarm);1029 Serial.println(

"----------------------------------------------------");1030 //checkAlarm1031 1032 void showAlarmTime(AlarmID_t id)1033 time_t alarmTime = Alarm.read(id);1034 if(alarmTime != 0)1035 1036 if( alarmTime <= SECS_PER_DAY)1037 Serial.print(" repeat alarm with ID ");1038 else1039 Serial.print(" once only alarm with ID ");1040 Serial.print(id, DEC);1041 Serial.print(" set for ");1042 digitalClockDisplay1(alarmTime);1043 1044 //showAlarmTime1045 1046 void digitalClockDisplay1(time_t t)1047 // digital clock display of the time1048 Serial.print(hour(t));1049 printDigits1(minute(t));1050 printDigits1(second(t));1051 Serial.println();1052 //digitalClockDisplay11053 1054 void printDigits1(int digits)1055 Serial.print(":");1056 if(digits < 10)1057 Serial.print('0');1058 Serial.print(digits);1059 //printDigits11060 1061 void BlinkBlink()1062 // digitalWrite(13,HIGH);1063 // delay(500);1064 // digitalWrite(13,LOW);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 127: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncMaster.pde L.24

1065 // delay(500); 1066 // digitalWrite(13,HIGH);1067 // delay(500);1068 // digitalWrite(13,LOW);1069 // delay(500);1070 // digitalWrite(13,HIGH);1071 // delay(500);1072 // digitalWrite(13,LOW);1073 // delay(500);1074 //BlinkBlink

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 128: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.1

1 /*2 ######################################################################

###3 ### Many Thanks To:4 ### ARDUINO TEAM5 # <Time.h>, <TimeAlarms.h>, <DS1307RTC.h> : Michael Margolis [Mem],

Stanley, Paul S Randal6 # <Mirf.h>, <MirfHardwareSpiDriver.h> : Aaron Shrimpton [Aaronds]7 # <nRF24L01.h> : Stefan Engelke8 ######################################################################

###9 * FINAL PROJECT : SINKRONISASI JAM DIGITAL NIRKABEL10 [WIRELESS SYNCHRONISATION on DIGITAL CLOCK]11 * AUTHOR : NUGROHO BUDI WICAKSONO12 * LAST MODIFIED : SEPT, 12 201113 * PROGRAM NAME : WiSyncSlave1.pde14 * BOARD : MINIDUINO15 * IDE VERSION : ALPHA (022)16 * HARDWARE REQ. : RTC DS1307, nRF24L01+, 4*7SEGMENTS17 ######################################################################

###18 */19 20 #include <Time.h>21 #include <TimeAlarms.h>22 #include <Wire.h> 23 #include <DS1307RTC.h>24 #include <SPI.h>25 #include <Mirf.h>26 #include <nRF24L01.h>27 #include <MirfHardwareSpiDriver.h>28 #include "stdlib.h"29 //variables for RTC Function30 #define TIME_MSG_LEN 1131 #define TIME_HEADER 'T'32 //variable for MiRF33 boolean b = 0;34 int count;35 char data[11];36 char dataSend[11];37 //variable for Testing38 #define OTHERS 'O'39 40 const int g_pinData = 5;41 const int g_pinCommLatch = 4;42 const int g_pinClock = 3;43 const int ledPin = 2;44 45 byte g_digits [10]; // Definitions of the 7-bit

values for displaying digits46 int g_numberToDisplay = 0; // Current number being

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 129: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.2

displayed47 const int g_registers = 4; // Number of shift registers in

use48 byte g_registerArray [g_registers]; // Array of numbers to pass to

shift registers49 50 //=============================ALARM ID SETUP51 AlarmID_t startCount15, every15MinuteAlarm; //alarm to Sending RTC

time to Master52 53 void setup()54 Serial.begin(9600);55 Wire.begin();56 setSyncProvider(RTC.get);57 setSyncInterval(600);58 if(timeStatus()!= timeSet)59 Serial.println("Can't sync RTC! ");60 else61 Serial.println(" Can sync RTC! ");62 delay(1000);63 64 pinMode (g_pinCommLatch, OUTPUT);65 pinMode (g_pinClock, OUTPUT);66 pinMode (g_pinData, OUTPUT);67 pinMode (ledPin, OUTPUT);68 69 int a = 1, b = 2, c = 4, d = 8, e = 16, f = 32, g = 64;70 71 g_digits [0] = a + b + c + d +e + f;72 g_digits [1] = b + c;73 g_digits [2] = a + b + g + e + d;74 g_digits [3] = a + b + g + c + d;75 g_digits [4] = f + g + b + c;76 g_digits [5] = a + f + g + c + d;77 g_digits [6] = a + f + g + c + d + e;78 g_digits [7] = a + b + c;79 g_digits [8] = a + b + c + d + e + f + g;80 g_digits [9] = a + b + c + d + g + f;81 82 pinMode(9, OUTPUT);83 digitalWrite(9, HIGH);84 85 //=================================== MiRF86 Mirf.spi = &MirfHardwareSpi;87 Mirf.cePin = 6;88 Mirf.csnPin = 10;89 Mirf.init();90 Mirf.setRADDR((byte *)"slav1");91 Mirf.payload = 11;92 Mirf.channel = 110;93 Mirf.config();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 130: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.3

94 Serial.println("Listening...");95 //=================================== MiRF96 delay(500);97 //=================================== setup ALARAM ID98 time_t curr_time = now();99 int thisHour = hour(curr_time);100 101 int thisMinute = minute(curr_time);102 Serial.println (thisMinute);103 // /*104 if (thisMinute == 0 || thisMinute == 15 || thisMinute == 30 ||

thisMinute == 45)105 thisMinute = thisMinute + 15;106 else if (thisMinute > 0 && thisMinute < 15)107 thisMinute = 15;108 else if (thisMinute > 15 && thisMinute < 30)109 thisMinute = 30;110 else if (thisMinute > 30 && thisMinute < 45)111 thisMinute = 45;112 else if (thisMinute > 45 && thisMinute < 59)113 thisMinute = 00;114 thisHour += 1;115 116 Serial.println (thisHour);117 Serial.println (thisMinute);118 // Serial.println (thisMinute);119 // */ 120 // thisMinute = thisMinute + 1; // unused, just for testing121 // Serial.println (thisMinute); // unused, just for testing122 startCount15 = Alarm.alarmOnce(thisHour, thisMinute, 13,

enableEvery15Minutes);123 every15MinuteAlarm = Alarm.timerRepeat( 15 * SECS_PER_MIN,

sendDataToMaster); // should be repeat every 15 minutes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

124 Alarm.disable(every15MinuteAlarm);125 126 checkAlarm();127 Serial.println("Setup is DONE");128 // setup129 //==================== alarm setting for 15 minutes130 void enableEvery15Minutes()131 Serial.println("Enable successfully");132 Alarm.enable(every15MinuteAlarm);133 //enableEvery15Minutes134 135 void sendDataToMaster()136 //Transmit data to Slave1137 count = 0;138 Mirf.setTADDR((byte *)"mast1");//should be mast1139 delay(5);140 Serial.println(" ");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 131: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.4

141 unsigned long dataNow = now();142 ltoa(dataNow, dataSend, 10);143 if (count == 0)144 dataSend[0] = 'U'; //for testing replaced to 'V', it should be 'U'145 count = 1;146 for (count = 1; count < 11; count++) 147 Serial.print(dataSend[count]);148 149 Mirf.send((byte *) & dataSend);150 Serial.println("SLAVE 1's RTC sent...");151 152 count = 0;153 Serial.println("sendDataToMaster");154 //sendDataToMaster155 156 // Simple function to send serial data to one or more shift

registers by iterating backwards through an array.157 // Although g_registers exists, they may not all be being used,

hence the input parameter.158 void sendSerialData (159 byte registerCount, // How many shift registers?160 byte *pValueArray) // Array of bytes with LSByte in array [0]161 162 digitalWrite (g_pinCommLatch, LOW); // Signal to the 595s to

listen for data163 for (byte reg = registerCount; reg > 0; reg--)164 165 byte value = pValueArray [reg - 1];166 for (byte bitMask = 128; bitMask > 0; bitMask >>= 1)167 168 digitalWrite (g_pinClock, LOW);169 digitalWrite (g_pinData, value & bitMask ? HIGH : LOW);170 digitalWrite (g_pinClock, HIGH);171 172 173 digitalWrite (g_pinCommLatch, HIGH);// Signal to the 595s that I'm

done sending174 // sendSerialData175 176 void loop()177 Alarm.delay(0);178 MiRFlooping();179 if(Serial.available())180 181 char header = Serial.read();182 if (header == TIME_HEADER)183 processSyncMessage();184 else if (header == OTHERS)185 BlinkBlink();186 187 int Hour,Minute,Sec,disp = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 132: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.5

188 Hour = hour(now());189 Minute = minute(now());190 Sec = second(now());191 disp = (Hour * 100) + Minute; // Push the hour 2 digits to the

left by multiplying 100192 g_numberToDisplay = disp;193 194 if (g_numberToDisplay < 10)195 196 g_registerArray [3] = g_digits [0];197 g_registerArray [2] = g_digits [0];198 g_registerArray [1] = g_digits [0];199 g_registerArray [0] = g_digits [g_numberToDisplay];200 201 else if (g_numberToDisplay < 100)202 203 g_registerArray [3] = g_digits [0];204 g_registerArray [2] = g_digits [0];205 g_registerArray [1] = g_digits [g_numberToDisplay / 10];206 g_registerArray [0] = g_digits [g_numberToDisplay % 10];207 208 else if (g_numberToDisplay < 1000)209 210 g_registerArray [3] = g_digits [0];211 g_registerArray [2] = g_digits [g_numberToDisplay / 100];212 g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];213 g_registerArray [0] = g_digits [g_numberToDisplay % 10];214 215 else216 217 g_registerArray [3] = g_digits [g_numberToDisplay / 1000];218 g_registerArray [2] = g_digits [(g_numberToDisplay % 1000) / 100];219 g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];220 g_registerArray [0] = g_digits [g_numberToDisplay % 10];221 222 223 sendSerialData (g_registers, g_registerArray);224 MiRFlooping();225 // Blink the LED to indicate seconds226 digitalWrite(ledPin,HIGH);227 MiRFlooping();228 delay(500);229 MiRFlooping();230 digitalWrite(ledPin,LOW);231 MiRFlooping();232 delay(500);233 MiRFlooping();234 // Serial.println (second());235 // loop236 237 void MiRFlooping()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 133: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.6

238 //====================== MiRF LOOPING ======================239 data[Mirf.payload];240 //Receive from master241 if(!Mirf.isSending() && Mirf.dataReady())242 Serial.println ("");243 Serial.print("Slave 1 Got packet : ");244 Mirf.getData((byte *) data);245 if (count == 0 && data[0] =='A')246 count = 1;247 for (count = 1; count < 11; count++) 248 Serial.print(data[count]);249 250 doRingAlarmSlave1();251 count = 0;252 253 else if (count == 0 && data[0] == 'U')254 time_t masterTime = 0;255 data[0] = '1';256 count = 1;257 for (count = 1; count < 11; count++) 258 char c = data[count];259 Serial.print(c);260 if( c >= '0' && c <= '9')261 masterTime = (10 * masterTime) + (c - '0');262 263 264 masterTime = masterTime + 1000000000;265 Serial.print ("||| this is MASTER unixTime : ");266 Serial.print (masterTime);267 Serial.println ("");268 time_t t = masterTime;269 RTC.set(t);270 setTime(t);271 count = 0 ;272 Serial.println ("RTC Slave 1 has been SET");273 Serial.println ("");274 bip();275 Alarm.disable(every15MinuteAlarm);276 setup();277 278 279 count = 0;280 //====================== MiRF LOOPING ======================281 //MiRFlooping282 283 284 void doRingAlarmSlave1()285 Serial.println("");286 digitalWrite(9, LOW);287 delay(250);288 // Serial.println("===== satu ===== ");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 134: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.7

289 digitalWrite(9, HIGH);290 delay(250);291 Serial.println("===== satu ===== ");292 digitalWrite(9, LOW);293 delay(250);294 // Serial.println("===== satu ===== ");295 digitalWrite(9, HIGH);296 delay(250);297 Serial.println("===== satu ===== ");298 digitalWrite(9, LOW);299 delay(250);300 // Serial.println("===== satu ===== ");301 digitalWrite(9, HIGH);302 delay(250);303 Serial.println("===== satu ===== ");304 digitalWrite(9, LOW);305 delay(250);306 // Serial.println("===== satu ===== ");307 digitalWrite(9, HIGH);308 delay(250);309 Serial.println("===== satu ===== ");310 // delay(2000);311 //doRingAlarmSlave1312 /*============================= receive serial data from VB

=============================*/313 //======================== reading Visual Basic UNIX TIME data

==========================//314 void processSyncMessage()315 time_t pctime = 0;316 while (Serial.available() > TIME_MSG_LEN);317 for(int i=0; i < TIME_MSG_LEN -1; i++)318 319 char c = Serial.read();320 Serial.println(c);321 if( c >= '0' && c <= '9')322 pctime = (10 * pctime) + (c - '0');323 324 325 time_t t = pctime;326 Serial.println(pctime);327 RTC.set(t);328 setTime(t);329 //processSyncMessage330 331 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================332 //============================ %%%% ARCHIEVED for TEST only %%%%

============================333 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================334 void bip()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 135: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.8

335 digitalWrite(9, LOW);336 delay(10);337 digitalWrite(9, HIGH);338 delay(10);339 //bip340 341 void BlinkBlink()342 // digitalWrite(13,HIGH);343 // delay(500);344 // digitalWrite(13,LOW);345 // delay(500); 346 // digitalWrite(13,HIGH);347 // delay(500);348 // digitalWrite(13,LOW);349 // delay(500);350 // digitalWrite(13,HIGH);351 // delay(500);352 // digitalWrite(13,LOW);353 // delay(500);354 //BlinkBlink355 356 void checkAlarm()357 showAlarmTime(startCount15);358 showAlarmTime(every15MinuteAlarm);359 360 Serial.println(

"----------------------------------------------------");361 //checkAlarm362 363 void showAlarmTime(AlarmID_t id)364 time_t alarmTime = Alarm.read(id);365 if(alarmTime != 0)366 367 if( alarmTime <= SECS_PER_DAY)368 Serial.print(" repeat alarm with ID ");369 else370 Serial.print(" once only alarm with ID ");371 Serial.print(id, DEC);372 Serial.print(" set for ");373 digitalClockDisplay1(alarmTime);374 375 //showAlarmTime376 377 void digitalClockDisplay1(time_t t)378 // digital clock display of the time379 Serial.print(hour(t));380 printDigits1(minute(t));381 printDigits1(second(t));382 Serial.println();383 //digitalClockDisplay1384

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 136: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.9

385 void printDigits1(int digits)386 387 Serial.print(":");388 if(digits < 10)389 Serial.print('0');390 Serial.print(digits);391 //printDigits1392 393 394 // Read a number from the PC with no more digits than the defined

number of registers.395 // Returns: number to display. If an invalid number was read, the

number returned is the current number being displayed396 //397 int readNumberFromPC ()398 399 byte incomingByte;400 int numberRead;401 byte incomingCount;402 403 if (Serial.available () > 0)404 405 numberRead = 0;406 incomingCount = 0;407 408 while (Serial.available () > 0)409 410 incomingByte = Serial.read () - 48;411 incomingCount++;412 413 if (incomingByte < 0 || incomingByte > 9 || incomingCount >

g_registers)414 415 badNumber ();416 return g_numberToDisplay;417 418 numberRead = 10 * numberRead + incomingByte;419 // Necessary to get all input in one go.420 delay (10);421 422 Serial.print ("Now displaying: ");423 Serial.println (numberRead, DEC);424 return numberRead;425 426 427 return g_numberToDisplay;428 // readNumberFromPC429 430 // Print a message specifying valid inputs, given the number of

registers defined and then consume all current input.431 void badNumber ()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 137: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave1.pde L.10

432 433 int dummy;434 435 Serial.print ("Please enter a number from 0 to ");436 for (int loop = 0; loop < g_registers; loop++)437 438 Serial.print ("9");439 440 Serial.println (" inclusive.");441 442 while (Serial.available () > 0)443 444 dummy = Serial.read ();445 delay (10);446 447 //badNumber

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 138: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.1

1 /*2 ######################################################################

###3 ### Many Thanks To:4 ### ARDUINO TEAM5 # <Time.h>, <TimeAlarms.h>, <DS1307RTC.h> : Michael Margolis [Mem],

Stanley, Paul S Randal6 # <Mirf.h>, <MirfHardwareSpiDriver.h> : Aaron Shrimpton [Aaronds]7 # <nRF24L01.h> : Stefan Engelke8 ######################################################################

###9 * FINAL PROJECT : SINKRONISASI JAM DIGITAL NIRKABEL10 [WIRELESS SYNCHRONISATION on DIGITAL CLOCK]11 * AUTHOR : NUGROHO BUDI WICAKSONO12 * LAST MODIFIED : SEPT, 12 201113 * PROGRAM NAME : WiSyncSlave2.pde14 * BOARD : MINIMUM SYSTEM for ATMEGA32815 * IDE VERSION : ALPHA (022)16 * HARDWARE REQ. : RTC DS1307, nRF24L01+, 4*7SEGMENTS17 ######################################################################

###18 */19 20 #include <Time.h>21 #include <TimeAlarms.h>22 #include <Wire.h> 23 #include <DS1307RTC.h>24 #include <SPI.h>25 #include <Mirf.h>26 #include <nRF24L01.h>27 #include <MirfHardwareSpiDriver.h>28 #include "stdlib.h"29 //variables for RTC Function30 #define TIME_MSG_LEN 1131 #define TIME_HEADER 'T'32 //variable for MiRF33 boolean b = 0;34 int count;35 char data[11];36 char dataSend[11];37 //variable for Testing38 #define OTHERS 'O'39 40 const int g_pinData = 5;41 const int g_pinCommLatch = 4;42 const int g_pinClock = 3;43 const int ledPin = 2;44 45 byte g_digits [10]; // Definitions of the 7-bit

values for displaying digits46 int g_numberToDisplay = 0; // Current number being

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 139: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.2

displayed47 const int g_registers = 4; // Number of shift registers in

use48 byte g_registerArray [g_registers]; // Array of numbers to pass to

shift registers49 50 //=============================ALARM ID SETUP51 AlarmID_t startCount15, every15MinuteAlarm; //alarm to Sending RTC

time to Master52 53 void setup()54 Serial.begin(9600);55 Wire.begin();56 setSyncProvider(RTC.get);57 setSyncInterval(600);58 if(timeStatus()!= timeSet)59 Serial.println("Can't sync RTC! ");60 else61 Serial.println(" Can sync RTC! ");62 delay(1000);63 64 pinMode (g_pinCommLatch, OUTPUT);65 pinMode (g_pinClock, OUTPUT);66 pinMode (g_pinData, OUTPUT);67 pinMode (ledPin, OUTPUT);68 69 int a = 1, b = 2, c = 4, d = 8, e = 16, f = 32, g = 64;70 71 g_digits [0] = a + b + c + d +e + f;72 g_digits [1] = b + c;73 g_digits [2] = a + b + g + e + d;74 g_digits [3] = a + b + g + c + d;75 g_digits [4] = f + g + b + c;76 g_digits [5] = a + f + g + c + d;77 g_digits [6] = a + f + g + c + d + e;78 g_digits [7] = a + b + c;79 g_digits [8] = a + b + c + d + e + f + g;80 g_digits [9] = a + b + c + d + g + f;81 82 pinMode(9, OUTPUT);83 digitalWrite(9, HIGH);84 85 //=================================== MiRF86 Mirf.spi = &MirfHardwareSpi;87 Mirf.cePin = 6;88 Mirf.csnPin = 10;89 Mirf.init();90 Mirf.setRADDR((byte *)"slav2");91 Mirf.payload = 11;92 Mirf.channel = 110;93 Mirf.config();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 140: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.3

94 Serial.println("Listening...");95 //=================================== MiRF96 delay(500);97 //=================================== setup ALARAM ID98 time_t curr_time = now();99 int thisHour = hour(curr_time);100 int thisMinute = minute(curr_time);101 Serial.println (thisMinute);102 // /*103 if (thisMinute == 0 || thisMinute == 15 || thisMinute == 30 ||

thisMinute == 45)104 thisMinute = thisMinute + 15;105 else if (thisMinute > 0 && thisMinute < 15)106 thisMinute = 15;107 else if (thisMinute > 15 && thisMinute < 30)108 thisMinute = 30;109 else if (thisMinute > 30 && thisMinute < 45)110 thisMinute = 45;111 else if (thisMinute > 45 && thisMinute < 59)112 thisMinute = 00;113 thisHour += 1;114 115 Serial.println (thisHour);116 Serial.println (thisMinute);117 // */118 // thisMinute = thisMinute + 1; // unused, just for testing119 // Serial.println (thisMinute); // unused, just for testing120 startCount15 = Alarm.alarmOnce(thisHour, thisMinute, 18,

enableEvery15Minutes);121 every15MinuteAlarm = Alarm.timerRepeat( 15 * SECS_PER_MIN,

sendDataToMaster); // should be repeat every 15 minutes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

122 Alarm.disable(every15MinuteAlarm);123 124 checkAlarm();125 Serial.println("Setup is DONE");126 // setup127 //==================== alarm setting for 15 minutes128 void enableEvery15Minutes()129 Serial.println("Enable successfully");130 Alarm.enable(every15MinuteAlarm);131 //enableEvery15Minutes132 133 void sendDataToMaster()134 //Transmit data to Slave1135 count = 0;136 Mirf.setTADDR((byte *)"mast1");//should be mast1137 delay(5);138 Serial.println(" ");139 unsigned long dataNow = now();140 ltoa(dataNow, dataSend, 10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 141: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.4

141 if (count == 0)142 dataSend[0] = 'V'; //for testing replaced to 'V', it should be 'U'143 count = 1;144 for (count = 1; count < 11; count++) 145 Serial.print(dataSend[count]);146 147 Mirf.send((byte *) & dataSend);148 Serial.println("SLAVE 2's RTC sent...");149 150 count = 0;151 Serial.println("sendDataToMaster");152 //sendDataToMaster153 154 // Simple function to send serial data to one or more shift

registers by iterating backwards through an array.155 // Although g_registers exists, they may not all be being used,

hence the input parameter.156 void sendSerialData (157 byte registerCount, // How many shift registers?158 byte *pValueArray) // Array of bytes with LSByte in array [0]159 160 digitalWrite (g_pinCommLatch, LOW); // Signal to the 595s to

listen for data161 for (byte reg = registerCount; reg > 0; reg--)162 163 byte value = pValueArray [reg - 1];164 for (byte bitMask = 128; bitMask > 0; bitMask >>= 1)165 166 digitalWrite (g_pinClock, LOW);167 digitalWrite (g_pinData, value & bitMask ? HIGH : LOW);168 digitalWrite (g_pinClock, HIGH);169 170 171 digitalWrite (g_pinCommLatch, HIGH);// Signal to the 595s that I'm

done sending172 // sendSerialData173 174 void loop()175 Alarm.delay(0);176 MiRFlooping();177 if(Serial.available())178 179 char header = Serial.read();180 if (header == TIME_HEADER)181 processSyncMessage();182 else if (header == OTHERS)183 BlinkBlink();184 185 int Hour,Minute,Sec,disp = 0;186 Hour = hour(now());187 Minute = minute(now());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 142: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.5

188 Sec = second(now());189 disp = (Hour * 100) + Minute; // Push the hour 2 digits to the

left by multiplying 100190 g_numberToDisplay = disp;191 192 if (g_numberToDisplay < 10)193 194 g_registerArray [3] = g_digits [0];195 g_registerArray [2] = g_digits [0];196 g_registerArray [1] = g_digits [0];197 g_registerArray [0] = g_digits [g_numberToDisplay];198 199 else if (g_numberToDisplay < 100)200 201 g_registerArray [3] = g_digits [0];202 g_registerArray [2] = g_digits [0];203 g_registerArray [1] = g_digits [g_numberToDisplay / 10];204 g_registerArray [0] = g_digits [g_numberToDisplay % 10];205 206 else if (g_numberToDisplay < 1000)207 208 g_registerArray [3] = g_digits [0];209 g_registerArray [2] = g_digits [g_numberToDisplay / 100];210 g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];211 g_registerArray [0] = g_digits [g_numberToDisplay % 10];212 213 else214 215 g_registerArray [3] = g_digits [g_numberToDisplay / 1000];216 g_registerArray [2] = g_digits [(g_numberToDisplay % 1000) / 100];217 g_registerArray [1] = g_digits [(g_numberToDisplay % 100) / 10];218 g_registerArray [0] = g_digits [g_numberToDisplay % 10];219 220 221 sendSerialData (g_registers, g_registerArray);222 MiRFlooping();223 // Blink the LED to indicate seconds224 digitalWrite(ledPin,HIGH);225 MiRFlooping();226 delay(500);227 MiRFlooping();228 digitalWrite(ledPin,LOW);229 MiRFlooping();230 delay(500);231 MiRFlooping();232 // Serial.println (second());233 // loop234 235 void MiRFlooping()236 //====================== MiRF LOOPING ======================237 data[Mirf.payload];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 143: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.6

238 //Receive from master239 if(!Mirf.isSending() && Mirf.dataReady())240 Serial.println ("");241 Serial.print("Slave 2 Got packet : ");242 Mirf.getData((byte *) data);243 if (count == 0 && data[0] =='B')244 count = 1;245 for (count = 1; count < 11; count++) 246 Serial.print(data[count]);247 248 doRingAlarmSlave1();249 count = 0;250 251 else if (count == 0 && data[0] == 'V')252 time_t masterTime = 0;253 data[0] = '1';254 count = 1;255 for (count = 1; count < 11; count++) 256 char c = data[count];257 Serial.print(c);258 if( c >= '0' && c <= '9')259 masterTime = (10 * masterTime) + (c - '0');260 261 262 masterTime = masterTime + 1000000000;263 Serial.print ("||| this is MASTER unixTime : ");264 Serial.print (masterTime);265 Serial.println ("");266 time_t t = masterTime;267 RTC.set(t);268 setTime(t);269 count = 0 ;270 Serial.println ("RTC Slave 2 has been SET");271 Serial.println ("");272 bip();273 Alarm.disable(every15MinuteAlarm);274 setup();275 276 277 count = 0;278 //====================== MiRF LOOPING ======================279 //MiRFlooping280 281 282 void doRingAlarmSlave1()283 Serial.println("");284 digitalWrite(9, LOW);285 delay(250);286 // Serial.println("===== satu ===== ");287 digitalWrite(9, HIGH);288 delay(250);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 144: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.7

289 Serial.println("===== satu ===== ");290 digitalWrite(9, LOW);291 delay(250);292 // Serial.println("===== satu ===== ");293 digitalWrite(9, HIGH);294 delay(250);295 Serial.println("===== satu ===== ");296 digitalWrite(9, LOW);297 delay(250);298 // Serial.println("===== satu ===== ");299 digitalWrite(9, HIGH);300 delay(250);301 Serial.println("===== satu ===== ");302 digitalWrite(9, LOW);303 delay(250);304 // Serial.println("===== satu ===== ");305 digitalWrite(9, HIGH);306 delay(250);307 Serial.println("===== satu ===== ");308 // delay(2000);309 //doRingAlarmSlave1310 /*============================= receive serial data from VB

=============================*/311 //======================== reading Visual Basic UNIX TIME data

==========================//312 void processSyncMessage()313 time_t pctime = 0;314 while (Serial.available() > TIME_MSG_LEN);315 for(int i=0; i < TIME_MSG_LEN -1; i++)316 317 char c = Serial.read();318 Serial.println(c);319 if( c >= '0' && c <= '9')320 pctime = (10 * pctime) + (c - '0');321 322 323 time_t t = pctime;324 Serial.println(pctime);325 RTC.set(t);326 setTime(t);327 //processSyncMessage328 329 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================330 //============================ %%%% ARCHIEVED for TEST only %%%%

============================331 //============================ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

============================332 void bip()333 digitalWrite(9, LOW);334 delay(10);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 145: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.8

335 digitalWrite(9, HIGH);336 delay(10);337 //bip338 339 void BlinkBlink()340 // digitalWrite(13,HIGH);341 // delay(500);342 // digitalWrite(13,LOW);343 // delay(500); 344 // digitalWrite(13,HIGH);345 // delay(500);346 // digitalWrite(13,LOW);347 // delay(500);348 // digitalWrite(13,HIGH);349 // delay(500);350 // digitalWrite(13,LOW);351 // delay(500);352 //BlinkBlink353 354 void checkAlarm()355 showAlarmTime(startCount15);356 showAlarmTime(every15MinuteAlarm);357 358 Serial.println(

"----------------------------------------------------");359 //checkAlarm360 361 void showAlarmTime(AlarmID_t id)362 time_t alarmTime = Alarm.read(id);363 if(alarmTime != 0)364 365 if( alarmTime <= SECS_PER_DAY)366 Serial.print(" repeat alarm with ID ");367 else368 Serial.print(" once only alarm with ID ");369 Serial.print(id, DEC);370 Serial.print(" set for ");371 digitalClockDisplay1(alarmTime);372 373 //showAlarmTime374 375 void digitalClockDisplay1(time_t t)376 // digital clock display of the time377 Serial.print(hour(t));378 printDigits1(minute(t));379 printDigits1(second(t));380 Serial.println();381 //digitalClockDisplay1382 383 void printDigits1(int digits)384

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 146: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.9

385 Serial.print(":");386 if(digits < 10)387 Serial.print('0');388 Serial.print(digits);389 //printDigits1390 391 392 // Read a number from the PC with no more digits than the defined

number of registers.393 // Returns: number to display. If an invalid number was read, the

number returned is the current number being displayed394 //395 int readNumberFromPC ()396 397 byte incomingByte;398 int numberRead;399 byte incomingCount;400 401 if (Serial.available () > 0)402 403 numberRead = 0;404 incomingCount = 0;405 406 while (Serial.available () > 0)407 408 incomingByte = Serial.read () - 48;409 incomingCount++;410 411 if (incomingByte < 0 || incomingByte > 9 || incomingCount >

g_registers)412 413 badNumber ();414 return g_numberToDisplay;415 416 numberRead = 10 * numberRead + incomingByte;417 // Necessary to get all input in one go.418 delay (10);419 420 Serial.print ("Now displaying: ");421 Serial.println (numberRead, DEC);422 return numberRead;423 424 425 return g_numberToDisplay;426 // readNumberFromPC427 428 // Print a message specifying valid inputs, given the number of

registers defined and then consume all current input.429 void badNumber ()430 431 int dummy;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 147: SINKRONISASI JAM DIGITAL NIRKABEL - USD

WiSyncSlave2.pde L.10

432 433 Serial.print ("Please enter a number from 0 to ");434 for (int loop = 0; loop < g_registers; loop++)435 436 Serial.print ("9");437 438 Serial.println (" inclusive.");439 440 while (Serial.available () > 0)441 442 dummy = Serial.read ();443 delay (10);444 445 //badNumber

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 148: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.1

1 '===================================================2 ' Dependencies :3 ' + List of Servers : SERVERS.txt [Case Sensitive]4 ' + Class Modules :5 ' - cInetTime.cls6 ' This File is Created by D. Rijmenants, 7 ' George McCoy and Jim Huff8 ' + Modules :9 ' - modMain.bas10 ' This File is Created by D. Rijmenants,11 ' George McCoy and Jim Huff12 ' - RS232.bas13 ' This File is Created by O G Popa14 ' + Form :15 ' - frmWinsock.frm for Winsock Component16 '===================================================17 ' * FINAL PROJECT : SINKRONISASI JAM DIGITAL NIRKABEL18 ' [WIRELESS SYNCHRONISATION on DIGITAL CLOCK]19 ' * AUTHOR : NUGROHO BUDI WICAKSONO20 ' * LAST MODIFIED : SEPT, 12 201121 ' * FILE NAME : wireLessClockSync.frm22 '===================================================23 ' #TESTED on : ASUS K40IN, 24 ' Intel Core 2 Processor T650025 ' 2GB of RAM26 '===================================================27 Option Explicit28 Dim comport As Byte29 Dim jst1, mst1, jen1, men1, jint1, mint1 As String ' mode alarm :

interval slave 130 Dim jst2, mst2, jen2, men2, jint2, mint2 As String ' mode alarm :

interval slave 231 Dim JTja1, JTjb1, JTjc1, JTjd1, JTje1, JTjf1 As String ' HOUR

mode alarm : Jam Tertentu slave 132 Dim JTma1, JTmb1, JTmc1, JTmd1, JTme1, JTmf1 As String ' MINUTE

mode alarm : Jam Tertentu slave 133 Dim JTja2, JTjb2, JTjc2, JTjd2, JTje2, JTjf2 As String ' HOUR

mode alarm : Jam Tertentu slave 234 Dim JTma2, JTmb2, JTmc2, JTmd2, JTme2, JTmf2 As String ' MINUTE

mode alarm : Jam Tertentu slave 235 Dim stringValue As String36 Dim stringOriValue As String37 Dim dataReady As Boolean38 Dim errorCount As Byte39 40 Private Sub c_IntS1_Click()41 If c_IntS1.Value = 1 Then ' MODE ALARM : INTERVAL SLAVE 1 CHECKED42 Label4.Enabled = True43 Label5.Enabled = True44 Label6.Enabled = True45 frModeInt1.Enabled = True

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 149: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.2

46 cbS1_jstart.Enabled = True47 cbS1_mstart.Enabled = True48 cbS1_jend.Enabled = True49 cbS1_mend.Enabled = True50 cbS1_jint.Enabled = True51 cbS1_mint.Enabled = True52 Else53 Label4.Enabled = False54 Label5.Enabled = False55 Label6.Enabled = False56 frModeInt1.Enabled = False57 cbS1_jstart.Enabled = False58 cbS1_mstart.Enabled = False59 cbS1_jend.Enabled = False60 cbS1_mend.Enabled = False61 cbS1_jint.Enabled = False62 cbS1_mint.Enabled = False63 End If64 End Sub65 66 Private Sub c_IntS2_Click()67 If c_IntS2.Value = 1 Then ' MODE ALARM : INTERVAL SLAVE 1 CHECKED68 Label7.Enabled = True69 Label8.Enabled = True70 Label9.Enabled = True71 frModeInt2.Enabled = True72 cbS2_jstart.Enabled = True73 cbS2_mstart.Enabled = True74 cbS2_jend.Enabled = True75 cbS2_mend.Enabled = True76 cbS2_jint.Enabled = True77 cbS2_mint.Enabled = True78 Else79 Label7.Enabled = False80 Label8.Enabled = False81 Label9.Enabled = False82 frModeInt2.Enabled = False83 cbS2_jstart.Enabled = False84 cbS2_mstart.Enabled = False85 cbS2_jend.Enabled = False86 cbS2_mend.Enabled = False87 cbS2_jint.Enabled = False88 cbS2_mint.Enabled = False89 End If90 End Sub91 92 Private Sub c_JTS1_Click()93 If c_JTS1.Value = 1 Then94 frModeJam1.Enabled = True95 JT_S1a.Enabled = True 'a96 JT_S1b.Enabled = True 'b

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 150: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.3

97 JT_S1c.Enabled = True 'c98 JT_S1d.Enabled = True 'd99 JT_S1e.Enabled = True 'e100 JT_S1f.Enabled = True 'f101 Else102 frModeJam1.Enabled = False103 JT_S1a.Enabled = False 'a104 JT_S1b.Enabled = False 'b105 JT_S1c.Enabled = False 'c106 JT_S1d.Enabled = False 'd107 JT_S1e.Enabled = False 'e108 JT_S1f.Enabled = False 'f109 End If110 ' false enabling combo box for slave 1111 cbS1_JTja.Enabled = False112 cbS1_JTma.Enabled = False113 cbS1_JTjb.Enabled = False114 cbS1_JTmb.Enabled = False115 cbS1_JTjc.Enabled = False116 cbS1_JTmc.Enabled = False117 cbS1_JTjd.Enabled = False118 cbS1_JTmd.Enabled = False119 cbS1_JTje.Enabled = False120 cbS1_JTme.Enabled = False121 cbS1_JTjf.Enabled = False122 cbS1_JTmf.Enabled = False123 End Sub124 125 Private Sub c_JTS2_Click()126 If c_JTS2.Value = 1 Then127 frModeJam2.Enabled = True128 JT_S2a.Enabled = True 'a129 JT_S2b.Enabled = True 'b130 JT_S2c.Enabled = True 'c131 JT_S2d.Enabled = True 'd132 JT_S2e.Enabled = True 'e133 JT_S2f.Enabled = True 'f134 Else135 frModeJam2.Enabled = False136 JT_S2a.Enabled = False 'a137 JT_S2b.Enabled = False 'b138 JT_S2c.Enabled = False 'c139 JT_S2d.Enabled = False 'd140 JT_S2e.Enabled = False 'e141 JT_S2f.Enabled = False 'f142 End If143 ' false enabling combo box for slave 2144 cbS2_JTja.Enabled = False145 cbS2_JTma.Enabled = False146 cbS2_JTjb.Enabled = False147 cbS2_JTmb.Enabled = False

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 151: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.4

148 cbS2_JTjc.Enabled = False149 cbS2_JTmc.Enabled = False150 cbS2_JTjd.Enabled = False151 cbS2_JTmd.Enabled = False152 cbS2_JTje.Enabled = False153 cbS2_JTme.Enabled = False154 cbS2_JTjf.Enabled = False155 cbS2_JTmf.Enabled = False156 End Sub157 158 Private Sub cmdConnect_Click()159 cmdManSend.Enabled = False160 initrs232161 Call FrameMode162 End Sub163 Private Sub cmdDisconnect_Click()164 MSComm1.PortOpen = False165 frModeInt.Enabled = False166 frModeJam.Enabled = False167 frOpAlrm.Enabled = False168 cmdSend.Enabled = False169 optOff.Value = False170 optInt.Value = False171 optJam.Value = False172 cmdManSend.Enabled = True173 commStatus.BackColor = &HE0E0E0174 commStatus.Caption = "OFF"175 Call FrameMode176 End Sub177 178 Private Sub cmdIntCEK_Click()179 errorCount = 0180 Dim cjst, cmst, cjen, cmen, cjint, cmint As String ' convert HOUR &

MINUTE mode alarm : interval slave181 'check if any error happen182 '---------------------183 cjst = "Jam Mulai"184 cmst = "Menit Mulai"185 cjen = "Jam Akhir"186 cmen = "Menit Akhir"187 cjint = "Jam Interval"188 cmint = "Menit Interval"189 190 '================ selecting time alarm mode interval slave 1191 jst1 = cbS1_jstart.Text192 mst1 = cbS1_mstart.Text193 jen1 = cbS1_jend.Text194 men1 = cbS1_mend.Text195 jint1 = cbS1_jint.Text196 mint1 = cbS1_mint.Text197 '================ selecting time alarm mode interval slave 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 152: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.5

198 jst2 = cbS2_jstart.Text199 mst2 = cbS2_mstart.Text200 jen2 = cbS2_jend.Text201 men2 = cbS2_mend.Text202 jint2 = cbS2_jint.Text203 mint2 = cbS2_mint.Text204 205 'mode Interval status check is starting206 If c_IntS1.Value = 1 And c_IntS2.Value = 0 Then207 'slave 1208 stringValue = cjst209 stringOriValue = jst1210 Call stringChecking211 stringValue = cmst212 stringOriValue = mst1213 Call stringChecking214 stringValue = cjen215 stringOriValue = jen1216 Call stringChecking217 stringValue = cmen218 stringOriValue = men1219 Call stringChecking220 stringValue = cjint221 stringOriValue = jint1222 Call stringChecking223 stringValue = cmint224 stringOriValue = mint1225 Call stringChecking226 227 ElseIf c_IntS1.Value = 0 And c_IntS2.Value = 1 Then228 'slave 2229 stringValue = cjst230 stringOriValue = jst2231 Call stringChecking232 stringValue = cmst233 stringOriValue = mst2234 Call stringChecking235 stringValue = cjen236 stringOriValue = jen2237 Call stringChecking238 stringValue = cmen239 stringOriValue = men2240 Call stringChecking241 stringValue = cjint242 stringOriValue = jint2243 Call stringChecking244 stringValue = cmint245 stringOriValue = mint2246 Call stringChecking247 248 ElseIf c_IntS1.Value = 1 And c_IntS2.Value = 1 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 153: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.6

249 'slave 1250 stringValue = cjst251 stringOriValue = jst1252 Call stringChecking253 stringValue = cmst254 stringOriValue = mst1255 Call stringChecking256 stringValue = cjen257 stringOriValue = jen1258 Call stringChecking259 stringValue = cmen260 stringOriValue = men1261 Call stringChecking262 stringValue = cjint263 stringOriValue = jint1264 Call stringChecking265 stringValue = cmint266 stringOriValue = mint1267 Call stringChecking268 269 'slave 2270 stringValue = cjst271 stringOriValue = jst2272 Call stringChecking273 stringValue = cmst274 stringOriValue = mst2275 Call stringChecking276 stringValue = cjen277 stringOriValue = jen2278 Call stringChecking279 stringValue = cmen280 stringOriValue = men2281 Call stringChecking282 stringValue = cjint283 stringOriValue = jint2284 Call stringChecking285 stringValue = cmint286 stringOriValue = mint2287 Call stringChecking288 289 ElseIf c_IntS1.Value = 0 And c_IntS2.Value = 0 Then290 errorCount = 0291 End If292 293 '============================== interval data checking end

=============================294 Call modeIntervalReady295 End Sub296 297 Private Sub cmdJamCEK_Click()298 Dim cJTja, cJTjb, cJTjc, cJTjd, cJTje, cJTjf As String ' convert

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 154: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.7

HOUR mode alarm : Jam Tertentu slave 1299 Dim cJTma, cJTmb, cJTmc, cJTmd, cJTme, cJTmf As String ' convert

MINUTE mode alarm : Jam Tertentu slave 1300 errorCount = 0301 'check if any error happen302 '---------------------303 cJTja = "jam Alarm1"304 cJTma = "menit Alarm1"305 cJTjb = "jam Alarm2"306 cJTmb = "menit Alarm2"307 cJTjc = "jam Alarm3"308 cJTmc = "menit Alarm3"309 cJTjd = "jam Alarm4"310 cJTmd = "menit Alarm4"311 cJTje = "jam Alarm5"312 cJTme = "menit Alarm5"313 cJTjf = "jam Alarm6"314 cJTmf = "menit Alarm6"315 316 '===========================================================317 'mode jam tertentu status check is starting318 319 If c_JTS1.Value = 1 And c_JTS2.Value = 0 Then ' checkBox slave 1

is checked and slave 2 is unchecked320 If JT_S1a.Value = 0 And JT_S1b.Value = 0 And JT_S1c.Value = 0 And

JT_S1d.Value = 0 And JT_S1e.Value = 0 And JT_S1f.Value = 0 Then321 'checking all checkBox is checked or unchecked322 MsgBox "alarm mode : Jam Tertentu SLAVE 2, tetapi alarm

tidak disetting", vbExclamation + vbOKOnly323 End If324 'cheking SLAVE 1325 If JT_S1a.Value = 1 Then326 JTja1 = cbS1_JTja.Text327 JTma1 = cbS1_JTma.Text328 stringValue = cJTja329 stringOriValue = JTja1330 Call stringChecking331 stringValue = cJTma332 stringOriValue = JTma1333 Call stringChecking334 ElseIf JT_S1a.Value = 0 Then335 JTja1 = "65"336 JTma1 = "65"337 End If338 339 If JT_S1b.Value = 1 Then340 JTjb1 = cbS1_JTjb.Text341 JTmb1 = cbS1_JTmb.Text342 stringValue = cJTjb343 stringOriValue = JTjb1344 Call stringChecking

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 155: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.8

345 stringValue = cJTmb346 stringOriValue = JTmb1347 Call stringChecking348 ElseIf JT_S1b.Value = 0 Then349 JTjb1 = "65"350 JTmb1 = "65"351 End If352 353 If JT_S1c.Value = 1 Then354 JTjc1 = cbS1_JTjc.Text355 JTmc1 = cbS1_JTmc.Text356 stringValue = cJTjc357 stringOriValue = JTjc1358 Call stringChecking359 stringValue = cJTmc360 stringOriValue = JTmc1361 Call stringChecking362 ElseIf JT_S1c.Value = 0 Then363 JTjc1 = "65"364 JTmc1 = "65"365 End If366 367 If JT_S1d.Value = 1 Then368 JTjd1 = cbS1_JTjd.Text369 JTmd1 = cbS1_JTmd.Text370 stringValue = cJTjd371 stringOriValue = JTjd1372 Call stringChecking373 stringValue = cJTmd374 stringOriValue = JTmd1375 Call stringChecking376 ElseIf JT_S1d.Value = 0 Then377 JTjd1 = "65"378 JTmd1 = "65"379 End If380 381 If JT_S1e.Value = 1 Then382 JTje1 = cbS1_JTje.Text383 JTme1 = cbS1_JTme.Text384 stringValue = cJTje385 stringOriValue = JTje1386 Call stringChecking387 stringValue = cJTme388 stringOriValue = JTme1389 Call stringChecking390 ElseIf JT_S1e.Value = 0 Then391 JTje1 = "65"392 JTme1 = "65"393 End If394 395 If JT_S1f.Value = 1 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 156: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.9

396 JTjf1 = cbS1_JTjf.Text397 JTmf1 = cbS1_JTmf.Text398 stringValue = cJTjf399 stringOriValue = JTjf1400 Call stringChecking401 stringValue = cJTmf402 stringOriValue = JTmf1403 Call stringChecking404 ElseIf JT_S1f.Value = 0 Then405 JTjf1 = "65"406 JTmf1 = "65"407 End If408 409 ElseIf c_JTS1.Value = 0 And c_JTS2.Value = 1 Then ' checkBox

slave 1 is unchecked and slave 2 is checked410 If JT_S2a.Value = 0 And JT_S2b.Value = 0 And JT_S2c.Value = 0 And

JT_S2d.Value = 0 And JT_S2e.Value = 0 And JT_S2f.Value = 0 Then411 'checking all checkBox is checked or unchecked412 MsgBox "alarm mode : Jam Tertentu SLAVE 2, tetapi alarm

tidak disetting", vbExclamation + vbOKOnly413 End If414 'cheking SLAVE 2415 If JT_S2a.Value = 1 Then416 JTja2 = cbS2_JTja.Text417 JTma2 = cbS2_JTma.Text418 stringValue = cJTja419 stringOriValue = JTja2420 Call stringChecking421 stringValue = cJTma422 stringOriValue = JTma2423 Call stringChecking424 ElseIf JT_S2a.Value = 0 Then425 JTja2 = "65"426 JTma2 = "65"427 End If428 429 If JT_S2b.Value = 1 Then430 JTjb2 = cbS2_JTjb.Text431 JTmb2 = cbS2_JTmb.Text432 stringValue = cJTjb433 stringOriValue = JTjb2434 Call stringChecking435 stringValue = cJTmb436 stringOriValue = JTmb2437 Call stringChecking438 ElseIf JT_S2b.Value = 0 Then439 JTjb2 = "65"440 JTmb2 = "65"441 End If442 443 If JT_S2c.Value = 1 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 157: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.10

444 JTjc2 = cbS2_JTjc.Text445 JTmc2 = cbS2_JTmc.Text446 stringValue = cJTjc447 stringOriValue = JTjc2448 Call stringChecking449 stringValue = cJTmc450 stringOriValue = JTmc2451 Call stringChecking452 ElseIf JT_S2c.Value = 0 Then453 JTjc2 = "65"454 JTmc2 = "65"455 End If456 457 If JT_S2d.Value = 1 Then458 JTjd2 = cbS2_JTjd.Text459 JTmd2 = cbS2_JTmd.Text460 stringValue = cJTjd461 stringOriValue = JTjd2462 Call stringChecking463 stringValue = cJTmd464 stringOriValue = JTmd2465 Call stringChecking466 ElseIf JT_S2d.Value = 0 Then467 JTjd2 = "65"468 JTmd2 = "65"469 End If470 471 If JT_S2e.Value = 1 Then472 JTje2 = cbS2_JTje.Text473 JTme2 = cbS2_JTme.Text474 stringValue = cJTje475 stringOriValue = JTje2476 Call stringChecking477 stringValue = cJTme478 stringOriValue = JTme2479 Call stringChecking480 ElseIf JT_S2e.Value = 0 Then481 JTje2 = "65"482 JTme2 = "65"483 End If484 485 If JT_S2f.Value = 1 Then486 JTjf2 = cbS2_JTjf.Text487 JTmf2 = cbS2_JTmf.Text488 stringValue = cJTjf489 stringOriValue = JTjf2490 Call stringChecking491 stringValue = cJTmf492 stringOriValue = JTmf2493 Call stringChecking494 ElseIf JT_S2f.Value = 0 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 158: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.11

495 JTjf2 = "65"496 JTmf2 = "65"497 End If498 499 ElseIf c_JTS1.Value = 1 And c_JTS2.Value = 1 Then ' checkBox

slave 1 is checked and slave 2 is checked500 If JT_S1a.Value = 0 And JT_S1b.Value = 0 And JT_S1c.Value = 0 And

JT_S1d.Value = 0 And JT_S1e.Value = 0 And JT_S1f.Value = 0 _501 And JT_S2a.Value = 0 And JT_S2b.Value = 0 And JT_S2c.Value = 0

And JT_S2d.Value = 0 And JT_S2e.Value = 0 And JT_S2f.Value =0 Then

502 'checking all checkBox is checked or unchecked503 MsgBox "alarm mode : Jam Tertentu SLAVE 2, tetapi alarm

tidak disetting", vbExclamation + vbOKOnly504 End If505 'cheking SLAVE 1506 If JT_S1a.Value = 1 Then507 JTja1 = cbS1_JTja.Text508 JTma1 = cbS1_JTma.Text509 stringValue = cJTja510 stringOriValue = JTja1511 Call stringChecking512 stringValue = cJTma513 stringOriValue = JTma1514 Call stringChecking515 ElseIf JT_S1a.Value = 0 Then516 JTja1 = "65"517 JTma1 = "65"518 End If519 520 If JT_S1b.Value = 1 Then521 JTjb1 = cbS1_JTjb.Text522 JTmb1 = cbS1_JTmb.Text523 stringValue = cJTjb524 stringOriValue = JTjb1525 Call stringChecking526 stringValue = cJTmb527 stringOriValue = JTmb1528 Call stringChecking529 ElseIf JT_S1b.Value = 0 Then530 JTjb1 = "65"531 JTmb1 = "65"532 End If533 534 If JT_S1c.Value = 1 Then535 JTjc1 = cbS1_JTjc.Text536 JTmc1 = cbS1_JTmc.Text537 stringValue = cJTjc538 stringOriValue = JTjc1539 Call stringChecking540 stringValue = cJTmc

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 159: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.12

541 stringOriValue = JTmc1542 Call stringChecking543 ElseIf JT_S1c.Value = 0 Then544 JTjc1 = "65"545 JTmc1 = "65"546 End If547 548 If JT_S1d.Value = 1 Then549 JTjd1 = cbS1_JTjd.Text550 JTmd1 = cbS1_JTmd.Text551 stringValue = cJTjd552 stringOriValue = JTjd1553 Call stringChecking554 stringValue = cJTmd555 stringOriValue = JTmd1556 Call stringChecking557 ElseIf JT_S1d.Value = 0 Then558 JTjd1 = "65"559 JTmd1 = "65"560 End If561 562 If JT_S1e.Value = 1 Then563 JTje1 = cbS1_JTje.Text564 JTme1 = cbS1_JTme.Text565 stringValue = cJTje566 stringOriValue = JTje1567 Call stringChecking568 stringValue = cJTme569 stringOriValue = JTme1570 Call stringChecking571 ElseIf JT_S1e.Value = 0 Then572 JTje1 = "65"573 JTme1 = "65"574 End If575 576 If JT_S1f.Value = 1 Then577 JTjf1 = cbS1_JTjf.Text578 JTmf1 = cbS1_JTmf.Text579 stringValue = cJTjf580 stringOriValue = JTjf1581 Call stringChecking582 stringValue = cJTmf583 stringOriValue = JTmf1584 Call stringChecking585 ElseIf JT_S1f.Value = 0 Then586 JTjf1 = "65"587 JTmf1 = "65"588 End If589 590 'cheking SLAVE 2591 If JT_S2a.Value = 1 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 160: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.13

592 JTja2 = cbS2_JTja.Text593 JTma2 = cbS2_JTma.Text594 stringValue = cJTja595 stringOriValue = JTja2596 Call stringChecking597 stringValue = cJTma598 stringOriValue = JTma2599 Call stringChecking600 ElseIf JT_S2a.Value = 0 Then601 JTja2 = "65"602 JTma2 = "65"603 End If604 605 If JT_S2b.Value = 1 Then606 JTjb2 = cbS2_JTjb.Text607 JTmb2 = cbS2_JTmb.Text608 stringValue = cJTjb609 stringOriValue = JTjb2610 Call stringChecking611 stringValue = cJTmb612 stringOriValue = JTmb2613 Call stringChecking614 ElseIf JT_S2b.Value = 0 Then615 JTjb2 = "65"616 JTmb2 = "65"617 End If618 619 If JT_S2c.Value = 1 Then620 JTjc2 = cbS2_JTjc.Text621 JTmc2 = cbS2_JTmc.Text622 stringValue = cJTjc623 stringOriValue = JTjc2624 Call stringChecking625 stringValue = cJTmc626 stringOriValue = JTmc2627 Call stringChecking628 ElseIf JT_S2c.Value = 0 Then629 JTjc2 = "65"630 JTmc2 = "65"631 End If632 633 If JT_S2d.Value = 1 Then634 JTjd2 = cbS2_JTjd.Text635 JTmd2 = cbS2_JTmd.Text636 stringValue = cJTjd637 stringOriValue = JTjd2638 Call stringChecking639 stringValue = cJTmd640 stringOriValue = JTmd2641 Call stringChecking642 ElseIf JT_S2d.Value = 0 Then

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 161: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.14

643 JTjd2 = "65"644 JTmd2 = "65"645 End If646 647 If JT_S2e.Value = 1 Then648 JTje2 = cbS2_JTje.Text649 JTme2 = cbS2_JTme.Text650 stringValue = cJTje651 stringOriValue = JTje2652 Call stringChecking653 stringValue = cJTme654 stringOriValue = JTme2655 Call stringChecking656 ElseIf JT_S2e.Value = 0 Then657 JTje2 = "65"658 JTme2 = "65"659 End If660 661 If JT_S2f.Value = 1 Then662 JTjf2 = cbS2_JTjf.Text663 JTmf2 = cbS2_JTmf.Text664 stringValue = cJTjf665 stringOriValue = JTjf2666 Call stringChecking667 stringValue = cJTmf668 stringOriValue = JTmf2669 Call stringChecking670 ElseIf JT_S2f.Value = 0 Then671 JTjf2 = "65"672 JTmf2 = "65"673 End If674 675 ElseIf c_JTS1.Value = 0 And c_JTS2.Value = 0 Then ' checkBox

slave 1 and slave 2 are unchecked676 errorCount = 0677 End If678 '============================== jam tertentu data checking end

=============================679 Call modeJamTertentuReady680 End Sub681 682 Private Sub stringChecking()683 If StrComp(stringValue, stringOriValue, vbTextCompare) = 0 Then684 'MsgBox " 'data yang anda isikan salah -nug' " & " || ini adalah

kesalahannya : " & stringOriValue, vbExclamation + vbOKOnly685 'Err.Clear686 errorCount = errorCount + 1687 Else688 Call tunda100689 txtTest.Text = stringOriValue690 End If

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 162: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.15

691 End Sub692 Private Sub modeIntervalReady()693 694 txtInt.Text = ""695 txtJam1.Text = ""696 txtJam2.Text = ""697 Dim cjintZERO, cmintZERO As String698 cjintZERO = "00"699 cmintZERO = "00"700 If jint1 = cjintZERO And mint1 = cmintZERO Or jint2 = cjintZERO And

mint2 = cmintZERO Then701 MsgBox "interval alarm value is not valid", vbExclamation +

vbOKOnly702 cmdSend.Enabled = False703 Else704 If errorCount = 0 And optInt.Value = True Then705 If c_IntS1.Value = 1 And c_IntS2.Value = 1 Then706 txtInt.Text = "I" & jst1 & mst1 & jen1 & men1 & jint1 &

mint1 & jst2 & mst2 & jen2 & men2 & jint2 & mint2707 txtJam1.Text = "A656565656565656565656565"708 txtJam2.Text = "B656565656565656565656565"709 710 ElseIf c_IntS1.Value = 1 And c_IntS2.Value = 0 Then711 txtInt.Text = "I" & jst1 & mst1 & jen1 & men1 & jint1 &

mint1 & "656565656565"712 txtJam1.Text = "A656565656565656565656565"713 txtJam2.Text = "B656565656565656565656565"714 715 ElseIf c_IntS1.Value = 0 And c_IntS2.Value = 1 Then716 txtInt.Text = "I656565656565" & jst2 & mst2 & jen2 & men2

& jint2 & mint2717 txtJam1.Text = "A656565656565656565656565"718 txtJam2.Text = "B656565656565656565656565"719 720 ElseIf c_IntS1.Value = 0 And c_IntS2.Value = 0 Then721 MsgBox "alarm mode : Interval, tetapi alarm tidak

disetting", vbExclamation + vbOKOnly722 txtInt.Text = "I656565656565656565656565"723 txtJam1.Text = "A656565656565656565656565"724 txtJam2.Text = "B656565656565656565656565"725 End If726 727 txtTest.Text = "T" & (Now - DateSerial(1970, 1, 1)) * 86400 &

txtInt.Text & txtJam1.Text & txtJam2.Text728 cmdSend.Enabled = True729 Else730 cmdSend.Enabled = False731 txtTest.Text = "alarm on data mode Interval is not ready"732 tunda1000733 txtTest.Text = "ada " & errorCount & " kesalahan dalam

pengisian data alarm mode interval"

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 163: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.16

734 MsgBox "alarm on data mode Interval is not ready ",vbExclamation + vbOKOnly

735 End If736 End If737 End Sub738 Private Sub modeJamTertentuReady()739 740 txtInt.Text = ""741 txtJam1.Text = ""742 txtJam2.Text = ""743 744 If errorCount = 0 And optJam.Value = True Then745 746 If c_JTS1.Value = 1 And c_JTS2.Value = 1 Then747 txtInt.Text = "I656565656565656565656565"748 txtJam1.Text = "A" & JTja1 & JTma1 & JTjb1 & JTmb1 & JTjc1 &

JTmc1 & JTjd1 & JTmd1 & JTje1 & JTme1 & JTjf1 & JTmf1749 txtJam2.Text = "B" & JTja2 & JTma2 & JTjb2 & JTmb2 & JTjc2 &

JTmc2 & JTjd2 & JTmd2 & JTje2 & JTme2 & JTjf2 & JTmf2750 751 'Call tunda1000' the original752 'txtTest.Text = "B" & JTja2 & JTma2 & JTjb2 & JTmb2 & JTjc2

& JTmc2 & JTjd2 & JTmd2 & JTje2 & JTme2 & JTjf2 & JTmf2 ' the original

753 End If754 755 If c_JTS1.Value = 1 And c_JTS2.Value = 0 Then756 txtInt.Text = "I656565656565656565656565"757 txtJam1.Text = "A" & JTja1 & JTma1 & JTjb1 & JTmb1 & JTjc1 &

JTmc1 & JTjd1 & JTmd1 & JTje1 & JTme1 & JTjf1 & JTmf1758 txtJam2.Text = "B656565656565656565656565"759 'Call tunda1000' the original760 'txtTest.Text = "B656565656565656565656565" ' the original761 End If762 763 If c_JTS1.Value = 0 And c_JTS2.Value = 1 Then764 txtInt.Text = "I656565656565656565656565"765 txtJam1.Text = "A656565656565656565656565"766 txtJam2.Text = "B" & JTja2 & JTma2 & JTjb2 & JTmb2 & JTjc2 &

JTmc2 & JTjd2 & JTmd2 & JTje2 & JTme2 & JTjf2 & JTmf2767 'Call tunda1000' the original768 'txtTest.Text = "B" & JTja2 & JTma2 & JTjb2 & JTmb2 & JTjc2

& JTmc2 & JTjd2 & JTmd2 & JTje2 & JTme2 & JTjf2 & JTmf2 ' the original

769 End If770 771 If c_JTS1.Value = 0 And c_JTS2.Value = 0 Then772 MsgBox "alarm mode : Jam Tertentu, tetapi alarm tidak

disetting", vbExclamation + vbOKOnly773 txtInt.Text = "I656565656565656565656565"774 txtJam1.Text = "A656565656565656565656565"

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 164: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.17

775 txtJam2.Text = "B656565656565656565656565"776 'Call tunda1000 ' the original777 'txtTest.Text = "B656565656565656565656565" ' the original778 End If779 780 txtTest.Text = "T" & (Now - DateSerial(1970, 1, 1)) * 86400 &

txtInt.Text & txtJam1.Text & txtJam2.Text781 cmdSend.Enabled = True782 Else783 cmdSend.Enabled = False784 txtTest.Text = "alarm on data mode Jam Tertentu is not ready"785 tunda1000786 txtTest.Text = "ada " & errorCount & " kesalahan dalam pengisian

data alarm mode jam tertentu"787 MsgBox "alarm on data mode Jam Tertentu is not ready ",

vbExclamation + vbOKOnly788 End If789 790 lblTest.Caption = txtTest.Text791 End Sub792 793 Private Sub cmdSend_Click()794 'Send %PC TIME% DATA795 cmdSend.Enabled = False796 cmdDisconnect.Enabled = False797 commStatus.Caption = "SENDING"798 MSComm1.Output = "T" & (Now - DateSerial(1970, 1, 1)) * 86400799 Call tunda1000800 MSComm1.Output = txtInt.Text801 Call tunda1000802 MSComm1.Output = txtJam1.Text803 Call tunda1000804 MSComm1.Output = txtJam2.Text805 Call tunda1000806 MSComm1.PortOpen = False807 commStatus.BackColor = &HE0E0E0808 commStatus.Caption = "SENDING"809 MSComm1.PortOpen = True810 Call tunda1000811 commStatus.BackColor = vbRed812 commStatus.Caption = "FINISHED"813 cmdSend.Enabled = True814 cmdDisconnect.Enabled = True815 'Send %ALARM MODE INTERVAL for SLAVE 1 AND 2% DATA816 'MSComm1.Output = txtInt.Text817 'Call tunda500818 'MSComm1.PortOpen = False819 'commStatus.BackColor = &HE0E0E0820 'commStatus.Caption = "SENDING"821 'MSComm1.PortOpen = True822 'Call tunda1000

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 165: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.18

823 'commStatus.BackColor = vbRed824 'commStatus.Caption = "SENDING"825 End Sub826 827 Private Sub cmdSync_Click()828 Dim Echeck As Boolean829 Dim oInetTime As cInetTime830 Set oInetTime = New cInetTime831 832 Me.Timer1.Enabled = False833 'Me.imgWarn.Visible = False834 lblStatus.Caption = "Terhubung dengan Server NTP..."835 cmdSync.Enabled = False836 837 With oInetTime838 .TimeServer = TIME_SERVER839 .SetTime840 If .ErrorCheck = True Then841 Echeck = True842 lblStatus.Caption = " No response from Time Server."843 'Me.imgWarn.Visible = True844 845 Else846 lblStatus.Caption = "Adjusted " & .AdjustedSecs & " Sec"847 lblDateTime.Caption = ": " & Format(.ReturnedDate, "dddd dd

mmm yyyy hh:mm:ss")848 lblDateTime.Visible = True849 Echeck = False850 'Me.imgWarn.Visible = False851 End If852 End With853 854 cmdSync.Enabled = True855 cmdSync.SetFocus856 857 Set oInetTime = Nothing858 859 If BatchMode = True And Echeck = False Then Unload Me860 BatchMode = False861 Me.Timer1.Enabled = True862 End Sub863 864 Private Sub Form_Activate()865 If BatchMode = True Then Call cmdSync_Click866 End Sub867 868 Private Sub cboServers_Change()869 TIME_SERVER = Me.cboServers.Text870 ServerIndex = Me.cboServers.ListIndex871 End Sub872

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 166: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.19

873 Private Sub cmdEnd_Click()874 Unload Me875 End Sub876 877 Private Sub cmdManSend_Click()878 ManualSend.Show879 End Sub880 881 Private Sub Form_Load()882 Call LoadServers883 884 TIME_SERVER = Me.cboServers.Text885 Me.lblDateTime = GetSetting(App.EXEName, "Timeserver", "Last", "None")886 887 comport = 1888 errorCount = 0889 frOpAlrm.Enabled = False890 frModeInt.Enabled = False891 frModeJam.Enabled = False892 cmdSend.Enabled = False893 'cmdManSend.Enabled = False894 cmdDisconnect.Enabled = False895 Call FrameMode896 ' MSCOMM properies setting, don't remove the comments897 'MSComm1.InputLen = 1898 'MSComm1.Settings = "9600,n,8,1"899 'MSComm1.CommPort = comport900 'MSComm1.DTREnable = True ' penting digunakan!!!!!!!!!untuk

me-reset arduinonya901 'MSComm1.InputLen = 0902 'MSComm1.RThreshold = 4 ' IMPORTANT change this to change the

number of characters to be received903 'MSComm1.SThreshold = 3904 'MSComm1.PortOpen = True ' Open the port.905 ' =======================================================906 End Sub907 908 Private Sub Form_Unload(Cancel As Integer)909 SaveSetting App.EXEName, "Timeserver", "Name", TIME_SERVER910 SaveSetting App.EXEName, "Timeserver", "Index", Trim(Str(ServerIndex))911 SaveSetting App.EXEName, "Timeserver", "Last", Me.lblDateTime.Caption912 End913 End Sub914 915 Private Sub JT_S1a_Click()916 'start enabling Slave 1 Jam Tertentu

==============================================917 If JT_S1a.Value = 1 Then918 cbS1_JTja.Enabled = True919 cbS1_JTma.Enabled = True920 Else

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 167: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.20

921 cbS1_JTja.Enabled = False922 cbS1_JTma.Enabled = False923 End If924 End Sub925 926 Private Sub JT_S1b_Click()927 If JT_S1b.Value = 1 Then928 cbS1_JTjb.Enabled = True929 cbS1_JTmb.Enabled = True930 Else931 cbS1_JTjb.Enabled = False932 cbS1_JTmb.Enabled = False933 End If934 End Sub935 936 Private Sub JT_S1c_Click()937 If JT_S1c.Value = 1 Then938 cbS1_JTjc.Enabled = True939 cbS1_JTmc.Enabled = True940 Else941 cbS1_JTjc.Enabled = False942 cbS1_JTmc.Enabled = False943 End If944 End Sub945 946 Private Sub JT_S1d_Click()947 If JT_S1d.Value = 1 Then948 cbS1_JTjd.Enabled = True949 cbS1_JTmd.Enabled = True950 Else951 cbS1_JTjd.Enabled = False952 cbS1_JTmd.Enabled = False953 End If954 End Sub955 956 Private Sub JT_S1e_Click()957 If JT_S1e.Value = 1 Then958 cbS1_JTje.Enabled = True959 cbS1_JTme.Enabled = True960 Else961 cbS1_JTje.Enabled = False962 cbS1_JTme.Enabled = False963 End If964 End Sub965 966 Private Sub JT_S1f_Click()967 If JT_S1f.Value = 1 Then968 cbS1_JTjf.Enabled = True969 cbS1_JTmf.Enabled = True970 Else971 cbS1_JTjf.Enabled = False

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 168: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.21

972 cbS1_JTmf.Enabled = False973 End If974 'end enabling Slave 1 Jam Tertentu

==============================================975 End Sub976 Private Sub JT_S2a_Click()977 'start enabling Slave 2 Jam Tertentu

==============================================978 If JT_S2a.Value = 1 Then979 cbS2_JTja.Enabled = True980 cbS2_JTma.Enabled = True981 Else982 cbS2_JTja.Enabled = False983 cbS2_JTma.Enabled = False984 End If985 End Sub986 987 Private Sub JT_S2b_Click()988 If JT_S2b.Value = 1 Then989 cbS2_JTjb.Enabled = True990 cbS2_JTmb.Enabled = True991 Else992 cbS2_JTjb.Enabled = False993 cbS2_JTmb.Enabled = False994 End If995 End Sub996 997 Private Sub JT_S2c_Click()998 If JT_S2c.Value = 1 Then999 cbS2_JTjc.Enabled = True1000 cbS2_JTmc.Enabled = True1001 Else1002 cbS2_JTjc.Enabled = False1003 cbS2_JTmc.Enabled = False1004 End If1005 End Sub1006 1007 Private Sub JT_S2d_Click()1008 If JT_S2d.Value = 1 Then1009 cbS2_JTjd.Enabled = True1010 cbS2_JTmd.Enabled = True1011 Else1012 cbS2_JTjd.Enabled = False1013 cbS2_JTmd.Enabled = False1014 End If1015 End Sub1016 1017 Private Sub JT_S2e_Click()1018 If JT_S2e.Value = 1 Then1019 cbS2_JTje.Enabled = True1020 cbS2_JTme.Enabled = True

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 169: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.22

1021 Else1022 cbS2_JTje.Enabled = False1023 cbS2_JTme.Enabled = False1024 End If1025 End Sub1026 1027 Private Sub JT_S2f_Click()1028 If JT_S2f.Value = 1 Then1029 cbS2_JTjf.Enabled = True1030 cbS2_JTmf.Enabled = True1031 Else1032 cbS2_JTjf.Enabled = False1033 cbS2_JTmf.Enabled = False1034 End If1035 'end enabling Slave 2 Jam Tertentu

==============================================1036 End Sub1037 Private Sub optInt_Click()1038 txtInt.Text = ""1039 txtJam1.Text = ""1040 txtJam2.Text = ""1041 frModeInt.Enabled = True1042 frModeJam.Enabled = False1043 c_JTS1.Value = 01044 c_JTS2.Value = 01045 Call FrameMode1046 txtTest.Text = ""1047 cmdSend.Enabled = False1048 'cmdSend.Enabled = True 'the original1049 End Sub1050 1051 Private Sub optJam_Click()1052 txtInt.Text = ""1053 txtJam1.Text = ""1054 txtJam2.Text = ""1055 frModeInt.Enabled = False1056 frModeJam.Enabled = True1057 c_IntS1.Value = 01058 c_IntS2.Value = 01059 Call FrameMode1060 txtTest.Text = ""1061 cmdSend.Enabled = False1062 'cmdSend.Enabled = True 'the original1063 End Sub1064 1065 Private Sub optOff_Click()1066 txtInt.Text = ""1067 txtJam1.Text = ""1068 txtJam2.Text = ""1069 c_IntS1.Value = 01070 c_IntS2.Value = 0

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 170: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.23

1071 c_JTS1.Value = 01072 c_JTS2.Value = 01073 jst1 = "00"1074 mst1 = "00"1075 jen1 = "00"1076 men1 = "00"1077 jint1 = "00"1078 mint1 = "00"1079 'txtTest.Text = "T" & (Now - DateSerial(1970, 1, 1)) * 86400 & "I" &

jst1 & mst1 & jen1 & men1 & jint1 & mint1 & "000000000000"1080 txtInt.Text = "I656565656565656565656565"1081 txtJam1.Text = "A656565656565656565656565"1082 txtJam2.Text = "B656565656565656565656565"1083 frModeInt.Enabled = False1084 frModeJam.Enabled = False1085 Call FrameMode1086 cmdSend.Enabled = True1087 End Sub1088 1089 Private Sub Timer1_Timer()1090 Me.lblPcTime.Caption = ": " & Format(Now, "dddd dd mmm yyyy

hh:mm:ss")1091 End Sub1092 1093 Private Sub LoadServers()1094 Dim InFile1095 Dim ServerName As String1096 Dim remPos As Integer1097 InFile = FreeFile1098 1099 On Error GoTo LoadDefaults1100 Open App.Path & "\SERVERS.txt" For Input As InFile1101 While Not EOF(InFile)1102 'get next line1103 Line Input #InFile, ServerName1104 If Left(ServerName, 1) <> ";" And Trim(ServerName) <> "" Then

'skip remarques and empty's1105 remPos = InStr(1, ServerName, ";")1106 If remPos <> 0 Then ServerName = Trim(Left(ServerName, remPos

- 1))1107 cboServers.AddItem ServerName1108 End If1109 Wend1110 Close InFile1111 If ServerIndex > cboServers.ListCount - 1 Then ServerIndex = 01112 cboServers.ListIndex = ServerIndex1113 Exit Sub1114 1115 LoadDefaults:1116 Close InFile1117

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 171: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.24

1118 With cboServers1119 .AddItem "ntp.kim.lipi.go.id"1120 .AddItem "ntps1-0.cs.tu-berlin.de"1121 .AddItem "ntps1-0.uni-erlangen.de"1122 .AddItem "ntps1-1.uni-erlangen.de"1123 .AddItem "ntps1-2.uni-erlangen.de"1124 .AddItem "ptbtime1.ptb.de"1125 .AddItem "ptbtime2.ptb.de"1126 .AddItem "tick.usno.navy.mil"1127 .AddItem "timex.cs.columbia.edu"1128 .AddItem "nist1.datum.com"1129 .AddItem "time.ien.it"1130 .AddItem "swisstime.ethz.ch"1131 .AddItem "ntp.lth.se"1132 .AddItem "Rolex.PeachNet.edu"1133 If ServerIndex > .ListCount - 1 Then ServerIndex = 01134 .ListIndex = ServerIndex1135 End With1136 End Sub1137 '=====================================================================

================ my custom made FUNCTION1138 Private Sub tunda100()1139 Dim waktu As Double1140 waktu = Timer + 0.21141 While Timer < waktu1142 DoEvents1143 Wend1144 End Sub1145 Private Sub tunda500()1146 Dim waktu As Double1147 waktu = Timer + 11148 While Timer < waktu1149 DoEvents1150 Wend1151 End Sub1152 Private Sub tunda700()1153 Dim waktu As Double1154 waktu = Timer + 1.51155 While Timer < waktu1156 DoEvents1157 Wend1158 End Sub1159 Private Sub tunda1000()1160 Dim waktu As Double1161 waktu = Timer + 21162 While Timer < waktu1163 DoEvents1164 Wend1165 End Sub1166 1167 Private Sub FrameMode()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 172: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.25

1168 '=========== IF FALSE1169 If frOpAlrm.Enabled = False Then ' MODE ALARM : OFF1170 optOff.Enabled = False1171 optInt.Enabled = False1172 optJam.Enabled = False1173 End If1174 1175 If frModeInt.Enabled = False Then ' MODE ALARM : INTERVAL1176 c_IntS1.Enabled = False1177 c_IntS2.Enabled = False1178 cmdIntCEK.Enabled = False1179 'Slave 11180 Label4.Enabled = False1181 Label5.Enabled = False1182 Label6.Enabled = False1183 frModeInt1.Enabled = False1184 cbS1_jstart.Enabled = False1185 cbS1_mstart.Enabled = False1186 cbS1_jend.Enabled = False1187 cbS1_mend.Enabled = False1188 cbS1_jint.Enabled = False1189 cbS1_mint.Enabled = False1190 'Slave 21191 Label7.Enabled = False1192 Label8.Enabled = False1193 Label9.Enabled = False1194 frModeInt2.Enabled = False1195 cbS2_jstart.Enabled = False1196 cbS2_mstart.Enabled = False1197 cbS2_jend.Enabled = False1198 cbS2_mend.Enabled = False1199 cbS2_jint.Enabled = False1200 cbS2_mint.Enabled = False1201 End If1202 1203 If frModeJam.Enabled = False Then ' MODE ALARM : JAM TERTENTU1204 c_JTS1.Enabled = False1205 c_JTS2.Enabled = False1206 cmdJamCEK.Enabled = False1207 'Slave 11208 frModeJam1.Enabled = False1209 JT_S1a.Enabled = False 'a1210 cbS1_JTja.Enabled = False1211 cbS1_JTma.Enabled = False1212 JT_S1b.Enabled = False 'b1213 cbS1_JTjb.Enabled = False1214 cbS1_JTmb.Enabled = False1215 JT_S1c.Enabled = False 'c1216 cbS1_JTjc.Enabled = False1217 cbS1_JTmc.Enabled = False1218 JT_S1d.Enabled = False 'd

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 173: SINKRONISASI JAM DIGITAL NIRKABEL - USD

wireLessClockSync.frm L.26

1219 cbS1_JTjd.Enabled = False1220 cbS1_JTmd.Enabled = False1221 JT_S1e.Enabled = False 'e1222 cbS1_JTje.Enabled = False1223 cbS1_JTme.Enabled = False1224 JT_S1f.Enabled = False 'f1225 cbS1_JTjf.Enabled = False1226 cbS1_JTmf.Enabled = False1227 'Slave 21228 frModeJam2.Enabled = False1229 JT_S2a.Enabled = False 'a1230 cbS2_JTja.Enabled = False1231 cbS2_JTma.Enabled = False1232 JT_S2b.Enabled = False 'b1233 cbS2_JTjb.Enabled = False1234 cbS2_JTmb.Enabled = False1235 JT_S2c.Enabled = False 'c1236 cbS2_JTjc.Enabled = False1237 cbS2_JTmc.Enabled = False1238 JT_S2d.Enabled = False 'd1239 cbS2_JTjd.Enabled = False1240 cbS2_JTmd.Enabled = False1241 JT_S2e.Enabled = False 'e1242 cbS2_JTje.Enabled = False1243 cbS2_JTme.Enabled = False1244 JT_S2f.Enabled = False 'f1245 cbS2_JTjf.Enabled = False1246 cbS2_JTmf.Enabled = False1247 End If1248 '=========== IF TRUE1249 If frOpAlrm.Enabled = True Then ' MODE ALARM : OFF1250 optOff.Enabled = True1251 optInt.Enabled = True1252 optJam.Enabled = True1253 End If1254 1255 If frModeInt.Enabled = True Then ' MODE ALARM : INTERVAL1256 c_IntS1.Enabled = True1257 c_IntS2.Enabled = True1258 cmdIntCEK.Enabled = True1259 End If1260 1261 If frModeJam.Enabled = True Then ' MODE ALARM : JAM TERTENTU1262 c_JTS1.Enabled = True1263 c_JTS2.Enabled = True1264 cmdJamCEK.Enabled = True1265 End If1266 End Sub

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 174: SINKRONISASI JAM DIGITAL NIRKABEL - USD

modMain.bas L.1

1 Option Explicit2 3 'Change to your closest Internet Time Server4 'Public Const TIME_SERVER As String = "ntps1-0.cs.tu-berlin.de" '

"Rolex.PeachNet.edu"5 Public TIME_SERVER As String '= "ntps1-0.cs.tu-berlin.de" '

"Rolex.PeachNet.edu"6 Public ServerIndex As Integer7 Public BatchMode As Boolean8 9 Sub Main()10 11 If App.PrevInstance Then End12 13 TIME_SERVER = GetSetting(App.EXEName, "Timeserver", "Name",

"ntps1-0.cs.tu-berlin.de")14 ServerIndex = Val(GetSetting(App.EXEName, "Timeserver", "Index", "1"))15 16 If Command() = "/now" Or Command() = "/NOW" Then17 BatchMode = True18 End If19 20 'Open Form and let user use the interface21 Dim oForm As wireLessClockSync22 Set oForm = New wireLessClockSync23 oForm.WindowState = vbNormal24 oForm.Show 'vbModal25 oForm.Refresh26 27 End Sub28 29 Public Function dtString() As String30 'Quick Date and Time string w/full 4 digit year31 dtString = Format(Now, "dd/mm/yyyy hh:mm:ss") 'AM/PM -32 End Function33 34 Public Sub SetTime(sTimeServer As String)35 Dim oInetTime As cInetTime36 Set oInetTime = New cInetTime37 38 oInetTime.TimeServer = sTimeServer39 oInetTime.SetTime40 41 Set oInetTime = Nothing42 43 End Sub44 45 46

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 175: SINKRONISASI JAM DIGITAL NIRKABEL - USD

RS232.bas L.1

1 '''''''''''''''''''''''''''''''''''''''''''''''2 ''' File/Project: RS232/SD7 works with FD103 ''' Author: O G Popa4 ''' Copyrights O G Popa5 ''' Company: Corollary Theorems Ltd6 ''' Date started: Jan 05/057 ''' History: SD1: Implemented MDI Interface Jan

05/058 ''' SD2: Implemented RS232 V1 Jan 07/059 ''' SD3: Implemented ASCII loop receive

Jan 10/0510 ''' SD4: Implemented data display Jan

13/0511 ''' SD4: Implemented data control Jan

15/0512 ''' Jan 19/05 SD5 implements: 56k Baud

rate13 ''' - binary data transmission14 ''' - increased SD4 functionality15 ''' - SD4 bug fixes16 ''' Added File Management Jan 23/05:17 ''' - directory control18 ''' - PC binary file management19 ''' - added udata() array20 ''' - send udata() SD6 to FD1021 ''' - receive udata() FD10 to SD622 ''' SD7: Added Graph Track Control Jan

29/0523 '''''''''''''''''''''''''''''''''''''''''''''''24 Option Explicit25 '''in order to speed up the execution all variables are declared here26 '''in this way VB6 will not waste time alocating and checking for

memory27 Private Settings As String 'holds the MSComm1

string settings28 Private comport As Integer 'holds thevalue of

the selected COM port29 Private baudrate As String 'holds the

selected Baud rate30 31 32 '''init RS232 for RX/TX33 Public Sub initrs232()34 35 On Error GoTo tangkaperror36 If wireLessClockSync.MSComm1.PortOpen = False Then37 If wireLessClockSync.cb_comPort.Text = "" Then38 MsgBox "pilih salah satu COM port", vbExclamation + vbOKOnly

, "error pemilihan port"39 Exit Sub40 Else

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 176: SINKRONISASI JAM DIGITAL NIRKABEL - USD

RS232.bas L.2

41 comport = wireLessClockSync.cb_comPort.ListIndex + 142 End If43 44 Settings = "9600,N,8,1"45 wireLessClockSync.MSComm1.CommPort = comport '46 wireLessClockSync.MSComm1.Settings = Settings '47 wireLessClockSync.MSComm1.RThreshold = 4 ' IMPORTANT change

this to change the number of characters to be received48 wireLessClockSync.MSComm1.SThreshold = 3 '49 'wireLessClockSync.MSComm1.OutBufferSize = 50 'tambahan 21/08/201150 wireLessClockSync.MSComm1.InputMode = comInputModeText51 wireLessClockSync.MSComm1.InputLen = 0 '52 wireLessClockSync.MSComm1.PortOpen = True53 wireLessClockSync.MSComm1.EOFEnable = True 'tambahan 21/08/201154 wireLessClockSync.MSComm1.DTREnable = True ' penting

digunakan!!!!!!!!!untuk me-reset arduinonya55 wireLessClockSync.commStatus.BackColor = vbRed56 wireLessClockSync.commStatus.Caption = "ON"57 'wireLessClockSync.cmdSend.Enabled = True58 wireLessClockSync.frOpAlrm.Enabled = True59 wireLessClockSync.cmdDisconnect.Enabled = True60 End If61 Exit Sub62 63 tangkaperror:64 'wireLessClockSync.cmdSend.Enabled = False65 wireLessClockSync.cmdDisconnect.Enabled = False66 wireLessClockSync.frOpAlrm.Enabled = False67 MsgBox "Tidak bisa menginisialisasi Object MSCOMM1 Property

CommPort, Pilih COMM PORT yang lain. ERRORT REPORT: " _68 & Err.Description, vbExclamation + vbOKOnly 'seharusnya

ada:, "comm1 error"69 Err.Clear70 End Sub71 72

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 177: SINKRONISASI JAM DIGITAL NIRKABEL - USD

cInetTime.cls L.1

1 2 Option Explicit3 4 Private oForm As frmWinsock5 Private WithEvents oWinsock As Winsock6 7 Private Type SYSTEMTIME8 wYear As Integer9 wMonth As Integer10 wDayOfWeek As Integer11 wDay As Integer12 wHour As Integer13 wMinute As Integer14 wSecond As Integer15 wMilliseconds As Integer16 End Type17 18 Private Type TIME_ZONE_INFORMATION19 Bias As Long20 StandardName(31) As Integer21 StandardDate As SYSTEMTIME22 StandardBias As Long23 DaylightName(31) As Integer24 DaylightDate As SYSTEMTIME25 DaylightBias As Long26 End Type27 28 Private m_strTimeServer As String 'Time Server that you are

polling29 Private m_dtReturnedDate As Date 'Date & Time returned from

Time Server30 Private m_lnglAdjustedSecs As Long 'Seconds adjusted from

local PC's time31 Private m_lngTimeout As Long 'Time to give up on getting

data back from Time Server32 Private m_lngRawReturn As Long 'Raw Value returned by the

Time Server33 Private m_blnError As Boolean 'Did we encounter an error?34 35 Private Declare Function ntohl Lib "WSOCK32.DLL" (ByVal hostlong As

Long) As Long36 Private Declare Function GetTimeZoneInformation Lib "KERNEL32.DLL" (

lpTZI As TIME_ZONE_INFORMATION) As Long37 38 Public Property Get ErrorCheck() As Boolean39 ErrorCheck = m_blnError40 End Property41 42 Public Property Get AdjustedSecs() As Long43 AdjustedSecs = m_lnglAdjustedSecs44 End Property

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 178: SINKRONISASI JAM DIGITAL NIRKABEL - USD

cInetTime.cls L.2

45 46 Public Property Get ReturnedDate() As Date47 Dim strT As String48 ReturnedDate = m_dtReturnedDate49 End Property50 51 Public Property Let TimeServer(NewValue As String)52 m_strTimeServer = NewValue53 End Property54 55 Private Sub Class_Initialize()56 57 Set oForm = New frmWinsock58 Set oWinsock = oForm.Winsock159 m_lngTimeout = 5 'Timeout value60 m_blnError = False61 62 End Sub63 64 Private Sub Class_Terminate()65 66 Set oWinsock = Nothing67 Unload oForm68 Set oForm = Nothing69 70 End Sub71 72 73 Private Sub oWinsock_DataArrival(ByVal bytesTotal As Long)74 Dim dReturn As Double ' The returned value as a double75 Dim fok As Boolean76 Dim sLog As String77 78 ' Get the returned vbLong value79 ' and assign it to the m_lngRawReturn variable80 81 oWinsock.GetData m_lngRawReturn, vbLong82 83 ' Close the connection84 85 oWinsock.Close86 87 ' NOTE: The returned value is a signed long, however,88 ' it is in Network Byte Order. We need to convert89 ' it to Host Byte Order using the ntohl() function90 ' call provided by the WSOCK32.DLL. This function91 ' call will return the value as an unsigned long.92 93 m_lngRawReturn = ntohl(m_lngRawReturn)94 95 ' Convert the returned value from an unsigned long to a

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 179: SINKRONISASI JAM DIGITAL NIRKABEL - USD

cInetTime.cls L.3

96 ' signed double.97 98 If m_lngRawReturn < 0 Then99 dReturn = m_lngRawReturn + 4294967296#100 Else101 dReturn = m_lngRawReturn102 End If103 104 ' Now we need to obtain the GMT Bias as well as the105 ' DaylightBias and adjust the time to represent106 ' the time as configured in Windows.107 108 Dim vbTZI As TIME_ZONE_INFORMATION109 110 m_lngRawReturn = GetTimeZoneInformation(vbTZI)111 112 ' Evaluate the returned value and adjust the time113 ' to compensate for LocalTime offsets.114 115 Select Case m_lngRawReturn116 Case 0 ' DST Not Recognized117 dReturn = dReturn - (vbTZI.Bias * 60)118 Case 1 ' DST Recognized but not in effect119 dReturn = dReturn - (vbTZI.Bias * 60)120 Case 2 ' DST Recognized and in effect121 dReturn = dReturn - ((vbTZI.Bias * 60) + (

vbTZI.DaylightBias * 60))122 Case Else ' Error, assume DST not in effect123 dReturn = dReturn - (vbTZI.Bias * 60)124 End Select125 ' The following two lines are used to determine how126 ' much your Date/Time needs adjustment. It will be127 ' used later on in this subroutine.128 'Dim AdjustAmount As Long129 m_lnglAdjustedSecs = dReturn - DateDiff("s", "01 Jan 1900

00:00:00", Now)130 ' Adjust for the Windows Time/Time Protocol time reference131 ' difference and convert the dReturn value so that it132 ' represents the number of days instead of the number133 ' of seconds. The returned value is a double.134 dReturn = (dReturn + 172800) / 86400135 ' Convert from a double to a date136 m_dtReturnedDate = dReturn137 ' The following lines will adjust your Windows clock138 ' (if necessary) to the Date/Time received from the139 ' Time Protocol Server.140 If m_lnglAdjustedSecs = 0 Then141 'Our PC's time is correct. Not need to change time.142 Else143 'Set System Date & Time144 Date = Format(m_dtReturnedDate, "dd/mm/yy")

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 180: SINKRONISASI JAM DIGITAL NIRKABEL - USD

cInetTime.cls L.4

145 Time = Format(m_dtReturnedDate, "hh:mm:ss ")146 End If147 End Sub148 149 Private Sub oWinsock_Error(ByVal Number As Integer, Description As

String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFileAs String, ByVal HelpContext As Long, CancelDisplay As Boolean)

150 151 m_blnError = True152 oWinsock.Close153 154 End Sub155 156 Public Sub SetTime()157 158 With oWinsock159 .RemoteHost = m_strTimeServer160 .Protocol = sckTCPProtocol161 .RemotePort = 37 ' Time Protocol162 .LocalPort = 0163 164 ' Connect to the Time Server165 .Connect166 167 WaitForResponse168 End With169 170 End Sub171 172 Private Sub WaitForResponse()173 'Wait a few seconds so that we have time to get174 'a value back from Time Server175 176 Dim Start As Single177 178 Start = Timer ' Set start time.179 Do While Timer < Start + m_lngTimeout180 DoEvents ' Yield to other processes.181 If m_lngRawReturn <> 0 Then ' Exit loop when server

returns any data182 Exit Do183 End If184 Loop185 186 End Sub187 188 189

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI