diff --git a/ESP8266/ESP8266.ino b/ESP8266/ESP8266.ino index 64d199e..0939547 100644 --- a/ESP8266/ESP8266.ino +++ b/ESP8266/ESP8266.ino @@ -1,5 +1,5 @@ -// FW_VERSION solo informativo — este ESP8266 no hace OTA -#define FW_VERSION 19 +// FW_VERSION informativo — no hace OTA, se flashea por USB +#define FW_VERSION 20 #include // ==== Pines motores ==== @@ -24,45 +24,10 @@ int currentSpeed = 150; int posX = 90; int posY = 90; -// ── Handshake: espera "GO\n" del ESP32-CAM antes de procesar comandos ── -// Descarta la basura del bootloader ROM del ESP32 (115200 baud a 9600). bool espReady = false; -void waitForReady() { - delay(300); - while (Serial.available()) Serial.read(); // descarta basura del bootloader - - unsigned long timeout = millis() + 90000UL; - String buf = ""; - while (millis() < timeout) { - while (Serial.available()) { - char c = Serial.read(); - if (c == '\n') { - buf.trim(); - if (buf == "GO") { - Serial.print("OK\n"); - delay(50); - while (Serial.available()) Serial.read(); - espReady = true; - // 2 pitidos: conexión entre placas establecida - for (int i = 0; i < 2; i++) { - digitalWrite(buzzerPin, HIGH); delay(180); - digitalWrite(buzzerPin, LOW); delay(180); - } - return; - } - buf = ""; - } else if (c != '\r' && buf.length() < 8) { - buf += c; - } - } - delay(10); - } - espReady = true; // timeout: arranca igualmente -} - void setup() { - // 1. Pines de motor y parada inmediata + // 1. Motores parados inmediatamente pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); @@ -80,8 +45,20 @@ void setup() { servoX.write(posX); servoY.write(posY); - // 4. Esperar señal del ESP32-CAM - waitForReady(); + // 4. Esperar a que el ESP32-CAM termine de arrancar (~20s) + // El ESP32 necesita: WiFiManager + OTA check + arrancar servidor + unsigned long elapsed = millis(); + if (elapsed < 20000) delay(20000 - elapsed); + + // 5. Descartar cualquier basura que haya llegado por Serial durante el arranque + while (Serial.available()) Serial.read(); + + // 6. Listo — 2 pitidos + for (int i = 0; i < 2; i++) { + digitalWrite(buzzerPin, HIGH); delay(180); + digitalWrite(buzzerPin, LOW); delay(180); + } + espReady = true; } // Watchdog: si no llega comando de movimiento en 1.5s → para motores diff --git a/Esp32Cam/Esp32Cam.ino b/Esp32Cam/Esp32Cam.ino index 1b22558..5d46d58 100644 --- a/Esp32Cam/Esp32Cam.ino +++ b/Esp32Cam/Esp32Cam.ino @@ -10,7 +10,7 @@ // ================================================================ // OTA CONFIG // ================================================================ -#define FW_VERSION 20 +#define FW_VERSION 21 #define GITEA_HOST "https://git.nacho.myds.me" #define GITEA_OWNER "Natxo" #define GITEA_REPO "Arduino-Car" @@ -24,29 +24,6 @@ const char *password = "Suprak1llm1ndS23S"; void startCameraServer(); void setupLedFlash(); -static void handshakeTask(void *) { - unsigned long deadline = millis() + 30000UL; - String buf = ""; - while (millis() < deadline) { - Serial.print("GO\n"); - unsigned long t = millis(); - while (millis() - t < 300) { - while (Serial.available()) { - char c = Serial.read(); - if (c == '\n') { - buf.trim(); - if (buf == "OK") { vTaskDelete(NULL); return; } - buf = ""; - } else if (c != '\r' && buf.length() < 8) { - buf += c; - } - } - vTaskDelay(pdMS_TO_TICKS(5)); - } - } - vTaskDelete(NULL); -} - // ── OTA: comprueba si hay firmware nuevo y actualiza si hace falta ── static void checkOTA() { @@ -169,8 +146,6 @@ void setup() { // ── Servidor cámara ─────────────────────────────────────────────── startCameraServer(); - - xTaskCreate(handshakeTask, "handshake", 4096, NULL, 1, NULL); } void loop() { diff --git a/firmware/esp32cam/firmware.bin b/firmware/esp32cam/firmware.bin index 5b94b3f..37b5d3a 100644 Binary files a/firmware/esp32cam/firmware.bin and b/firmware/esp32cam/firmware.bin differ diff --git a/firmware/esp32cam/version.txt b/firmware/esp32cam/version.txt index 2edeafb..b5045cc 100644 --- a/firmware/esp32cam/version.txt +++ b/firmware/esp32cam/version.txt @@ -1 +1 @@ -20 \ No newline at end of file +21 \ No newline at end of file