JWS Universal (Jadwal Waktu Shalat) 1 – 8 panel

Jadwal Waktu Shalat (JWS) adalah media informasi di rumah ibadah Masjid/Mushalla/Surau yang menampilkan informasi waktu-waktu Shalat.

Dalam perkembangannya Jam Waktu Shalat berfungsi sebagai :

  1. Menampilkan Jadwal / Waktu Shalat wajib dan sunat
  2. Menampilkan informasi tanggal Masehi, Hijriah, Pasaran Jawa, dan penanggalan khusus seperti penanggalan Minang
  3. Menampilkan Ayat Al-Quran, Doa
  4. Informasi Tartil, Tarhim, Azan, Iqamah
  5. Pengingat / alarm waktu masuk Shalat dan selesai Iqamah
  6. Memutar Suara/Musik Tartil, Tarhim disertai kontrol hidup/mati amplifier
  7. Perhitungan jadwal berdasarkan posisi matahari, masukan manual, data jadwal online harian.

Diagram alir Jawdal waktu-waktu Shalat :

 

Skema Jam waktu shalat universal:

 

Tampilan aplikasi (apk) JWS Semesin Universal:

 

contoh tampilan jadwal shalat 3 panel :

 

Koding / sketch JWS semesin:

/*
   JWS Semesin 1 - 8 panel

   Fitur yang tidak aktif
   1. Tampilan tanggal Hijriah
   2. Tampilan tanggal Jawa
   3. Tampilan tanggal Minang
   4. Pesan selama tartil
   5. Pesan selama tarhim
   6. Pesan selama Iqamah

*/

#define serialDebug                       false
#define modeDemo                          false

#define namaMesjid                        "JWS"

//defenisi pin
#define pinMP3Busy                        2
#define pinRelayAmpli                     3
#define pinBuzzer                         4
#define RTCDetikIRQ                       A3

#define relayOn                           LOW

#define I2CEEPROM_ADDRESS                 0x57

//setting
#define periodaAlarmWaktuShalatMasuk      100//milidetik
#define periodaAlarmWaktuAkhirIqamah      300//milidetik

#define pixelLebarPanel                   32
#define pixelTinggiPanel                  16

//variabel Setting
#define kecepatanMinimal                  10
#define skalaKecepatan                    10

#define tokenSetting                      32
#define lamaAksesApk                      10L * 60 * 1000

#define jumlahNyalaPadam                  5
#define jumlahTextInformasi               10

#define fontNamaMesjid                    Arial14
#define fontJamDanMenitUtama              angka6x14
#define fontSimbolGambar                  simbolGambar

#include <Wire.h>
#include <EEPROM.h>
#include <DMD_Semesin.h>
#include <RTC_Semesin.h>
#include <DFPlayer_Mini_Mp3.h>
#include <BluetoothApk.h>

#include <fonts/angka6x14.h>
#include <fonts/SystemFont5x7Ramping.h>
#include <fonts/Arial14.h>
#include <fonts/simbolGambar.h>

#include "fungsi.h"
#include "definisi.h"
#include "konstanta.h"
#include "setting.h"
#include "WaktuShalat.h"

const uint8_t *alamatFont[] = {
  Arial14,
  SystemFont5x7Ramping,
};

SPIDMD dmd(8, 1);//max jumlah panel = 8
RTC_DS3231 rtc;
DateTime now;

//Status
bool RTCValid = true;
byte modeOperasi = modeInformasi;
bool statusAlarm;
bool tampilJamMenitDetik = false;
long millisRunningText;
uint8_t kecepatanRunningText;
uint8_t kecepatanRunningEfek;

uint16_t hitungMundurTartil;
uint16_t hitungMundurTarhim;
uint16_t hitungMundurAzan;//terhitung sejak waktu masuk
uint16_t hitungMundurIqamah;//terhitung sejak selesai azan

bool pesanSetelahAzan;
bool pesanSebelumShalat;
uint16_t hitungMundurPeringatanSimbol;
uint16_t hitungMundurShalat;

bool initHitungMundurTartil;
bool initHitungMundurTarhim;
bool initHitungMundurAzan;
bool initHitungMundurIqamah;
bool initHitungMundurPeringatanSimbol;
bool initHitungMundurShalat;

uint8_t hitungMundurAlarmIqamah;//kali

int8_t indexWaktuIbadah;
int8_t indekInformasi;

//efek
uint16_t lamaTampilText;
bool initTampil;

bool tampilanInformasiSambung;

byte indekTampilan = jumlahInformasi;
EfekMarque efekMarque;

uint16_t lebarText;
uint8_t tinggiText;

byte detikSebelumnya = 60;
byte menitSebelumnya = 60;
byte tanggalSebelumnya = 0;

long millisAlarm;

bool status;

BluetoothApk bluetoothApk(&Serial, "JWS2 SEMESIN.COM");
long millisAksesApk;
bool aksesApk;

uint16_t counterAlamat = 0;
uint16_t counterAlamatSebelumnya = 0;
uint16_t parameterSebelumnya = 0;

byte lebarJamUtama = 32;

byte lebarJadwalShalat = 32;
byte modeTampilanJadwal;
char buffer[72];
uint16_t offsetJadwalEEPROM;
bool runningTextAktif;

JamDanMenitJadwal jadwalBerikutnya;
JamDanMenitAlarm alarmBerikutnya;
int8_t hitungMundurAlarm;
bool initHitungMundurAlarm;
bool statusRelayAmpli;

void setup() {

  pinMode(pinBuzzer, OUTPUT);
  digitalWrite(pinRelayAmpli, !relayOn);
  pinMode(pinRelayAmpli, OUTPUT);
  pinMode(pinMP3Busy, INPUT_PULLUP);

  Serial.begin(9600);
  Serial.println(F("JWS Semesin 1-8 panel"));
  Serial.println(F("https://www.project.semesin.com"));

  mp3_set_serial (Serial);
  mp3_set_volume (15);


#if serialDebug
  Serial.println(F("Inisialisasi"));
#endif

  rtc.begin();

  if (rtc.lostPower())
  {
#if serialDebug
    Serial.println(F("RTC tidak jalan"));
#endif
    write_i2c_register(DS3231_ADDRESS, DS3231_STATUSREG, 0x00);
  }
  write_i2c_register(DS3231_ADDRESS, DS3231_CONTROL, DS3231_SquareWave1Hz);

  if (EEPROM.read(offsetof(Setting, token)) != tokenSetting)
  {
    pengaturanAwal();
  }

  updateUkuranTampilan();
  dmd.waitInterruptOver = false;
  dmd.begin();
  dmd.clearScreen();
  dmd.setBrightness(25.5 * EEPROM.read(offsetof(Setting, kecerahanStandar)));

  kecepatanRunningEfek = skala2kecepatanRunning(EEPROM.read(offsetof(Setting, kecepatanEfek)));

#if serialDebug
  Serial.println(F("Sistem mulai"));
#endif

  dmd.selectFont(fontNamaMesjid);
  dmd.drawString(1, 1, namaMesjid);

  delay(3000);
  dmd.clearScreen();

  statusRelayAmpli = digitalRead(pinMP3Busy);
}


void loop() {

....... file lengkap bisa didownload melalui link dibawah

file JWS universal:

JWS Semesin v2.1

catatan:
* untuk RTC DS3231, pin-SQW harus terpasang pada pin-A3 (arduino)
* jika menggunakan pcb jws (versi manapun) ada kemungkinan tidak cocok dan perlu modifikasi

82 thoughts on “JWS Universal (Jadwal Waktu Shalat) 1 – 8 panel

  1. Assalamualaikum…
    Saya Arifin dari Jakarta
    Saya sdh mencoba upload sket ke arduino uno dg komposisi komponen sesuai sketsa dan sdh tanam aplikasi di android. saat dinyalakan hanya tertulis Shalat. kemudian saya koneksikan dg BT dan coba set. Namun setelah terkirim, panelnya malah blank. adakah yg perlu saya perbaiki ?
    Terima kasih banyak atas tutornya

  2. Asalamualaikum wr wb.unutuk file mp3nya bisa didonwload dmn ya kak.mohon bantuannya….sudah sukses membuatnya.tinggal untuk mp3nya…kalau pakai pcb yg dijual bebas di online memang mati bila dikoneksikan blutut karena wiring tdk sama.

    1. alhamdulilah sukses kang.. terima kasih ilmunya sangat bermanfaat… sudh coba dua2 nya yg jws 3 panel sama yg universal semua sukses… semoga kang asep semakin d lancarkan rejekinya.. amin…

    1. pastikan wiringnya sesuai skema
      catatan:
      * untuk RTC DS3231, pin-SQW harus terpasang pada pin-A3 (arduino)
      * jika menggunakan pcb jws (versi manapun) ada kemungkinan tidak cocok dan perlu modifikasi

    1. *cek arduino bluetooth (baudrate 9600) – cek juga dengan program lain yang menggunakan bluetooth pada pin Serial (pin 0 dan 1)
      *pada android, pastikan telah di pairing dan dipilih di aplikasi
      *gunakan password standar 1234 jika belum di ganti, atau password terakhir yang disetting

  3. Seperti biasanya, proyek kang Asep top markotop. Smua koding lengkap tinggal enter dan hulaaaaa laaaaaaaaa…..
    Semua program berjalan baik gak ada eror. Testimoni video di upload ahhhhhhh

  4. Maaf akang sebelumnya banyak Terima kasih atas ilmunya
    Koq tampilan nama Masjid ga ada ya? Apa harus pakai rangkaian sama persis ga bisa dgn pcb jws lain
    Trims Akang

  5. assalamualaikum maha guru, terimakasih ats postingannya, sedikt bertanya.
    saya menggunakan mega2560 koneksi sudah saya sesuiakan dan koding sudah saya sesuaikan, tapi led nya menyala semua, apa yang yang salah ya guru. dan masih belum bisa di menampilkan.
    terimakasih ya guru.

  6. Kang ,perkenalkeun sama sama Asep.mau tanya kumaha kalo p10 dmd nya pingin di ganti ke rgb matrix pake adagruit gfx.ap yg mesti di lakukan

    1. BIsa saja, tapi akan ada beberapa ‘konversi’ dari standar library dmd2 (modified) dan library adafruit gfx, terutama fitur ‘automatic scan width’ yang tidak dimiliki adafruit gfx (mesti di modif juga/dihilangkan)

  7. Assalamualaikum, ijin download Pak, saya sdh upload ke arduino, mohon bantuannya :
    1. tartil ataupun tarhim tidak bunyi, file sudah sesuai format, jika saya play manual bisa bunyi, namun tidak bisa pada saat sesuai jam shalat, misal saya setting untuk duhur baik, tartil maupun tarhim, namun tidak berbunyi.

    2. untuk alarm adzan tidak bisa menggunakan suara adzan kah?

    terima kasih

  8. Assalamualaikum wr wb.
    ijin download Pak, saya sdh upload ke arduino, Tapi kalender hijriyah dan pasaran hari tidak muncul, cara menampilkan kalender hijriyah dan pasaran hari bagaimana ya pak..
    Jazakumulloh atas karyanya

  9. Assalamuaikum kang saya febri mau tanya kalau masalah ini apanya ya kang terima kasih kang

    void pengaturanAwal()
    {
    uint16_t ptr = &settingAwal;
    for (uint16_t i = 0; i < sizeof(Setting); i++)
    {
    byte dataDefault = pgm_read_byte(ptr++);
    EEPROM.update(i, dataDefault);
    }

    Wire.beginTransmission(I2CEEPROM_ADDRESS);
    Wire.write((uint8_t)0);
    Wire.write((uint8_t)0);
    Wire.write((uint8_t)0);
    Wire.endTransmission();
    }
    #endif
    invalid conversion from 'const Setting*' to 'uint16_t {aka short unsigned int}' [-fpermissive]

  10. Terimakasih terlebih dulu ….. Gan kok setting via aplikasi di hp gak bisa … Error perangkat tidak merespon di pengaturan umum kalau di pengaturan sholat tulisan pengaturan terkirim cuma tidak berubah… Wiring sudah sesuai diagram… Mohon solusi nya

  11. kang ijin download.. rencana mau buatin untuk musholla.. kalo misal modul blutut di ganti modul wifi esp8266 gmana kang.. apanya yang harus di rubah.. soalnya modul blutut hrganya lumayan mahal..(maklum kantong pelajar) mohon bantuanya.. terima ksih semoga kang asep di lancarkan rejekinya.. amin

  12. ok terima kasih infonya kang.. tp untuk pake nodemcu..ilmunya beon nyampe saya ,ehhehe.. arduino j masih tahap beljar kang.. maksih ya kang atas ilmunya.. sangat bermanfat…

  13. Assalamualakium Om

    Mau tanya… saya hanya mau buat satu panel P10, dan tidak pakai audio.. mp3 dan yang lainnya..
    tetepai masih pakai BUzer.

    Apakah yang saya harus rubah programnya?

  14. maaf kok mp3 nya gak bisa nyala ya kak.. wiring sudah sesuai dg gambar.. tp mp3 gak bisa di putar.. apakah saya salah memasukkan nama file mp3 nya di kartu memory.. mohon bimbingannya terima kasih

  15. maaf mau tany bang , kena puny saya error terus ya.. pdahal sudah mengikuti arahan di atas.. wiring juga sudah benar.. tiap kali saya verifikasi keluar
    error exit status 1
    error compiling for board arduino uno
    itu kenapa ya mohon bimbingannya terima ksih sebelumnya

  16. Karya Mas Asep yg luar biasa,,, bisa digunakan untuk referensi pembelajaran bagi pemula,,, kami tunggu project JWS yg menggunakan control wifi esp8266 mas biar controlnya lebih stabil dan tentunya lebih ekonomis buat beli alatnya yg pas buat kocek mahasiswa. Makasih banyak ni jdi termotivasi untuk bereksperimen.

  17. Sehat selalu kang semoga tambsh lncar rezekinya …tanya kang.. bluetooth udah tersambung dan bisa setting sinkron jam dll. tp wkt isi id dan pass ada tulisan perangkat tidak merespon ..?? Kendalanya lg saya isi text g masuk yg lain biss. Udah aq pasang r2.2k dan 1k d reciver bluyoothnya.

  18. .. bluetooth udah tersambung tp wkt kirim program ada tulisan perangkat tidak merespon ..?? Sinkron jam bisa dan lain lain kecuali text nya g ke kirim alias tdk muncul text

  19. Mohon bantuannya, saya ada kendala di upload sketch error {exit status 1
    ‘write_i2c_register’ was not declared in this scope}
    Kenapa ya kang…Terima kasih

  20. maaf kang mau nanya . saya pasang ke panel kok led jadi nyala semua.. tampilan huruf dan angkanya yg mati… itu kenapa ya… terima kasih sebelumnya

  21. assalamualaikum kalo error seperti itu kenepa ya? invalid conversion from ‘const Setting*’ to ‘uint16_t {aka short unsigned int}’ [-fpermissive]

  22. Assalamu alaikum
    Maaf mas, mohon pencerahan kalau error compiling seperti ini apa solusinya?

    In file included from JWS_semesin_2.1.ino:54:0:
    C:\Users\hapandi\Documents\Arduino\libraries\DMD-semesin/DMD_Semesin.h:8:17: fatal error: SPI.h: No such file or directory
    #include “SPI.h”
    ^
    compilation terminated.
    Error compiling.

  23. Assalamualaikum pak, sketch saya kompil pake aplikasi arduinodroid (hp android) versi app terbaru dari playstore, hp xiaomi os android 9.
    Saat saya kompil di arduino uno, nano, pro mini, dll kok eror :

    “Binari sketch size : 33.202 bytes (of a 30.720 byte maximum)sketch to big”
    Cuma cocok di board arduino Mega saja.

    Solusinya gimana ya pak agar bisa digunakan untuk arduino pro mini ATm328 atau sejenisnya ?

  24. Assalamualaikum kang ..sy sdh upload dan berhasil di arduino nano atmega..di LED ada tulisan shalat..terus coba pairing bluetooth…tapi layar langsung mati..kira² bagaimana solusinya… terimakasih

    1. tampilan panel akan di istirahatkan sementara selama proses kirim setting
      jika ada gangguan/belum selesai, maka perangkat akan tetap menunggu (padam)
      ::: ulangi proses kirim data
      ::: cek koneksi bluetooth

  25. Selamat sore mas, terimakasih atas sharing ilmu mengenai jam waktu sholatnya. Sangat bagus dan mudah diaplikasikan.

    Ohiya kira² jika kita ingin mengaktifkan untuk tanggal jawa bagaimana ya. Di apk nya kok tidak bisa dicentang…

    Terimakasih

    1. sketch jws ini, memang tidak mengaktifkan tanggal hijriah (dan beberapa fitur lainnya)
      untuk menampilkan tanggal Hijriah, perlu dimodifikasi, dengan catatan dikarenakan keterbatasan memory, perlu juga menghapus beberapa fitur (misal fitur multi panel)

Leave a Reply

Your email address will not be published. Required fields are marked *