TKK_E32230939/esp8266.ino

175 lines
3.0 KiB
C++

#include <ESP8266WiFi.h>
#include <Firebase_ESP_Client.h>
#include <Servo.h>
// ================= WIFI =================
const char* ssid = "Rio";
const char* password = "Rio1234567";
// ================= FIREBASE =================
#define API_KEY "AIzaSyC-YYniuYaVJAZl0LywCbC-HKvMED0_uUY"
#define DATABASE_URL "https://poultryrail-1205e-default-rtdb.firebaseio.com/"
#define USER_EMAIL "esp32@gmail.com"
#define USER_PASSWORD "12345678"
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
// ================= SERVO =================
Servo servo1;
Servo servo2;
#define SERVO1_PIN 14
#define SERVO2_PIN 12
// ================= ULTRASONIK =================
#define TRIG_PIN 2
#define ECHO_PIN 5
unsigned long lastServo = 0;
unsigned long lastUltra = 0;
// ================= STATUS =================
String lastCmd1 = "";
String lastCmd2 = "";
void setup() {
Serial.begin(115200);
// ================= SERVO =================
servo1.attach(SERVO1_PIN);
servo2.attach(SERVO2_PIN);
servo1.writeMicroseconds(1500);
servo2.writeMicroseconds(1500);
// ================= ULTRASONIK =================
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// ================= WIFI =================
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(300);
Serial.print(".");
}
Serial.println("\nWiFi Connected");
// ================= FIREBASE =================
config.api_key = API_KEY;
config.database_url = DATABASE_URL;
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;
Firebase.begin(&config, &auth);
Firebase.reconnectWiFi(true);
}
// ================= LOOP =================
void loop() {
// ================= WIFI =================
if (WiFi.status() != WL_CONNECTED) {
WiFi.reconnect();
}
// ================= SERVO =================
if (millis() - lastServo > 150) {
lastServo = millis();
// ================= SERVO1 =================
if (Firebase.RTDB.getString(
&fbdo,
"/servo1/action")) {
String cmd1 = fbdo.stringData();
if (cmd1 != lastCmd1) {
lastCmd1 = cmd1;
if (cmd1 == "open") {
servo1.writeMicroseconds(1900);
Serial.println("Servo1 OPEN");
} else {
servo1.writeMicroseconds(1500);
Serial.println("Servo1 CLOSE");
}
}
}
// ================= SERVO2 =================
if (Firebase.RTDB.getString(
&fbdo,
"/servo2/action")) {
String cmd2 = fbdo.stringData();
if (cmd2 != lastCmd2) {
lastCmd2 = cmd2;
if (cmd2 == "open") {
servo2.writeMicroseconds(1100);
Serial.println("Servo2 OPEN");
} else {
servo2.writeMicroseconds(1500);
Serial.println("Servo2 CLOSE");
}
}
}
}
// ================= ULTRASONIK =================
if (millis() - lastUltra > 1000) {
lastUltra = millis();
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration =
pulseIn(ECHO_PIN, HIGH);
float distance =
duration * 0.034 / 2;
if (distance > 2 &&
distance < 400) {
Firebase.RTDB.setFloat(
&fbdo,
"/sensor/jarak",
distance
);
Serial.print("Jarak: ");
Serial.println(distance);
}
}
}