/*
~ Aqmal Full
FAJAR CODE - 082131212001
Website : fajarcode.com
Develop : Fajar Arya Pangestu
*/
//Library
#include <WiFi.h>
#include <HTTPClient.h>
//Set WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
//Server
const String url_jam = "http://rtc.fajarcode.com/jam.php";
const String url_menit = "http://rtc.fajarcode.com/menit.php";
const String url_jadwal = "http://send.fajarcode.com/aqmal_jadwal.php";
//Ultrasonic
#include <Ultrasonic.h>
#define TRIG_PIN 14
#define ECHO_PIN 27
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
//DFPlayer
// #include "Arduino.h"
// #include "DFRobotDFPlayerMini.h"
// #include <SoftwareSerial.h>
// SoftwareSerial softSerial(25,26); //Pin D25 | D26
// #define FPSerial softSerial
// DFRobotDFPlayerMini myDFPlayer;
//Motor Getar
int p_motorgetar = 12;
//PB
int pb_a = 36;
int pb_b = 39;
int pb_c = 34;
int pb_d = 35;
int pb_e = 32;
int pb_f = 33;
//Set
int set_min_us = 10;
//Deklrasi
int once_mendekat = 0;
int jam, menit, httpResponseCode;
unsigned long millisrtc;
int next_jam, file_obat; String next_obat;
int lockdf = 0;
void setup() {
//Serial
Serial.begin(115200);
//PinMode
pinMode(pb_a, INPUT);
pinMode(pb_b, INPUT);
pinMode(pb_c, INPUT);
pinMode(pb_d, INPUT);
pinMode(pb_e, INPUT);
pinMode(pb_f, INPUT);
pinMode(p_motorgetar, OUTPUT);
//Off
digitalWrite(p_motorgetar, LOW);
//DFPlayer
// FPSerial.begin(115200);
// if (!myDFPlayer.begin(FPSerial,true,true)) {
// Serial.println("DFPlayer tidak terdeteksi");
// while(true);
// }
// Serial.println("DFPlayer Mini ready.");
// myDFPlayer.setTimeOut(500);
// myDFPlayer.volume(20); //Max 30
// myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
// myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
//Menyambungkan
WiFi.begin(ssid, password);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Terhubung");
}
void loop() {
//Server
HTTPClient http;
//Baca PB
if(digitalRead(pb_a) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB A Ditekan");
//Play mp3
// myDFPlayer.play(101); //File suara kotak x obat x
delay(10000);
//Reset
lockdf = 0;
} else if(digitalRead(pb_b) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB B Ditekan");
//Play mp3
// myDFPlayer.play(102);
delay(10000);
//Reset
lockdf = 0;
} else if(digitalRead(pb_c) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB C Ditekan");
//Play mp3
// myDFPlayer.play(103);
delay(10000);
//Reset
lockdf = 0;
} else if(digitalRead(pb_d) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB D Ditekan");
//Play mp3
// myDFPlayer.play(104);
delay(10000);
//Reset
lockdf = 0;
} else if(digitalRead(pb_e) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB E Ditekan");
//Play mp3
// myDFPlayer.play(105);
delay(10000);
//Reset
lockdf = 0;
} else if(digitalRead(pb_f) == HIGH && lockdf == 0){
//Pengunci
lockdf = 1;
Serial.println("PB F Ditekan");
//Play mp3
// myDFPlayer.play(106);
delay(10000);
//Reset
lockdf = 0;
}
//Baca Ultrasonic
int distance = ultrasonic.read();
//Ada yang mendekat
if(distance <= set_min_us){
if(once_mendekat == 0 && lockdf == 0){
//Print
Serial.println("Memutar mp3 ada yang mendekat");
//Pengunci
lockdf = 1;
//Lock
once_mendekat = 1;
//Play mp3
// myDFPlayer.play(107);
delay(5000);
//Reset
lockdf = 0;
} else {
//Motor getar on
digitalWrite(p_motorgetar, HIGH);
}
} else {
//Reset
once_mendekat = 0;
//Motor getar off
digitalWrite(p_motorgetar, LOW);
//Sistem
if(millis() - millisrtc >= 10000){
//Reset
millisrtc = millis();
//Ambil jam
http.begin(url_jam);
httpResponseCode = http.GET();
//Ambil Respon
if (httpResponseCode > 0) {
String payload = http.getString();
jam = payload.toInt();
Serial.print("Realtime ");
Serial.print(jam);
} else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
//Ambil Menit
http.begin(url_menit);
httpResponseCode = http.GET();
//Ambil Respon
if (httpResponseCode > 0) {
String payload = http.getString();
menit = payload.toInt();
Serial.print(":");
Serial.println(menit);
} else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
//Play RTC
if(lockdf == 0){
//Print
Serial.println("Memutar mp3 rtc");
//Pengunci
lockdf = 1;
// myDFPlayer.play(108); //File suara sekarang jam
delay(3000);
// myDFPlayer.play(jam); 16 25
delay(3000);
// myDFPlayer.play(menit);
delay(3000);
//Reset
lockdf = 0;
}
//Ambil Jadwal
http.begin(url_jadwal);
httpResponseCode = http.GET();
//Ambil Respon
if (httpResponseCode > 0) {
String payload = http.getString();
//Explode
int delimiterIndex = payload.indexOf('|');
String jamStr = payload.substring(0, delimiterIndex);
next_obat = payload.substring(delimiterIndex + 1);
next_jam = jamStr.toInt();
//Obat
if(next_obat == "A"){
file_obat = 111;
} else if(next_obat == "B"){
file_obat = 112;
} else if(next_obat == "C"){
file_obat = 113;
} else if(next_obat == "D"){
file_obat = 114;
} else if(next_obat == "E"){
file_obat = 115;
} else if(next_obat == "F"){
file_obat = 116;
} else {
file_obat = 118;
}
//Print
Serial.print("Next ");
Serial.print(next_jam);
Serial.print(" Obat: ");
Serial.print(next_obat);
Serial.print(" File: ");
Serial.println(file_obat);
} else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
if(lockdf == 0){
//Print
Serial.println("Memutar mp3 jadwal");
//Pengunci
lockdf = 1;
//Play Jadwal
// myDFPlayer.play(109); //File suara jadwal berikutnya jam
delay(3000);
// myDFPlayer.play(next_jam);
delay(3000);
// myDFPlayer.play(110); //File suara dengan kotak obat
delay(3000);
// myDFPlayer.play(file_obat);
delay(3000);
// myDFPlayer.play(117); //File suara abaikan jika sudah
delay(3000);
//Reset
lockdf = 0;
}
Serial.println("");
}
}
}