// Program for esp32 to connect to wifi and firebase // created by Jans Hendry // Universitas Gadjah Mada, Indonesia // Kamakura Node, Japan // fab academy MIT - 2022 #include // for wifi #include //Provide the token generation process info. #include "addons/TokenHelper.h" //Provide the RTDB payload printing info and other helper functions. #include "addons/RTDBHelper.h" // Insert your network credentials #define ssid "Baskom" #define password "masukajah" WiFiClient client; // client object // Insert Firebase project API Key #define API_KEY "xxxxxxxxxxxxx" // Insert RTDB URLefine the RTDB URL */ #define DATABASE_URL "https://xxxxxxx.firebasedatabase.app/" //Define Firebase Data object FirebaseData fbdo; FirebaseAuth auth; FirebaseConfig config; // variables float dur; float dist; const int echoPin = 2; // echo pin const int trigPin = 4; // trigger pin const int toat = 15; // signal to attiny1614 const int toat2 = 13; // signal to attiny1614 as well void setup(){ Serial.begin(115200); // serial // setting pins pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); pinMode(toat, OUTPUT); digitalWrite(toat, LOW); pinMode(toat2, OUTPUT); digitalWrite(toat2, LOW); // connect to wifi WiFi.mode(WIFI_STA); // Initialize WIFI WiFi.disconnect(); Serial.print("Connecting "); while (WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, password); Serial.print("."); delay(100); } Serial.println(" Connected"); Serial.print("Local IP: "); Serial.println(WiFi.localIP()); // Assign the api key config.api_key = API_KEY; // Assign the RTDB URL config.database_url = DATABASE_URL; // Sign up if (Firebase.signUp(&config, &auth, "", "")){ Serial.println("ok"); } else{ Serial.printf("%s\n", config.signer.signupError.message.c_str()); } // Assign the callback function for the long running token generation task config.token_status_callback = tokenStatusCallback; Firebase.begin(&config, &auth); Firebase.reconnectWiFi(true); delay(500); // take a breath } void loop(){ // get status of motor if (Firebase.RTDB.get(&fbdo, "m_up")){ String val1 = fbdo.stringData(); // Serial.println(val1); if (val1 == "1"){ digitalWrite(toat, HIGH); delay(20); } else if (val1 == "0"){ digitalWrite(toat, LOW); delay(20); } } // get status of led if (Firebase.RTDB.get(&fbdo, "l_on")){ String val2 = fbdo.stringData(); // Serial.println(val2); if (val2 == "1"){ digitalWrite(toat2, HIGH); delay(20); } else if (val2 == "0"){ digitalWrite(toat2, LOW); delay(20); } } // get sensor if (Firebase.RTDB.get(&fbdo, "rd_sen")){ String val3 = fbdo.stringData(); if (val3 == "1"){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // get the distance dur = pulseIn(echoPin, HIGH); dist = dur * 0.034 / 2; Firebase.RTDB.setFloat(&fbdo, "dist", dist); Firebase.RTDB.setString(&fbdo, "rd_sen", "0"); delay(20); } } }