SINKRONISASI JAM DIGITAL NIRKABEL - USD
Transcript of 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
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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
79
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L.1
Rangkaian Elektronik
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L.2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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