Lompat ke konten Lompat ke sidebar Lompat ke footer

Membuat JWS Arduino Dengan Kontrol Android

Cara Membuat Jadwal Waktu Shalat Menggunakan Kontrol Handphone


Hallo sobat Pandu..untuk postingan kali ini Pandupedia akan membagikan cara membuat Jadwal Waktu Shalat ( JWS ) menggunakan Arduino ,Panel P 10 dengan menggunakan kontrol dari HP Android.

Untuk alat alat yang dibutuhkan adalah sebagai berikut :
  1. Arduino Uno 
  2. Panel P10
  3. DMD Konektor
  4. Modul Bluetooth HC-05
  5. Modul MP3 Player
  6. RTC DS2321
  7. Relay ( jika akan dikoneksikan dengan amplifier )
Nah jika sudah tersedia silahkan sobat Pandu rangkai seperti gambar dibawah ini :



 
Untuk aplikasi androidnya sudah tersedia 1 paket dalam file download yang sudah Pandupedia sediakan diakhir ya...untuk tampilan aplikasinya seperti dibawah ini :




Untuk kodingnya/sketch nya :


#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.semesin.com/project"));
  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() {



 Untuk lebih lengkapnya , semua file silahkan download di link dibawah ini  ya !





 Password : pandupedia.com








5 komentar untuk "Membuat JWS Arduino Dengan Kontrol Android"

  1. Terima kasih atas transfer knowledge-nya. Alhamdulillaah saya sudah berhasil membuat JWS ini dg 2 panel. Apabila ingin merubah menjadi 4 panel apa saja yang harus dirubah?

    BalasHapus
    Balasan
    1. Rubah di settingan lebar dan tinggi panelnya aja mas

      Hapus
  2. kalo digante pake lcd 16x2 gimana bang caranya?

    BalasHapus
  3. ini kenapa masalah nya bang
    uint16_t ptr = &settingAwal;
    .ini pemberi tahuan eror nya bang
    invalid conversion from 'const Setting*' to 'uint16_t {aka short unsigned int}' [-fpermissive]

    BalasHapus
  4. saya coba kenapa error yaa ?

    BalasHapus