Go Down

Topic: Error al cargar firmware esp 01 (Read 421 times) previous topic - next topic

facudarfe

Buen dia, antes que nada disculpen si este tema no va en este foeo, soy nuevo y no sabia donde ponerlo.

Tengo un esp 01 y quiero cargarle el firmware a traves del arduino uno, ya hice todas las conexiones correctas, conecte el gpio0 a tierra y tambien saque el chip integrado del arduino.
Pero cuand9 trato de compilar y subir el codigo al esp empieza a salir un cartel de connecting, la luz del esp empieza a titilar pero al final lanza failed to connect to esp8266 timed out waiting for packet header.
Nose que me esta faltando o que estoy haciendo mal, tambien en la parte de placas seleccione esp8266 generico.

ElEspanol

Sube una foto donde se ve muy bien lo que has conectado, y además copia de pantalla con los ajustes del ESP8266

surbyte

Bienvenido @facudarfe al foro Arduino en Español.
Antes de postear algo por favor, date una vuelta por las normas del foro y lee y observa como se postean enlaces, códigos/errores e imágenes.

facudarfe

Subo las imagenes aqui como link de las conexiones y de la captura de pantalla como sketch, ya que no las puedo adjuntar como imagenes porque me sale error o no se muestran. Sepan disculpar y entender

Imagen Conexion 1
Imagen conexion 2
Captura pantalla sketch

surbyte

Por favor, los sketch no se capturan en una imagen, se postean usando la etiqueta de código correspondiente.
Eso es imposible de ver, pero mas allá de eso valoro tu esfuerzo.
En lo personal es dificil decir que ocurre con fotos de conexiones donde no se puede seguir que esta conectado a qué?

Voy a poner un link Breadboard and Program an ESP-01 Circuit with the Arduino IDE

Un esquema como el que esperaba postearas


Y nos diras que cosas hay similares y cúales no?

facudarfe

Perdon, sepa disculpar por lo del codigo.
El diagrama que he seguido para la conexion es el siguiente conectandolo a arduino uno ya que no tengo el conversor TTL. La unica diferencia es que en la imagen el gpio0 no esta conectado a tierra y en mi circuito si lo he conectado.



Y adjunto el sketch:

Code: [Select]
#include "ESP8266WiFi.h"

void setup() {
  Serial.begin(115200);

  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.println("Setup done");
}

void loop() {
  Serial.println("scan start");

  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0) {
    Serial.println("no networks found");
  } else {
    Serial.print(n);
    Serial.println(" networks found");
    for (int i = 0; i < n; ++i) {
      // Print SSID and RSSI for each network found
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");
      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
      delay(10);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(5000);
}

surbyte

Bueno has olvidado algo muy importante y es que el ESP01 trabaja a 3.3V.
Los pines no son 5V tolerantes asi que debes al menos con el pin TX que viene de Arduino que ingresa en el RX del ESP01 colocar minimamente un divisor de tensión, tal como está en mi esquema. Oh vaya, mi esquema tampoco tiene el divisor. Hay que usar un divisor de 1k entre TX del Arduino, y 2k a masa. del punto en que se unen las dos resistencias lo llevas al RX del ESP01.

Durante la programación GPIO0 debe estar a GND como dices y luego debes liberarlo. Supongo que eso haces.
Finalmente lo que esta mal es que lo alimentas con los 3.3V del Arduino.
El arduino no tiene capacidad para alimentar al ESP01. Debes usar una fuente externa. Si no tienes consigue un regulador AMS1117 que recibe 5V del arduino y entrega 3.3V.
El ESP01 consume unos 150mA y el Arduino en su pin 3.3V solo puede entregar digamos 50 o 60mA por eso puedes lograr que responda a los comandos AT pero no es suficiente para programarlo. A veces puede responder y otras no.
Al final es posible que dañes esa salida de 3.3V.

Asi que prevenir antes que curar.

Intenta consiguiendo un regulador de 3.3V no tiene porque ser el AMS1117. Hay otros modelos que hacen lo mismo. Se llama regulador LDO con salida 3.3V eso pido o busca.

facudarfe

Hola buen dia, con respecto a lo de la fuente externa si lo tengo conectado a los 3.3v de otra fuente, no del arduino porque si sabia que el arduino no puede brindar suficiente. Con respecto a lo del divisor de tensión no lo he entendido muy bien, ya que en el esquema que seguí conecta RX con RX de arduino y TX con TX de arduino y tu me estas diciendo que debe ser cruzado. Tendrias un esquema con el arduino uno y esp01 para que me guie mejor? Ya que en todos lados que busque no usan divisores de tensión y conectan asi como en ese diagrama. Muchas gracias

PeterKantTropus

Agrega el botón de reset y cuando te ponga conecting presiona momentáneamente el botón de reset.
"Si no entra como tornillo, entra como clavo"

surbyte

Primero: las conexiones siempre son cruzadas. Tx del Arduino a Rx del ESP y vice versa.
Segundo: el ESP01 y toda la linea ESP82666 no es 5V tolerante.
Que vean miles de esquemas en la web no significa que esten bien.
El que yo he posteado es un Conversor TTL a USB con salida 3.3V y claro que se presta a confusión.
Pero te dije desde un primer momento que debes usar divisor de tension (o bien usa un adaptador de niveles de 5 a 3.3V)cuando uses algo que entregue 5V a la salida como un Arduino. En el caso de la salida Tx del ESP que va al RX del Arduino no hace falta.
Pero si hubiera mas pines de uno a otro deberías observar las que llegan de Arduino a ESP no así con las opuestas.
Todo lo que llegue con 5V al ESP01 puede dañarlo.

No se que buscaste pero te refutaré del mismo modo: ahora busco yo y te pongo link y foto

Link




Aca un NANO ver link



Y no pongo mas porque creo que la idea queda clara.

ElEspanol

Si usas el uno solo como usb-serial convertidor, has de conectar rx con rx y tx con tx.
Es un poco lio del cerebro, pero en la pcb, el tx significa que en este pin salen los datos del 328, y esta conectado al rx del 16AU.
Y lo de los 5V para el rx del ESP, a mi aún no se ha roto ninguno. Pero claro, mejor con divisor.

facudarfe

Buen dia, sigo sin poder hacer que el ide de arduino me detecte el esp01. Hice todas las conexiones como corresponden como me pasaron las imagenes, con el divisor de tension y puenteando el reset del arduino con tierra pero aun no logro nada.
Me sigue saliendo el mismo mensaje de error:

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

PeterKantTropus

¿Cuando estas apretando el Reset? Deberías hacerlo justo cuando aparecen los puntos y rayas durante un segundo.
"Si no entra como tornillo, entra como clavo"

facudarfe

Debo apretar el boton de reset del arduino o conectar el reset del esp01 a tierra a traves de un pulsador y apretar ese?

PeterKantTropus

Hay que resetear el Esp 01 mediante un pulsador.
"Si no entra como tornillo, entra como clavo"

Go Up