Recibo un error al cargar mi código a un ESP8266 a través de un Arduino

Arduino: 1.8.13 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Executable segment sizes:

IROM   : 228624          - code in flash         (default or ICACHE_FLASH_ATTR) 

IRAM   : 26756   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 

DATA   : 1248  )         - initialized variables (global, static) in RAM/HEAP 

RODATA : 688   ) / 81920 - constants             (global, static) in RAM/HEAP 

BSS    : 24880 )         - zeroed variables      (global, static) in RAM/HEAP 

Sketch uses 257316 bytes (26%) of program storage space. Maximum is 958448 bytes.

Global variables use 26816 bytes (32%) of dynamic memory, leaving 55104 bytes for local variables. Maximum is 81920 bytes.

esptool.py v2.8

Serial port COM3

Connecting........_____....._____....._____....._____....._____....._____.....____Traceback (most recent call last):

  File "C:\Users\Reghunaath A A\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.2/tools/upload.py", line 65, in <module>

    esptool.main(cmdline)

  File "C:/Users/Reghunaath A A/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/tools/esptool\esptool.py", line 2890, in main

    esp.connect(args.before)

  File "C:/Users/Reghunaath A A/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/tools/esptool\esptool.py", line 483, in connect

    raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))

esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header

esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header

_

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Recibo el mensaje de error mencionado anteriormente cuando intento cargar el código a un ESP8266 a través de un Arduino (he quitado el ATMEGA32 de mi Arduino). A veces se carga sin problemas (muy raramente), pero la mayoría de las veces la carga falla.

El código que estoy tratando de cargar:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
  // but actually the LED is on; this is because
  // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}

Mi configuración:

ingrese la descripción de la imagen aquí

Además, quiero agregar una cosa más cuando el cuadro de mensaje dice "Conectando........_____....._" durante ese tiempo, si restablezco el ESP, el código comienza a cargarse.

github.com/espressif/esptool/issues/490 este foro menciona que " tenga los interruptores DIP configurados para que el ESP8266 entre en modo de carga de firmware ". Algunas respuestas también mencionan cambiar un controlador y verificar el número de puerto utilizado.
1) ¿Quitó ATMEGA de la placa Arduino y conectó TX y RX (pines 2 y 3 de ATMega) a ESP8266 RX y TX? 2) La opción "Puerto" está atenuada, parece que Arduino IDE no encuentra la placa arduino.
Ignora lo del puerto. Subí algo incorrecto. Cambiaré la imagen. Además, quiero agregar una cosa más cuando el mensaje bob dice "Conectando........_____....._" y seguro que si restablezco el esp, el código comienza a cargarse @mguima

Respuestas (1)

Entonces, encontraste la solución. "si restablezco el ESP, el código comienza a cargarse"

Este comportamiento de ESP8266 es absolutamente normal.

Si tiene una placa Arduino con chip ATmega328, y la placa está conectada al puerto USB de la PC, y desea cargar un nuevo código, simplemente haga clic en "cargar" en el IDE, y así el IDE hace una conexión a el chip USB incorporado (ATmega16U2 en Arduino UNO), y este chip pone el ATMega en modo de programación (reinicia Atmega, y cuando ATMega enciende su gestor de arranque espera un próximo código de programación de la conexión en serie)

Para ESP12, ESP8266 ingresa al modo de programación cuando se inicia de esta manera:

  • GPIO15 - bajo
  • GPIO0 - bajo
  • GPIO2 - alto

Esos pines pueden diferir para otras implementaciones de ESP; Google puede ayudarte si lo necesitas. Pero si está teniendo éxito, por supuesto que puso ESP en modo de programación.

ESP no se comporta como un Arduino. Si tiene la intención de programar ESP8266, tuvo que iniciar ESP manualmente en el modo de programación .

El orden correcto sería: 1) cargar el código en Arduino IDE; 2) reiniciar ESP en modo programación; 3) Ordene al IDE que suba el código compilado a ESP. 4) Reinicie ESP fuera del modo de programación.

También tendrá éxito, como dijo, si reinicia ESP en modo de programación mientras IDE todavía está tratando de conectarse a ESP (antes de que IDE se rindiera y desistiera de contactar al chip).

Después de cargar el nuevo código en la ROM de ESP, debe reiniciarlo nuevamente (en modo de arranque flash) para ejecutar el software que acaba de escribir en su ROM.