Jammer merupakan alat pengacak/blokir sinyal handphone/hp dapat digunakan di tempat ibadah untuk me-nonaktifkan perangkat cellular sehingga tidak bisa dipanggil/memanggil dengan tujuan menjaga tempat ibadah dari kebisingan dering ponsel.
Penggunaan jammer/jamming/repeater sinyal hp bisa mengganggu hak orang lain dan berpotensi melanggar undang-undang telekomunikasi, gunakan dengan bijak
Jadwal Shalat
Jadwal shalat berubah-ubah setiap hari tergantung posisi matahari dan bulan, hal ini membuat perangkat digital harus mampu mengikuti perubahan ini. Beberapa metode penggunaan jadwal shalat shalat digital :
- Jadwal manual, yaitu jadwal rata-rata dari setiap waktu-waktu shalat
- Jadwal database, yaitu jadwal yang tersimpan dalam tabel, bisa mingguan, bulanan atau tahunan
- Jadwal Matahari, yaitu penghitungan waktu shalat menggunakan posisi peredaran matahari, dengan memasukkan variabel posisi lintang, bujur, dan tanggal.
- Jadwal online, dengan mengambil data dari server online setiap hari.
Skema JWS Jammer menggunakan arduino:
Komponen yang digunakan dalam JWS Database Jadwal Waktu Bulanan:
- Arduino Uno
- LCD 1602 I2C Backpack
- RTC DS3231
- Relay untuk jammer
- 3x LED
- 3x TOmbol
Koding/program JWS Jadwal Bulanan:
#define pinLedMerah 5
#define pinLedHijau 6
#define pinLedBiru 7
#define pinTombolOtomatis 11
#define pinTombolManual 12
#define pinTombolJammer 13
#define pinJammer 4
#define relayOn LOW
#define waktuJammerShalat 20
#define waktuJammerShalatJumat 60
#define waktuJammerManual 20
#include <Wire.h>
#include "Sodaq_DS3231.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
struct waktu
{
byte jam;
byte menit;
};
const waktu jadwalShalat[][8] PROGMEM = {
//Imsyak Shubuh Terbit Dhuha Dzuhur Ashr Maghrib Isya
{{ 4, 20}, { 4, 30}, { 5, 51}, { 6, 15}, {12, 7}, {15, 34}, {18, 20}, {19, 36}},
{{ 4, 20}, { 4, 30}, { 5, 51}, { 6, 15}, {12, 8}, {15, 34}, {18, 20}, {19, 36}},
{{ 4, 21}, { 4, 31}, { 5, 52}, { 6, 16}, {12, 8}, {15, 35}, {18, 21}, {19, 36}},
{{ 4, 21}, { 4, 31}, { 5, 52}, { 6, 16}, {12, 9}, {15, 35}, {18, 21}, {19, 37}},
{{ 4, 22}, { 4, 32}, { 5, 53}, { 6, 17}, {12, 9}, {15, 36}, {18, 21}, {19, 37}},
{{ 4, 23}, { 4, 33}, { 5, 53}, { 6, 17}, {12, 9}, {15, 36}, {18, 22}, {19, 37}},
{{ 4, 23}, { 4, 33}, { 5, 54}, { 6, 18}, {12, 10}, {15, 36}, {18, 22}, {19, 38}},
{{ 4, 24}, { 4, 34}, { 5, 54}, { 6, 18}, {12, 10}, {15, 37}, {18, 23}, {19, 38}},
{{ 4, 24}, { 4, 34}, { 5, 55}, { 6, 19}, {12, 11}, {15, 37}, {18, 23}, {19, 38}},
{{ 4, 25}, { 4, 35}, { 5, 55}, { 6, 19}, {12, 11}, {15, 37}, {18, 23}, {19, 38}},
{{ 4, 25}, { 4, 35}, { 5, 56}, { 6, 20}, {12, 12}, {15, 37}, {18, 24}, {19, 39}},
{{ 4, 26}, { 4, 36}, { 5, 56}, { 6, 20}, {12, 12}, {15, 38}, {18, 24}, {19, 39}},
{{ 4, 27}, { 4, 37}, { 5, 56}, { 6, 20}, {12, 12}, {15, 38}, {18, 24}, {19, 39}},
{{ 4, 27}, { 4, 37}, { 5, 57}, { 6, 21}, {12, 13}, {15, 38}, {18, 25}, {19, 39}},
{{ 4, 28}, { 4, 38}, { 5, 57}, { 6, 21}, {12, 13}, {15, 38}, {18, 25}, {19, 40}},
{{ 4, 28}, { 4, 38}, { 5, 58}, { 6, 22}, {12, 13}, {15, 39}, {18, 25}, {19, 40}},
{{ 4, 29}, { 4, 39}, { 5, 58}, { 6, 22}, {12, 14}, {15, 39}, {18, 25}, {19, 40}},
{{ 4, 29}, { 4, 39}, { 5, 59}, { 6, 23}, {12, 14}, {15, 39}, {18, 26}, {19, 40}},
{{ 4, 30}, { 4, 40}, { 5, 59}, { 6, 23}, {12, 14}, {15, 39}, {18, 26}, {19, 40}},
{{ 4, 30}, { 4, 40}, { 5, 59}, { 6, 23}, {12, 15}, {15, 39}, {18, 26}, {19, 40}},
{{ 4, 31}, { 4, 41}, { 6, 0}, { 6, 24}, {12, 15}, {15, 39}, {18, 26}, {19, 40}},
{{ 4, 31}, { 4, 41}, { 6, 0}, { 6, 24}, {12, 15}, {15, 39}, {18, 26}, {19, 40}},
{{ 4, 32}, { 4, 42}, { 6, 1}, { 6, 25}, {12, 16}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 32}, { 4, 42}, { 6, 1}, { 6, 25}, {12, 16}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 33}, { 4, 43}, { 6, 1}, { 6, 25}, {12, 16}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 33}, { 4, 43}, { 6, 2}, { 6, 26}, {12, 16}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 34}, { 4, 44}, { 6, 2}, { 6, 26}, {12, 17}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 34}, { 4, 44}, { 6, 2}, { 6, 26}, {12, 17}, {15, 39}, {18, 27}, {19, 41}},
{{ 4, 35}, { 4, 45}, { 6, 3}, { 6, 27}, {12, 17}, {15, 39}, {18, 27}, {19, 40}},
{{ 4, 35}, { 4, 45}, { 6, 3}, { 6, 27}, {12, 17}, {15, 39}, {18, 27}, {19, 40}},
{{ 4, 36}, { 4, 46}, { 6, 3}, { 6, 27}, {12, 17}, {15, 39}, {18, 27}, {19, 40}},
};
byte waktuUtama[] = {1, 4, 5, 6, 7};
char namaHari[][8] = {"Minggu,", "Senin, ", "Selasa,", " Rabu, ", "Kamis, ", "Jumat, ", "Sabtu, "};
char namaWaktu[][16] = {"Imsyak", "Shubuh", "Terbit", "Dhuha", "Dzuhur", "Ashr", "Maghrib", "Isya"};
enum Mode
{
otomatis,
manual,
};
byte mode;
char buffer[32];
byte detikSebelumnya = 60;
byte menitSebelumnya = 60;
uint16_t unixRelay;
bool statusJammer;
DateTime now;
void setup()
{
pinMode(pinLedMerah, OUTPUT);
pinMode(pinLedHijau, OUTPUT);
pinMode(pinLedBiru, OUTPUT);
digitalWrite(pinJammer, !relayOn);
pinMode(pinJammer, OUTPUT);
pinMode(pinTombolOtomatis, INPUT_PULLUP);
pinMode(pinTombolManual, INPUT_PULLUP);
pinMode(pinTombolJammer, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("JWS Jammer Sinyal HP dengan Jadwal Bulanan");
Serial.println("https://www.project.semesin.com");
Wire.begin();
Wire.beginTransmission(0x3F);
if (Wire.endTransmission())
{
lcd = LiquidCrystal_I2C(0x27, 16, 2);
}
lcd.begin();
rtc.begin();
now = rtc.now();
if (now.year() == 2000)
{
//Waktu compiler
char bulan[12];
byte indexBulan;
int jam, menit, detik, tanggal, tahun;
char *namaBulan[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
sscanf(__TIME__, "%d:%d:%d", &jam, &menit, &detik);
sscanf(__DATE__, "%s %d %d", bulan, &tanggal, &tahun);
for (indexBulan = 0; indexBulan < 12; indexBulan++) {
if (strcmp(bulan, namaBulan[indexBulan]) == 0)
break;
}
uint8_t wday = hariDariTanggal(tanggal, indexBulan + 1, tahun);
DateTime dt(tahun, indexBulan + 1, tanggal, jam, menit, detik, wday);
rtc.setDateTime(dt);
Serial.println("RTC sudah otomatis di setting (Sekali saja)");
}
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("JWS Bulanan");
lcd.setCursor(0, 1);
lcd.print("fitur : Jammer");
delay(3000);
lcd.clear();
digitalWrite(pinLedHijau, HIGH);
Serial.println("Sistem mulai");
}
void loop()
{
now = rtc.now();
uint16_t unixSekarang = now.hour() * 60 + now.minute();
if (detikSebelumnya != now.second())
{
detikSebelumnya = now.second();
if (!statusJammer)
{
sprintf(buffer, "%s %02d/%02d/%02d", namaHari[now.dayOfWeek() - 1], now.date(), now.month(), now.year() - 2000);
lcd.setCursor(0, 0);
lcd.print(buffer);
}
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(4, 1);
lcd.print(buffer);
}
if (menitSebelumnya != now.minute())
{
menitSebelumnya = now.minute();
if (mode == otomatis)
{
for (byte i = 0; i < 5; i++)
{
if ((pgm_read_byte(&jadwalShalat[now.date() - 1][waktuUtama[i]].jam) == now.hour()) &&
(pgm_read_byte(&jadwalShalat[now.date() - 1][waktuUtama[i]].menit) == now.minute()))
{
digitalWrite(pinLedMerah, HIGH);
digitalWrite(pinJammer, relayOn);
if ((i == 1) && (now.dayOfWeek() == 6)) //Dzuhur / jumatan
{
unixRelay = unixSekarang + waktuJammerShalatJumat;//menit
}
else
{
unixRelay = unixSekarang + waktuJammerShalat;//menit
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" J A M M E R ");
statusJammer = true;
sprintf(buffer, "Waktu: %s", namaWaktu[waktuUtama[i]]);
lcd.setCursor(0, 1);
lcd.print(buffer);
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" J A M M E R ");
}
}
}
if (statusJammer)
{
if (unixSekarang == unixRelay)
{
statusJammer = false;
digitalWrite(pinLedMerah, LOW);
digitalWrite(pinJammer, !relayOn);
}
}
}
if (!digitalRead(pinTombolOtomatis))
{
delay(50);
if (!digitalRead(pinTombolOtomatis))
{
mode = otomatis;
digitalWrite(pinLedHijau, HIGH);
digitalWrite(pinLedBiru, LOW);
lcd.setCursor(0, 0);
lcd.print(" M O D E ");
lcd.setCursor(0, 1);
lcd.print("O T O M A T I S ");
delay(3000);
lcd.clear();
}
}
if (!digitalRead(pinTombolManual))
{
delay(50);
if (!digitalRead(pinTombolManual))
{
mode = manual;
digitalWrite(pinLedHijau, LOW);
digitalWrite(pinLedBiru, HIGH);
lcd.setCursor(0, 0);
lcd.print(" M O D E ");
lcd.setCursor(0, 1);
lcd.print(" M A N U A L ");
delay(3000);
lcd.clear();
}
}
if (mode == manual)
{
if (!digitalRead(pinTombolJammer))
{
delay(50);
if (!digitalRead(pinTombolJammer))
{
if (statusJammer)
{
digitalWrite(pinLedMerah, LOW);
digitalWrite(pinJammer, !relayOn);
statusJammer = false;
}
else
{
digitalWrite(pinLedMerah, HIGH);
digitalWrite(pinJammer, relayOn);
unixRelay = unixSekarang + waktuJammerManual;//menit
statusJammer = true;
lcd.setCursor(0, 0);
lcd.print(" J A M M E R ");
lcd.setCursor(0, 1);
lcd.print(" M A N U A L ");
delay(5000);
}
while (!digitalRead(pinTombolJammer));
delay(50);
}
}
}
}
byte hariDariTanggal(byte tanggal, byte bulan, uint16_t tahun)
{
uint16_t jumlahHariPerBulanMasehi[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
if (tahun >= 2000)
tahun -= 2000;
uint32_t jumlahHari = tahun * 365;
uint16_t tahunKabisat = tahun / 4;
for (byte i = 0; i < tahun; i++)
{
if (!(i % 4))
{
jumlahHari++;
}
}
jumlahHari += jumlahHariPerBulanMasehi[bulan - 1];
if ( (bulan >= 2) && !(tahun % 4))
{
jumlahHari++;
}
jumlahHari += tanggal;
return ((jumlahHari + 5) % 7) + 1;
}
Library: