BAB III
PERANCANGAN SISTEM
3.1 Konfigurasi Sistem
Alat yang dibutuhkan mampu memberikan informasi shio, elemen, dan angka
gua pengguna. Selain itu, sistem harus mampu memberikan informasi untuk setiap arah mata angin yang ditunjuk oleh pengguna, dengan memasukkan tanggal lahir dan jenis kelamin.
Kerja alat dimulai dari pemasukan data pengguna berupa tahun lahir, tahun lahir akan dikurangi dengan angka 1900 kemudian di MOD 12 untuk menghasilkan kategori shio dan di MOD 10 untuk elemen shio. Untuk menghasilkan angka gua, maka dicari angka tahun tunggal terlebih dahulu. Angka tahun tunggal adalah hasil penjumlahan dari tiap tiap bilangan pada tahun. Sebagai contoh, tahun kelahiran= 1989 maka angka tahun tunggalnya adalah 1+9+8+9=27. Angka gua pria adalah bilangan hasil dari pengurangan 11 dengan angka tahun tunggal. Angka gua wanita adalah bilangan hasil dari penjumlahan 4 dengan angka tahun tunggal. Ada beberapa perlakuan khusus, yaitu untuk angka gua sama dengan 5, untuk pria diganti dengan 2, sedangkan untuk wanita diganti dengan 8. Data yang diperoleh dari angka gua digunakan untuk memberikan informasi tentang kualitas dari arah mata angin yang ditunjukkan oleh pengguna, serta saran peletakan interior untuk tiap-tiap arah mata angin.
Informasi arah mata angin diperoleh dari modul kompas CMPS03 . Data diperoleh dengan komunikasi I2C, dan sudut yang terbaca dari 00 hingga 359,90. Sudut tersebut dibagi menjadi 8 mata angin, yaitu timur, tenggara, selatan, barat daya, barat, barat laut, utara, dan timur laut.
3.2 Perancangan Perangkat Keras
CMPS03 push button, hubungan antar rangkaian di tunjukkan oleh Gambar 3.1.
Fungsi dari masing-masing bagian adalah, catu daya adalah jantung sistem yang akan memberikan daya kepada bagian lain untuk beroperasi. Mikrokontroler merupakan bagian yang berfungsi sebagai otak dari sistem ini, dan akan memperoleh data dari
push button dan modul kompas CMPS0. Data yang diperoleh akan diproses dan
ditampilkan pada LCD.
3.2.1 Modul kompas CMPS03
Gambar 3.2 Modul kompas CMPS03
Modul kompas CMPS03 dapat langsung digunakan bila menggunakan mode
PWM, namun dengan I2C modul ini perlu ditambah beberapa resistor sebagai pull-up. Untai tambahan untuk modul kompas CMPS03 ditunjukkan pada Gambar 3.2.
Komponen tambahan untuk membantu kerja CMPS03 sangat sedikit, yaitu resistor dan push button. Resistor pada pin SDA dan SCL modul kompas berfungsi sebagai pull-up resistor. Hal ini memudahkan modul karena perangkat hanya perlu memberikan keluaran 0(low) untuk membuat jalur menjadi low, dan untuk membuat jalur menjadi high perangkat tidak perlu memberikan keluaran apapun. Push button
digunakan sebagai sarana untuk mengkalibrasi modul kompas. Pengkalibrasian perlu dilakukan karena sudut inklinasi tiap daerah berbeda-beda.
Proses kalibrasi modul dengan push button adalah sebagai berikut,
1. Modul kompas diletakkan secara horisontal dan orientasi utara modul
kompas menghadap arah utara bumi, dan tekan push button.
2. Modul kompas diletakkan secara horisontal dan orientasi utara modul
kompas menghadap arah timur bumi, dan tekan push button.
3. Modul kompas diletakkan secara horisontal dan orientasi utara modul
kompas menghadap arah selatan bumi, dan tekan push button.
4. Modul kompas diletakkan secara horisontal dan orientasi utara modul
kompas menghadap arah barat bumi, dan tekan push button
5. Orientasi arah dari kompas diperiksa, dan apabila sudah tepat penunjukan
arahnya, maka modul kompas sudah terkalibrasi dengan baik.
Catu daya berfungsi sebagai pensuplai tegangan listrik DC agar untai lain dapat bekerja dengan baik. Mikrokontroler ATmega32, modul kompas, LCD dan push button
memerlukan tegangan 5V. Kebutuhan tersebut dapat dipenuhi dengan menggunakan tenaga baterai ataupun dari PLN dengan bantuan adaptor. Namun sebelum baterai ataupun adaptor digunakan sebagai pensuplai tegangan, perlu diingat bahwa tegangan baterai dan adaptor di pasaran tidak semuanya sama dengan 5V, maka perlu ditambah dengan suatu untai yang mampu menurunkan tegangan input menjadi 5V dengan toleransi 0,2V. Untai yang digunakan ditunjukkan pada Gambar 3.3.
Gambar 3.3 Catu daya
tegangan bagi setiap komponen dalam sistem ini.
3.2.3 Untai mikrokontroler ATmega32
Gambar 3.4 Rangkaian minimum sistem ATmega32
Pada untai sistem minimum ATmega32, terdapat beberapa komponen, antara lain, Kristal sebagai sumber detak eksternal, pe-reset mikrokontroler, dan lampu indikator. Pada ATmega32 terdapat 4 port untuk input dan output, penggunaan dari
port yang tersedia adalah: portA digunakan untuk LCD 2x16, portC digunakan untuk komunikasi dengan modul kompas secara I2C, yaitu pinC.0 sebagai SCL dan pinC.1sebagai SDA, dan portD digunakan untuk saluran masukan data dari push button, yaitu pinD.3, pinD.4, pinD.5.
Program yang telah dibuat di komputer di-download ke mikrokontroler menggunakan sistem isp, dan jalur yang digunakan adalah portB.6 sebagai MISO, dan
portB.5 sebagai MOSI, portB.7 sebagai SCK. Tegangan 5V dihubungkan pada pin AREFF, AVCC, VCC. AVCC perlu dihubungkan dengan tegangan 5V agar portA dapat digunakan.
Gambar 3.5 Untai penampil LCD
Untai LCD ditunjukkan oleh Gambar 3.5.
LCD dapat digunakan secara langsung karena LCD yang digunakan merupakan modul siap pakai, namun ada tambahan beberapa komponen untuk membuat hasil kerja LCD lebih baik, yaitu potensiometer dengan ukuran 50KΩ. Komponen ini digunakan untuk mengatur kontras dari LCD. Selain itu, agar tampilan lebih menarik, maka lampu LCD diaktifkan, yaitu dengan menghubungkan pin 15 dengan VCC dan pin 16 dengan GND.
3.2.5 Untai push button
Data yang diperoleh dari push button adalah keputusan ya atau tidak, oleh karena itu, push button berfungsi menghubungkan pin dari mikrokontroler dengan data
low (GND), untainya ditunjukkan oleh Gambar 3.6.
Seluruh untai yang ada, dirangkai mejadi satu sehingga menjad
Gambar 3.6 Untai push button
Seluruh untai yang ada, dirangkai mejadi satu sehingga menjadi untai perangkat keras yang mampu mendukung sistem penunjuk orientasi arah interior rumah digital dengan metode Feng Shui. Secara keseluruhan, untai sistem tampak pada Gambar 3.7.
3.3 Perancangan Perangkat Lunak
karena itu, perangkat lunak diperlukan.
Gambar 3.7 Untai sistem penunjuk orientasi arah interior rumah
digital dengan metode feng shui
Gambar 3.8 Diagram alir program utama
Gambar 3.8 Diagram alir program utama
3.3.1 Prosedur isi_data
Prosedur isi_data adalah prosedur untuk mendapatkan data dari pengguna. Data yang diambil adalah tahun kelahiran dan jenis kelamin. Pada Gambar 3.9 ditunjukkan diagram alir dari prosedur isi_data. Pada prosedur ini, pertama-tama, diambil langkah menghapus tampilan di LCD, kemudian untuk mempercantik tampilan, ditulis tahun lahir dari pengguna, yaitu dengan selalu menimpa angka tahun pada kolom 13 baris pertama bila ada perubahan data tahun. Perubahan ini karena penekanan pada tombol di pinD.3 untuk menaikkan angka tahun dan pinD.4 untuk menurunkan angka tahun. Bila pinD.5 ditekan, maka program mensudahi pengisian data tahun dan memulai pengisian data jenis kelamin. Pada awal program telah di-setting secara default bahwa jenis kelamin dari pengguna adalah pria atau dalam program dideklarasikan sebagai nilai 0 untuk sex-nya dan ditulis PA. Perubahan data dapat dilakukan dengan menekan pinD.3. Penekanan tombol mengakibatkan menambahkan angka 1 pada variabel sex, namun karena jenis kelamin hanya ada 2, maka ketika nilai sex sama dengan atau lebih dari 2 maka secara otomatis nilai sex sama dengan 1. Setelah didapat nilai sex, untuk mempermudah pengguna, maka nilai tersebut ditafsirkan sebagai PA(putra/pria) untuk nilai sex sama dengan 0 dan PI(putrid/wanita) untuk nilai sex sama dengan 1. Penekanan tombol pinD.5 menyebabkan proses pengambilan data selesai, dan keluar dari prosedur isi_data. Ada beberapa variasi tampilan pada LCD setelah penekanan “ silahkan tunjuk suatu ar ah"
Gambar 3.9 Diagram alir prosedur isi_dat
3.3.2 Prosedur proses_data
Setelah data diperoleh, program akan memangil prosedur proses_data untuk memproses masukkan sehingga diperoleh hasil berupa shio, elemen dan angka gua. Pemrosesan data dimulai dengan menampilkan keluaran apa saja yang akan diperoleh, yaitu shio dan elemen. Selanjutnya, menghitung nilai dari tempTahun yang merupakan absolut dari pengurangan tahun kelahiran dengan 1900. Selain itu juga dihitung nilai tempShio dan tempElemen, yang merupakan hasil mod 12 dan mod 10 dari tempTahun. Nilai tempShio dan tempElemen dicek dan akan menampilkan informasi tentang shio
dan elemen pengguna.
Proses selanjutnya adalah menghitung gua. Nilai gua diperoleh dengan cara mengurangkan 11 dengan angka tahun tunggal atau menjumlahkan 4 dengan angka tahun tunggal. Kemungkinan tersebut bergantung terhadap jenis kelamin dari pengguna. Angka tahun tunggal diperoleh dengan cara menjumlahkan setiap angka pada satuan, puluhan, ratusan dan ribuan. Setelah angka tahun tunggal langkah terakhir adalah menghitung nilai gua sesuai dengan jenis kelamin pengguna. Khusus untuk nilai gua sama dengan 5, akan diganti menjadi 2 untuk laki-laki, dan menjadi 8 untuk perempuan.
Komunikasi I2C pada modul kompas CMPS03 ada dua macam, dengan bahasa sederhana adalah pembacaan ketelitian rendah dan pembacaan ketelitian tinggi. Pembacaan dengan ketelitian rendah hanya membaca data pada register 1, data yang diperoleh adalah 1byte data untuk 3600. Pembacaan dengan ketelitian tinggi, data yang dibaca adalah data pada register 2 dan register 3, dengan rage data dari 0 hingga 3599 untuk 359,90. Pada sistem ini, digunakan pembacaan dengan ketelitian tinggi, dan proses pembacaan data dari register 2 dan 3 di lakukan oleh prosedur compass_read2 dan compass_read3. Pada Gambar 3.10 ditunjukkan diagram alir untuk prosedur compass_read2.
Proses pembacaan data dimulai dengan membuka komunikasi I2C, kemudian mengirimkan alamat modul kompas digital dengan read/write low (0xC0). Pada pembacaan dengan ketelitian tinggi, maka pembacaan untuk byte high adalah register 2, maka perlu dikirimkan alamat register untuk dibaca, yaitu 0x02. Setelah itu, mengirimkan sinyal untuk memulai komunikasi I2C lagi dan mengirimkan alamat modul kompas digital dengan read/write high (0xC1). Hasil pembacaan data pada register 2 disimpan dalam variabel dataH, dan komunikasi I2C diputus atau dihentikan.
compass_read2 Memulai komunikasi I 2C Kiri m sinyal read/write low
Menul is pada register dengan alamat 02 Memulai komunikasi I 2C Kirim sinyal read/write high
dataH=hasil baca dari register2 Komunikasi I 2C
Gambar 3.10 Diagram alir prosedur compass_read2
3.3.4 Prosedur compass_read3
Diagram alir dari prosedur compass_read3 ditunjukkan pada Gambar 3.11
compass_read3 Memulai komunikasi I 2C Kiri m sinyal read/write low
Menul is pada register dengan alamat 03 Memulai komunikasi I 2C Kirim sinyal read/write high
Gambar 3.11 Diagram alir prosedur compass_read3
Pembacaan pada register 3 adalah untuk mendapatkan data byte low dari data arah. Cara pembacaan data dari register 3 mirip dengan pembacaan data pada register 2, perbedaannya hanya pada alamat saja.
3.3.5 Prosedur pilih
Pada prosedur pilih, ada 64 kemungkinan yang dapat terjadi. Proses pemilihan didasarkan pada angka gua dari pengguna (8 kemungkinan) dan arah yang dipilih oleh pengguna(8 kemungkinan), jadi banyak dari kemungkinan adalah 8 x 8= 64. Pemilihan kemungkinan digunakan metode if then guna mempermudah proses pemrograman. Gambar 3.12 merupakan diagram alir dari prosedur pilih.
Prosedur ini digunakan sebagai sarana untuk menampilkan sejumlah kalimat yang tidak dapat ditampilkan dalam 1 layar, karena jumlah karakter LCD terbatas. Membuat tulisan berjalan dari kanan ke kiri merupakan salah satu metode untuk mengatasi masalah tersebut, selain itu membuat tampilan lebih menarik.
Gambar 3.12 Diagram alir prosedur pilih
Gambar 3.13 Diagram alir prosedur tampilkan
Prosedur akan memulai mengisi kolom terakhir dari baris 2 LCD dengan karakter –karakter pesan, dimulai dari karakter pertama hingga karakter ke 15 karena jumlah dari LCD yang digunakan hanya mampu menampilkan sebanyak 16 karakter. Proses di atas akan membuat tampilan seolah-olah muncul dari kanan, dan bergeser 1 karakter ke ke kiri perlahan-lahan dengan delay 17mS. Selanjutnya, untuk menyelesaikan seluruh pesan, maka memulai suatu perulangan baru yang akan menuliskan karakter di LCD baris 2 kolom pertama, yaitu dengan menuliskan karaker kedua dari pesan di kolom pertama LCD.
Menuliskan karater selanjutnya ke arah kanan, bila sudah mencapai ujung kanan, akan kembali dari kolom pertama, namun yang ditulis adalah karakter ketiga pesan, dan hal ini berlanjut terus menerus hingga pesan selesai ditampilkan.