KWSwp – Kalkulator Waktu Sholat plus Wav Player Versi 1.1 Dengan ijin Allah SWT diterbitkan 19 Mei 2015 oleh www.bengkel-elektro.com, di Malang - Indonesia
Fitur: § § § § § § § §
Mampu menghitung jadwal sholat menggunakan rumus menurut standart DEPAG RI apabila parameter bujur, lintang dan timezone sudah diseting dengan benar Mampu menghitung waktu sholat menurut tabel berupa file txt yang tersimpan didalam memori microSD Dapat memutar file wav (mono, 8kHz-44.1kHz, 8bit), seperti untuk menghasilkan suara adzan, murotal (bacaan ayat-ayat Al-Qur’an), nasid, dll. Mampu menghentikan pemutaran file wav tepat pada saat kondisi senyap sehingga cocok untuk menghentikan pemutaran bacaan ayat-ayat Al-Qur’an Dilengkapi pengingat pointer dalam file wav yang diputar terakhir sehingga pemutaran file wav dapat dilanjutkan kembali. Fitur ini cocok untuk melanjutkan bacaan ayat-ayat Al-Qur’an Dilengkapi fasilitas konverter tanggal masehi ke hijriah Instruksi dan jawaban untuk kit ini dikirim melalui komunikasi serial UART (19200bps, 8N1) Catu daya kit DC 5V
Pendahuluan KWSwp ialah kit penghitung waktu sholat sekaligus sebagai wav player. Kit ini dirancang secara khusus untuk menunjang pembuatan jam pengingat waktu sholat. Menggunakan kit ini, waktu sholat dapat dihitung dengan mudah yaitu dengan cara memberikan instruksi ke kit ini lalu membaca respon yang diberikan oleh kit ini. Terdapat dua cara yang disediakan oleh kit ini untuk menghasilkan waktu sholat. Pertama melalui penghitungan rumus dan kedua melalui pengaksesan tabel sholat (berupa file txt yang tersimpan didalam memori microSD). Seperti tercermin dari namanya, kit ini juga mampu diperintah untuk mengeluarkan suara hasil pemutaran file wav. Dengan adanya kemampuan seperti ini memungkinkan kit untuk menghasilkan suara adzan, murotal (bacaan ayat-ayat Al-Qur’an), lagu nasid, dll. Selain itu, kit ini juga mampu mengonversi penanggalan Masehi menjadi Hijriah sehingga jam pengingat waktu sholat yang dibuat menggunakan kit ini dapat menampilkan tanggal hijriah. Bentuk fisik kit KWSwp ditunjukkan dalam Gambar 1.
Hal 1 dari 12
Gambar 1. Kit KWSwp. Kit ini terdiri atas dua bagian, yaitu PCB (dalam gambar tersebut warna merah) dan memori microSD (terpasang pada card holder kit tersebut). Dalam kit ini, memori microSD digunakan untuk menyimpan file-file wav dan file txt yang berisi tabel sholat. File txt ini diperlukan apabila model penetapan waktu sholat menggunakan tabel. Kit ini dilengkapi dengan dua buah header. Header pertama terdiri atas 2pin dan terletak di bagian kiri. Sedangkan header kedua terdiri atas 4 pin dan terletak di bagian bawah dari kit tersebut. Header 2 pin digunakan untuk menyalurkan sinyal audio yang dihasilkan oleh kit. Sedangkan header 4 pin digunakan untuk memberikan catu daya 5V ke kit dan juga sebagai jalur komunikasi serial UART (19200bps, 8 bit data, tanpa parity, 1 bit stop). Instruksi ke kit ini dikirim masuk melalui pin RX UART dan respon yang diberikan oleh kit ini keluar dari pin TX UART. Terdapat tiga jenis instruksi untuk kit KWSwp, meliputi: instruksi yang berkaitan dengan pemutaran file wav, instruksi yang berkaitan dengan penentuan waktu sholat, dan instruksi yang berkaitan dengan konversi tanggal masehi ke tanggal hijriah. Instruksi pemutaran file wav bersifat blocking. Jadi jangan memberikan instruksi penghitungan waktu sholat atau instruksi konversi masehi-hijriah selama kit sedang memutar file wav sebab hasil eksekusi instruksi akan tertuda hingga pemutaran file wav selesai dan mungkin hasil yang didapatkannya tidak akurat karena tercampur dengan respon pemutaran file wav.
Instruksi Pemutaran File Wav Berkaitan dengan pemutaran file wav, kit ini support dengan instruksi-instruksi pemutaran file wav pada kit wav player WP3A. Artinya instruksi untuk WP3A juga dapat digunakan untuk kit KWSwp, tetapi mungkin tidak semua instruksi memberikan format atau respon yang sama. Contoh instruksi-instruksi WP3A meliputi load, stop, pause, change volume, ubah mode, dll. Demikan juga aturan-aturan WP3A, sebagai contoh format microSD, panjang nama file, dll, juga berlaku pada kit ini. Untuk mendapatkan keterangan lebih rinci mengenai instruksi dan aturan-aturan WP3A silahkan baca Tutorial WP3A. Adapun Tutorial WP3A yang dapat diunduh dari website kami atau mungkin sudah disediakan dalam microSD kit KWSwp.
Hal 2 dari 12
Selain support dengan instruksi WP3A, kit KWSwp juga dilengkapi dengan beberapa instruksi tambahan seperti ditunjukkan dalam Tabel 1. Perlu diingat bahwa
dalam instruksi-instruksi menyatakan karakter carriage return (‘\r’ atau desimal 13) dan menyatakan new line (‘\n’ atau desimal 10). Tabel 1. Instruksi tambahan berkaitan dengan pemutaran file wav. Instruksi
Format dan Keterangan
Contoh dan respon
Instruksi-instruksi kit WP3A
Lihat tutorial wav player WP3A
Lihat tutorial WP3A
Stop at silent
T Untuk menghentikan pemutaran file wav yang sedang diputar tetapi penghentikan dilakukan pada saat terjadi silent, yaitu ketika suara yang dihasilkan KWSwp sedang senyap. Instruksi ini berguna sebagai contoh untuk menghentikan pemutaran file wav (yang berisi bacaan ayat-ayat Al-Qur’an) sehingga dapat dihentikan tepat pada pemberhentian ayat. K Untuk menyimpan pointer pemutaran file (yang sebelumnya dihentikan menggunakan “Stop at silent”). Pointer yang sudah disimpan mengijinkan dilanjutkannya pemutaran file menggunakan instruksi “Continue last play”. Jadi instruksi ini harap dijalankan sesaat setelah kit diberi instruksi “Stop at silent” dan kit telah memberikan respon E. Pointer tidak disimpan dalam memori permanen, jadi apabila listrik ke kit dimatikan maka data pointer hilang. G Untuk mengambil nama file yang pointernya telah disimpan menggunakan instruksi “Keep pointer”. Nama file ini selanjutnya dapat digunakan untuk menentukan nama file berikutnya yang ingin diputar.
T Ketika mendapat instruksi ini, kit menunggu terjadi senyap lalu menghentikan pemutaran file wav dan memberi respon berupa E apabila penanda akhir pemutaran file wav diijinkan.
C Untuk melanjutkan pemutaran file wav yang pointernya telah disimpan
CQ015 Instruksi untuk melanjutkan pemutaran file wav yang
Keep pointer
Get last file
Continue last play
K Kit akan menyimpan pointer.
G memberikan respon berupa nama file yang pointernya telah disimpan menggunakan instruksi “Keep pointer”. Jika file yang pointernya sedang dimuat adalah file Q014 maka instruksi ini akan menghasilkan Q014
Hal 3 dari 12
menggunakan instruksi “Keep pointer”.
pointernya telah disimpan.
Apabila belum ada pointer yang disimpan maka instruksi ini tidak akan memutar file apapun. Untuk menjamin bahwa instruksi ini selalu memtuar file maka gunakan instruksi dengan format C. Disini adalah nama file yang akan diputar bila belum ada pointer yang disimpan. Tetapi bila sudah ada pointer yang disimpan maka yang terjadi adalah kit melanjutkan pemutaran file yang pointernya sudah disimpan tersebut.
Jika belum ada pointer yang disimpan maka instruksi ini akan memutar file Q015.wav. C Instruksi untuk melanjutkan pemutaran file wav yang pointernya telah disimpan.
Insruksi ini berguna sebagai contohnya untuk melanjutkan pembacaan ayat AlQur’an yang sebelumnya dihentikan.
Contoh aplikasi: Berikut ini adalah contoh pseudo code mikrokontroler yang akan memerintah kit KWSwp supaya memutarkan ayat-ayat Al-Qur’an selama 10 menit, kemudian memutarkan sholawat tarhim (selama kurang lebih 6 menit) lalu memutar adzan. Lantunan ayat-ayat Al-Qur’an disini dianggap diteruskan dari waktu ke waktu atau tidak diulang. Misalnya sebelum adzan subuh melantunkan Al-Baqarah ayat 1-30, lalu sebelum adzan dhuhur melantunkan Al-Baqarah ayat 31-60, dst. Pada contoh kali ini dianggap hal-hal sebagai berikut: (a) surat-surat dalam Al-Qur’an tersimpan dalam file Q001.wav, Q002.wav sampai dengan Q114.wav. Q001 menyatakan surat ke-1, Q002 menyatakan surat ke-2, dst. (b) Lantunan adzan tersimpan dalam file adzan.wav. (c) Lantunan taawud dan basmalah tersimpan dalam file angu.wav. Jika waktu sekarang sudah menunjukkan waktu adzan dikurangi 17 menit maka mikrokontroler harus menjalankan program dengan pseudo code seperti ditunjukkan dalam Gambar 2. Pertama mikrokontroler memerintah kit untuk menyuarakan taawud dan basmalah dengan cara mengirim instruksi langu ke kit KWSwp. Bila proses play selesai (yang ditandai dengan diterimanya E) maka mikrokontroler memerintah kit untuk melanjutkan pemutaran ayat Al-Qur’an. Disini instruksinya berupa CQ001, yang berarti bahwa apabila sebelumnya kit pernah memutar ayat AlQur’an maka pemutaran tersebut akan dilanjutkan. Sebaliknya apabila sebelumnya kit belum pernah memutar ayat Al-Qur’an maka kit akan memutar file Q001.wav. Kemudian tunggu hingga waktu 10 menit tercapai. Jika waktu 10 menit belum tercapai tetapi kit memberikan E, berarti pemutaran file sekarang telah selesai. Jika hal ini terjadi maka mikrokontroler harus melanjutkan pemutaran surat berikutnya. Caranya mikrokontroler meminta nama file terakhir yang diputar kepada kit kemudian berdasarkan nama file yang diberikan oleh kit ini selanjutnya mikrokontroler mencari file berikutnya Hal 4 dari 12
yang ingin diputar. File berikutnya ini ditentukan oleh pembuat program mikrokontroler, misalnya uratan pemutaran surat-surat Al-Qur’an dinyatakan menggunakan variabel array. Setelah ditemukan, mikrokontroler memerintah kit untuk memutar file tersebut.
Gambar 2. Contoh pseudo code mikrokontroler pemutar ayat Al-Qur’an, tarhim dan adzan. Jika waktu 10 menit telah tercapai maka mikrokontroler memerintah kit untuk menghentikan pemutaran file, lalu mikrokontroler menunggu proses penghentian selesai, menyimpan pointer dan kemudian keluar dari struktur while(1). Selanjutnya mikrokontroler memerintah kit untuk memutar sholawat tarhim, menunggu hingga selesai, dan terakhir memutar adzan.
Menentukan Waktu Sholat Menggunakan Rumus Apabila waku sholat dalam kit KWSwp ingin dihitung menggunakan rumus maka ada beberapa parameter dalam kit ini yang harus dikonfigurasi dengan benar, meliputi: latitude, longitude, sea level dan timezone. Parameter latitude, longitude, dan sea level untuk suatu tempat/kota dapat diketahui dengan mudah yaitu dengan mengakses website www.mapcoordinates.net seperti ditunjukkan dalam Gambar 3.
Hal 5 dari 12
Gambar 3. Website penunjuk latitude dan longitude. Setelah memasuki website tersebut ketikkan nama kota tempat yang akan dihitung waktu sholatnya. Sebagai contoh dalam gambar tersebut adalah kota Malang. Anda juga dapat menggeser penanda pin kota atau dengan cara meng-klik area di sekitar kota tersebut untuk mengganti lokasi sehingga benar seperti yang Anda maksudkan. Latitude, longitude dan sea level yang ditunjukkan dalam website ini kemudian dapat Anda salin untuk digunakan oleh kit KWSwp. Perlu diketahui bahwa rumus yang digunakan kit KWSwp sudah disesuaikan dengan standar Departemen Agama (DEPAG) karena itu nilai sea level yang dihasilkan oleh website ini tidak perlu digunakan atau dimasukkan ke kit KWSwp kecuali Anda ingin menerapkannya dan tidak mempertimbangkan stardar DEPAG. Nilai sea level default untuk DEPAG kurang lebih 23.0 meter. Nilai sea level ini menentukan waktu untuk sholat Maghrib dan fajar (batas akhir sholat Subuh). Adapun nilai timezone tergantung pada wilayah yang hendak dicari jadwal sholatnya berada dalam timezone mana. Indonesia terbagi atas tiga timezone WIB, WITA dan WIT. Jika wilayah yang ingin dicari jadwal sholatnya berada di kawasan waktu WIB (Waktu Indonesia bagian Barat) maka nilai timezone adalah 7. Jika wilayah yang ingin dicari jadwal sholatnya berada di kawasan waktu WITA (Waktu Indonesia bagian Tengah) maka nilai timezone adalah 8. Jika wilayah yang ingin dicari jadwal sholatnya berada di kawasan waktu WIT (Waktu Indonesia bagian Timur) maka nilai timezone adalah 9. Untuk memastikan suatu wilayah berada dalam WIB, WITA atau WIT, silahkan cek melalui gambar peta seperti ditunjukkan dalam Gambar 4.
Hal 6 dari 12
Sumber: http://en.wikipedia.org/wiki/Time_in_Indonesia
Gambar 4. Pembagian timezone Indonesia. Jika nilai parameter latitude, longitude, sea level, dan timezone sudah diketahui maka nilai-nilai tersebut perlu dimasukkan ke kit KWSwp. Cara mengubah atau memasukkan nilai parameter latitude, longitude, sea level dan timezone serta cara membaca hasil perhitungan waktu sholat menggunakan rumus ditunjukkan dalam Tabel 2. Tabel 2. Instruksi KWSwp berkaitan dengan hitung waktu sholat menurut rumus. Instruksi Mengubah latitude
Melihat nilai latitude
Mengubah longitude
Format dan keterangan k untuk mengubah nilai latitude, nilai yang diseting akan tersimpan secara permanen, tidak hilang meskipun catu daya ke kit dimatikan k untuk melihat nilai latitude yang sudah terseting dalam kit o untuk mengubah nilai longitude, nilai yang diseting akan tersimpan secara permanen,
Contoh dan respon k-7.967 untuk menyeting latitude bernilai -7.967
k apabila nilai latitude -7.967 maka akan ada jawaban -7.967 o112.632 untuk menyeting longitude bernilai 112.632
Hal 7 dari 12
Melihat nilai longitude
Mengubah timezone
Melihat nilai timezone
Mengubah sea level
Melihat nilai sea level
Membaca jadwal dalam satu hari menggunakan rumus
tidak hilang meskipun catu daya ke kit dimatikan o o untuk melihat nilai longitude apabila nilai longitude 112.632 yang sudah terseting dalam kit maka akan ada jawaban 112.632 z z7 untuk mengubah nilai timezone, untuk menyeting timezone bernilai +7 nilai yang diseting akan tersimpan secara permanen, tidak hilang meskipun catu daya ke kit dimatikan z z untuk melihat nilai timezone apabila nilai timezone +7 yang sudah terseting dalam kit maka akan ada jawaban 7 h h23.0 untuk mengubah nilai sea level, untuk menyeting sea level bernilai 23.0 nilai yang diseting akan tersimpan secara permanen, tidak hilang meskipun catu daya ke kit dimatikan h h untuk melihat nilai sea level yang apabila nilai sea level 23.0 sudah terseting dalam kit maka akan ada jawaban 23.0 j-- j2-1-2015 atau atau j// j2/1/2015 untuk membaca jadwal sholat untuk membaca jadwal sholat 2 Januari 2015 dalam satu hari menggunakan Jawaban akan memiliki format: rumus. <jam:menit><spasi><jam:menit><spasi> ...<jam:menit><spasi> <jam:menit> pertama hingga terakhir berturut-turut menunjukkan waktu imsak, subuh, fajar, dhuha, dhuhur, ashar, maghrib, isyak.
Membaca jadwal dalam satu bulan menggunakan rumus
j- atau j/ untuk membaca jadwal sholat dalam satu bulan menggunakan rumus.
j1-2015 atau j1/2015 untuk membaca jadwal sholat bulan Januari 2015 Jawaban akan berupa: 1<jam:menit><spasi><jam:menit><spasi> ...<jam:menit><spasi> 2<jam:menit><spasi><jam:menit><spasi> ...<jam:menit><spasi> Hal 8 dari 12
… <jam:menit><spasi><jam:menit><spasi> ...<jam:menit><spasi> 1 pada awal baris pertama menyatakan tanggal 1, <jam:menit> pertama hingga terakhir dibelakang angka 1 ini masing-masing menunjukkan waktu imsak, subuh, fajar, dhuha, dhuhur, ashar, maghrib, isyak untuk tanggal 1. pada awal baris terakhir adalah tanggal terkahir dalam bulan yang dimaksud, <jam:menit> pertama hingga terakhir dibelakang angka ini masing-masing menunjukkan waktu imsak, subuh, fajar, dhuha, dhuhur, ashar, maghrib, isyak untuk tanggal terakhir bulan yang dimaksud.
Menentukan Waktu Sholat menggunakan Tabel Waktu sholat oleh kit KWSwp juga dapat ditentukan menurut tabel yang kita buat. Tabel yang dimaksud ialah berupa file txt yang disimpan didalam memori microSD kit KWSwp. Supaya tabel tersebut dapat digunakan oleh kit ini maka file txt yang memuat tabel sholat itu harus disimpan dalam direktori root microSD (bukan dalam folder yang ada di microSD) dan diberi nama “B.txt” serta memiliki format sebagai ditunjukkan dalam Gambar 5.
Gambar 5. Format tabel sholat. Setiap grup <jam:menit> diawali dengan nama bulan. Dalam gambar tersebut nama bulan ditandai dengan dan . Nama bulan yang diijinkan meliputi: Januari, Pebruari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, Nopember dan Desember. Nama bulan juga boleh disingkat hanya terdiri atas 3 huruf pertama, jadi Januari boleh ditulis Jan, Pebruari boleh disingkat Peb dan segerusnya. Ingat, jangan menggunakan singkat dalam bahasa Inggris, contohnya Agustus disingkat jadi Aug, Nopember disingkat jadi Nov, dst. Nama bulan boleh ditulis dalam huruf kecil atau besar. Nama Hal 9 dari 12
bulan harus dituliskan secara berurutan. Sebagai contoh, bulan Maret harus dituliskan dibawah bulan Pebruari tidak boleh dibalik bulan Maret dituliskan lebih awal daripada bulan Pebruari. Dibawah nama bulan adalah baris-baris jadwal sholat yang setiap barisnya diawali dengan tanggal. Dalam gambar tersebut tanggal dinyatakan dengan , dan untuk . Dalam hal ini tanggal-tanggal harus ditulis secara urut menaik. Jadi harus lebih kecil daripada dan harus lebih kecil daripada . Diantara tanggal dan <jam:menit> maupun diantara <jam:menit> dengan <jam:menit> berikutnya boleh dipisahkan menggunakan spasi atau tab. Contoh cara menulis jadwal sholat dalam file txt yang benar ditunjukkan dalam Gambar 6.
Gambar 6. Contoh jadwal sholat. Menurut tabel ini diketahui bahwa jadwal sholat tanggal 1 sampai 5 Januari adalah 18:05 19:19 4:02 4:12 5:30 5:54 11:49 15:13 Demikian juga jadwal sholat untuk tanggal 1 Mei ialah Hal 10 dari 12
17:42 18:48 4:19 4:29 5:43 6:09 11:42 14:59 yaitu sama dengan jadwal tanggal 26 sampai 31 April. Hal ini merupakan akibat dari ketentuah bahwa bulan dan tanggal harus ditulis secara berurutan, seperti yang dijelaskan sebelumnya. Keterangan tambahan yang diberikan pada awal dari setiap bulan, yaitu berupa tulisan berikut “TGL MAGHRIB ISYAK IMSAK SUBUH TER.MT DHUHA DHUHUR ASHAR” juga diijinkan. Apabila file telah selesai disiapkan, simpan file tersebut ke direktori root microSD yang akan digunakan oleh kit KWSwp, bukan disimpan ke dalam folder yang terdapat dalam microSD tetapi langsung di drive microSD. Setelah file tersebut berada dalam microSD, lepas microSD dari komputer lalu masukkan microSD ini ke kit KWSwp. Kit KWSwp sekarang siap untuk menghasilkan jadwal sholat menurut tabel. Instruksi yang perlu dikirim ke kit KWSwp untuk mendapatkan jadwal sholat menurut file txt ini dijelaskan dalam Tabel 3. Tabel 3. Instruksi pembacaan tabel sholat. Instruksi Membaca tabel sholat
Format dan keterangan w- atau w/ untuk membaca tabel sholat untuk tanggal dan bulan
Contoh dan respon w1-5 atau w1/5 untuk membaca jadwal sholat tanggal 1 bulan 5 atau mei. Jika file B.txt seperti dalam Gambar 5, maka jawaban akan berupa: 17:42<spasi>18:48<spasi>4:19 <spasi>4:29<spasi>5:43<spasi> 6:09<spasi>11:42<spasi>14:59 <spasi>
Konversi Masehi ke Hijriah Kit KWSwp juga dilengkapi dengan rumus konverter tanggal masehi menjadi tanggal hijriah. Fasiltias ini disediakan supaya jam pengingat waktu sholat yang dibuat menggunakan kit KWSwp ini mampu menampilkan informasi tanggal hijriah. Format instruksi konversi kalender masehi menjadi hijriah seperti ditunjukkan dalam Tabel 4. Tabel 4. Instruksi konfersi masehi ke hijriah. Instruksi Konversi masehi ke hijriah
Format dan keterangan H-- atau H// Untuk mengonversi penanggalan masehi ke hijriah.
Contoh dan respon H1-3-2015 atau H1/3/2015 Untuk mengonversi 1 Maret 2015 menjadi hijriah. Kit akan memberikan respon berupa string: 10 Jumadil Awal 1436 H Hal 11 dari 12
Catatan Revisi: 18 Mei 2015
Pertama kali disusun.
19 Mei 2015
Perbaikan terhadap kesalahan ketik, penambahan keterangan fitur.
24 Mei 2015
Penambahan karakter new line (‘\n’ atau desimal 10). ---selesai---
Hal 12 dari 12