#include <Arduino.h>
#include <Firebase_ESP_Client.h>
#include <WiFi.h>
#include <Ultrasonic.h>
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define WIFI_SSID "Ro2"
#define WIFI_PASSWORD "bismillahpakearab"
#define API_KEY "AIzaSyC6qIItCzS3NuD6W3TLxcQKS_eEG4wSIsk"
#define DATABASE_URL "https://smartparkingsystem-1635d-default-rtdb.asia-southeast1.firebasedatabase.app/"
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
unsigned long sendDataPrevMillis = 0;
int count = 0;
bool signupOK = false;
#define trigPin1 13
#define echoPin1 12
#define redPin1 23
#define greenPin1 22
#define bluePin1 21
#define trigPin2 14
#define echoPin2 27
#define redPin2 18
#define greenPin2 5
#define bluePin2 19
#define trigPin3 26
#define echoPin3 25
#define redPin3 17
#define greenPin3 16
#define bluePin3 4
Ultrasonic ultrasonic1(trigPin1, echoPin1);
Ultrasonic ultrasonic2(trigPin2, echoPin2);
Ultrasonic ultrasonic3(trigPin3, echoPin3);
void setup() {
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
if (Firebase.signUp(&config, &auth, "", "")){
Serial.println("ok");
signupOK = true;
}
else{
Serial.printf("%s\n", config.signer.signupError.message.c_str());
}
config.token_status_callback = tokenStatusCallback;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
Serial.begin(115200);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(redPin1, OUTPUT);
pinMode(greenPin1, OUTPUT);
pinMode(bluePin1, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(redPin2, OUTPUT);
pinMode(greenPin2, OUTPUT);
pinMode(bluePin2, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(redPin3, OUTPUT);
pinMode(greenPin3, OUTPUT);
pinMode(bluePin3, OUTPUT);
}
void loop() {
int distance1 = ultrasonic1.read();
int distance2 = ultrasonic2.read();
int distance3 = ultrasonic3.read();
if(isnan(distance1) || isnan(distance2) || isnan(distance3)) {
Serial.println("Failed to read data from Ultrasonic sensor");
}
else {
Firebase.RTDB.setFloat(&fbdo, "/data/distance1/ult1", distance1);
Firebase.RTDB.setFloat(&fbdo, "/data/distance2/ult2", distance2);
Firebase.RTDB.setFloat(&fbdo, "/data/distance3/ult3", distance3);
}
if (distance1 < 10) {
// Set LED color to red
analogWrite(redPin1, 255);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance1/status1", "Keisi");
// Serial.print("Distance in cm: ");
// Serial.println(distance1);
// Serial.println("Status : TERISI");
}
if (distance1 > 10 && distance1 < 30) {
// Set LED color to green
analogWrite(redPin1, 0);
analogWrite(greenPin1, 255);
analogWrite(bluePin1, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance1/status1", "Kosong");
// Serial.print("Distance in cm: ");
// Serial.println(distance1);
// Serial.println("Status : KOSONG");
}
if (distance2 < 10) {
// Set LED color to red
analogWrite(redPin2, 255);
analogWrite(greenPin2, 0);
analogWrite(bluePin2, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance2/status2", "Keisi");
// Serial.print("Distance in cm: ");
// Serial.println(distance2);
// Serial.println("Status : TERISI");
}
if (distance2 > 10 && distance2 < 30) {
// Set LED color to green
analogWrite(redPin2, 0);
analogWrite(greenPin2, 255);
analogWrite(bluePin2, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance2/status2", "Kosong");
// Serial.print("Distance in cm: ");
// Serial.println(distance2);
// Serial.println("Status : KOSONG");
}
if (distance3 < 10) {
// Set LED color to red
analogWrite(redPin3, 255);
analogWrite(greenPin3, 0);
analogWrite(bluePin3, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance3/status3", "Keisi");
// Serial.print("Distance in cm: ");
// Serial.println(distance3);
// Serial.println("Status : TERISI");
}
if (distance3 > 10 && distance3 < 30) {
// Set LED color to green
analogWrite(redPin3, 0);
analogWrite(greenPin3, 255);
analogWrite(bluePin3, 0);
Firebase.RTDB.setString(&fbdo, "/data/distance3/status3", "Kosong");
// Serial.print("Distance in cm: ");
// Serial.println(distance3);
// Serial.println("Status : KOSONG");
}
if (distance1 > 30 || distance2 > 30 || distance3 > 30) {
// Set LED to OFF
analogWrite(redPin1, 0);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, 0);
analogWrite(redPin2, 0);
analogWrite(greenPin2, 0);
analogWrite(bluePin2, 0);
analogWrite(redPin3, 0);
analogWrite(greenPin3, 0);
analogWrite(bluePin3, 0);
// Serial.print("Distance in cm: ");
// Serial.println(distance1);
// Serial.println("Status : PERBAIKAN");
}
delay(5000);
}