PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TUGAS AKHIR PEREKAMAN DATA AKSES KAMAR HOTEL DENGAN RFID BERBASIS WEB Diajukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro disusun oleh : PAULUS ALEXANDER ELDWIN PRADANA NIM : 115114006 PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI FINAL PROJECT DATA RECORDING OF HOTEL ROOM ACCESS USING RFID BASED ON WEB In partial fulfilment of the requirements for the degree of Sarjana Teknik Electrical Engineering Study Program PAULUS ALEXANDER ELDWIN PRADANA NIM : 115114006 ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN DAN MOTTO HIDUP MOTTO BE DIFFERENT, COZ IT’S UNIQUE!! Karya ini kupersembahkan untuk....... Tuhan Yesus Kristus, Pembimbing dan Penyemangatku, Keluarga tercinta, Teman-teman seperjuangan TE 2011, Dan semua pihak yang telah terlibat dalam proses penelitian ini vi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI INTISARI Seiring berjalannya zaman, kemudahan dan kepraktisan karena kecanggihan teknologi sistem otomasi semakin dirasakan. Salah satu contoh pengendalian secara otomatis adalah menggunakan Radio Frequency Identification atau yang lebih dikenal dengan RFID. Hotel sebagai salah satu tempat yang penuh dengan kamar hotel perlu dimonitor sehingga setiap orang yang memasuki kamar dapat diketahui. Dengan penggabungan keduanya, dibentuk suatu sistem untuk merekam data orang-orang yang mengakses kamar hotel ke web. Prinsip kerja dari sistem ini adalah sebagai berikut. Terdapat model kamar hotel sebanyak 3 buah yang telah terpasang RFID reader di setiap kamarnya dan 5 buah RFID card yakni Penyewa 1, 2, dan 3, Resepsionis, dan Office Boy (OB). Setiap penyewa hanya dapat memasuki kamar yang sesuai selama waktu check in hingga check out-nya. Resepsionis dapat memasuki setiap kamar sepanjang hari bila ada orang yang ingin menyewa. OB dapat memasuki setiap kamar pada jam tertentu saja. Namun, ketika ada orang yang telah mengakses kamar maka tidak ada orang yang dapat mengakses kamar tersebut. Setiap pengaksesan kamar, maka data yang didapat pada RFID card akan dikirim ke web. Hasil akhir dari penelitian ini adalah dapat dihasilkannya perekaman data akses kamar hotel dengan RFID berbasis web dengan adanya fasilitas halaman pendaftaran (untuk mengatur waktu check in dan check out), dan halaman check out (untuk memperbaharui data di mikrokontroler). Persentase keberhasilan yang didapat pada penelitian ini sebesar 97,14%. Kata kunci : perekaman data akses kamar hotel, RFID, perekaman dengan web, kamar hotel dengan RFID viii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT As time passed, easiness of sophistication technology of automated system, recently can be perceived. An example of automatic control is Radio Frequency Identification or commonly called RFID. Hotel, as a place with full of hotel rooms, needs to be monitored, so everyone that accesses the hotel room would be easily identified. By the combination of both, formed a system to record datas of everyone that accesses hotel room to web. This system’s principle will be explained in here. There is a model of 3 hotel rooms that are installed RFID reader for each room and there are 5 RFID cards that will be used for Guest 1, 2, and 3, Receptionist, and Office Boy (OB). Each of guest can only access their suited room all day during their check in and check out time. Receptionist can access every room all day when there is guest(s) to rent hotel room. OB can access every room in certain time. But, if there is someone who has accessed the room, then nobody will be able to access the same room. Each time the room is accessed, the RFID card’s identity will be sent to web. The last result of this research is the system is able to record data of hotel room access to web by the additional facility of registration page (to set check in and check out time), dan check out page (to regenerate data in microcontroller). Percentage of achievement in this research is out of 97,14%. Keywords : data recording of hotel room access, recording to web, hotel room with RFID installed ix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI KATA PENGANTAR Puji dan syukur kepada Tuhan Yang Maha Esa yang telah memberikan kenikmatan berupa kesehatan jasmani dan rohani sehingga penulis dapat menyelesaikan tugas akhir dengan lancar dari awal hingga diakhiri dengan munculnya laporan akhir dengan judul “PEREKAMAN DATA AKSES KAMAR HOTEL BERBASIS WEB”. Dalam pembuatan laporan akhir dari awal hingga akhir tentunya ada bantuan dari beberapa pihak sehingga laporan akhir yang disusun oleh penulis sesuai dengan ketentuan yang ada. Dengan adanya bantuan dari beberapa pihak, penulis dapat menyelesaikan laporan akhir tersebut dan hendak mengucapkan terima kasih kepada beberapa pihak diantaranya adalah sebagai berikut : 1. Tuhan Yang Maha Esa yang telah memberikan kenikmatan berupa kesehatan jasmani dan rohani. 2. Kedua orang tua dan saudara penulis yang telah mendukung dan memberikan doa restu. 3. Bapak Petrus Setyo Prabowo, S.T., M.T., sebagai Ka. Prodi Teknik Elektro Universitas Sanata Dharma Yogyakarta 4. Bapak Ir. Tjendro, M.Kom., sebagai Dosen Pembimbing Tugas Akhir yang dengan penuh pengertian dan kesabaran telah meluangkan waktu untuk memberikan bimbingan, masukan, dan motivasi dalam penulisan laporan akhir ini. 5. Ibu Ir. Theresia Prima Ari Setiyani, M.T., dan Ibu B. Wuri Harini, S.T., M.T., sebagai dosen penguji yang telah memberikan bimbingan dan masukan dalam merevisi laporan akhir ini. 6. Teman-teman Teknik Elektro angkatan 2011 yang telah banyak membantu baik lahir maupun batin. 7. Semua pihak yang telah memberikan bantuan dalam penyusunan laporan akhir ini. Dalam penyusunan laporan akhir ini tentunya terdapat kekurangan dan kelemahan serta jauh dari kata sempuna. Karena kesempurnaan hanya milik Tuhan semata. Oleh Karena itu penulis menerima masukan berupa kritik dan saran dengan harapan menjadikan penulis lebih baik lagi. x PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI HALAMAN JUDUL ............................................................................................................. i HALAMAN PERSETUJUAN ........................................................................................... iii HALAMAN PENGESAHAN ............................................................................................ iv PERNYATAAN KEASLIAN KARYA .............................................................................. v HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ................................................. vi HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ......................................... vii INTISARI .......................................................................................................................... viii ABSTRACT .......................................................................................................................... ix KATA PENGANTAR ......................................................................................................... x DAFTAR ISI ...................................................................................................................... xii DAFTAR GAMBAR ......................................................................................................... xv DAFTAR TABEL ........................................................................................................... xviii BAB I : PENDAHULUAN 1.1 Latar Belakang ............................................................................................................. 1 1.2 Tujuan dan Manfaat ..................................................................................................... 2 1.3 Batasan Masalah........................................................................................................... 2 1.4 Metodologi Penelitian .................................................................................................. 3 BAB II : DASAR TEORI 2.1 Radio Frequency Identification (RFID) ....................................................................... 4 2.1.1 RFID Tag ............................................................................................................ 4 2.1.2 RFID Reader ....................................................................................................... 5 2.2 RFID SL018 ................................................................................................................. 5 2.3 Mifare 4K 4-byte UID .................................................................................................. 8 2.4 Arduino UNO ............................................................................................................... 9 2.4.1 Komunikasi I2C ................................................................................................ 10 2.4.2 Resistor Pull-Up ............................................................................................... 11 2.4.3 Komunikasi SPI (Serial Peripheral Interface) ................................................. 12 xii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.5 RTC (Real Time Clock).............................................................................................. 13 2.6 Software XAMPP ....................................................................................................... 15 2.6.1 Apache Web Server........................................................................................... 16 2.6.2 MySQL Database.............................................................................................. 16 2.6.3 Pemrograman PHP............................................................................................ 17 2.7 Modul Ethernet Shield ............................................................................................... 17 2.7.1 MAC Address ................................................................................................... 18 BAB III : RANCANGAN PENELITIAN 3.1 Model Sistem ............................................................................................................. 20 3.2 Identifikasi Kebutuhan Perangkat .............................................................................. 21 3.3 Perancangan Perangkat Keras .................................................................................... 21 3.3.1 Perancangan Resistor Pull-Up .......................................................................... 21 3.3.2 Perancangan RFID SL018 ................................................................................ 22 3.3.3 Perancangan Modul Ethernet ........................................................................... 22 3.3.4 Perancangan RTC DS1307 ............................................................................... 23 3.4 Perancangan Perangkat Lunak ................................................................................... 24 3.4.1 Perancangan Halaman Login ............................................................................ 24 3.4.2 Perancangan Pendaftaran Penyewa Kamar Hotel............................................. 25 3.4.3 Diagram Alir Program Utama .......................................................................... 27 3.4.4 Pembacaan Identitas RFID Card oleh RFID SL018 ........................................ 28 3.4.5 Perancangan Perangkat Lunak Modul RTC DS1307 ....................................... 29 3.4.6 Persyaratan Akses Kamar ................................................................................. 29 3.4.7 Pengiriman Data ke Web Melalui Ethernet ...................................................... 32 3.4.8 Perancangan Tampilan Web ............................................................................. 33 BAB IV : HASIL DAN PEMBAHASAN 4.1 Hasil Implementasi Alat ............................................................................................. 34 4.2 Hasil Perancangan Perangkat Keras........................................................................... 35 4.3 Hasil Perancangan dan Pembahasan Perangkat Lunak .............................................. 37 4.3.1 Pengaturan IP Address pada Laptop Server...................................................... 37 4.3.2 Pengaturan IP Address pada Modul Ethernet Shield ........................................ 37 4.3.3 Hasil dan Pembahasan Perancangan Halaman Login ....................................... 38 xiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.4 Hasil dan Pembahasan Perancangan Halaman Pendaftaran Penyewa Kamar Hotel...................................................................................................... 39 4.3.5 Hasil dan Pembahasan Pembacaan Identitas RFID Card oleh RFID SL018 ... 42 4.3.6 Hasil dan Pembahasan Perancangan Perangkat Lunak Modul RTC DS1307 .. 44 4.3.7 Hasil dan Pembahasan Perancangan Program Utama ...................................... 47 BAB V : KESIMPULAN DAN SARAN 5.1 Kesimpulan ................................................................................................................ 56 5.2 Saran ........................................................................................................................... 56 DAFTAR PUSTAKA ........................................................................................................ 57 xiv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 2.1 Penampakan RFID SL018 ............................................................................. 6 Gambar 2.2 Diagram Operasi Penulisan RFID SL018 ...................................................... 7 Gambar 2.3 Diagram Operasi Pembacaan RFID SL018 ................................................... 7 Gambar 2.4 RFID Card Mifare 4K 4-byte UID ................................................................ 8 Gambar 2.5 Board Arduino UNO...................................................................................... 9 Gambar 2.6 Komunikasi I2C ........................................................................................... 10 Gambar 2.7 RTC DS1307................................................................................................ 13 Gambar 2.8 Konfigurasi bit pada register DS1307.......................................................... 14 Gambar 2.9 Diagram write mode DS1307....................................................................... 15 Gambar 2.10 Diagram read mode DS1307 ....................................................................... 15 Gambar 2.11 XAMPP Control Panel ................................................................................ 16 Gambar 2.12 Modul Ethernet Shield ................................................................................. 18 Gambar 2.13 Contoh MAC Address .................................................................................. 18 Gambar 3.1 Diagram blok sistem perekaman data akses kamar hotel ............................ 20 Gambar 3.2 Bentuk fisik tampak depan........................................................................... 21 Gambar 3.3 Rancangan resistor pull-up .......................................................................... 22 Gambar 3.4 Perancangan 3 buah RFID dengan mikrokontroler ..................................... 23 Gambar 3.5 Perancangan Modul Ethernet dan Mikrokontroler ...................................... 23 Gambar 3.6 Perancangan RTC DS1307 .......................................................................... 24 Gambar 3.7 Gambar halaman login seblum mengakses halaman rekaman data akses ... 24 Gambar 3.8 Diagram alir halaman login ......................................................................... 25 Gambar 3.9 Tampilan tabel hasil pendaftaran kamar hotel pada web yang diharapkan . 25 Gambar 3.10 Diagram alir halaman pendaftaran ............................................................... 26 Gambar 3.11 Diagram alir program utama ........................................................................ 27 Gambar 3.12 Diagram alir pembacaan identitas RFID Card oleh RFID SL018 ............... 28 Gambar 3.13 (a) Diagram alir pengaturan waktu RTC ..................................................... 30 (b) Diagram alir pembacaan waktu modul RTC DS1307 ............................ 30 Gambar 3.14 Diagram alir syarat akses kamar .................................................................. 31 Gambar 3.15 Diagram alir pengiriman ke web .................................................................. 33 Gambar 3.16 Tampilan tabel hasil pada web yang diharapkan ......................................... 33 xv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.1 Hasil implementasi alat Perekaman Data Akses Kamar Hotel dengan RFID Berbasis Web...................................................................................... 34 Gambar 4.2 Tampilan halaman login .............................................................................. 34 Gambar 4.3 Tampilan halaman pendaftaran .................................................................... 35 Gambar 4.4 Tampilan halaman web perekaman data akses kamar hotel ........................ 35 Gambar 4.5 Penampakan RFID pada (a) kamar 1 (b) kamar 2 (c) kamar 3 .................... 35 Gambar 4.6 Penampakan hasil perancangan resistor pull-up .......................................... 36 Gambar 4.7 Penampakan Modul Ethernet Shield dan Arduino di bawahnya ................. 36 Gambar 4.8 Penampakan RTC ........................................................................................ 36 Gambar 4.9 IP Address laptop server diatur seperti gambar ........................................... 37 Gambar 4.10 Pengaturan IP Address beserta MAC Address untuk Modul Ethernet Shield ............................................................................................. 38 Gambar 4.11 Koneksi antara server dan Modul Ethernet Shield telah berhasil ................ 38 Gambar 4.12 Pesan yang tertampil saat username atau password tidak benar ................. 39 Gambar 4.13 Pesan yang tertampil saat username atau password bukan resepsionis ....... 39 Gambar 4.14 Program penerimaan data dari server .......................................................... 40 Gambar 4.15 Subrutin penyimpanan data ke ke EEPROM ............................................... 41 Gambar 4.16 (a) EEPROM saat belum terisi ..................................................................... 41 (b) EEPROM setelah terisi data ................................................................... 41 Gambar 4.17 Pesan yang ditampilkan mikrokontroler melalui Modul Ethernet Shield bahwa data telah diterima ............................................................................ 41 Gambar 4.18 Pengujian dilakukan dengan mendekatkan RFID Card ke RFID SL018 .... 42 Gambar 4.19 Program pada mikrokontroler untuk berkomunikasi dengan RFID SL018 . 42 Gambar 4.20 Subrutin Pembacaan Data RFID Card ......................................................... 43 Gambar 4.21 Inisialisasi identitas RFID Card................................................................... 43 Gambar 4.22 Subrutin penggantian nama identitas RFID Card ........................................ 44 Gambar 4.23 Hasil pembacaan identitas RFID Card ........................................................ 44 Gambar 4.24 Subrutin penulisan dan pengaturan waktu pada RTC .................................. 45 Gambar 4.25 Subrutin pembacaan waktu RTC ................................................................. 45 Gambar 4.26 Isi fungsi tambah_nol ................................................................................... 46 Gambar 4.27 Hasil pembacaan RTC DS1307 ................................................................... 46 Gambar 4.28 Subrutin syarat akses kamar......................................................................... 48 Gambar 4.29 Halaman Check Out ..................................................................................... 50 xvi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.30 Subrutin pengiriman data ke web ................................................................. 51 Gambar 4.31 Isi file ambil.php .......................................................................................... 51 Gambar 4.32 Indikator LED Penyewa 3 tidak dapat memasuki Kamar 3 ......................... 52 Gambar 4.33 Tampilan web Penyewa 3 tidak dapat memasuki Kamar 3 ......................... 52 Gambar 4.34 Indikator LED Resepsionis memasuki Kamar 3 .......................................... 52 Gambar 4.35 Tampilan web Resepsionis memasuki Kamar 3 .......................................... 53 Gambar 4.36 Tampilan web OB tidak dapat memasuki Kamar 3 ..................................... 53 Gambar 4.37 Indikator LED OB tidak dapat memasuki Kamar 3..................................... 53 Gambar 4.38 Halaman web phpMyAdmin untuk melihat data-data yang telah dikirimkan dari mikrokontroler ke server .................................................... 54 xvii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 2.1 Konfigurasi Pin RFID SL018 ............................................................................. 6 Tabel 2.2 Command Code .................................................................................................. 8 Tabel 2.3 Daftar status sebagai feedback RFID SL018 kepada host .................................. 8 Tabel 2.4 Fungsi khusus pada pin Arduino ...................................................................... 10 Tabel 2.5 Sebagian electrical characteristic dari ATMega328........................................ 12 Tabel 3.1 Format data yang dihasilkan pada halaman web pendaftaran untuk kemudian diproses pada mikrokontroler .......................................................... 26 Tabel 3.2 Persyaratan akses kamar ................................................................................... 29 Tabel 3.3 Koneksi LED pada pin Arduino ....................................................................... 32 Tabel 4.1 Identitas pada RFID Card dan penamaannya ................................................... 43 Tabel 4.2 Daftar Penyewa Kamar Hotel ........................................................................... 47 Tabel 4.3 Hasil perancangan persyaratan akses kamar..................................................... 49 xviii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB I PENDAHULUAN 1.1. Latar Belakang Seiring berjalannya zaman, kemudahan dan kepraktisan karena kecanggihan teknologi semakin dirasakan. Kecanggihan teknologi yang ada membuat hampir segala sesuatunya dikendalikan secara otomatis. Lampu otomatis, pembuat kopi otomatis, bahkan pintu yang dapat dibuka secara otomatis. Sistem otomasi membuat kemudahan bagi manusia untuk mengendalikan sesuatu yang biasanya dilakukan dengan tangan menjadi sesuatu yang tidak perlu dilakukan dengan tangan. Dalam bidang elektronika, sistem otomasi biasanya memanfaatkan penggunaan sensor, elektromagnetik, dan sebagainya. Salah satu contoh penggunaan elektromagnetik adalah Radio Frequency Identification atau yang lebih dikenal dengan RFID. RFID menggunakan medan magnet atau elektromagnet sebagai media pertukaran data antara RFID Tag (piranti yang membawa data) dengan RFID Reader (pembaca data) [1]. RFID biasanya diaplikasikan untuk presensi pada beberapa kantor. Hotel merupakan salah satu tempat yang penuh dengan “ruang pribadi” (selanjutnya disebut kamar hotel). Tiap kamar hotel dapat dimasuki oleh penyewa kamar, resepsionis, dan Office Boy (selanjutnya disebut OB). Namun, ketiganya hanya dapat memasuki kamar hotel pada jam tertentu saja. Setiap kali ada yang mengakses kamar tersebut, data akan direkam ke web. Hal ini bertujuan untuk mengetahui orang yang memasuki kamar tersebut. Pada penelitian terdahulu telah ada yang membuat penelitian menggunakan modul RFID [2]. Modul RFID yang digunakan adalah modul RFID ID-20. RFID ID-20 menggunakan komunikasi USART sebagai jalur pengiriman data dari maupun ke mikrokontroler. Mengingat mikrokontroler yang akan digunakan pada penelitian ini hanya memiliki 1 jalur USART dan dibutuhkan 3 buah modul RFID, maka penggunaan modul RFID ID-20 tidak efisien karena dikhawatirkan akan terjadi tabrakan data pada proses komunikasi antara mikrokontroler dengan modul RFID. Karena itu, akan digunakan modul RFID yang menggunakan komunikasi I2C agar proses komunikasi antara mikrokontroler dengan modul RFID lebih efisien. 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 Selain itu, terdapat artikel dalam suatu situs web [3] dan penelitian terdahulu [4] mengenai pengiriman data dari mikrokontroler ke web melalui internet menggunakan modul ethernet. Pada kedua referensi ini, penampilan data pada web masih menggunakan bahasa pemrograman HTML. Hal ini tentunya dapat membuat halaman web tidak dinamis. Dengan demikian, akan ditambahkan penggunaan bahasa pemrograman PHP sehingga halaman web lebih dinamis. Berdasarkan referensi-referensi tersebut diputuskan untuk menggabungkan penggunaan RFID untuk mendeteksi identitas pengguna kamar hotel dan penggunaan modul ethernet untuk merekam identitas pengguna tersebut melalui web. 1.2. Tujuan dan Manfaat Tujuan dari penelitian ini adalah menghasilkan perekaman data akses kamar hotel dengan RFID berbasis web. Penelitian ini memberikan beberapa manfaat, yaitu: a. Mengembangkan penggunaan RFID untuk memonitor pengguna kamar hotel b. Dapat dikembangkan dan diterapkan lebih lanjut pada bisnis hotel 1.3. Batasan Masalah Batasan masalah penelitian ini adalah: a. Kamar hotel yang akan dikelola sebanyak 3 buah berupa model dengan indikator LED. Indikator LED digunakan hanya untuk memberi informasi bahwa pengguna telah memasuki kamar. b. RFID Card yang digunakan sebanyak 5 buah. Tiga buah RFID Card menandakan penyewa kamar hotel, 1 buah RFID Card untuk resepsionis, dan 1 buah RFID Card untuk OB. RFID Card yang digunakan berjenis Mifare 4K yang memiliki UID 4 byte. c. RFID Reader dan RFID Card yang digunakan merupakan jenis Mifare. d. Kondisi kamar akan dimonitor melalui web menggunakan mikrokontroler. e. Pengaturan jam digunakan RTC DS1307. f. Indikator LED, komunikasi dengan RTC dan RFID Reader dikendalikan menggunakan mikrokontroler. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.4. 3 Metodologi Penelitian Dalam membuat tugas akhir ini, digunakan metode penelitian sebagai berikut: a. Studi pustaka Melalui studi pustaka, akan dikumpulkan dan mempelajari referensi yang dibutuhkan mengenai RFID dan komponen pembantu sehingga dapat membantu dalam mengerjakan tugas akhir ini. b. Perancangan sistem Perancangan sistem meliputi konsep alat, masukan, dan keluaran yang diperoleh. c. Perancangan perangkat keras dan perangkat lunak Pada penelitian ini akan dirancang perangkat keras yang akan digunakan untuk mendukung penelitian ini. Selain itu, akan dirancang perangkat lunak yang akan digunakan, meliputi: perintah untuk membaca data dari RFID Reader, mengirimkan data yang diterima ke komputer, dan perintah untuk membuka pintu. d. Pembuatan perangkat keras dan perangkat lunak Tahap berikutnya yaitu menggabungkan perangkat keras dan perangkat lunak agar sistem keseluruhan dapat dilihat prosesnya. e. Uji coba dan pengambilan data Tahap ini, akan dilakukan pengujian dan pengambilan data dari sistem keseluruhan. Pengujian meliputi kesesuaian masukan dengan keluaran yang diharapkan. Data – data yang diperoleh akan menunjukkan tingkat keberhasilan perancangan. f. Analisis data Data yang diperoleh akan dianalisis untuk melihat besarnya kesalahan yang timbul pada sistem keseluruhan. Hasil analisis ini akan membantu dalam mengambil kesimpulan terhadap penelitian yang dilakukan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB II DASAR TEORI 2.1. Radio Frequency Identification (RFID) RFID adalah proses identifikasi sesuatu dengan menggunakan sinyal frekuensi radio [5]. RFID digunakan untuk mempermudah pekerjaan manusia yang awalnya harus mengidentifikasi objek satu per satu secara manual menjadi otomatis dan terprogram. Hal ini juga dapat mengurangi human error akibat pencatatan identitas objek secara manual. Dengan teknologi RFID ini, identitas objek akan dicatat dengan mudah dan cepat. Dalam sistem RFID, terdapat 3 buah komponen utama : transponder atau tag, reader atau pembaca tag (yang sudah dilengkapi antena), dan host [6]. Sesuatu yang akan diidentifikasi tersebut harus memiliki identitas berupa tag yang nantinya akan dibaca oleh reader. Saat ini, sudah banyak beredar macam-macam tag dan modul pembaca RFID. Tag yang sering dijumpai bisa dalam bentuk kartu, maupun dalam bentuk gantungan kunci. Jenis tag pun beragam, misalnya EM4001, Mifare, dan lain-lain. Karena ada beragam jenis, tentunya modul pembaca RFID juga harus menyesuaikan dengan jenis tag-nya. RFID (tag beserta reader-nya) memiliki frekuensi kerja yang berbeda-beda untuk tiap jenisnya. RFID menggunakan frekuensi kerja pada low frequency (sekitar 125 kHz), high frequency (13,56 MHz), dan ultra-high frequency (850-930 MHz). RFID yang bekerja pada low frequency biasanya digunakan untuk metode pembayaran bukan untuk identifikasi objek. RFID yang bekerja pada high frequency lebih banyak digunakan dan biasanya digunakan untuk mengidentifikasi objek seperti teknologi NFC (Near Field Communication) yang banyak terpasang pada smartphone untuk bertukar informasi. RFID yang bekerja pada ultra-high frequency biasanya digunakan untuk identifikasi kendaraan [6]. 2.1.1. RFID Tag Tag RFID adalah piranti yang terdiri atas rangkaian elektronika (berupa chip) dan antena yang terintegrasi di dalam rangkaian tersebut [6]. Rangkaian elektronik dari tag RFID umumnya memiliki memori sehingga tag ini mempunyai kemampuan untuk menyimpan data. Data inilah yang nantinya akan dibaca oleh RFID reader. 4 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5 Memori pada RFID tag sangat beragam tergantung jenisnya. Kapasitas memori yang tersedia berkisar antara 16 byte hingga 8kilobyte [1]. Memori (chip) pada RFID tag dapat dibedakan menjadi 2 yaitu read/write dan read only. Read/write diartikan bahwa RFID tersebut memiliki data yang dapat dibaca dan ditulis berulang-ulang dengan menimpa informasi bawaan pabrik sedangkan read only diartikan bahwa RFID tag tersebut memiliki data yang telah diprogram pada saat tag ini dibuat di pabrik dan setelah itu datanya tidak bisa diubah-ubah [7]. Macam-macam sistem RFID tergantung pada tipe tag yang digunakan. Tipe tag yang dimaksud adalah tag aktif, tag pasif, dan tag semi-pasif [6]. 1. Tag aktif memiliki sumber daya sendiri untuk berkomunikasi dengan RFID reader. Sumber daya digunakan untuk menjalankan serangkaian microchip dan membantu mengirimkan sinyal ke RFID reader. 2. Tag pasif tidak membutuhkan sumber daya sendiri. Tag pasif mendapat sumber daya dari medan elektromagnetik yang terbuat dari sinyal RFID reader kemudian memberikan respon ke RFID reader berupa informasi yang ada pada tag pasif. 3. Tag semi-pasif menggunakan sumber daya sendiri untuk menjalankan rangkaian internalnya namun berkomunikasi dengan sumber daya berupa gelombang radio yang dihasilkan RFID reader. 2.1.2. RFID Reader Pembaca RFID atau RFID Reader adalah alat yang digunakan untuk mengidentifikasi suatu objek yang telah dipasang tag. Untuk membaca tag tersebut, sebuah RFID reader harus diaktifkan dan dikendalikan oleh perintah dari host. Setelah RFID reader mendapat perintah dari host, RFID reader akan mulai membaca informasi yang ada pada tag menggunakan frekuensi radio. Setelah RFID reader telah mendapatkan informasi dari tag, maka informasi tersebut akan dikirim kepada host untuk kemudian diproses lebih lanjut untuk keperluan tertentu. 2.2. RFID SL018 Salah satu jenis RFID adalah jenis Mifare. RFID (reader dan tag) ini bekerja pada frekuensi tinggi (high frequency) yakni 13,56 MHz. Dalam penelitian ini, digunakan modul PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6 RFID reader dari stronglink dengan seri SL018. Gambar 2.1 merupakan penampakan RFID SL018. Gambar 2.1. Penampakan RFID SL018 [8] Merujuk pada datasheet RFID SL018, RFID ini dapat membaca tag berjenis Mifare 1k, Mifare 4k, Mifare UltraLight dan NFC NATG203. Untuk menggunakan modul ini, digunakan komunikasi I2C (Inter Integrated Circuit). Sumber tegangan yang dibutuhkan modul ini berkisar antara 4,5 V hingga 7 V. RFID ini dapat membaca tag yang berjarak hingga 60 mm. Dilengkapi pula pin TagSta sebagai indikator ada tidaknya tag disekitarnya. Pada RFID SL018 terdapat 5 buah pin yang dapat diakses. Konfigurasi pin-pin tersebut dapat dilihat pada Tabel 2.1. Tabel 2.1. Konfigurasi Pin RFID SL018 [8] PIN SYMBOL TYPE 1 TagSta Output 2 3 4 5 SDA SCL VCC GND Input/Output Input PWR PWR DESCRIPTION Tag detect signal low level indicating tag in high level indicating tag out Serial Data Line Serial Clock Line Power Supply Ground RFID SL018 memiliki 7 bit sebagai alamat dan 1 bit pemilihan operasi. 7 bit yang dimaksud adalah 1010000, sedangkan 1 bit pemilihan operasi (sebagai bit ke-8) adalah PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7 pemilihan operasi RFID untuk menulis atau membaca. Jika RFID SL018 dijadikan sebagai pembaca (reader), maka bit pemilihan operasi harus diberikan kondisi high. Jika dijadikan sebagai penulis (writer), maka bit pemilihan operasi harus diberikan kondisi low. Jika host akan menuliskan data ataupun perintah ke RFID SL018, maka piranti host harus mengirimkan perintah yang berisi alamat slave (write), len, command code, dan data (jika diperlukan). Jika host ingin membaca data ataupun respon (sebagai akibat dari perintah yang ditulis host) dari RFID SL018, maka piranti host harus mengirimkan perintah yang berisi alamat slave (read) kemudian menerima semua informasi mulai dari len hingga data. Gambar 2.2 dan 2.3 merupakan diagram operasi write dan read pada RFID SL018. Gambar 2.2. Diagram Operasi Penulisan RFID SL018 [8] Gambar 2.3. Diagram Operasi Pembacaan RFID SL018 [8] Len mengindikasikan jumlah byte dari command code hingga akhir data. Command code adalah kode perintah agar RFID SL018 dapat beroperasi sebagaimana seharusnya. Daftar command code dapat dilihat pada Tabel 2.2. Status merupakan suatu balasan dari RFID kepada host sebagai jawaban atas perintah yang diberikan. Tabel 2.3 merupakan daftar status yang akan diberikan oleh RFID SL018 kepada host. Data merupakan informasi tambahan yang diberikan host ke RFID SL018 (dalam write mode) ataupun informasi tambahan yang diberikan RFID SL018 ke host (dalam read mode). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8 Tabel 2.2. Command Code [8] Command 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x10 0x11 0x40 0xF0 0xFF Description Select Mifare card Login to a sector Read a data block Write a data block Read a value block Initialize a value block Write master key (key A) Increment value Decrement value Copy value Read a data page (Ultralight & NTAG203) Write a data page (Ultralight & NTAG203) Control the red led Get firmware version Reset Tabel 2.3. Daftar status sebagai feedback RFID SL018 kepada host [8] Status 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x0A 0x0C 0x0D 0x0E 2.3. Description Operation succeed No tag Login succeed Login fail Read fail Write fail Unable to read after write Collision occur Load key fail Not authenticate Not a value block Mifare 4K 4-byte UID Dalam penelitian ini, digunakan RFID Card berjenis Mifare 4K yang memiliki UID (Unique ID) 4 byte menyesuaikan jenis tag yang dapat dibaca modul RFID SL018. RFID Card berjenis tag pasif yang bekerja pada frekuensi 13,56 MHz ini memiliki EEPROM sebesar 4 KiloByte [9]. Berikut ini adalah penampakannya. Gambar 2.4. RFID Card Mifare 4K 4-byte UID PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.4. 9 Arduino UNO Arduino merupakan board mikrokontroler yang berbasis platform komputasi fisik bersifat open-source dan dibantu oleh software pemrograman yang mendukung. Arduino dapat digunakan untuk membuat objek interaktif seperti mengambil input dari bermacammacam saklar ataupun sensor, dan mengendalikan cahaya (lampu), motor, dan keluaran fisik lainnya [10]. Salah satu produk board Arduino adalah Arduino UNO. Arduino UNO merupakan salah satu produk Arduino yang berbasis mikrokontroler Atmega328. Arduino UNO memiliki 14 buah input/output digital (6 di antaranya bisa digunakan sebagai keluaran Pulse Width Modulation atau PWM), 6 buah input analog, sebuah osilator keramik 16 MHz, sebuah koneksi USB, sebuah power jack, sebuah ICSP header, dan sebuah tombol reset [11]. Berikut ini adalah penampakan Arduino UNO. Gambar 2.5. Board Arduino UNO [11] Arduino UNO berbasis pada mikrokontroler Atmega328, memiliki tegangan kerja 5V, dan bisa diberikan sumber tegangan eksternal melalui power jack dengan rentang 7V hingga 12V. Arus DC maksimum pada pin I/O sebesar 40 mA dan 50 mA untuk pin 3,3V. Memori flash yang tersedia sebesar 32KB (karena berbasis Atmega328), memori SRAM sebesar 2KB, dan EEPROM sebesar 1KB. Kecepatan clock maksimalnya adalah 16 MHz [11]. Arduino UNO bisa diberikan sumber tegangan melalui koneksi USB atau menggunakan sumber tegangan eksternal. Sumber tegangan dipilih secara otomatis. Sumber tegangan eksternal dapat diambil dari adapter AC ke DC ataupun baterai. Jika menggunakan adapter, diameternya harus 2,1 mm dengan sambungan positif di tengah kemudian dihubungkan ke power jack. Jika digunakan baterai, dapat dihubungkan ke pin Vin dan Gnd pada konektor POWER [11]. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 Berikut ini disajikan tabel fungsi khusus pada beberapa pin arduino. Tabel 2.4. Fungsi khusus pada pin Arduino [11] Fungsi Khusus Serial Pin 0 (RX) dan 1 (TX) Interupsi Eksternal 2 dan 3 PWM (Pulse Width Modulation) SPI (Serial Peripheral Interface) LED 3, 5, 6, 9, 10, dan 11 Keterangan Digunakan untuk menerima (RX) dan mengirimkan (TX) data TTL secara serial Dikonfigurasikan untuk menerima interupsi eksternal untuk kondisi low ataupun perubahan suatu nilai Digunakan untuk menghasilkan PWM 10 (SS), 11 (MOSI), 12 Digunakan sebagai komunikasi SPI (MISO), 13 (SCK) 13 Terdapat lampu LED built-in yang terkoneksi langsung dengan pin digital 13 TWI (Two Wire A4 (SDA) dan A5 (SCL) Digunakan untuk komunikasi I2C Interface) atau I2C Analog Input A0, A1, A2, A3, A4, A5 Digunakan sebagai pengubah data analog menjadi data digital 2.4.1. Komunikasi I2C I2C (Inter Integrated Circuit) adalah standar komunikasi serial 2 arah menggunakan 2 saluran yang didisain khusus untuk mengirimkan dan/atau menerima data. Saluran tersebut kemudian disebut sebagai jalur bus [12]. Komunikasi I2C terdiri atas 2 bidirectional jalur bus, jalur yang satu berfungsi sebagai jalur clock (SCL), dan jalur yang lain berfungsi sebagai jalur data (SDA). Komunikasi I2C dapat digunakan hingga 128 piranti berbeda untuk dioperasikan pada jalur bus tersebut. Kebutuhan hardware eksternal yang dibutuhkan adalah resistor pull-up pada setiap jalur (SCL maupun SDA) [13]. Gambar 2.6. Komunikasi I2C [13] PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 Pada komunikasi I2C, terdapat piranti yang disebut Master dan Slave. Master adalah piranti yang memulai komunikasi I2C dan mengirimkan perintah ke Slave. Slave adalah piranti yang menerima perintah dari Master dan menjawab perintah yang diberikan Master. Master maupun Slave dapat beroperasi sebagai pengirim maupun penerima. Sebagai pengirim artinya piranti mengirimkan perintah maupun data tertentu kepada piranti penerima. Sebagai penerima artinya piranti menerima perintah maupun data tertentu kepada piranti pengirim. Proses Komunikasi I2C adalah sebagai berikut [13]. 1. Diawali dengan pengiriman sinyal START oleh master. Sinyal START merupakan transisi keadaan dari keadaan high menjadi low pada SDA saat SCL dalam kondisi high. 2. Pengiriman paket alamat yang berjumlah 9 bit, 7 bit pertama merupakan alamat slave, 1 bit berikutnya merupakan bit pengendali baca atau tulis (Read/Write control), dan bit terakhir merupakan bit acknowledge yang dikirim oleh slave. Namun pada Arduino, pengalamatan slave menggunakan 7 bit. Jika Arduino ingin berkomunikasi dengan piranti yang memiliki pengalamatan 8 bit, maka pada program Arduino alamat slave tersebut digeser 1 bit ke kanan [14]. 3. Pengiriman paket data yang berjumlah 9 bit yang terdiri atas 1 byte data dan sebuah bit acknowledge. Acknowledge (ACK) adalah sinyal low yang dikirimkan slave untuk mengakhiri data ke-n telah dikirimkan. Not Acknowledge (NACK) adalah sinyal high yang dikirim oleh slave untuk memberitahukan master bahwa data terakhir sudah dikirimkan (tidak ada pengiriman data lagi oleh slave). 4. Diakhiri dengan pengiriman sinyal STOP oleh master. Sinyal STOP merupakan transisi keadaan dari keadaan low menjadi high pada SDA saat SCL dalam kondisi high. 2.4.2. Resistor Pull-Up Resistor pull-up digunakan dalam komunikasi I2C. Hal ini bertujuan untuk memberikan keadaan yang pasti pada pin input mengenai kondisi high ataupun kondisi low dan tentunya menggunakan arus yang rendah[15]. Kebutuhan akan resistor pull-up harus disesuaikan dengan arus yang masuk ke pin input agar tidak merusaknya. Nilai resistor PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 pull-up tidak boleh menghasilkan arus yang melebihi arus maksimum yang boleh diterima pin input. Arduino menggunakan ATMega328. Berdasarkan datasheet, ATMega328 memiliki rentang resistor pull-up 20 kΩ sampai 50 kΩ. Berikut penampakannya. Tabel 2.5. Sebagian electrical characterstic dari ATMega328 [13] 2.4.3. Komunikasi SPI (Serial Peripheral Interface) Komunikasi Serial Peripheral Interface atau yang lebih dikenal dengan SPI, sangat umum digunakan untuk mengirimkan data antara mikrokontroler dan beberapa piranti tertentu seperti register geser, sensor, maupun kartu SD. SPI menggunakan jalur data dan clock secara terpisah dan juga jalur piranti selektor untuk memilih piranti yang akan digunakan untuk berkomunikasi [16]. Komunikasi SPI bersifat synchronous (komunikasi sinkron). Clock memberikan sinyal yang berosilasi yang memberitahu penerima untuk mengambil bit pada jalur data. Clock ini bisa berupa pinggiran positif (rendah ke tinggi) ataupun pinggiran negatif (tinggi ke rendah). Saat penerima mendeteksi pinggiran tersebut, penerima secara otomatis akan membaca bit selanjutnya pada jalur data [16]. Komunikasi SPI menggunakan setidaknya 5 buah pin sebagai berikut [17]. 1. MOSI (Master Out Slave In) 4. SS (Slave Select) 2. MISO (Master In Slave Out) 5. GND (Ground) 3. SCK (Serial Clock) Data master dikeluarkan melalui pin MOSI master dan diterima oleh pin MOSI slave. Data slave dikeluarkan melalui pin MISO slave dan diterima oleh pin MISO master. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 Pin SCK master mengeluarkan clock sinkron yang diterima slave melalui pin SCK miliknya. SS digunakan untuk mengaktifkan slave yang bersangkutan [17]. 2.5. RTC (Real Time Clock) RTC (Real Time Clock) merupakan IC (integrated circuit) yang memiliki peran sebagai jam elektronik. RTC memiliki memori untuk menyimpan waktu berupa detik, menit, jam, hari, tanggal, bulan, dan tahun pada registernya. Salah satu contoh RTC adalah DS1307. Merujuk pada datasheet, RTC DS1307 dapat dioperasikan melalui komunikasi I2C melalui mikrokontroler. Saat dioperasikan atau dibaca DS1307 akan mengirimkan data berupa sandi BCD (Binary-Coded Decimal). Sandi BCD sendiri merupakan pengkodean bilangan desimal ke dalam kelompok angka biner. RTC DS1307 memiliki 8 buah pin, memori 56 byte, dan juga pendeteksi kesalahan sumber daya. Pendeteksi kesalahan sumber daya yang dimaksud adalah saat adanya kesalahan pada sumber tegangan (VCC) ke DS1307, DS1307 akan men-switch sumber tegangan baginya ke tegangan baterai secara otomatis. Berikut ini adalah penampakan RTC DS1307. Gambar 2.7. RTC DS1307 [18] Merujuk pada datasheet RTC DS1307, konfigurasi pin-pin tersebut adalah sebagai berikut. VCC - Sumber Tegangan Utama X1, X2 - 32.768kHz Crystal VBAT - +3V Input Tegangan Baterai GND - Ground SDA - Serial Data PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SCL - Serial Clock SQW/OUT - Square Wave/Output 14 RTC DS1307 sangat berguna untuk menjaga waktu agar terus berjalan walaupun supply tegangan (VCC) tidak terhubung. Saat tegangan pada VCC berada di bawah tegangan baterai (VBAT), maka DS1307 akan men-switch ke tegangan baterai. Jika tegangan VCC sudah berada di atas tegangan baterai (VBAT + 0,2 V), maka DS1307 akan mengubah sumber tegangan baginya dari tegangan baterai ke VCC. Register DS1307 berlokasi pada alamat 00H sampai 07H. Register tersebut secara urut mulai dari 00H adalah detik, menit, jam, hari, tanggal, bulan, tahun, dan pengendali operasi SQW. Untuk mengatur detik, menit, jam, hari, tanggal, bulan, dan tahun, dapat diatur bit-bit pada masing-masing register. Gambar 2.8. Konfigurasi bit pada register DS1307 [18] Untuk mengoperasikan RTC DS1307, digunakan komunikasi I2C dengan mode reguler (100 kHz). Alamat slave DS1307 mengandung 7 bit alamat yaitu 1101000 Mikrokontroler sebagai master mengirimkan alamat slave + write bit, alamat register yang akan ditulis, kemudian mengirimkan sejumlah byte data. Untuk membaca waktu dari DS1307, mikrokontroler mengirimkan alamat slave + write bit, register pointer (register pertama yang akan dibaca), kemudian membaca data yang dikirimkan dari DS1307. Berikut ini adalah diagram write mode dan read mode pada RTC DS1307. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 Gambar 2.9. Diagram write mode DS1307 [18] Gambar 2.10. Diagram read mode DS1307 [18] 2.6. Software XAMPP XAMPP adalah program aplikasi pengembang yang berguna untuk pengembangan website berbasis PHP dan MySQL. Perangkat lunak komputer ini memiliki kelebihan untuk bisa berperan sebagai server web Apache untuk simulasi pengembangan website. Tool pengembangan web ini mendukung teknologi web populer seperti PHP dan MySQL. Melalui program ini, programmer web dapat menguji aplikasi web yang dikembangkan dan mempresentasikannya ke pihak lain secara langsung dari komputer, tanpa perlu terkoneksi ke internet. XAMPP juga dilengkapi fitur manajemen database PHPMyAdmin seperti pada server hosting sungguhan, sehingga pengembang web dapat mengembangkan web berbasis database dengan mudah [19]. Fungsi XAMPP adalah sebagai server yang berdiri sendiri (localhost), yang terdiri atas program Apache HTTP Server, MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl. Nama XAMPP merupakan singkatan dari X (empat sistem operasi apapun: Windows, Linux, Mac OS, Solaris), Apache, MySQL, PHP dan Perl. Program ini tersedia bebas, mudah digunakan, dan dapat melayani tampilan halaman web yang dinamis [19]. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 Gambar 2.11. XAMPP Control Panel 2.6.1. Apache Web Server Web server merupakan server internet yang mampu melayani koneksi transfer data dalam protocol HTTP. Web server telah dirancang untuk dapat melayani beragam jenis data, dari text sampai grafis. Kemampuan ini telah menyebabkan berbagai institusi seperti universitas maupun perusahaan dapat menerima kehadirannya dan juga sekaligus menggunakannya sebagai sarana di Internet [20]. Salah satu perangkat lunak web server yang biasa digunakan adalah Apache Web Server. Apache ini bersifat open source yang berarti gratis dan bisa diedit oleh penggunanya. Tugas utama Apache adalah menghasilkan halaman web yang benar kepada client berdasarkan kode PHP yang dituliskan oleh pembuat halaman web. Secara otomatis Apache akan menjalankan file index.html (halaman utamanya) untuk ditampilkan secara otomatis pada client. Jika diperlukan juga berdasarkan kode PHP yang dituliskan,maka dapat saja suatu database diakses terlebih dahulu (misalnya dalam MySQL) untuk mendukung halaman web yang dihasilkan[19]. 2.6.2. MySQL Database MySQL (My Structured Query Language) adalah sebuah program pembuat dan pengelola data atau yang sering disebut dengan DBMS (DataBase Management System)[21]. Dalam konteks bahasa SQL, pada umumnya informasi tersimpan dalam tabeltabel yang secara logika merupakan struktur 2 dimensi yang terdiri atas baris-baris data yang berada dalam sau atau lebih kolom. Baris pada tabel sering disebut sebagai instance PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 dari data, sedangkan kolom sering disebut sebagai attribute atau field. Keseluruhan tabel itu dihimpun dalam satu kesatuan yang disebut database[22]. 2.6.3. Pemrograman PHP PHP adalah singkatan dari PHP Hypertext Preprocessor [23]. PHP adalah bahasa server-side scripting yang menyatu dengan HTML (Hypertext Markup Language)untuk membuat halaman web yang dinamis. Maksud dari server-side scriping adalah sinaks dan perinah-perintah yang diberikan akan sepenuhnya dijalankan di server eapi disertakan pada dokumen HTML sebagai pembangun halaman web. Ketika seorang pengguna internet akan membuka suatu situs yang menggunakan PHP, maka terlebih dahulu server yang bersangkutan akan memproses semua perintah PHP di server lalu mengirimkan hasilnya dalam forma HTML ke web browser. Dengan demikian, seorang pengguna internet tidak dapat melihat kode program yang ditulis dalam php sehingga keamanan dari halaman web menjadi lebih terjamin [22]. PHP dapat mengirim HTTP header, dapat mengeset cookies, mengatur authentication, redirect, mampu berkoneksi dengan beberapa basis data (semisal MySQL), mampu berintegrasi dengan library eksternal [22]. Dalam membuat program PHP, maka yang dibutuhkan adalah perintah awal (start tag) dan perintah akhir (end tag). Ada beberapa cara penulisan start tag dan end tag: - <? Skrip PHP di sini ?> - <?php Skrip PHP di sini ?> - <% Skrip PHP di sini %> - <scrpit language=”php”> Skrip di sini </script> Semua perintah yang diletakkan pada daerah skrip akan dianggap sebagai perinah PHP. Jika erjadi kesalahan ataupun kata-kata yang tidak sesuai dengan program akan dianggap salah dan mengakibatkan program yang dibuat menjadi error [21]. 2.7. Modul Ethernet Shield Arduino ethernet shield memungkinkan Arduino untuk terkoneksi ke internet. Dalam penggunaannya, digunakan Ethernet Library yang merupakan salah satu standard library Arduino untuk membantu penggunaannya. Tiap port pada ethernet shield ini, terdapat semacam pin-head yang panjang sehingga dapat menancap dengan baik pada board Arduino dan tentunya masih dapat digunakan seperti biasa. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18 Ethernet shield memiliki koneksi standar RJ-45, micro SD card slot yang dapat digunakan untuk menyimpan file. Arduino dapat berkomunikasi dengan ethernet maupun dengan SD card menggunakan SPI. Pin yang digunakan adalah 10, 11, 12, dan 13 (menggunakan Arduino Uno). Antara Arduino dan Ethernet Shield, pin 10 digunakan untuk berkomunikasi dengan ethernet dan pin 4 digunakan untuk berkomunikasi dengan SD card [24]. Gambar 2.12. Modul Ethernet Shield [24] 2.7.1. MAC Address Media Access Control Address (MAC Address) adalah alamat fisik suatu interface jaringan (seperti ethernet card pada komputer, port pada router, dan lain-lain) yan bersifat unik dan berfungsi sebagai identitas perangkat tersebut. MAC Address memiliki panjang 6 byte. Format standar MAC Address secara umum terdiri dari 6 kelompok digit yang masing-masing kelompok berjumlah 2 digit heksadesimal. Masing-masing kelompok digit dipisahkan tanda (-) atau (:), misalnya 01-23-45-67-89-ab atau 01:23:45:67:89:ab [25]. Gambar 2.13 Contoh MAC Address [26] MAC Address terdiri dari 12 digit bilangan heksadesimal yang dibagi menjadi 6 segmen (masing-masing 2 digit). Tiga segmen pertama merupakan kode vendor atau pembuat kartu jaringan tersebut, 3 segmen berikutnya merupakan serial number kartu PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19 tersebut. MAC Address merupakan susunan dari 12 digit bilangan heksadesimal, yang dapat diuraikan menjadi 48 digit bilangan biner. Dari contoh Gambar 2.11, vendor MAC Address-nya adalah GVC CORPORATION dengan serial number 4C223A [26]. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III RANCANGAN PENELITIAN 3.1. Model Sistem Prinsip kerja dari perekaman data akses kamar hotel ini adalah sebagai berikut. Awalnya, semua ID Card dari penyewa tidak dapat mengakses kamar. ID Card penyewa dapat digunakan untuk mengakses kamar setelah dilakukan pendaftaran melalui halaman web bagian pendaftaran. Pada halaman web pendaftaran ini, terdapat waktu check in dan check out. Setelah waktu check in dan check out diberikan, maka ID Card penyewa telah dapat digunakan untuk mengakses kamar. Setelah mendapatkan waktu check in dan check out, maka perekaman data akses kamar hotel dilakukan dengan mengirimkan data dari ID Card penyewa ke web. Penyewa yang ingin memasuki kamar hotel harus memiliki RFID Card. Data yang teridentifikasi dari RFID Card tersebut akan diproses oleh mikrokontroler setelah melalui pembacaan dari RFID Reader. Data tersebut kemudian akan dikirimkan ke web menggunakan Modul Ethernet. Pada halaman web akan ditampilkan data yang teridentifikasi dari RFID Card beserta waktu penggunaan kamar hotel ini. Berikut ini adalah diagram blok sistem pengelolaan kamar hotel beserta bentuk fisiknya. Gambar 3.1. Diagram blok sistem perekaman data akses kamar hotel 20 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 21 LED LED LED LED LED LED Kamar 3 RFID 2 RFID 1 Kamar 2 RFID 3 Kamar 1 Gambar 3.2. Bentuk fisik tampak depan Dalam penelitian ini, akan dibuat model 3 ruangan, yakni Kamar 1, Kamar 2, Kamar 3 yang masing-masing dipasangi RFID dan terdapat 5 buah RFID Card Penyewa 1, Penyewa 2, Penyewa 3, Resepsionis, dan OB. Setiap kali ada yang mengakses kamar, data yang dibaca RFID akan dimonitor melalui internet menggunakan mikrokontroler. LED akan menyala ataupun mati mengikuti persyaratan akses kamar. 3.2. Identifikasi Kebutuhan Perangkat Dalam pembuatan sistem pengelolaan kamar hotel ini, digunakan beberapa perangkat keras sebagai berikut. 1. RFID Card sebagai identitas pengguna. 2. Modul RFID sebagai pembaca data identitas pengguna dari RFID Card. 3. Mikrokontroler sebagai pengolah data dan pengendali utama sistem secara keseluruhan. 4. Modul Ethernet Shield sebagai alat bantu komunikasi mikrokontroler dengan web. 5. Modul RTC DS1307 sebagai pemberi informasi waktu kunjung. 3.3. Perancangan Perangkat Keras 3.3.1. Perancangan Resistor Pull-Up Resistor pull-up digunakan dalam komunikasi I2C. Berdasarkan datasheet, ATMega328 memiliki rentang resistor pull-up 20 kΩ sampai 50 kΩ, sehingga diambil nilai resistor pull-up yang masih dalam rentangnya yakni 30kΩ. Dengan demikian, perancangan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 resistor pull-up untuk komunikasi I2C antara Arduino dan piranti lain adalah sebagai berikut. Gambar 3.3. Perancangan resistor pull-up 3.3.2. Perancangan RFID SL018 Digunakan Modul RFID SL018 sebagai pembaca data dari RFID Card. Gambar 2.1 menunjukan Modul RFID SL018 dan Tabel 2.1 menunjukan konfigurasi pin RFID SL018. Kedua gambar tersebut merujuk pada datasheet RFID SL018. Pin VCC akan dihubungkan pada sumber tegangan 5V. Pin GND akan dihubungkan dengan ground. Pin SDA akan dihubungkan pada pin SDA pada mikrokontroler sebagai komunikasi I2C. Pin SCL akan dihubungkan dengan pin SCL pada mikrokontroler sebagai komunikasi I2C. Pin TagSta akan dihubungkan ke port mikrokontroler sebagai pembaca keadaan RFID. Komunikasi antara RFID SL018 dengan mikrokontroler menggunakan komunikasi I2C. Dalam komunikasi I2C, dibutuhkan resistor pull-up pada pin SDA dan SCL. Sistem yang dibuat nantinya akan terdapat 3 buah RFID yang mewakili 3 kamar hotel. Dengan demikian bentuk perancangan RFID SL018 secara keseluruhan adalah seperti Gambar 3.4. 3.3.3. Perancangan Modul Ethernet Modul Ethernet sebagai modul pembantu mikrokontroler untuk mengirimkan data ke halaman web. Modul Ethernet digunakan untuk membantu mikrokontroler berkerja sebagai web server. Penggunaan Modul Ethernet menggunakan komunikasi SPI. Pin pada Modul Ethernet disesuaikan dengan pin MOSI, MISO, SCK, dan SS pada mikrokontroler. Dikarenakan modul Ethernet yang digunakan berupa shield untuk Arduino, maka pin pada PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 modul Ethernet sama dengan pin pada Arduino. Gambar 3.5 merupakan perancangan modul ethernet dan mikrokontroler. Gambar 3.4. Perancangan 3 buah RFID dengan mikrokontroler Gambar 3.5. Perancangan Modul Ethernet dan Mikrokontroler 3.3.4. Perancangan RTC DS1307 Pengelolaan kamar hotel ini, diatur juga waktu kunjungnya. Untuk itu, digunakan modul RTC (Real Time Clock) sebagai pengatur waktunya mulai dari detik, menit, jam, tanggal, bulan, dan tahun. Modul RTC yang digunakan adalah DS1307. Penggunaan RTC bertujuan agar sistem sedang tidak mendapat sumber listrik (misal karena mati lampu), waktu tetap berjalan sebagaimana mestinya sehingga tidak perlu melakukan setting waktu lagi pada sistem. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24 Dikarenakan Modul RTC DS1307 menggunakan komunikasi I2C, maka harus ada resistor pull-up pada jalur SDA maupun jalur SCL. Pin SDA dan SCL akan dihubungkan dengan pin SDA dan SCL pada mikrokontroler sebagai komunikasi I2C. Gambar 3.6 menunjukan pengabelan pada modul DS1307 merujuk pada datasheet. Gambar 3.6. Perancangan RTC DS1307 3.4. Perancangan Perangkat Lunak 3.4.1. Perancangan Halaman Login Halaman web login yang dibuat ini digunakan agar pengguna dapat mengakses halaman web pendaftaran dan perekaman data akses kamar hotel. Hal ini bertujuan agar kedua halaman tersebut hanya dapat dilihat oleh beberapa pengguna saja seperti admin, resepsionis dan manager hotel. Dengan demikian, orang yang tidak memiliki hak akses tidak dapat mengakses kedua halaman tersebut. Berikut ini adalah tampilan halaman login nya. SELAMAT DATANG Username : Password : Gambar 3.7. Gambar halaman login sebelum mengakses halaman rekaman data akses PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25 Diagram alir halaman login tersebut adalah sebagai berikut. Gambar 3.8. Diagram alir halaman login 3.4.2. Perancangan Pendaftaran Penyewa Kamar Hotel Sebelum diberikan hak akses mengenai waktu check in dan check out, ID Card penyewa tidak dapat digunakan untuk mengakses kamar. Pengaturan hak akses kamar ini, diberikan melalui halaman web pendaftaran. Halaman web pendaftaran ini hanya dapat diakses oleh resepsionis. Berikut ini adalah tampilan halaman web pendaftaran. Gambar 3.9. Tampilan tabel hasil pendaftaran kamar hotel pada web yang diharapkan Format data yang dihasilkan pada halaman web pendaftaran setelah memberikan data masukan adalah sebagai berikut. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 26 Tabel 3.1. Format data yang dihasilkan pada halaman web pendaftaran untuk kemudian diproses pada mikrokontroler alamatfileserver--kamar--tanggal_in--bulan_in--tahun_in--jam_in--menit_in-tanggal_out--bulan_out--tahun_out--jam_out--menit_out alamatfileserver dihubungkan ke alamat file PHP pada server yang mengatur pemrosesan data-data yang dikirm kamar kamar yang digunakan atau disewa tanggal_in; jam_in; Waktu check in penyewa, terdiri atas tanggal, bulan, tahun, bulan_in; menit_in; jam, dan menit tahun_in; tanggal_out; jam_out; Waktu check out penyewa, terdiri atas tanggal, bulan, tahun, bulan_out; menit_out; jam, dan menit tahun_out; Selanjutnya, mikrokontroler akan membaca dan menerima data tersebut menggunakan HTTP request dengan format sebagai berikut. GET alamatfileserver Kemudian, data-data masukan dari halaman web pendaftaran akan diproses pada mikrokontroler. Pengiriman data dari web ke mikrokontroler ini menggunakan interupsi komunikasi pada ethernet shield yang nantinya akan mempengaruhi hak akses ID Card penyewa menjadi dapat digunakan untuk mengakses kamar. Dikarenakan yang memiliki hak akses untuk halaman hanyalah resepsionis, maka selain resepsionis tidak dapat mengakses halaman ini dengan cara diberikan notifikasi “Tidak memiliki hak akses”. Diagram alir untuk pengaturan ini adalah sebagai berikut. Gambar 3.10. Diagram alir halaman pendaftaran PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 3.4.3. Diagram Alir Program Utama Gambar 3.11 menunjukan diagram alir program utama. Proses dimulai dengan pembacaan RFID Card oleh RFID SL018. Data yang diterima oleh RFID SL018 diterima oleh mikrokontroler. Mikrokontroler akan mengecek identitas dari RFID Card, kamar yang digunakan beserta waktu kunjung. Pengecekan ini berlaku untuk setiap RFID yang terpasang. Jika identitas RFID Card, kamar yang digunakan dan waktu kunjung telah sesuai, maka pengguna diperbolehkan mengakses kamar hotel. Namun, jika tidak sesuai, maka pengguna tidak dapat mengakses kamar hotel. Data-data dari hasil pengecekan tersebut akan dikirimkan ke server untuk kemudian ditampilkan pada halaman web. Pengiriman data ini diproses oleh mikrokontroler yang berkomunikasi dengan Modul Ethernet. Gambar 3.11. Diagram alir program utama PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28 3.4.4. Pembacaan Identitas RFID Card oleh RFID SL018 Pembacaan data dari RFID SL018 mengacu pada datasheet RFID SL018. Awalnya, jika terdapat RFID Card yang terdeteksi oleh RFID SL018, maka RFID akan menghasilkan logika low pada pin TagSta. Jika tidak ada RFID Card yang terdeteksi, maka akan kembali ke fungsi utama. Logika low ini diterima oleh mikrokontroler untuk kemudian menuliskan write command berupa alamat slave, len, dan command. Untuk memastikan mikrokontroler sudah berhasil berkomunikasi dengan RFID SL018, akan ada pengecekan status komunikasi. Jika status komunikasi tersedia, maka mikrokontroler akan memberikan read command untuk membaca hasilnya. Dalam pembacaan data ini, mikrokontroler akan menerima sejumlah byte dalam bentuk bilangan heksadesimal yang berupa len, command, status, identitas RFID Card, dan tipe RFID Card. Gambar 3.12. Diagram alir pembacaan identitas RFID Card oleh RFID SL018 Berikut ini adalah format data yang diperlukan untuk membaca data RFID Card yang diterima dari modul RFID SL018 [8]. a. Mikrokontroler menulis perintah ke modul RFID SL018. Alamat Slave Len Command Alamat Slave : 0xA0 (pada Arduino menjadi 0x50) Len : mengindikasikan jumlah byte dari command PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Command 29 : perintah yang diberikan ke RFID SL018. Untuk membaca data dari RFID Card digunakan perintah 0x01 b. Hasil yang dibaca oleh mikrokontroler Len Command Status UID Len : mengindikasikan jumlah byte yang akan diterima Command : perintah yang diterima sebelumnya (0x01) Status : keadaan modul RFID SL018 Type 0x00 : operasi berhasil 0x01 : tag tidak terdeteksi 0x0A: terjadi benturan data UID : data unik dari RFID Card (berupa bilangan heksadesimal) Type : tipe kartu yang dideteksi. Karena menggunakan RFID Card Mifare 4K 4-byte, maka data Type ini bernilai 0x04. 3.4.5. Perancangan Perangkat Lunak Modul RTC DS1307 Data yang dikirimkan oleh Modul RTC DS1307 merupakan bilangan BCD (Binary Code Decimal). Komunikasi RTC DS1307 menggunakan I2C. Awalnya, RTC DS1307 harus diatur dulu waktunya hingga sesuai dengan waktu sebenarnya. Pengaturan waktu dilakukan dengan memberikan alamat slave, lokasi alamat waktu, dan data. Pengaturan waktu ini hanya dilakukan sekali saja selama baterai yang terhubung dengan pin VBat belum habis. Pembacaan waktu hanya akan dilakukan saat ada data RFID yang terdeteksi dan digunakan untuk syarat akses kamar bagi OB. Diagram alirnya dapat dilihat pada Gambar 3.13 (a) dan (b). 3.4.6. Persyaratan Akses Kamar Pada penelitian ini, syarat akses hotel dan waktunya adalah sebagai berikut. Identitas Penyewa 1 Penyewa 2 Penyewa 3 Resepsionis Office Boy (OB) Tabel 3.2. Persyaratan akses kamar Kamar Yang Boleh Diakses Waktu Kamar 1 Sepanjang hari Kamar 2 Sepanjang hari Kamar 3 Sepanjang hari Semua kamar Sepanjang hari Semua kamar 08.00 – 16.00 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 Pada setiap kamar terdapat indikator LED hijau dan LED merah. LED berwarna hijau diartikan sebagai indikator bahwa kamar tersebut dapat diakses (tidak ada orang di dalamnya). LED berwarna merah diartikan sebagai indikator bahwa kamar tidak dapat diakses (ada orang di dalamnya). Indikator LED ini digunakan agar mempermudah dalam (a) (b) Gambar 3.13. (a) Diagram alir pengaturan waktu RTC dan (b) Diagram alir pembacaan waktu modul RTC DS1307 penelitian ini. Resepsionis dan OB dapat mengakses kamar jika kamar itu kosong. OB diberikan akses ke setiap kamar untuk membersihkan kamar sesuai pada waktu yang tertera pada tabel 3.2. Resepsionis diberikan akses ke setiap kamar hanya jika seumpama ada orang yang ingin melihat-lihat kamar sebelum menyewa. Diagram alir untuk persyaratan akses kamar seperti pada gambar 3.14 dengan penjelasan sebagai berikut. Sebelumnya, telah didapatkan identitas dari RFID Card oleh RFID SL018. Awalnya dilakukan pengecekan terlebih dahulu mengenai ada tidaknya orang pada kamar tersebut. Jika kamar tersebut kosong, dilakukan pengecekan terhadap identitas yang ingin mengakses kamar tersebut. Jika yang mengakses adalah penyewa kamar yang sesuai, dilakukan pengecekan terhadap waktu mengaksesnya. Waktu PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 mengakses ini dapat dipengaruhi setelah ada interupsi komunikasi pada ethernet karena ada pemberian waktu check in dan check out. Jika penyewa mengakses kamar pada waktu check in dan check out nya, maka penyewa dapat mengakses kamar hotel. Di luar waktu check in dan check out, akan dibuat keluaran “Mencoba Memasuki Kamar x”. Gambar 3.14. Diagram alir syarat akses kamar Jika identitas merupakan resepsionis, maka kamar dapat diakses dengan indikator LED merah menyala, LED hijau mati serta adanya penyimpanan identitas yang mengisi. Jika yang mengakses kamar adalah OB, dilakukan pengecekan waktu yang sesuai dengan tabel 3.2. Jika waktu telah sesuai, maka OB dapat mengakses kamar. Jika waktu tidak sesuai maka OB tidak dapat mengakses kamar. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 Jika kamar yang akan diakses tidak kosong (ada orang di dalamnya), dilakukan pengecekan identitas. Jika identitas sama dengan identitas yang mengisi, diartikan bahwa orang yang ada di dalam akan keluar, LED hijau menyala, LED merah mati. Hal ini juga menandakan bahwa kamar telah kosong. Jika identitas tidak sama dengan identitas yang mengisi, diartikan bahwa ada orang lain yang ingin memasuki kamar padahal ada orang di dalam. Dengan demikian, dibuat keluaran “Mencoba Memasuki Kamar x”. Tiap LED akan dihubungkan dengan beberapa pin pada Arduino sebagai berikut. Tabel 3.3. Koneksi LED pada pin Arduino Kamar LED Pin pada Arduino LED Merah 2 1 LED Hijau 3 LED Merah 5 2 LED Hijau 6 LED Merah 7 3 LED Hijau 8 3.4.7. Pengiriman Data ke Web Melalui Ethernet Setelah mikrokontroler telah mendapatkan data berupa identitas dari RFID Card, maka data tersebut akan ditampilkan pada halaman web. Pengiriman data ini lebih kepada pengiriman data ke alamat IP tertentu melalui internet. Untuk membantu hal ini, mikrokontroler dihubungkan dengan Modul Ethernet. Dalam menggunakan Modul Ethernet ini, mikrokontroler harus mengirimkan kode HTML agar bisa ditampilkan pada halaman web. Namun, harus ada pengaturan mengenai port, Media Access Control (MAC), dan alamat IP web yang akan digunakan. Proses pengiriman data ini akan dilakukan setelah adanya proses pengolahan data pada mikrokontroler mengenai identitas RFID Card, kamar dan waktu. Kemudian, mikrokontroler akan dihubungkan ke server melalui port yang digunakan server. Jika sudah terhubung dengan server, maka mikrokontroler akan mengirimkan data ke web dengan format data seperti tabel 3.4. Diagram alir pengiriman data ke web dapat dilihat pada gambar 3.15. Tabel 3.4. Format perngiriman data ke server POST alamatfileserver--identitas=a--tanggal=waktu--kamar=kamar POST merupakan salah satu HTTP request untuk mengirimkan data alamatfileserver dihubungkan ke alamat file PHP pada server yang mengatur pemrosesan data-data yang dikirm a Identitas dari RFID Card waktu waktu yang didapatkan dari hasil pembacaan data pada RTC kamar kamar yang digunakan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 33 Gambar 3.15. Diagram alir pengiriman data ke web 3.4.8. Perancangan Tampilan Web Tampilan web yang akan dibuat, menggunakan pemrograman PHP (PHP Hypertext Preprocessor) dan MySQL (My Structured Query Language) sebagai penyimpan dan pengolah data. Data-data yang telah dikirimkan mikrokontroler diproses di server. Data-data tersebut disimpan pada database server terlebih dahulu. Kemudian, pada halaman web ditampilkan data-data yang disimpan pada database tersebut. Tampilan yang akan diperlihatkan berbentuk tabel. Tabel tersebut berisi nomor, identitas, hari dan tanggal, waktu, dan kamar yang diakses. Tampilan web yang berisi perekaman data akses kamar hotel ini dapat diakses oleh administrator, resepsionis, dan manager hotel. Gambar 3.16. Tampilan tabel hasil pada web yang diharapkan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV HASIL DAN PEMBAHASAN 4.1 Hasil Implementasi Alat Implementasi alat perekaman data akses kamar hotel dengan RFID berbasis web tersusun atas mikrokontroler Arduino Uno, Modul Ethernet Shield, RTC, 3 buah RFID SL018, 3 buah LED Hijau, 3 buah LED Merah, dan laptop (sebagai server). Berikut ini adalah penampakan implementasi alat. Gambar 4.1. Hasil implementasi alat Perekaman Data Akses Kamar Hotel dengan RFID Berbasis Web Pada laptop server terdapat halaman web tentang halaman pendaftaran, penampil data akses kamar hotel yang direkam, beserta halaman login untuk mengakses kedua halaman tersebut. Gambar 4.2. Tampilan halaman login 34 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35 Gambar 4.3. Tampilan halaman pendaftaran Gambar 4.4. Tampilan halaman web perekaman data akses kamar hotel 4.2 Hasil Perancangan Perangkat Keras Hasil perancangan perangkat keras ini terdiri atas RFID SL018, resistor pull-up, Modul Ethernet Shield, dan RTC. (a) (b) (c) Gambar 4.5. Penampakan RFID pada (a) kamar 1 (b) kamar 2 dan (c) kamar 3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SDA VCC SCL GND Gambar 4.6. Penampakan hasil perancangan resistor pull-up ETHERNET SHIELD ARDUINO UNO Gambar 4.7. Penampakan Modul Ethernet Shield dan Arduino di bawahnya Crystal 32,76 kHz Pin SCL Baterai 3V Pin SDA DS1307 GND VCC Gambar 4.8. Penampakan RTC 36 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3 Hasil Perancangan dan Pembahasan Perangkat Lunak 4.3.1 Pengaturan IP Address pada Laptop Server 37 Sebelum dapat berkomunikasi dengan Arduino melalui Modul Ethernet Shield, IP address laptop server harus diatur terlebih dahulu. Laptop server menggunakan OS Windows 7, sehingga pengaturannya adalah sebagai berikut. 1. Klik icon pada Taskbar di kanan bawah. 2. Pilih “Open Network and Sharing Center”. 3. Pilih “Change Adapter Setting”. 4. Klik kanan “Local Area Connection” dan pilih “Properties”. 5. Klik pada “Internet Protocol Version 4 (TCP/IPv4)” dan pilih “Properties”. 6. Pada window “Internet Protocol Version 4 (TCP/IPv4) Properties” yang muncul diatur seperti gambar berikut. Gambar 4.9. IP Address laptop server diatur seperti gambar 4.3.2 Pengaturan IP Address pada Modul Ethernet Shield Pengaturan IP address pada Modul Ethernet Shield dilakukan langsung pada program Arduino. Pengaturannya adalah sebagai berikut. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 Gambar 4.10. Pengaturan IP Address beserta MAC Address untuk Modul Ethernet Shield Setelah server dan Modul Ethernet Shield diatur IP address-nya, maka selanjutnya dilakukan pengujian koneksi antar keduanya. Pengujian koneksi dilakukan dengan command prompt. Keberhasilan koneksi antar keduanya memberikan hasil seperti berikut pada command prompt. Gambar 4.11. Koneksi antara server dan Modul Ethernet Shield telah berhasil Berdasarkan gambar tersebut, koneksi antara server dan Modul Ethernet Shield dapat bekerja dengan baik sehingga proses komunikasi antar keduanya dapat dilakukan. 4.3.3 Hasil dan Pembahasan Perancangan Halaman Login Untuk pengujian hasil perancangan setiap halaman web yang dibuat, digunakan bantuan browser Opera. Hasil perancangan halaman login dapat dilihat pada Gambar 4.2. Pengujian dilakukan dengan memasukkan username dan password yang sudah dibuat sebelumnya untuk admin, manager, dan resepsionis. Halaman yang ditampilkan setelah PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39 memasukkan username admin maupun manager adalah halaman perekaman data akses kamar hotel seperti Gambar 4.4. Jika username yang digunakan adalah resepsionis, maka akan ditampilkan halaman pendaftaran seperti Gambar 4.3. Namun, jika yang dimasukkan bukan ketiganya atau tidak adanya kesesuaian antara username dan password, maka akan ditampilkan pesan seperti berikut. Gambar 4.12. Pesan yang tertampil saat username atau password tidak benar Berdasarkan pengujian yang dilakukan, hasil perancangan halaman login ini telah sesuai dengan yang diharapkan. 4.3.4 Hasil dan Pembahasan Perancangan Halaman Pendaftaran Penyewa Kamar Hotel Hasil perancangan halaman pendaftaran dapat dilihat pada Gambar 4.3. Pengujian dilakukan dengan mengambil username dan password yang sudah dimasukkan pada halaman login. Jika username dan password yang dimasukkan bukan resepsionis maka akan ditampilkan pesan seperti berikut. Gambar 4.13. Pesan yang tertampil saat username atau password bukan resepsionis Pada halaman pendaftaran, jika semua data seperti nama, kamar yang digunakan, waktu check in, dan waktu check out sudah terisi dengan benar, maka data kamar, waktu check in, dan waktu check out akan dikirim ke mikrokontroler melalui IP address Modul Ethernet Shield. Data yang dikirimkan memiliki tipe data string. Gambar 4.14 adalah program pada mikrokontroler untuk menerima data dari server. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.14. Program penerimaan data dari server 40 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 41 Program tersebut akan dilaksanakan bila ada pengiriman data dari server ke mikrokontroler. Data yang diterima mikrokontroler tersebut kemudian dibagi data untuk kamar, waktu check in, dan waktu check out. Data-data yang telah dibagi tersebut kemudian disimpan di EEPROM. Fungsi eeprom_write_string sebagai fungsi untuk menyimpan data ke EEPROM, berisi seperti Gambar 4.15. Gambar 4.15. Subrutin penyimpanan data ke EEPROM Data bertipe string yang akan disimpan pada EEPROM, diubah menjadi bentuk data heksadesimal terlebih dahulu agar dapat disimpan ke EEPROM mulai dari alamat EEPROM yang diinginkan. Format data check in dan check out yang disimpan pada EEPROM memiliki format data “tahun+bulan+tanggal+jam+menit”. Gambar 4.16 merupakan bukti bahwa data-data tersebut telah tersimpan di EEPROM yang ditampilkan melalui Serial Monitor Arduino. (a) (b) Gambar 4.16. (a) EEPROM saat belum terisi data (b) EEPROM setelah terisi data Hasil akhir dari halaman pendaftaran ini adalah, mikrokontroler memberikan respon berupa halaman web bertuliskan “Data Telah Berhasil Disimpan” seperti pada Gambar 4.17. Hal ini mengindikasikan bahwa data dari halaman pendaftaran dari server telah tersimpan pada mikrokontroler. Gambar 4.17. Pesan yang ditampilkan dari mikrokontroler melalui Modul Ethernet Shield bahwa data telah diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.5 42 Hasil dan Pembahasan Pembacaan Identitas RFID Card oleh RFID SL018 Pengujian terhadap pembacaan identitas RFID Card ini dilakukan dengan mendekatkan RFID Card terhadap RFID SL018. Hasil yang akan dilihat adalah terdeteksinya RFID Card oleh RFID SL018 dan identitas yang diterima oleh mikrokontroler. Gambar 4.18. Pengujian dilakukan dengan mendekatkan RFID Card ke RFID SL018 Hal pertama yang dilakukan mikrokontroler untuk membaca data dari RFID Card adalah dengan berkomunikasi terlebih dahulu dengan semua RFID SL018. Gambar 4.19 menunjukkan program untuk mikrokontroler berkomunikasi dengan RFID SL018. Gambar 4.19. Program pada mikrokontroler untuk berkomunikasi dengan RFID SL018 Program tersebut diletakkan di program utama. Mikrokontroler akan menerima data dari RFID SL018 sebagai hasil dari pembacaan data dari RFID Card setelah salah satu RFID SL018 memberikan kondisi low pada pin TagSta sebagai respon bahwa RFID SL018 mendeteksi adanya RFID Card. Saat RFID SL018 mendeteksi adanya RFID Card, maka PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 43 mikrokontroler akan membaca berkomunikasi dengan RFID SL018 untuk membaca data RFID Card menggunakan subrutin seperti Gambar 4.20. Gambar 4.20. Subrutin Pembacaan Data RFID Card Pada subrutin di atas, mikrokontroler membaca data-data yang dikirimkan oleh RFID SL018. Data-data tersebut adalah len, command code, status, UID, dan type. Identitas dari RFID Card terdapat pada data UID. Pada penelitian ini, digunakan 5 buah RFID Card dengan identitas sebagai berikut. Tabel 4.1. Identitas pada RFID Card dan penamaannya Identitas Penamaan FB9E4BB5 Resepsionis B2D2E53D OB 3273F33D Penyewa 3 32BBE33D Penyewa 2 723DE53D Penyewa 1 Identitas pada Tabel 4.1 kemudian dimasukkan ke dalam mikrokontroler pada inisialisasi pengaturan seperti pada Gambar 4.21. Gambar 4.21. Inisialisasi identitas RFID Card PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44 Untuk mempermudah penelitian, identitas RFID Card diberikan penamaan seperti Tabel 4.1. Pada mikrokontroler, terdapat subrutin untuk memberikan nama pada setiap identitas RFID Card seperti pada Gambar 4.22. Gambar 4.22. Subrutin penggantian nama identitas RFID Card Hasil dari pembacaan identitas RFID Card beserta penamaannya, kemudian dilihat pada Serial Monitor Arduino seperti pada Gambar 4.23. Identitas RFID Card Hasil penamaan Identitas RFID Card Gambar 4.23. Hasil pembacaan identitas RFID Card 4.3.6 Hasil dan Pembahasan Perancangan Perangkat Lunak Modul RTC DS1307 Pengujian yang dilakukan terhadap modul RTC DS1307 adalah pengujian untuk penulisan waktu ke RTC dan pembacaan waktu dari RTC. Pengujian ini diawali dengan penulisan waktu ke RTC. Penulisan waktu ini dilakukan menggunakan subrutin seperti Gambar 4.24. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 45 Gambar 4.24. Subrutin penulisan dan pengaturan waktu pada RTC Pembacaan data (waktu) pada RTC, diberikan subrutin pembacaan waktu pada RTC seperti pada Gambar 4.25. Gambar 4.25. Subrutin pembacaan waktu RTC Pada subrutin pembacaan waktu RTC, terdapat fungsi tambah_nol yang berfungsi sebagai penambahan angka “0” di depan angka yang lebih kecil dari 10. Hal ini bertujuan untuk mempermudah pemrosesan data selanjutnya pada subrutin syarat akses kamar. Gambar 4.26 merupakan isi dari fungsi tambah_nol. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 46 Gambar 4.26. Isi fungsi tambah_nol Hasil akhir dari perancangan perangkat lunak modul RTC ini adalah dapat dibacanya data yang ada pada RTC. Pengujian ini dilakukan dengan melihat data tiap detik melalui Serial Monitor Arduino seperti Gambar 4.27. Gambar 4.27. Hasil pembacaan RTC DS1307 Berdasarkan Gambar 4.27, terlihat bahwa mikrokontroler telah dapat berkomunikasi (membaca data) dengan RTC DS1307. Tampilan tersebut merupakan hasil modifikasi yang telah dibuat dalam program pembacaan RTC DS1307. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.7 47 Hasil dan Pembahasan Perancangan Program Utama Setelah semua perancangan perangkat lunak telah memberikan hasil yang sesuai dengan perancangan, selanjutnya adalah menggabungkan semuanya ke dalam program utama. Program utama ini bersifat sekuensial, artinya setiap proses yang telah dirancang pada Bab III (mulai dari pembacaan identitas RFID Card hingga pengiriman data ke web) dilakukan secara berurutan. Untuk mendapatkan hasil perancangan persyaratan akses kamar, dilakukan pengujian terhadap perancangan persyaratan akses kamar dengan perlakuan sebagai berikut. Nama Anna Doni Ryan Jessy Tabel 4.2. Daftar Penyewa Kamar Hotel Kamar yang Tanggal Tanggal Jam disewa Check In Check Out Check In 1 2 3 1 23 Juli 2015 24 Juli 2015 23 Juli 2015 24 Juli 2015 24 Juli 2015 25 Juli 2015 24 Juli 2014 25 Juli 2015 13.00 13.00 13.00 13.00 Jam Check Out 12.00 12.00 12.00 12.00 Tiap penyewa akan mendapat RFID Card yang sesuai dengan kamar yang disewa, misalnya kamar yang disewa adalah Kamar 1 maka penyewa kamar 1 akan mendapatkan RFID Card Penyewa 1 dan seterusnya. Penyewa yang telah melakukan check out maka akan dilakukan pembaharuan data pada mikrokontroler dengan mengirimkan data penyewa selanjutnya ke mikrokontroler. Misalnya, dalam tabel 4.2, jika Anna telah melakukan check out, maka server akan mengirimkan data baru dari Jessy. Data baru yang dikirimkan adalah kamar yang disewa, tanggal dan jam check in, dan tanggal dan jam check out. Gambar 4.28 merupakan subrutin syarat akses kamar. Subrutin inilah yang mengatur boleh tidaknya pengaksesan kamar berdasarkan identitas RFID Card. Diawali dengan pengecekan kosong tidaknya kamar yang diakses. Jika kosong, kemudian dilakukan pengecekan lagi sesuai dengan yang telah dirancang pada Bab III. Jika tidak memiliki hak akses (misal pada Kamar 1), maka diberikan tulisan “Mencoba Memasuki Kamar 1” serta tidak adanya pergantian LED pada kamar. Namun, jika memiliki hak akses, diberikan tulisan “Memasuki Kamar 1”, ada pergantian LED pada kamar (LED Merah sebelumnya mati menjadi menyala dan LED Hijau sebelumnya menyala menjadi mati) dan adanya penyimpanan data id_pengguna (dari subrutin penggantian nama) ke EEPROM menggunakan library EEPROM untuk mengindikasikan bahwa kamar tersebut telah dimasuki dengan id_pengguna yang bersangkutan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.28. Subrutin syarat akses kamar 48 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25 Juli 2015 24 Juli 2015 23 Juli 2015 Tanggal Tabel 4.3. Hasil perancangan persyaratan akses kamar Jam Kamar Penyewa 1 Penyewa 2 Penyewa 3 1 00.00 – 2 08.00 3 1 08.00 – 2 12.00 3 1 12.00 – 2 13.00 3 1 v 13.00 – 2 16.00 3 v 1 v 16.00 – 2 00.00 3 v 1 v 00.00 – 2 08.00 3 v 1 v 08.00 – 2 12.00 3 v 1 12.00 – 2 13.00 3 1 v 13.00 – 2 v 16.00 3 1 v 16.00 – 2 v 00.00 3 1 v 00.00 – 2 v 08.00 3 1 v 08.00 – 2 v 12.00 3 1 12.00 – 2 13.00 3 1 13.00 – 2 16.00 3 1 16.00 – 2 00.00 3 - 49 OB Resepsionis v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 Keterangan: - : tidak bisa mengakses kamar v : dapat mengakses kamar Tabel 4.3 menunjukkan hasil pengujian yang telah dilakukan. Pada tanggal 24 Juli 2015 jam 13.00-16.00 terlihat bahwa penyewa 1 dapat memasuki Kamar 1. Hal ini diartikan bahwa penyewa sebelumnya (Anna) telah melakukan check out terlebih dahulu kemudian diganti dengan penyewa selanjutnya (Jessy). Dengan demikian, RFID Card Penyewa 1 dapat digunakan untuk memasuki Kamar 1. Untuk membantu dalam melakukan check out, diberikan halaman web untuk proses check out. Halaman ini berguna untuk menghapus data penyewa yang telah check out dan memberikan data penyewa yang baru (jika ada) ke mikrokontroler dengan mengklik pilihan Check Out pada kolom Status. Halaman check out dan penampil rekaman data akses akan di reload selama 2 detik, sehingga lebih update. Penampakan dari halaman check out ini dapat dilihat pada Gambar 4.29. Gambar 4.29. Halaman Check Out Pengiriman data-data ke web, diberikan subrutin pengiriman data ke web seperti pada Gambar 4.30. Diawali dengan melakukan koneksi dari mikrokontroler ke server dan diikuti dengan data-data seperti pada gambar. Subrutin tersebut memanggil file pada server yang digunakan untuk menyimpan data ke database yang ada pada web. Pada subrutin tersebut, file yang dimaksud adalah ambil.php. Isi dari file ini dapat dilihat pada Gambar 4.31. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.30. Subrutin pengiriman data ke web Gambar 4.31. Isi file ambil.php 51 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 52 Indikator bahwa penyewa (ataupun OB) tidak dapat memasuki kamar dapat dilihat pada lampu LED yang terpasang pada alat yang ditunjukkan Gambar 4.32. LED hijau tidak akan mati dan LED merah tidak akan menyala menandakan bahwa penyewa (ataupun OB) tidak dapat memasuki kamar. Selain itu, terdapat pula perekaman data pengguna yang mengakses kamar pada halaman web. Misal, Penyewa 3 belum atau tidak dapat memasuki kamar 3, maka pada halaman web akan ditampilkan “Mencoba Memasuki Kamar 3” seperti pada Gambar 4.33. Gambar 4.32. Indikator LED Penyewa 3 tidak dapat memasuki Kamar 3 Gambar 4.33. Tampilan web Penyewa 1 tidak dapat memasuki Kamar 1 Indikator bahwa penyewa, OB, ataupun Resepsionis dapat memasuki kamar dapat dilihat pada lampu LED yang terpasang pada alat yang ditunjukkan Gambar 4.34. LED hijau akan mati dan LED merah akan menyala menandakan bahwa penyewa, OB, maupun Resepsionis dapat memasuki kamar. Selain itu, terdapat pula perekaman data pengguna yang mengakses kamar pada halaman web. Misal, Resepsionis memasuki kamar 3, maka pada halaman web akan ditampilkan “Memasuki Kamar 3” seperti pada Gambar 4.35. Gambar 4.34. Indikator LED Resepsionis memasuki Kamar 3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 Gambar 4.35. Tampilan web Resepsionis memasuki Kamar 3 Pada Bab III, dibuat perancangan bahwa jika terdapat pengguna yang sudah memasuki kamar tersebut, maka tidak ada yang dapat memasuki kamar tersebut hingga pengguna yang berada di dalam tersebut keluar dari kamar. Misal, sebelumnya Resepsionis telah memasuki Kamar 3. Jika OB ingin memasuki kamar tersebut, maka pada halaman web akan ditampilkan “Mencoba Memasuki Kamar 3” yang ditunjukkan Gambar 4.36 dan indikator LED tidak mengalami perubahan seperti pada Gambar 4.37. Gambar 4.36. Tampilan web OB tidak dapat memasuki Kamar 3 Gambar 4.37. Indikator LED OB tidak dapat memasuki Kamar 3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 Data-data perekaman tersebut dapat dilihat pada halaman web dengan alamat localhost/phpmyadmin. Alamat tersebut berisi database, tempat data-data yang dikirimkan dari mikrokontroler ke server disimpan. Database untuk menyimpan data-data tersebut dinamai “rfid”, disimpan dalam tabel “masukan”. Alamat tersebut merupakan alamat yang diberikan XAMPP sebagai salah satu fasilitasnya. Yang perlu dicatat adalah halaman web dari alamat tersebut dapat dilihat oleh siapapun yang mengetahui alamat server. Hal tersebut merupakan kelemahan dari XAMPP itu sendiri. Gambar 4.38 diperlihatkan bentuk halaman web yang dimaksud. Gambar 4.38. Halaman web phpMyAdmin untuk melihat data-data yang telah dikirimkan dari mikrokontroler ke server Berdasarkan hasil dan pembahasan di atas, setiap proses yang ada telah memberikan hasil yang sesuai dengan rancangan penelitian. Pada bagian program utama, sistem telah dapat merekam data pengguna yang mengakses kamar dengan batas waktu yang telah ditentukan secara langsung (untuk OB), batas waktu yang ditentukan berdasarkan waktu check in dan check out (untuk tiap penyewa kamar), dan tanpa penentuan batas waktu (untuk Resepsionis). Pada penelitian ini, terdapat kelemahan dari segi perangkat keras (hardware) maupun perangkat lunak (software). Kelemahan yang ditemukan pada penelitian ini yakni sebagai berikut: modul RFID yang digunakan mudah untuk dikomunikasikan dengan Arduino, namun modul RFID yang digunakan memakan banyak port pada mikrokontroler karena modul ini tidak memiliki alamat khusus di dalamnya (untuk digunakan dalam PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55 jumlah banyak). Untuk penggunaan dalam jumlah lebih dari 1 modul RFID SL018, modul ini mengandalkan Pin TagSta untuk mengetahui bahwa modul RFID tersebut mendeteksi RFID Card. Kelemahan selanjutnya adalah RFID Card tidak dapat dibaca secara bersamaan. Hal yang dimaksud adalah, misal, RFID Card Penyewa 1 dan Penyewa 3 didekatkan secara bersamaan masing-masing ke RFID Reader Kamar 1 dan Kamar 3. Hal tersebut tidak dapat dilakukan karena akan terjadi error saat pembacaan. Error ini muncul karena adanya tabrakan data saat kedua RFID Reader mengirimkan data ke mikrokontroler. Kelemahan terakhir yang ditemukan pada penelitian ini adalah terkadang mikrokontroler tidak memberikan respon apapun ke web saat RFID Reader membaca data RFID Card. Hal ini terjadi saat diberikan perlakuan pembacaan data oleh RFID Reader terhadap RFID Card dalam waktu yang cepat. Program pada mikrokontroler merupakan jenis program sekuensial (berurutan) menyebabkan hal ini dapat terjadi. Saat RFID Card dibaca oleh RFID Reader, akan ada pemrosesan data pada mikrokontroler. Error dapat terjadi saat RFID Reader mendeteksi RFID Card lain sewaktu mikrokontroler melakukan pemrosesan data pada RFID Card sebelumnya. RFID Card yang baru dideteksi akan mengacaukan proses dalam mikrokontroler dan pembacaan RFID Card tersebut tidak akan sempurna. Namun, dibalik kelemahan tersebut, penelitian ini juga memiliki kelebihan. Kelebihan yang ada pada penelitian ini yaitu, 1 buah Arduino dapat mengontrol 3 buah RFID SL018 dikarenakan komunikasi I2C yang digunakan RFID SL018 sedangkan pada penelitian sebelumnya hanya 1 tag dengan 1 mikrokontroler [2]. Bahasa pemrograman PHP pada setiap halaman web di server dalam penelitian ini sangat mudah untuk dipelajari dan lebih dinamis dibandingkan bahasa pemrograman untuk halaman web pada penelitian sebelumnya [3] sehingga dapat membantu untuk penelitian selanjutnya yang masih dalam satu lingkup dengan penelitian ini. Berdasarkan data-data yang telah diperoleh (dapat dilihat pada Lampiran 6), dari 70 kali pengambilan data, ditemukan 2 kali error pada saat pengambilan data. Dari error tersebut, persentase keberhasilan dari penelitian ini sebesar . Error yang dimaksud adalah tidak adanya respon dari mikrokontroler untuk membaca identitas RFID Card, menerima data dari web, mengirim data ke web, membaca data RTC, dan melaksanakan subrutin syarat akses kamar. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan Berdasarkan hasil dari setiap proses pada penelitian ini, dapat diambil kesimpulan sebagai berikut: telah dihasilkan perekaman data akses kamar hotel dengan RFID berbasis web dengan adanya fasilitas halaman pendaftaran (untuk mengatur waktu check in dan check out), dan halaman check out (untuk memperbaharui data di mikrokontroler). Persentase keberhasilan yang didapat pada penelitian ini sebesar 97,14%. 5.2 Saran Untuk hasil yang lebih baik untuk penelitian selanjutnya, diberikan saran-saran yang dapat berguna bagi pembaca sebagai berikut: a. Penelitian ini dapat diperbanyak dengan menggunakan hub, sehingga nantinya akan banyak menggunakan modul Ethernet Shield yang berbeda MAC Address dan IP Address-nya. b. Halaman pendaftaran dapat dijadikan online ke internet (bukan lagi intranet) sehingga penyewa dapat menyewa kamar di kemudian hari (menggunakan sistem self-booking kamar hotel). c. Dapat diberikan penelitian lebih detail untuk pembacaan RFID Card dalam waktu cepat serta tidak mengganggu komunikasi dari mikrokontroler ke RFID Reader. 56 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR PUSTAKA [1] Finkenzeller, Klaus, 2010, RFID Handbook – Fundamental and Applications in Contactless Smart Cards, Radio Frequency Identification and Near-Field Communication, Third Edition, Penerbit : Wiley, United Kingdom [2] Wiranto, Robertus Heru, 2010, Pembaca Data Tag Pada Car Immobilizer Dengan RFID, Fakultas Sains dan Teknologi Universitas Sanata Dharma, Yogyakarta [3] Innovative Electronics, 2012, Pengujian modul W5200 Ethernet Shield dengan menggunakan Arduino, http://blog.innovativeelectronics.com/2012/09/pengujian- modul-w5200-ethernet-shield.html, diakses 22 November 2014 [4] Adi, Galih Purwito, 2014, Monitoring Suhu 4 Channel Jarak Jauh Berbasis Arduino Uno, Fakultas Sains dan Teknologi Universitas Sanata Dharma, Yogyakarta [5] _____, 2012, Pengertian dan Komponen Radio Frequency Identification (RFID), http://elektronika-dasar.web.id/artikel-elektronika/pengertian-dan-komponen-radiofrequency-identification-rfid/, diakses 28 November 2014 [6] Sweeney II, Patrick J., 2005, RFID For Dummies, Wiley Publishing Inc., Indianapolis [7] RFID Centre, _____, RFID Technology, http://www.rfidc.com/docs/introductiontorfid_technology.htm, diakses 20 Desember 2014 [8] _____, 2012, Mifare Reader/Writer SL018 User Manual, Stronglink [9] _____, 2011, Datasheet MIFARE Classic 4K, NXP Semiconductors [10] Arduino, _____, What is Arduino, http://www.arduino.cc/en/Guide/Introduction, diakses 20 Desember 2014 [11] Arduino, _____, Arduino Uno, http://arduino.cc/en/Main/ArduinoBoardUno, diakses 8 Desember 2014 [12] Sejati, Purnomo, 2011, Mengenal Komunikasi I2C (Inter Integrated Circuit), http://purnomosejati.wordpress.com/2011/08/25/mengenal-komunikasi-i2cinterintegrated-circuit/, diakses 16 Desember 2014 [13] _____, 2013, Datasheet Atmel 8-bit Microcontroller with 4/8/16/32Kbytes, Atmel [14] Arduino, _____, Wire Library, http://arduino.cc/en/Reference/Wire, diakses 16 Desember 2014 57 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI [15] Mando, _____, Pull-up Resistor, 58 https://learn.sparkfun.com/tutorials/pull-up- resistors, diakses 19 Desember 2014 [16] Mikegrusin, _____, Serial Peripheral Interface https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi, (SPI), diakses 21 Desember 2014 [17] Triatmojo, Ragil, 2014, Cara Kerja Periperal USART,UART,SPI,SCI, DAC,ADC, http://ragiltriatmojo.blogspot.com/2014/09/cara-kerja-periperal-usartuartspisci.html, diakses 21 Desember 14 [18] _____, _____, Datasheet DS1307, Dallas Semiconductor [19] Tester, Soly, 2013, Penjelasan dan Fungsi XAMPP, http://solylight.blogspot.com/2013/03/penjelasan-dan-fungsi-xampp.html, diaskes 1 Februari 2015 [20] Hastomo, Widi, 2013, Pengertian dan Kelebihan Apache Server, http://hastomo.net/php/pengertian-dan-kelebihan-apache-server, diakses 1 Februari 2015 [21] Nugroho, Bunafit, 2008, Latihan Membuat Aplikasi Web PHP dan MySQL dengan Dreamweaver MX (6,7,2004) dan 8, Penerbit : Gava Media, Yogyakarta [22] Sunarfrihantono, Bimo, 2003, PHP dan MySQL untuk Web, Penerbit : ANDI, Yogyakarta [23] Peringinangin, Kasiman, 2006, Aplikasi WEB dengan PHP dan MySQL, Penerbit : ANDI, Yogyakarta [24] Arduino, _____, Arduino Ethernet Shield, http://arduino.cc/en/Main/ArduinoEthernetShield, diakses 29 Desember 2014 [25] Setiawan, Agus, 2012, Pengertian MAC http://www.transiskom.com/2012/10/pengertian-mac-address.html, Address, diakses 4 Februari 2014 [26] Purdianto Yudi, 2011, MAC Address, http://yadicucuklauk.blogspot.com/2011/10/mac-address-mac-address-mediaaccess.html, diakses 14 Februari 2015 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L1 LAMPIRAN 1 LISTING PROGRAM ARDUINO PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI /* PEREKAMAN DATA AKSES KAMAR HOTEL BERBASIS WEB Paulus Alexander Eldwin Pradana 115114006 */ /*Inisialisasi Header*/ #include <Wire.h> #include <SPI.h> #include <Ethernet.h> #include <EEPROM.h> const int EEPROM_MIN_ADDR = 0; const int EEPROM_MAX_ADDR = 511; const int BUFSIZE = 17; char buf[BUFSIZE]; String myString; char myStringChar[BUFSIZE]; /*Inisialisasi Pin Untuk RFID*/ #define TAG3 17 // pin A3 #define TAG2 16 // pin A2 #define TAG1 15 // pin A1 EthernetClient klien; //ethernet sebagai penerima data dari mikro /*Inisialisasi variabel utk baca RFID*/ int data[33],panjang,perintah,keadaan,panjang2; char* mifare[] = { "1K", "Pro", "UltraLight", "4K", "ProX", "DesFire" }; /*Inisialisasi identitas RFID Card*/ int Penyewa1[5]={0x01,0x3D,0xE5,0x3D,0x72}; int Penyewa2[5]={0x01,0x3D,0xE3,0xBB,0x32}; int Penyewa3[5]={0x01,0x3D,0xF3,0x73,0x32}; int OB[5]={0x01,0x3D,0xE5,0xD2,0xB2}; int receptionist[5]={0x01,0xB5,0x4B,0x9E,0xFB}; /*Inisialisasi untuk syarat akses kamar*/ char* yang_masuk; char* nama[8]={"-1","Penyewa+1","Penyewa+2","Penyewa+3","OB","Resepsionis"}; int cocok_id_pengguna[8]={-1,1,2,3,4,5}; int id_pengguna; char* waktu_OB_L="08+0"; char* waktu_OB_H="16+0"; int didalam[8]; int i; /*Inisialisasi MAC Address Ethernet Shield*/ byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; L2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI /*IP Address untuk Ethernet*/ IPAddress ip( 192,168,1,15 ); /*IP Address untuk server PC*/ IPAddress pusat(192,168,1,10); EthernetServer server(80);//Ethernet sebagai server /*Inisialisasi Variebel pembantu*/ char buf2[33],kata[33]; char *pch; int test=0; int naik; int masuk_aja=0; /*Inisialisasi variabel untuk RTC*/ int detik = 0; int menit = 0; int jam = 0; int hari = 0; int tanggal = 0; int bulan = 0; int tahun = 0; /*Inisialisasi untuk LED di kamar*/ int LM[5]={-1,2,5,7}; int LH[5]={-1,3,6,8}; /*Inisialisasi waktu check in dan check out*/ int room; String check_in[10]={"-1","0","0","0"}; String check_out[10]={"-1","0","0","0"}; String waktu_rtc; String jam_rtc; void setup() { Wire.begin(); Serial.begin(9600); /*Pengaturan untuk LED di kamar*/ for(i=1;i<=3;i++) { pinMode(LM[i],OUTPUT); pinMode(LH[i],OUTPUT); } for (i=1;i<=3;i++) { didalam[i]=EEPROM.read(i); if (didalam[i]==0) { L3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI digitalWrite(LM[i],0); digitalWrite(LH[i],1); } else { digitalWrite(LM[i],1); digitalWrite(LH[i],0); } } for (i=1;i<=3;i++) { eeprom_read_string(i*20, buf, BUFSIZE); check_in[i]=String(buf); eeprom_read_string(i*100, buf, BUFSIZE); check_out[i]=String(buf); } Ethernet.begin(mac, ip); delay(1000); server.begin(); tuliswaktu(); ledOn(1); delay(500); ledOn(0); } /*Program Utama*/ void loop() { /*Penerimaan Data Dari Server*/ EthernetClient client = server.available(); if(client) { boolean currentLineIsBlank = true; boolean currentLineIsGet = true; int tCount = 0; char tBuf[64]; while (client.connected()) { while(client.available()) { char c = client.read(); if(currentLineIsGet && tCount < 85) { tBuf[tCount] = c; tCount++; } if (c == '\n' && currentLineIsBlank) { while(client.available()) Serial.write(client.read()); L4 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L5 pch = strtok(tBuf,"?"); //membagi string menjadi beberapa bagian yg dibatasi oleh karakter yg ditentukan while(pch != NULL) { //strncmp membandingkan 2 string sejumlah n karakter if(strncmp(pch,"r=",2) == 0) //menentukan kamar { room = atoi(pch+2); } if(strncmp(pch,"x=",2) == 0) //menentukan check_in { check_in[room] = String(pch); check_in[room] = check_in[room].substring(2); check_in[room].toCharArray(myStringChar, BUFSIZE); strcpy(buf, myStringChar); eeprom_write_string(room*20, buf); } if(strncmp(pch,"y=",2) == 0) //menentukan check_out { check_out[room] = String(pch); check_out[room] = check_out[room].substring(2); check_out[room].toCharArray(myStringChar, BUFSIZE); strcpy(buf, myStringChar); eeprom_write_string(room*100, buf); } pch = strtok(NULL,"& "); } client.print(F("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<html>")); client.println(F("<head>")); client.println(F("</head>")); client.println(F("<body>")); client.println(F("<center>Data Telah Berhasil Disimpan<br>")); client.println(F("</body></html>")); client.stop(); } else if (c == '\n') { currentLineIsBlank = true; currentLineIsGet = false; } else if (c != '\r') { currentLineIsBlank = false; } } client.stop(); delay(1); } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI else { Wire.beginTransmission(0x50); Wire.write(1); Wire.write(1); Wire.endTransmission(); if(digitalRead(TAG3)==0) { readID(TAG3); ubah_nama(); RTC(); syarat(3); kirimweb(yang_masuk); yang_masuk=""; waktu_rtc=0; jam_rtc=0; id_pengguna=0; panjang=0; perintah=0; keadaan=0; data[0]=0;data[1]=0;data[2]=0;data[3]=0;data[4]=0; byte type=0; while(digitalRead(TAG3)==0){} } if(digitalRead(TAG2)==0) { readID(TAG2); ubah_nama(); RTC(); syarat(2); kirimweb(yang_masuk); yang_masuk=""; waktu_rtc=0; jam_rtc=0; id_pengguna=0; panjang=0; perintah=0; keadaan=0; data[0]=0;data[1]=0;data[2]=0;data[3]=0;data[4]=0; byte type=0; while(digitalRead(TAG2)==0){} } if(digitalRead(TAG1)==0) { readID(TAG1); ubah_nama(); RTC(); syarat(1); kirimweb(yang_masuk); L6 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI yang_masuk=""; waktu_rtc=0; jam_rtc=0; id_pengguna=0; panjang=0; perintah=0; keadaan=0; data[0]=0;data[1]=0;data[2]=0;data[3]=0;data[4]=0; byte type=0; while(digitalRead(TAG1)==0){} } } } /*Perintah untuk mengatur LED pada RFID*/ void ledOn(boolean on) { // Send LED command Wire.beginTransmission(0x50); Wire.write(2); Wire.write(0x40); Wire.write(on); Wire.endTransmission(); } /*Subrutin Baca Data RFID Card*/ int readID(boolean TAG) { while(digitalRead(TAG)==0) { Wire.requestFrom(0x50, 11); if(Wire.available()) { panjang = Wire.read(); perintah = Wire.read(); keadaan = Wire.read(); panjang -= 2; panjang2 = panjang-1; while(--panjang) { data[panjang] = Wire.read(); } byte type = Wire.read(); return 1; } } Wire.endTransmission(); } L7 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L8 /*Subrutin Penggantian Nama*/ void ubah_nama() { if((data[4]==Penyewa1[4])&&(data[3]==Penyewa1[3])&&(data[2]==Penyewa1[2])&&(da ta[1]==Penyewa1[1])) { yang_masuk="Penyewa+1"; id_pengguna=1; } else if((data[4]==Penyewa2[4])&&(data[3]==Penyewa2[3])&&(data[2]==Penyewa2[2])&&(da ta[1]==Penyewa2[1])) { yang_masuk="Penyewa+2"; id_pengguna=2; } else if((data[4]==Penyewa3[4])&&(data[3]==Penyewa3[3])&&(data[2]==Penyewa3[2])&&(da ta[1]==Penyewa3[1])) { yang_masuk="Penyewa+3"; id_pengguna=3; } else if((data[4]==OB[4])&&(data[3]==OB[3])&&(data[2]==OB[2])&&(data[1]==OB[1])) { yang_masuk="OB"; id_pengguna=4; } else if((data[4]==receptionist[4])&&(data[3]==receptionist[3])&&(data[2]==receptionist[2])& &(data[1]==receptionist[1])) { yang_masuk="Resepsionis"; id_pengguna=5; } else { yang_masuk="Tidak Dikenal"; } } /*Subrutin untuk menulis waktu pada RTC*/ void tulis_rtc(unsigned char alamat, unsigned char isi) { Wire.beginTransmission(0x68); Wire.write(alamat); Wire.write(isi); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L9 Wire.endTransmission(); } /*Subrutin untuk mengatur waktu pada RTC*/ void tuliswaktu() { tulis_rtc(0x06,0x15); //tahun tulis_rtc(0x05,0x09); //bulan tulis_rtc(0x04,0x25); //tanggal tulis_rtc(0x03,0x06); //hari tulis_rtc(0x02,0x20); //jam tulis_rtc(0x01,0x08); //menit tulis_rtc(0x00,0x00); //detik } /*Subrutin Pembacaaan Waktu RTC*/ void RTC() { Wire.beginTransmission(0x68); //memulai transmisi dengan mengirim reg 0x60 Wire.write(byte(0)); Wire.endTransmission(); //mengakhiri transmisi Wire.requestFrom(0x68,9); //meminta data dari RTC { detik = (Wire.read()); menit = (Wire.read()); jam = (Wire.read()); hari = (Wire.read()); tanggal = (Wire.read()); bulan = (Wire.read()); tahun = (Wire.read()); } Wire.endTransmission(); jam_rtc=tambah_nol(jam,0)+"+"+tambah_nol(menit,0); waktu_rtc=tambah_nol(tahun,0)+"+"+tambah_nol(bulan,0)+"+"+tambah_nol(tanggal,0)+" +"+tambah_nol(jam,0)+"+"+tambah_nol(menit,0); } /*Subrutin pengiriman data ke web*/ void kirimweb(String id) { if(klien.connect(pusat,80)==1) { klien.print(F("POST /RFID/ambil.php?")); klien.print(F("pengguna=")); klien.print(id); klien.print(F("&&")); klien.print(F("hari=")); klien.print(hari,HEX); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI klien.print(F("&&")); klien.print(F("tanggal=")); klien.print(tanggal,HEX); klien.print(F("/")); klien.print(bulan,HEX); klien.print(F("/")); klien.print(tahun,HEX); klien.print(F("&&")); klien.print(F("jam=")); klien.print(jam,HEX); klien.print(F(":")); klien.print(menit,HEX); klien.print(F(":")); klien.print(detik,HEX); klien.print(F("&&")); klien.print(F("kamar=")); klien.print(kata); klien.println(F(" HTTP/1.1")); klien.print(F("Host: ")); klien.println(pusat); klien.println(F("Connection: close")); klien.println(); klien.println(); klien.stop(); delay(100); } delay(500); } /*Subrutin Pengaturan syarat akses kamar*/ void syarat (int ruang) { if (didalam[ruang]==0) { if (id_pengguna==cocok_id_pengguna[ruang]) { if ((waktu_rtc>=check_in[ruang])&&(waktu_rtc<check_out[ruang])) { sprintf(kata,"Memasuki+Kamar+%d",ruang); digitalWrite(LM[ruang],HIGH); digitalWrite(LH[ruang],LOW); didalam[ruang]=cocok_id_pengguna[ruang]; EEPROM.write(ruang,didalam[ruang]); } else {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);} } else if (id_pengguna==cocok_id_pengguna[5]) { L10 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for(naik=1;naik<=3;naik++) { if(didalam[naik]==cocok_id_pengguna[5]) {masuk_aja=1;} } if(masuk_aja==1) {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);masuk_aja=0;} else { sprintf(kata,"Memasuki+Kamar+%d",ruang); digitalWrite(LM[ruang],HIGH); digitalWrite(LH[ruang],LOW); didalam[ruang]=cocok_id_pengguna[5]; EEPROM.write(ruang,didalam[ruang]); masuk_aja=0; } } else if (id_pengguna==cocok_id_pengguna[4]) { for(naik=1;naik<=3;naik++) { if(didalam[naik]==cocok_id_pengguna[4]) {masuk_aja=1;} } if(masuk_aja==1) {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);masuk_aja=0;} else { if ((jam_rtc>=waktu_OB_L)&&(jam_rtc<waktu_OB_H)) { sprintf(kata,"Memasuki+Kamar+%d",ruang); digitalWrite(LM[ruang],HIGH); digitalWrite(LH[ruang],LOW); didalam[ruang]=cocok_id_pengguna[4]; EEPROM.write(ruang,didalam[ruang]); } else {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);} } } else {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);} } else if (didalam[ruang]==id_pengguna) { sprintf(kata,"Keluar+dari+Kamar+%d",ruang); digitalWrite(LM[ruang],LOW); digitalWrite(LH[ruang],HIGH); didalam[ruang]=0; L11 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI EEPROM.write(ruang,didalam[ruang]); } else {sprintf(kata,"Mencoba+Memasuki+Kamar+%d",ruang);} } /*Subrutin untuk menambah digit '0'*/ String tambah_nol(int angka, String hasil) { if (angka<10) {hasil=String("0")+String(angka,HEX);} else {hasil=String(angka,HEX);} return hasil; } /*Subrutin Penyimpanan Data ke EEPROM*/ boolean eeprom_is_addr_ok(int addr) {return ((addr >= EEPROM_MIN_ADDR) && (addr <= EEPROM_MAX_ADDR));} boolean eeprom_write_bytes(int startAddr, const byte* array, int numBytes) { int i; if (!eeprom_is_addr_ok(startAddr) || !eeprom_is_addr_ok(startAddr + numBytes)) {return false;} for (i = 0; i < numBytes; i++) {EEPROM.write(startAddr + i, array[i]);} return true; } boolean eeprom_write_string(int addr, const char* string) { int numBytes; // jumlah byte yang akan ditulis numBytes = strlen(string) + 1; return eeprom_write_bytes(addr, (const byte*)string, numBytes); } /*Subrutin Pembacaan Data ke EEPROM*/ boolean eeprom_read_string(int addr, char* buffer, int bufSize) { byte ch; // variabel pembantu membaca byte dari eeprom int bytesRead; // jumlah byte yang akan dibaca if (!eeprom_is_addr_ok(addr)) {return false;} if (bufSize == 0) {return false;} if (bufSize == 1) { buffer[0] = 0; return true; L12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L13 } bytesRead = 0; ch = EEPROM.read(addr + bytesRead); buffer[bytesRead] = ch; bytesRead++; while ( (ch != 0x00) && (bytesRead < bufSize) && ((addr + bytesRead) <= EEPROM_MAX_ADDR) ) { ch = EEPROM.read(addr + bytesRead); buffer[bytesRead] = ch; bytesRead++; } if ((ch != 0x00) && (bytesRead >= 1)) {buffer[bytesRead - 1] = 0;} return true; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 2 LISTING PROGRAM HALAMAN LOGIN L14 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI index.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>LOGIN!!!</title> <style type="text/css"> <!-.welcome { font-family: "Comic Sans MS", cursive; font-size: xx-large; color: #FFF; background-image: url(images/background.gif); background-repeat: no-repeat; } .foot { font-family: "Comic Sans MS", cursive; font-size: 16px; color: #000; } .transparan{ background:rgba(11,106,203,0.4); font-family: "Comic Sans MS", cursive; font-size: 16px; color: #000; } .transparan2{ background:rgba(11,106,203,0.8); font-family: "Comic Sans MS", cursive; font-size: 16px; display: compact; color: #000; } .judul { font-family: "Bauhaus 93"; font-size: 40px; color: #000; display: compact; font-style: normal; line-height: normal; } .tabel { background-image: url(images/background.gif); border-top-color: #000; border-right-color: #000; border-bottom-color: #000; border-left-color: #000; } .user { font-family: "Comic Sans MS", cursive; L15 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L16 font-size: 18px; color: #000; } body { background-color: #FFF; background-image: url(images/batan2.gif); background-repeat: repeat; } --> </style> <link rel="shortcut icon" href="images/favicon(1).ico"/> </head> <body> <table width="1044" height="200" border="0" align="center" class="transparan" style="border: 4px outset #3d85c6; border-radius:15px"> <tr> <td width="750"><p align="center" class="judul">SELAMAT DATANG</p> <p align="left" class="foot">&nbsp;</p></td> <td width="284"> <form id="form1" name="form1" method="post" action="cek_login.php"> <div align="right"> <table cellspacing="5" cellpadding="5" > <tr> <td class="user">Username</td> <td>:</td> <td><label> <input type="text" name="username" id="username" /> </label></td> </tr> <tr> <td class="user">Password</td> <td>:</td> <td><label> <input type="password" name="password" id="password" /> </label></td> </tr> <tr align="right"> <td colspan="3"><label> <input type="submit" name="login" id="login" value="Login" /> </label></td> </tr> </table> </div></form> </td> </tr> </table> </body> </html> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L17 cek_login.php <?php // pemanggilan file koneksi include "koneksi.php"; // pembuatan variabel pada penginputan username dan password $username = $_POST['username']; $pass = $_POST['password']; // cek identitas IP Address $user_ip = '-'; if (!empty($_SERVER['HTTP_CLIENT_IP'])) {$user_ip=$_SERVER['HTTP_CLIENT_IP'];} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {$user_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];} else {$user_ip=$_SERVER['REMOTE_ADDR'];} function getUserIP() { $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) {$ip = $client;} elseif(filter_var($forward, FILTER_VALIDATE_IP)) {$ip = $forward;} else {$ip = $remote;} return $ip; } $user_ip = getUserIP(); // Pengecekan user id dan password dengan yang ada di database $login=mysql_query("SELECT * FROM hak_akses WHERE username='$username' AND password='$pass'"); $ketemu = mysql_num_rows($login); $r=mysql_fetch_array($login); if(($r[0]==$username)&&($r[1]==$pass)) { if($r[2]!=$user_ip&&$r[2]!=0) { echo '<script language="javascript">alert("Anda Sudah Login Di Komputer Lain!!")</script>'; echo '<script language="javascript">window.location = "index.php"</script>'; } else if ($r[2]==0) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI mysql_query("UPDATE hak_akses SET username='$username' AND password='$pass'"); session_start (); $_SESSION[username] = $r[username]; $_SESSION[password] = $r[password]; $_SESSION[expire] = time() + (30 * 60) ; $_SESSION[user_ip]= $user_ip; if(($r[0]=="admin")||($r[0]=="manager")) {header('location:tampil.php');} else if ($r[0]=="resepsionis") {header('location:pendaftaran.php');} } user_ip='$user_ip' else if($r[2]==$user_ip) { session_start (); $_SESSION[username] = $r[username]; $_SESSION[password] = $r[password]; $_SESSION[last_access] = time(); $_SESSION[leveluser]= $r[level]; $_SESSION[user_ip]= $user_ip; if(($r[0]=="admin")||($r[0]=="manager")) {header('location:tampil.php');} else if ($r[0]=="resepsionis") {header('location:pendaftaran.php');} } } else { mysql_query("DELETE FROM pengunjung WHERE identitas='$user_ip'"); echo "<center>LOGIN GAGAL <br> Username atau Password Anda Tidak benar Atau Account Anda Sedang Diblokir<br> "; echo "<a href='index.php'>Ulangi Lagi</a>"; } ?> koneksi.php <?php $server= "localhost"; $username = "root"; $password = ""; $database = "rfid"; mysql_connect($server,$username,$password) or die ("Koneksi Gagal"); mysql_select_db($database) or die ("Database Tidak Bisa Di Buka " ); ?> L18 WHERE PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 3 LISTING PROGRAM HALAMAN PENDAFTARAN L19 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L20 pendaftaran.php <?php date_default_timezone_set('Asia/Jakarta'); $tanggal_server=date("j"); $bulan_server=date("n"); $tahun_server=date("Y"); $jam_server=date("G"); $menit_server=date("i"); session_start(); if (!isset($_SESSION['username'])) { echo '<script language="javascript">alert("Anda Belum Login.. Silahkan Login Dahulu..!!")</script>'; echo '<script language="javascript">window.location = "index.php"</script>'; } if (($_SESSION['username']=="admin")||($_SESSION['username']=="manager")) { echo '<script language="javascript">alert("Anda Tidak Memiliki Hak Akses Ke Sini")</script>'; echo '<script language="javascript">window.location = "tampil.php"</script>'; } else { ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Reservasi Kamar</title> <script type="text/javascript"> function tambah_nol (nilai) { if (nilai<10) {nilai="0"+nilai;} return nilai; } function validasi_input(form) { var months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember']; var date = new Date(); var day = tambah_nol(date.getDate()); var month = tambah_nol(date.getMonth()+1); var yy = tambah_nol(date.getYear()); var year = (yy < 1000) ? yy + 1900 : yy; var hour = tambah_nol(date.getHours()); var minute = tambah_nol(date.getMinutes()); var waktu_server =year+"+"+month+"+"+day; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L21 var check_in =tambah_nol(tahun_in.value)+"+"+tambah_nol(bulan_in.value)+"+"+tambah_nol(tanggal _in.value); var check_out =tambah_nol(tahun_out.value)+"+"+tambah_nol(bulan_out.value)+"+"+tambah_nol(tang gal_out.value); if (nama.value=="") { alert("Nama Harus Diisi"); nama.focus(); return (false); } else if (kamar.value=="") { alert("Silakan pilih kamar"); kamar.focus(); return (false); } else if (tanggal_in.value=="") { alert("Tanggal Check In Harus Diisi"); tanggal_in.focus(); return (false); } else if (bulan_in.value=="") { alert("Bulan Check In Harus Diisi"); bulan_in.focus(); return (false); } else if (tahun_in.value=="") { alert("Tahun Check In Harus Diisi"); tahun_in.focus(); return (false); } else if (jam_in.value=="") { alert("Jam Check In Harus Diisi"); jam_in.focus(); return (false); } else if (menit_in.value=="") { alert("Menit Check In Harus Diisi"); menit_in.focus(); return (false); } else if (tanggal_out.value=="") { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L22 alert("Tanggal Check Out Harus Diisi"); tanggal_out.focus(); return (false); } else if (bulan_out.value=="") { alert("Bulan Check Out Harus Diisi"); bulan_out.focus(); return (false); } else if (tahun_out.value=="") { alert("Tahun Check Out Harus Diisi"); tahun_out.focus(); return (false); } else if (jam_out.value=="") { alert("Jam Check Out Harus Diisi"); jam_out.focus(); return (false); } else if (menit_out.value=="") { alert("Menit Check Out Harus Diisi"); menit_out.focus(); return (false); } if (check_in<waktu_server) { alert("Waktu Check In Tidak Valid"); tanggal_in.focus(); return (false); } if (check_out<check_in) { alert("Waktu Check Out Tidak Valid"); tanggal_out.focus(); return (false); } return (true); } </script> </head> <body> <form id="form1" name="form1" method="get" onsubmit="return validasi_input(form1)" action="lihatdata9.php"> <table width="718" border="1" align="center"> <tr> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <th colspan="3" scope="row">PENDAFTARAN KAMAR HOTEL</th> </tr> <tr> <th width="145" scope="row"><div align="left">NAMA</div></th> <td width="26"><div align="center">:</div></td> <td width="525"><div align="left"><label> <input type="text" name="nama" id="nama" size="75"/> </label></div></td> </tr> <tr> <th scope="row"><div align="left">KAMAR</div></th> <td><div align="center">:</div></td> <td><div align="left"><select name="kamar" id="kamar"> <option value="" selected="selected">--</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div></td> </tr> <tr> <th scope="row"><div align="left">CHECK IN</div></th> <td><div align="center">:</div></td> <td><div align="left"> <select name="tanggal_in" id="tanggal_in"> <option value="">(tgl)</option> <?php for($tanggal_in=1;$tanggal_in<=31;$tanggal_in++){ echo "<option value=$tanggal_in>$tanggal_in</option>"; } ?> </select> <select name="bulan_in" id="bulan_in"> <option value="">(bulan)</option> <option value="1">Januari</option> <option value="2">Februari</option> <option value="3">Maret</option> <option value="4">April</option> <option value="5">Mei</option> <option value="6">Juni</option> <option value="7">Juli</option> <option value="8">Agustus</option> <option value="9">September</option> <option value="10">Oktober</option> <option value="11">November</option> <option value="12">Desember</option> </select> <select name="tahun_in" id="tahun_in"> <option value="">(tahun)</option> <?php L23 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for($tahun_in=2015;$tahun_in<=2020;$tahun_in++) { echo "<option value=$tahun_in>$tahun_in</option>"; } ?> </select> <select name="jam_in" id="jam_in"> <option value="13">13</option> </select> : <select name="menit_in" id="menit_in"> <option value="0">00</option> </select> </div></td> </tr> <tr> <th scope="row"><div align="left">CHECK OUT</div></th> <td><div align="center">:</div></td> <td><div align="left"> <select name="tanggal_out" id="tanggal_out"> <option value="">(tgl)</option> <?php for($tanggal_out=1;$tanggal_out<=31;$tanggal_out++){ echo "<option value=$tanggal_out>$tanggal_out</option>"; } ?> </select> <select name="bulan_out" id="bulan_out"> <option value="">(bulan)</option> <option value="1">Januari</option> <option value="2">Februari</option> <option value="3">Maret</option> <option value="4">April</option> <option value="5">Mei</option> <option value="6">Juni</option> <option value="7">Juli</option> <option value="8">Agustus</option> <option value="9">September</option> <option value="10">Oktober</option> <option value="11">November</option> <option value="12">Desember</option> </select> <select name="tahun_out" id="tahun_out"> <option value="">(tahun)</option> <?php for($tahun_out=2015;$tahun_out<=2020;$tahun_out++) { echo "<option value=$tahun_out>$tahun_out</option>"; } ?> L24 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI </select> <select name="jam_out" id="jam_out"> <option value="12">12</option> </select> : <select name="menit_out" id="menit_out"> <option value="0">00</option> </select> </div></td> </tr> </table> <div align="center"> <table width="508" border="0"> <tr> <th scope="row"><div align="right"> <input type="submit" name="simpan" id="simpan" value="Simpan" /> </div> </label></th> </tr> </table> </div> <p><center><a href="logout.php">Logout</a></center></p> </form> </body> </html> <?php } ?> lihatdata9.php <?php { // pemanggilan file koneksi include "koneksi.php"; $i=1; $baris=1; $check_in_before=0; $check_in_now=0; $check_out_before=0; $check_out_now=0; $sebelum_satu=0; function tambah_nol ($nilai) { if ($nilai<10) {$nilai="0".$nilai;} return $nilai; } //baca waktu server date_default_timezone_set('Asia/Jakarta'); L25 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L26 $tanggal_server=tambah_nol(date("j")); $bulan_server=tambah_nol(date("n")); $tahun_server=tambah_nol(date("Y")-2000); $jam_server=tambah_nol(date("G")); $menit_server=tambah_nol(date("i")); $waktu_server=$tahun_server."-".$bulan_server."-".$tanggal_server." ".$jam_server.":".$menit_server; //ambil waktu check_in $nama =$_GET['nama']; $room =$_GET['kamar']; $tanggal_in =tambah_nol($_GET['tanggal_in']); $bulan_in =tambah_nol($_GET['bulan_in']); $tahun_in =$_GET['tahun_in']; $tahun_in =tambah_nol($_GET['tahun_in']-2000); $jam_in =tambah_nol($_GET['jam_in']); $menit_in =tambah_nol($_GET['menit_in']); $check_in =$tahun_in."-".$bulan_in."-".$tanggal_in." ".$jam_in.":".$menit_in; $kirim_check_in=$tahun_in."+".$bulan_in."+".$tanggal_in."+".$jam_in."+".$menit_in; //ambil waktu check_out $tanggal_out=tambah_nol($_GET['tanggal_out']); $bulan_out =tambah_nol($_GET['bulan_out']); $tahun_out =$_GET['tahun_out']; $tahun_out =tambah_nol($_GET['tahun_out']-2000); $jam_out =tambah_nol($_GET['jam_out']); $menit_out =tambah_nol($_GET['menit_out']); $check_out =$tahun_out."-".$bulan_out."-".$tanggal_out." ".$jam_out.":".$menit_out; $kirim_check_out=$tahun_out."+".$bulan_out."+".$tanggal_out."+".$jam_out."+".$menit _out; // Pengecekan tersedia tidaknya pemesanan kamar $lihat=mysql_query("SELECT * FROM daftar2 ORDER BY nomor DESC LIMIT 0,1"); $kolom=mysql_fetch_array($lihat); $nomor=$kolom[8]+1; $lihat=mysql_query("SELECT * FROM daftar2 WHERE kamar='$room' ORDER BY antrian DESC LIMIT 0,1"); $kolom=mysql_fetch_array($lihat); $antrian_max=$kolom[4]; if ($antrian_max=="") { mysql_query("INSERT INTO daftar2 SET nama='$nama', kamar='$room', check_in='$check_in', check_out='$check_out', kirim_in='$kirim_check_in', kirim_out='$kirim_check_out', antrian='1', status='1', nomor='$nomor'"); $url='http://192.168.1.15/?r='.$room.'&&x='.$kirim_check_in.'&&y='.$kirim_check_out; /*echo '<script language="javascript">alert("Data Telah Disimpan")</script>'; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L27 echo '<script language="javascript">window.location = "pendaftaran.php"</script>';*/ //echo "$kirim_check_in<br>"; //echo "$kirim_check_out<br>"; //header('Refresh:5 ; location:'.$url); header('location:'.$url); } else { for($baris=1;$baris<=$antrian_max;$baris++) { $lihat=mysql_query("SELECT * FROM daftar2 WHERE kamar='$room' && antrian='$baris'"); $kolom=mysql_fetch_array($lihat); $check_in_now=$kolom[2]; $check_out_now=$kolom[3]; if (($check_in>$check_out_before)&&($check_in<$check_in_now)) { if(($baris==1)&&($kolom[5]==1)) { $sebelum_satu=1; mysql_query("UPDATE daftar2 SET status='' WHERE kamar='$room' && status='1'"); } $benar=1; $baris=$antrian_max+1; } else if (($baris==$antrian_max)&&($check_in>$check_out_before)&&($check_in>$ check_out_now)) { $benar=1;} else { $benar=0; } //if(($benar==0)&&($baris==$antrian_max)&&($antrian_max>1)) //{$benar=1;} $check_in_before=$check_in_now; $check_out_before=$check_out_now; } if ($sebelum_satu==1) { mysql_query("INSERT INTO daftar2 SET nama='$nama', kamar='$room', check_in='$check_in', check_out='$check_out', kirim_in='$kirim_check_in', kirim_out='$kirim_check_out', status='1', nomor='$nomor'"); $ambil=mysql_query("SELECT * FROM daftar2 WHERE kamar='$room' ORDER BY check_in ASC"); while($cek=mysql_fetch_array($ambil)) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L28 $antri=$cek[2]; mysql_query("UPDATE daftar2 SET antrian='$i' WHERE kamar='$room' && check_in='$antri'"); //echo "$baris[2] $baris[4]<br>"; $i++; } $url='http://192.168.1.15/?r='.$room.'&&x='.$kirim_check_in.'&&y='.$kirim_check_out; //echo "$kirim_check_in<br>"; //echo "$kirim_check_out<br>"; //header('Refresh:5 ; location=$url'); header('location:'.$url); /*echo '<script language="javascript">alert("Data Telah Disimpan")</script>'; echo '<script language="javascript">window.location = "pendaftaran.php"</script>'; */ } else if ($benar==1) { mysql_query("INSERT INTO daftar2 SET nama='$nama', kamar='$room', check_in='$check_in', check_out='$check_out', kirim_in='$kirim_check_in', kirim_out='$kirim_check_out', nomor='$nomor'"); $ambil=mysql_query("SELECT * FROM daftar2 WHERE kamar='$room' ORDER BY check_in ASC"); while($cek=mysql_fetch_array($ambil)) { $antri=$cek[2]; mysql_query("UPDATE daftar2 SET antrian='$i' WHERE kamar='$room' && check_in='$antri'"); //echo "$baris[2] $baris[4]<br>"; $i++; } echo '<script language="javascript">alert("Data Telah Disimpan")</script>'; echo '<script language="javascript">window.location = "pendaftaran.php"</script>'; } else { echo '<script language="javascript">alert("Kamar '.$room.' sudah digunakan/dipesan")</script>'; echo '<script language="javascript">window.location = "pendaftaran.php"</script>'; } } } ?> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 4 LISTING PROGRAM HALAMAN PENAMPIL PEREKAMAN DATA AKSES KAMAR HOTEL L29 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L30 ambil.php <?php session_start(); include "koneksi.php"; //$link=Conection(); $name=$_GET['pengguna']; $hari=$_GET['hari']; $tanggal=$_GET['tanggal']; $jam=$_GET['jam']; $kamar=$_GET['kamar']; $lihat=mysql_query("SELECT * FROM masukan ORDER BY nomor DESC LIMIT 0,1"); $kolom=mysql_fetch_array($lihat); $nomor=$kolom[5]+1; $Sql=mysql_query("INSERT INTO masukan SET pengguna='$name', hari='$hari', tanggal='$tanggal', jam='$jam', kamar='$kamar', nomor='$nomor'"); header("Location: tampil.php"); ?> tampil.php <html> <?php session_start(); if (!isset($_SESSION['username'])) { echo '<script language="javascript">alert("Anda Belum Login.. Silahkan Login Dahulu..!!")</script>'; echo '<script language="javascript">window.location = "index.php"</script>'; } else { ?> <head><title>Perekaman Data Akses Kamar Hotel</title> <style type="text/css"> <!-.badan { font-family: "Comic Sans MS", cursive; font-size: 24px; } .logout { font-family: "Comic Sans MS", cursive; font-size: 12px; font-style: normal; line-height: normal; text-decoration: underline; } --> </style> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L31 </head> <body class="badan"> <center> <p>PEREKAMAN DATA AKSES KAMAR HOTEL</p> <p class="logout"><a href="logout.php">logout</a></p> </center> <table border=1 align="center" cellpadding=2 cellspacing=2> <tr> <th>No</th><th>Identitas</th><th>Hari dan Tanggal</th><th>Waktu</th><th>Kamar Yang Dimasuki</th> </tr> <?php header ("Refresh:2"); include "koneksi.php"; $no=1; $ambil="SELECT * FROM masukan ORDER BY tanggal ASC,jam ASC"; $query=mysql_query($ambil); while($row=mysql_fetch_array($query)) { $hari=$row[1]; $kamar=$row[4]; switch($hari) { case 1: $day="Minggu"; break; case 2: $day="Senin"; break; case 3: $day="Selasa"; break; case 4: $day="Rabu"; break; case 5: $day="Kamis"; break; case 6: $day="Jumat"; break; case 7: $day="Sabtu"; break; } echo "<tr><td>$no</td><td>$row[0]</td><td>$day, $row[2]</td><td>$row[3]</td><td>$row[4]</td></tr>"; $no++; } ?> </table> </body> </html> <?php } ?> logout.php <?php session_start(); include "koneksi.php"; $a=$_SESSION['username']; $b=$_SESSION['password']; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI mysql_query("UPDATE hak_akses SET password='$b'"); unset($_SESSION['username']); unset($_SESSION['password']); session_destroy(); header("location:index.php"); ?> L32 ip='0' WHERE username='$a' AND PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 5 LISTING PROGRAM HALAMAN CHECK OUT L33 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L34 keluar.php <?php date_default_timezone_set('Asia/Jakarta'); $tanggal_server=date("j"); $bulan_server=date("n"); $tahun_server=date("Y"); $jam_server=date("G"); $menit_server=date("i"); session_start(); if (!isset($_SESSION['username'])) { echo '<script language="javascript">alert("Anda Belum Login.. Silahkan Login Dahulu..!!")</script>'; echo '<script language="javascript">window.location = "index.php"</script>'; } if (($_SESSION['username']=="admin")||($_SESSION['username']=="manager")) { echo '<script language="javascript">alert("Anda Tidak Memiliki Hak Akses Ke Sini")</script>'; echo '<script language="javascript">window.location = "tampil.php"</script>'; } else { ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Halaman Check Out</title> <style type="text/css"> <!-.judul { font-family: "Comic Sans MS", cursive; font-size: 36px; color: #000; } --> </style> </head> <body> <p class="judul"><center>Halaman Check Out</center></p> <table width="722" border="1" align="center" > <tr> <th width="26" scope="row">No</th> <td width="179"><strong>Nama</strong></td> <td width="70"><strong>Kamar</strong></td> <td width="146"><strong>Check In</strong></td> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L35 <td width="146"><strong>Check Out</strong></td> <td width="115"><strong>Status</strong></td> </tr> <?php header ("Refresh:2"); include "koneksi.php"; $no=1; $ambil="SELECT * FROM daftar2 ORDER BY kamar, antrian ASC"; $query=mysql_query($ambil); while($row=mysql_fetch_array($query)) { echo ""; echo "<tr><td>$no</td><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td >"; if ($row[5]=="1") {echo "<td><center><a href='proses_keluar.php?kamar=$row[1]&&status=$row[5]'>Check Out</a></center></td></tr>";} else {echo "<td>&nbsp;</td></tr>";} $no++; } ?> </table> </body> </html> <?php } ?> proses_keluar.php <?php include "koneksi.php"; $kamar=$_GET['kamar']; $status=$_GET['status']; $i=1; //echo "$kamar <br>"; //echo "$status <br>"; $lihat=mysql_query("DELETE FROM daftar2 WHERE kamar='$kamar' status='$status'"); $ambil=mysql_query("SELECT * FROM daftar2 WHERE kamar='$kamar'"); $kolom=mysql_num_rows($ambil); if ($kolom==0) { $kirim_check_in='00+00+00+00+00'; $kirim_check_out='00+00+00+00+00'; AND $url='http://192.168.1.15/?r='.$kamar.'&&x='.$kirim_check_in.'&&y='.$kirim_check_out; header('location:'.$url); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L36 } else { $ambil=mysql_query("SELECT * FROM daftar2 WHERE kamar='$kamar' ORDER BY antrian ASC"); while($kolom=mysql_fetch_array($ambil)) { $ubah=$kolom[4]-1; $i++; //echo "$ubah"; if($ubah==1) { $status=1; //echo "$status<br>"; $kirim_check_in=$kolom[6]; $kirim_check_out=$kolom[7]; $url='http://192.168.1.15/?r='.$kamar.'&&x='.$kirim_check_in.'&&y='.$kirim_check_out; mysql_query("UPDATE daftar2 SET antrian='$ubah', status='$status' WHERE kamar='$kamar' && antrian='$i'"); header('location:'.$url); } else { $status=0; //echo "$status<br>"; mysql_query("UPDATE daftar2 SET antrian='$ubah' WHERE kamar='$kamar' && antrian='$i'"); } } } ?> PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L37 LAMPIRAN 6 HASIL PENGAMBILAN DATA PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L38 Hasil Pengambilan Data Error muncul di sini PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L39 Hasil Pengambilan Data (lanjutan) Error muncul di sini PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hasil Pengambilan Data (lanjutan) L40 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 7 RFID SL018 DATASHEET L41 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI RFID MODULE Mifare Reader / Writer SL018 User Manual Version 2.0 Nov 2012 StrongLink L42 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L43 CONTENT 1. MAIN FEATURES ....................................................................................................... 3 2. PINNING INFORMATION ........................................................................................ 4 3. DEVICE OPERATION ................................................................................................ 5 3-1. 3-2. 3-3. 3-4. 3-5. 3-6. 3-7. 3-8. CLOCK AND DATA TRANSITIONS:..................................................................... 5 START CONDITION ................................................................................................ 5 STOP CONDITION ................................................................................................... 5 ACKNOWLEDGE ..................................................................................................... 5 BUSY STATE ............................................................................................................ 6 DEVICE ADDRESSING ........................................................................................... 6 WRITE OPERATIONS .............................................................................................. 6 READ OPERATIONS ............................................................................................... 6 4. COMMAND DESCRIPTION...................................................................................... 7 4-1. FORMAT.................................................................................................................... 7 4-2. COMMAND OVERVIEW......................................................................................... 8 4-3. COMMAND LIST ..................................................................................................... 9 4-3-1. Select Mifare card .................................................................................................... 9 4-3-2. Login to a sector ....................................................................................................... 9 4-3-3. Read a data block ..................................................................................................... 9 4-3-4. Write a data block .................................................................................................. 10 4-3-5. Read a value block ................................................................................................. 10 4-3-6. Initialize a value block ........................................................................................... 10 4-3-7. Write master key (KeyA) ....................................................................................... 11 4-3-8. Increment value ...................................................................................................... 11 4-3-9. Decrement value ..................................................................................................... 11 4-3-10. Copy value............................................................................................................ 12 4-3-11. Read a data page (UltraLight) .............................................................................. 12 4-3-12. Write a data Page (UltraLight) ............................................................................. 12 4-3-13. Control Red Led ................................................................................................... 13 4-3-14. Reset ..................................................................................................................... 13 4-3-15. Get firmware version ............................................................................................ 13 http://www.stronglink-rfid.com 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L44 1. MAIN FEATURES • Tags supported: Mifare 1k, Mifare 4k, Mifare UltraLight and NFC NATG203 • Auto detecting tag • Integrated antenna • 0 to 400 KHz bit-wide I2C bus communication • 4.5 to 7.0 VDC supply voltage • Operating distance: Up to 60 mm, depending on tag • Storage temperature: -40 ºC ~ +85 ºC • Operating temperature: -20 ºC ~ +70 ºC • Dimension: 65 × 45 × 7 mm • The TagSta pin at low level indicates tag in detective range, and high level indicating tag out http://www.stronglink-rfid.com 3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L45 2. PINNING INFORMATION PIN SYMBOL TYPE 1 TagSta Output 2 3 4 5 SDA SLC VCC GND Input/Output Input PWR PWR http://www.stronglink-rfid.com DESCRIPTION Tag detect signal low level indicating tag in high level indicating tag out Serial Data Line Serial Clock Line Power Supply Ground 4 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L46 3. DEVICE OPERATION 3-1. CLOCK AND DATA TRANSITIONS: The SDA pin is normally pulled high with an external device. Data on the SDA pin may change only during SCL low time periods. Data changes during SCL high periods will indicate a start or stop condition as defined below. 3-2. START CONDITION A high-to-low transition of SDA with SCL high is a start condition which must precede any other command 3-3. STOP CONDITION A low-to-high transition of SDA with SCL high is a stop condition. 3-4. ACKNOWLEDGE All addresses and data words are serially transmitted to and from the SL018 in 8-bit words. The SL018 sends a zero to acknowledge that it is not busy,and has received each word. This happens during the ninth clock cycle. http://www.stronglink-rfid.com 5 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L47 3-5. BUSY STATE When the SL018 has received command, then don’t acknowledge IIC bus until ends with the card communication. 3-6. DEVICE ADDRESSING The SL018 devices require an 8-bit device address word following a start condition to enable the chip for a read or write operation. The device address word consists of 7 bits addressing and 1 bit operation select bit. The first 7 bits are the SL018 addressing, is 1010000 The eighth bit of the device address is the read/write operation select bit. A read operation is initiated if this bit is high and a write operation is initiated if this bit is low. 3-7. WRITE OPERATIONS The host device send a command(refer chapter 4) to SL018 via write operation, then SL018 will carry out the order that receive. Finished time according to different order 3-8. READ OPERATIONS The host device passes to read the operation gets the order carries out the result http://www.stronglink-rfid.com 6 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L48 4. COMMAND DESCRIPTION 4-1. FORMAT Host Write Command to SL018: Address Len Command Data Address: 1 byte, 0xA0 Len: 1 byte, indicating the bytes number from Command code to the end of Data Command: 1 byte Command code, see Table 3 Data: Variable length depends on the command type Host Read The Result: Address Len Command Status Data Address: 1 byte, 0xA1 Len: 1 byte, indicating the bytes number from Command code to the end of Data Command: 1 byte Command code, see Table 3 Status: 1 byte Command status, see Table 4 Data: Variable length depends on the command type. http://www.stronglink-rfid.com 7 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L49 4-2. COMMAND OVERVIEW Table 3 Command Description 0x01 Select Mifare card 0x02 Login to a sector 0x03 Read a data block 0x04 Write a data block 0x05 Read a value block 0x06 Initialize a value block 0x07 Write master key (key A) 0x08 Increment value 0x09 Decrement value 0x0A Copy value 0x10 Read a data page (Ultralight & NTAG203) 0x11 Write a data page (Ultralight & NTAG203) 0x40 Control the red led 0xF0 Get firmware version 0xFF Reset STATUS OVERVIEW Table 4 Status Description 0x00 Operation succeed 0x01 No tag 0x02 Login succeed 0x03 Login fail 0x04 Read fail 0x05 Write fail 0x06 Unable to read after write 0x0A Collision occur 0x0C Load key fail 0x0D Not authenticate 0x0E Not a value block http://www.stronglink-rfid.com 8 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L50 4-3. COMMAND LIST 4-3-1. Select Mifare card Host Write: Len 0x01 Host Read: Len 0x01 Status UID Type Status: 0x00: Operation succeed 0x01: No tag 0x0A: Collision occur UID: The uniquely serial number of Mifare card Type: 0x01: Mifare 1k, 4 byte UID 0x02: Mifare 1k, 7 byte UID [1] 0x03: Mifare UltraLight or NATG203 [2], 7 byte UID 0x04: Mifare 4k, 4 byte UID 0x05: Mifare 4k, 7 byte UID [1] 0x06: Mifare DesFire, 7 byte UID 0x0A: Other 4-3-2. Login to a sector Host Write: Len 0x02 Sector Type Key Sector: Sector need to login Type: Key type (0xAA: authenticate with KeyA, 0xBB: authenticate with KeyB) Key: Authenticate key, 6 bytes Host Read: Len 0x02 Status Status: 0x02: Login succeed 0x01: No tag 0x03: Login fail 0x0C: Load key fail 4-3-3. Read a data block Host Write: Len 0x03 Block Block: The block number to be read, 1 byte Host Read: Len 0x03 Status Data Status: 0x00: Operation succeed 0x04: Read fail 0x0D: Not authenticate 0x01: No tag Data: Block data returned if operation succeeds, 16 bytes. http://www.stronglink-rfid.com 9 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L51 4-3-4. Write a data block Host Write: Len 0x04 Block Data Block: The block number to be written, 1 byte. Data: The data to write, 16 bytes. Host Read: Len 0x04 Status Data Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x07: Read after write error 0x0D: Not authenticate Data: Block data written if operation succeeds, 16 bytes. 4-3-5. Read a value block Host Write: Len 0x05 Block Block: The block number to be read, 1 byte. Host Read: Len 0x05 Status Value Status: 0x00: Operation succeed 0x01: No tag 0x04: Read fail 0x0D: Not authenticate 0x0E: Not a value block Value: Value returned if the operation succeeds, 4 bytes. 4-3-6. Initialize a value block Host Write: Len 0x06 Block Value Block: The block number to be initialized, 1 byte. Value: The value to be written, 4 bytes. Host Read: Len 0x06 Status Value Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x07: Read after write error 0x0D: Not authenticate Value: Value written if the operation succeeds, 4 bytes. http://www.stronglink-rfid.com 10 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L52 4-3-7. Write master key (KeyA) Host Write: Len 0x07 Sector Key Sector: The sector number to be written, 1 byte. Key: Authentication key, 6 bytes Host Read: Len 0x07 Status Key Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x0D: Not authenticate Key: Authentication key written if the operation succeeds, 6 bytes. 4-3-8. Increment value Host Write: Len 0x08 Block Value Block: The block number to be increased, 1 byte. Value: The value to be increased by, 4 bytes. Host Read: Len 0x08 Status Value Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x0D: Not authenticate 0x0E: Not a value block Value: The value after increment if the operation succeeds, 4 bytes 4-3-9. Decrement value Host Write: Len 0x09 Block Value Block: The block number to be decreased, 1 byte Value: The value to be decreased by, 4 bytes Host Read: Len 0x09 Status Value Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x0D: Not authenticate 0x0E: Not a value block Value: The value after decrement if the operation succeeds, 4 bytes http://www.stronglink-rfid.com 11 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L53 4-3-10. Copy value Host Write: Len 0x0A Source Destination Source: The source block copy from, 1 byte Destination: The destination copy to, 1 byte The source and destination must in the same sector Host Read: Len 0x0A Status Value Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x0D: Not authenticate 0x0E: Not a value block (Source) Value: The value after copy if the operation succeeds, 4 bytes 4-3-11. Read a data page (UltraLight & NTAG203) Host Write: Len 0x10 Page Page: The page number to be read, 1 byte Host Read: Len 0x10 Status Data Status: 0x00: Operation succeed 0x01: No tag 0x04: Read fail Data: Block data returned if operation succeeds, 4 bytes. 4-3-12. Write a data Page (UltraLight & NTAG203) Host Write: Len 0x11 Page Data Page: The page number to be written, 1 byte. Data: The data to write, 4 bytes. Host Read: Len 0x11 Status Data Status: 0x00: Operation succeed 0x01: No tag 0x05: Write fail 0x06: Unable to read after write 0x07: Read after write error Data: page data written if operation succeeds, 4 bytes. http://www.stronglink-rfid.com 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L54 4-3-13. Control Red Led Host Write: Len 0x40 Code Code: 0 command red led turn off , other red led turn on, 1 byte Host Read: Len 0x40 Status Status: 0x00: Operation succeed 4-3-14. Reset Host Write: Len 0xFF No return 4-3-15. Get firmware version Host Write: Len 0xF0 Host Read: [3] Len 0xF0 Status Data Status: 0x00: Operation succeed Data: firmware version. http://www.stronglink-rfid.com 13 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L55 Remark [1] In order to support 7 byte UID Mifare class, the firmware of SL018 has been updated to Ver2.2 in Mar 2011. And older firmware version (such as Ver1.0, 1.6, 2.0, etc) only supports 4 byte UID. Please refer to NXP Customer Letter UID for detailed information of 4 byte & 7 byte UID of Mifare products. [2] To support NATG203, the firmware of SL030 has been updated to Ver2.3 in Oct 2012. The older firmware version only supports reading/writing data page address less than 16. [3] One sample of SL018 response Len Command HEX ASCII 0B http://www.stronglink-rfid.com F0 Status 00 Data (Firmware version) 53 4C 30 31 38 2D 32 2E 32 “SL018-2.2” 14 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 8 RTC DS1307 DATASHEET L56 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L57 DS1307 64 x 8 Serial Real-Time Clock www.maxim-ic.com FEATURES § § § § § § § § § PIN ASSIGNMENT Real-time clock (RTC) counts seconds, minutes, hours, date of the month, month, day of the week, and year with leap-year compensation valid up to 2100 56-byte, battery-backed, nonvolatile (NV) RAM for data storage Two-wire serial interface Programmable squarewave output signal Automatic power-fail detect and switch circuitry Consumes less than 500nA in battery backup mode with oscillator running Optional industrial temperature range: -40°C to +85°C Available in 8-pin DIP or SOIC Underwriters Laboratory (UL) recognized ORDERING INFORMATION DS1307 DS1307Z DS1307N DS1307ZN 8-Pin DIP (300-mil) 8-Pin SOIC (150-mil) 8-Pin DIP (Industrial) 8-Pin SOIC (Industrial) X1 l 8 VCC X2 VBAT 2 7 SQW/OUT 3 6 SCL GND 4 5 SDA DS1307 8-Pin DIP (300-mil) X1 l 8 VCC X2 VBAT 2 7 SQW/OUT 3 6 SCL GND 4 5 SDA DS1307 8-Pin SOIC (150-mil) PIN DESCRIPTION VCC X1, X2 VBAT GND SDA SCL SQW/OUT - Primary Power Supply - 32.768kHz Crystal Connection - +3V Battery Input - Ground - Serial Data - Serial Clock - Square Wave/Output Driver DESCRIPTION The DS1307 Serial Real-Time Clock is a low-power, full binary-coded decimal (BCD) clock/calendar plus 56 bytes of NV SRAM. Address and data are transferred serially via a 2-wire, bi-directional bus. The clock/calendar provides seconds, minutes, hours, day, date, month, and year information. The end of the month date is automatically adjusted for months with fewer than 31 days, including corrections for leap year. The clock operates in either the 24-hour or 12-hour format with AM/PM indicator. The DS1307 has a built-in power sense circuit that detects power failures and automatically switches to the battery supply. 1 of 12 100101 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L58 DS1307 TYPICAL OPERATING CIRCUIT OPERATION The DS1307 operates as a slave device on the serial bus. Access is obtained by implementing a START condition and providing a device identification code followed by a register address. Subsequent registers can be accessed sequentially until a STOP condition is executed. When VCC falls below 1.25 x VBAT the device terminates an access in progress and resets the device address counter. Inputs to the device will not be recognized at this time to prevent erroneous data from being written to the device from an out of tolerance system. When VCC falls below VBAT the device switches into a low-current battery backup mode. Upon power-up, the device switches from battery to VCC when VCC is greater than VBAT + 0.2V and recognizes inputs when VCC is greater than 1.25 x VBAT. The block diagram in Figure 1 shows the main elements of the serial RTC. DS1307 BLOCK DIAGRAM Figure 1 2 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L59 DS1307 SIGNAL DESCRIPTIONS VCC, GND – DC power is provided to the device on these pins. VCC is the +5V input. When 5V is applied within normal limits, the device is fully accessible and data can be written and read. When a 3V battery is connected to the device and VCC is below 1.25 x VBAT, reads and writes are inhibited. However, the timekeeping function continues unaffected by the lower input voltage. As VCC falls below VBAT the RAM and timekeeper are switched over to the external power supply (nominal 3.0V DC) at VBAT. VBAT – Battery input for any standard 3V lithium cell or other energy source. Battery voltage must be held between 2.0V and 3.5V for proper operation. The nominal write protect trip point voltage at which access to the RTC and user RAM is denied is set by the internal circuitry as 1.25 x VBAT nominal. A lithium battery with 48mAhr or greater will back up the DS1307 for more than 10 years in the absence of power at 25ºC. UL recognized to ensure against reverse charging current when used in conjunction with a lithium battery. See “Conditions of Acceptability” at http://www.maxim-ic.com/TechSupport/QA/ntrl.htm. SCL (Serial Clock Input) – SCL is used to synchronize data movement on the serial interface. SDA (Serial Data Input/Output) – SDA is the input/output pin for the 2-wire serial interface. The SDA pin is open drain which requires an external pullup resistor. SQW/OUT (Square Wave/Output Driver) – When enabled, the SQWE bit set to 1, the SQW/OUT pin outputs one of four square wave frequencies (1Hz, 4kHz, 8kHz, 32kHz). The SQW/OUT pin is open drain and requires an external pull-up resistor. SQW/OUT will operate with either Vcc or Vbat applied. X1, X2 – Connections for a standard 32.768kHz quartz crystal. The internal oscillator circuitry is designed for operation with a crystal having a specified load capacitance (CL) of 12.5pF. For more information on crystal selection and crystal layout considerations, please consult Application Note 58, “Crystal Considerations with Dallas Real-Time Clocks.” The DS1307 can also be driven by an external 32.768kHz oscillator. In this configuration, the X1 pin is connected to the external oscillator signal and the X2 pin is floated. RECOMMENDED LAYOUT FOR CRYSTAL 3 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L60 DS1307 CLOCK ACCURACY The accuracy of the clock is dependent upon the accuracy of the crystal and the accuracy of the match between the capacitive load of the oscillator circuit and the capacitive load for which the crystal was trimmed. Additional error will be added by crystal frequency drift caused by temperature shifts. External circuit noise coupled into the oscillator circuit may result in the clock running fast. See Application Note 58, “Crystal Considerations with Dallas Real-Time Clocks” for detailed information. Please review Application Note 95, “Interfacing the DS1307 with a 8051-Compatible Microcontroller” for additional information. RTC AND RAM ADDRESS MAP The address map for the RTC and RAM registers of the DS1307 is shown in Figure 2. The RTC registers are located in address locations 00h to 07h. The RAM registers are located in address locations 08h to 3Fh. During a multi-byte access, when the address pointer reaches 3Fh, the end of RAM space, it wraps around to location 00h, the beginning of the clock space. DS1307 ADDRESS MAP Figure 2 00H SECONDS MINUTES HOURS DAY DATE MONTH YEAR 07H 08H 3FH CONTROL RAM 56 x 8 CLOCK AND CALENDAR The time and calendar information is obtained by reading the appropriate register bytes. The RTC registers are illustrated in Figure 3. The time and calendar are set or initialized by writing the appropriate register bytes. The contents of the time and calendar registers are in the BCD format. Bit 7 of register 0 is the clock halt (CH) bit. When this bit is set to a 1, the oscillator is disabled. When cleared to a 0, the oscillator is enabled. Please note that the initial power-on state of all registers is not defined. Therefore, it is important to enable the oscillator (CH bit = 0) during initial configuration. The DS1307 can be run in either 12-hour or 24-hour mode. Bit 6 of the hours register is defined as the 12- or 24-hour mode select bit. When high, the 12-hour mode is selected. In the 12-hour mode, bit 5 is the AM/PM bit with logic high being PM. In the 24-hour mode, bit 5 is the second 10 hour bit (2023 hours). On a 2-wire START, the current time is transferred to a second set of registers. The time information is read from these secondary registers, while the clock may continue to run. This eliminates the need to reread the registers in case of an update of the main registers during a read. 4 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L61 DS1307 DS1307 TIMEKEEPER REGISTERS Figure 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CONTROL REGISTER The DS1307 control register is used to control the operation of the SQW/OUT pin. BIT 7 OUT BIT 6 0 BIT 5 0 BIT 4 SQWE BIT 3 0 BIT 2 0 BIT 1 RS1 BIT 0 RS0 OUT (Output control): This bit controls the output level of the SQW/OUT pin when the square wave output is disabled. If SQWE = 0, the logic level on the SQW/OUT pin is 1 if OUT = 1 and is 0 if OUT = 0. SQWE (Square Wave Enable): This bit, when set to a logic 1, will enable the oscillator output. The frequency of the square wave output depends upon the value of the RS0 and RS1 bits. With the square wave output set to 1Hz, the clock registers update on the falling edge of the square wave. RS (Rate Select): These bits control the frequency of the square wave output when the square wave output has been enabled. Table 1 lists the square wave frequencies that can be selected with the RS bits. SQUAREWAVE OUTPUT FREQUENCY Table 1 RS1 0 0 1 1 RS0 0 1 0 1 SQW OUTPUT FREQUENCY 1Hz 4.096kHz 8.192kHz 32.768kHz 5 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L62 DS1307 2-WIRE SERIAL DATA BUS The DS1307 supports a bi-directional, 2-wire bus and data transmission protocol. A device that sends data onto the bus is defined as a transmitter and a device receiving data as a receiver. The device that controls the message is called a master. The devices that are controlled by the master are referred to as slaves. The bus must be controlled by a master device that generates the serial clock (SCL), controls the bus access, and generates the START and STOP conditions. The DS1307 operates as a slave on the 2wire bus. A typical bus configuration using this 2-wire protocol is show in Figure 4. TYPICAL 2-WIRE BUS CONFIGURATION Figure 4 Figures 5, 6, and 7 detail how data is transferred on the 2-wire bus. § § Data transfer may be initiated only when the bus is not busy. During data transfer, the data line must remain stable whenever the clock line is HIGH. Changes in the data line while the clock line is high will be interpreted as control signals. Accordingly, the following bus conditions have been defined: Bus not busy: Both data and clock lines remain HIGH. Start data transfer: A change in the state of the data line, from HIGH to LOW, while the clock is HIGH, defines a START condition. Stop data transfer: A change in the state of the data line, from LOW to HIGH, while the clock line is HIGH, defines the STOP condition. Data valid: The state of the data line represents valid data when, after a START condition, the data line is stable for the duration of the HIGH period of the clock signal. The data on the line must be changed during the LOW period of the clock signal. There is one clock pulse per bit of data. Each data transfer is initiated with a START condition and terminated with a STOP condition. The number of data bytes transferred between START and STOP conditions is not limited, and is determined by the master device. The information is transferred byte-wise and each receiver acknowledges with a ninth bit. Within the 2-wire bus specifications a regular mode (100kHz clock rate) and a fast mode (400kHz clock rate) are defined. The DS1307 operates in the regular mode (100kHz) only. 6 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L63 DS1307 Acknowledge: Each receiving device, when addressed, is obliged to generate an acknowledge after the reception of each byte. The master device must generate an extra clock pulse which is associated with this acknowledge bit. A device that acknowledges must pull down the SDA line during the acknowledge clock pulse in such a way that the SDA line is stable LOW during the HIGH period of the acknowledge related clock pulse. Of course, setup and hold times must be taken into account. A master must signal an end of data to the slave by not generating an acknowledge bit on the last byte that has been clocked out of the slave. In this case, the slave must leave the data line HIGH to enable the master to generate the STOP condition. DATA TRANSFER ON 2-WIRE SERIAL BUS Figure 5 Depending upon the state of the R/ W bit, two types of data transfer are possible: 1. Data transfer from a master transmitter to a slave receiver. The first byte transmitted by the master is the slave address. Next follows a number of data bytes. The slave returns an acknowledge bit after each received byte. Data is transferred with the most significant bit (MSB) first. 2. Data transfer from a slave transmitter to a master receiver. The first byte (the slave address) is transmitted by the master. The slave then returns an acknowledge bit. This is followed by the slave transmitting a number of data bytes. The master returns an acknowledge bit after all received bytes other than the last byte. At the end of the last received byte, a “not acknowledge” is returned. The master device generates all of the serial clock pulses and the START and STOP conditions. A transfer is ended with a STOP condition or with a repeated START condition. Since a repeated START condition is also the beginning of the next serial transfer, the bus will not be released. Data is transferred with the most significant bit (MSB) first. 7 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L64 DS1307 The DS1307 may operate in the following two modes: 1. Slave receiver mode (DS1307 write mode): Serial data and clock are received through SDA and SCL. After each byte is received an acknowledge bit is transmitted. START and STOP conditions are recognized as the beginning and end of a serial transfer. Address recognition is performed by hardware after reception of the slave address and *direction bit (See Figure 6). The address byte is the first byte received after the start condition is generated by the master. The address byte contains the 7 bit DS1307 address, which is 1101000, followed by the *direction bit (R/ W ) which, for a write, is a 0. After receiving and decoding the address byte the device outputs an acknowledge on the SDA line. After the DS1307 acknowledges the slave address + write bit, the master transmits a register address to the DS1307 This will set the register pointer on the DS1307. The master will then begin transmitting each byte of data with the DS1307 acknowledging each byte received. The master will generate a stop condition to terminate the data write. DATA WRITE – SLAVE RECEIVER MODE Figure 6 2. Slave transmitter mode (DS1307 read mode): The first byte is received and handled as in the slave receiver mode. However, in this mode, the *direction bit will indicate that the transfer direction is reversed. Serial data is transmitted on SDA by the DS1307 while the serial clock is input on SCL. START and STOP conditions are recognized as the beginning and end of a serial transfer (See Figure 7). The address byte is the first byte received after the start condition is generated by the master. The address byte contains the 7-bit DS1307 address, which is 1101000, followed by the *direction bit (R/ W ) which, for a read, is a 1. After receiving and decoding the address byte the device inputs an acknowledge on the SDA line. The DS1307 then begins to transmit data starting with the register address pointed to by the register pointer. If the register pointer is not written to before the initiation of a read mode the first address that is read is the last one stored in the register pointer. The DS1307 must receive a “not acknowledge” to end a read. DATA READ – SLAVE TRANSMITTER MODE Figure 7 8 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L65 DS1307 ABSOLUTE MAXIMUM RATINGS* Voltage on Any Pin Relative to Ground Storage Temperature Soldering Temperature -0.5V to +7.0V -55°C to +125°C 260°C for 10 seconds DIP See JPC/JEDEC Standard J-STD-020A for Surface Mount Devices * This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operation sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods of time may affect reliability. Range Commercial Industrial Temperature 0°C to +70°C -40°C to +85°C VCC 4.5V to 5.5V VCC1 4.5V to 5.5V VCC1 RECOMMENDED DC OPERATING CONDITIONS (Over the operating range*) PARAMETER Supply Voltage Logic 1 Logic 0 VBAT Battery Voltage *Unless otherwise specified. SYMBOL VCC VIH VIL VBAT MIN 4.5 2.2 -0.5 2.0 TYP 5.0 MAX 5.5 VCC + 0.3 +0.8 3.5 UNITS V V V V NOTES DC ELECTRICAL CHARACTERISTICS (Over the operating range*) PARAMETER Input Leakage (SCL) I/O Leakage (SDA & SQW/OUT) Logic 0 Output (IOL = 5mA) Active Supply Current Standby Current Battery Current (OSC ON); SQW/OUT OFF Battery Current (OSC ON); SQW/OUT ON (32kHz) Power-Fail Voltage *Unless otherwise specified. SYMBOL ILI ILO MIN TYP MAX 1 1 UNITS mA mA V mA mA nA VOL ICCA ICCS IBAT1 300 0.4 1.5 200 500 IBAT2 480 800 nA 1.25 x VBAT 1.284 x VBAT V VPF 1.216 x VBAT 9 of 12 NOTES 7 1 2 8 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L66 DS1307 AC ELECTRICAL CHARACTERISTICS (Over the operating range*) PARAMETER SCL Clock Frequency Bus Free Time Between a STOP and START Condition Hold Time (Repeated) START Condition LOW Period of SCL Clock HIGH Period of SCL Clock Set-up Time for a Repeated START Condition Data Hold Time Data Set-up Time Rise Time of Both SDA and SCL Signals Fall Time of Both SDA and SCL Signals Set-up Time for STOP Condition Capacitive Load for each Bus Line I/O Capacitance (TA = 25ºC) Crystal Specified Load Capacitance (TA = 25ºC) *Unless otherwise specified. SYMBOL fSCL tBUF MIN 0 4.7 tHD:STA tLOW tHIGH tSU:STA tHD:DAT tSU:DAT tR tF tSU:STO CB CI/O TYP MAX 100 UNITS kHz ms NOTES 4.0 4.7 4.0 4.7 ms ms ms ms 3 0 250 ms ns ns ns ms pF 4,5 1000 300 4.7 400 10 pF 12.5 pF 6 NOTES: 1. 2. 3. 4. 5. 6. 7. 8. ICCS specified with VCC = 5.0V and SDA, SCL = 5.0V. VCC = 0V, VBAT = 3V. After this period, the first clock pulse is generated. A device must internally provide a hold time of at least 300ns for the SDA signal (referred to the VIHMIN of the SCL signal) in order to bridge the undefined region of the falling edge of SCL. The maximum tHD:DAT has only to be met if the device does not stretch the LOW period (tLOW) of the SCL signal. CB – Total capacitance of one bus line in pF. ICCA – SCL clocking at max frequency = 100kHz. VPF measured at VBAT = 3.0V. 10 of 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TIMING DIAGRAM Figure 8 DS1307 64 X 8 SERIAL REAL-TIME CLOCK 8-PIN DIP MECHANICAL DIMENSIONS PKG DIM A IN. MM B IN. MM C IN. MM D IN. MM E IN. MM F IN. MM G IN. MM H IN. MM J IN. MM K IN. MM 11 of 12 8-PIN MIN MAX 0.360 0.400 9.14 10.16 0.240 0.260 6.10 6.60 0.120 0.140 3.05 3.56 0.300 0.325 7.62 8.26 0.015 0.040 0.38 1.02 0.120 0.140 3.04 3.56 0.090 0.110 2.29 2.79 0.320 0.370 8.13 9.40 0.008 0.012 0.20 0.30 0.015 0.021 0.38 0.53 L67 DS1307 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DS1307Z 64 X 8 SERIAL REAL-TIME CLOCK 8-PIN SOIC (150-MIL) MECHANICAL DIMENSIONS PKG DIM A IN. MM B IN. MM C IN. MM E IN. MM F IN. MM G IN. MM H IN. MM J IN. MM K IN. MM L IN. MM phi 8-PIN (150 MIL) MIN MAX 0.188 0.196 4.78 4.98 0.150 0.158 3.81 4.01 0.048 0.062 1.22 1.57 0.004 0.010 0.10 0.25 0.053 0.069 1.35 1.75 0.050 BSC 1.27 BSC 0.230 0.244 5.84 6.20 0.007 0.011 0.18 0.28 0.012 0.020 0.30 0.51 0.016 0.050 0.41 1.27 0° 8° 56-G2008-001 12 of 12 L68 DS1307