/* Make sure your Firebase project's '.read' and '.write' rules are set to 'true'. Ignoring this will prevent the MCU from communicating with the database. For more details- https://github.com/Rupakpoddar/ESP32Firebase Download the Android app from- https://play.google.com/store/apps/details?id=com.rupak.firebaseremote */ #include #define _SSID "ENTER HERE" // Your WiFi SSID #define _PASSWORD "ENTER HERE" // Your WiFi Password #define REFERENCE_URL "ENTER HERE" // Your Firebase project reference url #define M1A 3 // D5: Output 1 for motor driver #define M1B 4 // D6: Output 2 for motor driver #define M2A 5 // D7: Output 3 for motor driver #define M2B 6 // D8: Output 4 for motor driver #define TURN_DELAY 100 #define FORWARD_BACKWARD_DELAY 500 Firebase firebase(REFERENCE_URL); void setup() { Serial.begin(115200); pinMode(M1A, OUTPUT); pinMode(M1B, OUTPUT); pinMode(M2A, OUTPUT); pinMode(M2B, OUTPUT); digitalWrite(M1A, LOW); digitalWrite(M1B, LOW); digitalWrite(M2A, LOW); digitalWrite(M2B, LOW); // pinMode(LED_BUILTIN, OUTPUT); // digitalWrite(LED_BUILTIN, LOW); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(1000); // Connect to WiFi Serial.println(); Serial.println(); Serial.print("Connecting to: "); Serial.println(_SSID); WiFi.begin(_SSID, _PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("-"); } Serial.println(""); Serial.println("WiFi Connected"); // Print the IP address Serial.print("IP Address: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); // digitalWrite(LED_BUILTIN, HIGH); } void loop() { int command = firebase.getInt("cmd/Robot"); // Get data from database. if(command == 0){ // STOP digitalWrite(M1A, LOW); digitalWrite(M1B, LOW); digitalWrite(M2A, LOW); digitalWrite(M2B, LOW); } if(command == 1){ // FORWARD digitalWrite(M1A, HIGH); digitalWrite(M2A, HIGH); delay(FORWARD_BACKWARD_DELAY); digitalWrite(M1A, LOW); digitalWrite(M2A, LOW); } if(command == 2){ // BACKWARD digitalWrite(M1B, HIGH); digitalWrite(M2B, HIGH); delay(FORWARD_BACKWARD_DELAY); digitalWrite(M1B, LOW); digitalWrite(M2B, LOW); } if(command == 3){ // LEFT digitalWrite(M1B, HIGH); digitalWrite(M2A, HIGH); delay(TURN_DELAY); digitalWrite(M1B, LOW); digitalWrite(M2A, LOW); } if(command == 4){ // RIGHT digitalWrite(M1A, HIGH); digitalWrite(M2B, HIGH); delay(TURN_DELAY); digitalWrite(M1A, LOW); digitalWrite(M2B, LOW); } }