/****************** https://app.sanusb.org/fmiot/ ***********************/
// #if defined(ESP32)
#include <WiFi.h>
#include <HTTPClient.h>
#include <FirebaseESP32.h>
#include <ESP32Servo.h>
/*
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <FirebaseESP8266.h>
#endif
//*/
//wokwi.com: Install Firebase ESP32 Client in Library Manager
//https://wokwi.com/projects/354403233523341313
//*
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define SERVO_PIN 2
#define TRIG_PIN 5
#define ECHO_PIN 18
#define RP 19
#define GP 21
#define BP 22
float duration,distance;
int pos=0;
//*/
//Install Firebase-ESP32 for real ESP32. See details at https://github.com/SanUSB/EspCloudUpdate
/*
#define WIFI_SSID "----------"
#define WIFI_PASSWORD "----------"
//*/
FirebaseData firebaseData;
Servo servoMotor;
#define FIREBASE_HOST "https://fer-prj-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "Aq6W4xkBydcfZDP9nJgX5DWaM2LzgCIeQVteOujR"
String messageTemp;
void setup_wifi(void) {
pinMode(LED_BUILTIN, OUTPUT);
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void firebase_config(void) {
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
//Enable auto reconnect the WiFi when connection lost
Firebase.reconnectWiFi(true);
}
//***********************************************************
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(RP, OUTPUT);
pinMode(GP, OUTPUT);
pinMode(BP, OUTPUT);
setup_wifi();
firebase_config();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servoMotor.attach(SERVO_PIN); // attaches the servo on ESP32 pin untuk memulai servo nya
servoMotor.write (pos);
}
void RGBled(char a)
{
if(a == 'R')
{
digitalWrite(RP, LOW);
digitalWrite(GP, HIGH);
digitalWrite(BP, HIGH);
}else if(a == 'G')
{
digitalWrite(RP, HIGH);
digitalWrite(GP, LOW);
digitalWrite(BP, HIGH);
}else if(a == 'B')
{
digitalWrite(RP, HIGH);
digitalWrite(GP, HIGH);
digitalWrite(BP, LOW);
}else if(a == 'E')
{
digitalWrite(RP, HIGH);
digitalWrite(GP, HIGH);
digitalWrite(BP, HIGH);
}
}
//**********************************************************
void loop() {
digitalWrite(TRIG_PIN, HIGH); //ngambil data
delayMicroseconds(10); //buat data waktu
digitalWrite(TRIG_PIN, LOW); //input
duration = pulseIn(ECHO_PIN, HIGH);
distance = 0.017 * duration;
if (distance < 5)
{
RGBled('R');
Firebase.setInt(firebaseData,"PersonPresense",1);
int ppv= 1;
while(ppv == 1)
{
RGBled('E');
delay(100);
RGBled('R');
delay(100);
if(Firebase.getInt(firebaseData, "/PersonPresense"))
{
ppv = firebaseData.intData();
if(ppv == 0)
{
RGBled('G');
servoMotor.write(200);
delay(3000);
servoMotor.write(0);
}
else if(ppv == 2)
{
RGBled('E');
delay(100);
RGBled('B');
delay(100);
}else if(ppv == 3)
{
RGBled('E');
delay(1000);
RGBled('B');
delay(1000);
}
}
}
}
Firebase.setString(firebaseData, "/ESP32/P16", 123);
}