Bug: en v16 se elimino if(!espReady)return del loop() y no se restauro
en v17. Resultado: bytes basura del bootloader ESP32 (ej 0x42='B') se
ejecutaban como backward() antes y despues del handshake.
Fixes:
- Restaurado bool espReady con guard if(!espReady)return en loop()
- Restaurado handler 'G' en loop() para reinicio del ESP32:
espReady=false + stopMotors() inmediato + nuevo handshake
- Watchdog ligero en ESP8266 (solo millis(), sin FreeRTOS):
si no llega comando de movimiento en 1.5s -> para motores
Evita que el coche siga moviendose si el ESP32 crashea
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>