Conexión WiFi con un módulo ESP8266

publicado en: Portada | 119

Existen multitud de integrados especializados en comunicaciones WiFi y de módulos que los incorporan ¿Por qué un módulo con el ESP8266? Principalmente por cuatro razones: es muy barato, es pequeño, tiene un buen nivel de prestaciones para ser usado con microcontroladores de gama media y alta y es muy sencillo de usar. Estas características base y el esfuerzo de apoyo del fabricante (Espressif Systems) han permitido que se desarrolle una activa comunidad que además soporta de forma paralela el producto y su aplicación.

Hay entorno a una docena de diferentes módulos que implementan el integrado ESP8266 con diferentes formatos, con diferentes tipos de antena o sin ella, con más o menos pines de entrada salida disponibles… de ellos los más difundidos son el Esp-01 y el Esp-02, usado en este caso y que se muestra en la imagen de abajo.

módulo WiFi ESP8266 esp-02

Conexión del módulo

Este módulo está a medio camino entre la integración en un montaje más o menos definitivo y su uso para prototipar o hacer pruebas para desarrollar usando el integrado ESP8266. El conector formado por una tira de pines doble necesita muy poco espacio y es mecánicamente muy eficiente (es muy estable) comparado con otras alternativas de módulos similares pero puede ser incómodo usarlo en placas de prueba. Para resolverlo se puede usar un conector específico o modificar una protoboard para usar el conector de tira de pines doble.

Conexión del módulo ESP8266 a una protoboard

El ESP8266 trabaja a 3,3 V y aunque seguramente no se romperá inmediatamente si lo conectas por error a 5 V es muy probable que se dañe a corto plazo, especialmente si se usa de forma intensiva. Por cierto, como se calienta bastante con un uso intensivo, un accesorio interesante puede ser un pequeño radiador adhesivo que le alargará la vida al integrado ESP8266.

módulo WiFI ESP8266 sin radiadormódulo WiFI ESP8266 con radiador

Además de la alimentación será necesario conectar la entrada y salida serie URXD y UTXD a las correspondientes del microcontrolador y activar el integrado conectando a nivel alto el pin CHPD (chip-enable) El módulo podría funcionar dejando al aire el pin RST (reset) pero, para evitar que cualquier alteración electromagnética pudiera resetearlo, lo más recomendable es conectar también RST a nivel alto.

Actualización del firmware

Tanto el propio fabricante como la comunidad de usuarios desarrollan y soportan nuevos firmwares con los que operar el integrado. Para grabarlos existen varias aplicaciones, una de las más difundidas y sencillas de utilizar es esptool programada en Python.

Conexión de un módulo wifi ESP8266 ESP-01 para actualizar el firmware

Para realizar la grabación del nuevo firmware en la memoria del módulo, junto con las conexiones que antes se han explicado, es necesario conectar a nivel bajo el pin GPIO0. Aunque en alguna documentación encontrarás que es necesario conectar a nivel alto el pin GPIO02 (y también a nivel bajo el GPIO15 en algunas implementaciones) en ninguna de las pruebas que yo he hecho ha sido necesario. En cambio, lo que sí ha sido necesario en muchos casos, y no está documentado, ha sido resetear el integrado justo antes de la programación o la aplicación mostraba un error de acceso.

módulo WiFI ESP8266 conectado para actualizar el firmware

Además del oficial, existen firmwares de diferentes autores. Es especialmente interesante NodeMcu que utiliza Lua como lenguaje y que puede descargarse libremente de su repositorio de GitHub.

El distribuidor Electrodragon también ofrece un firmware personalizado alternativo muy interesante, bastante actualizado y que guarda compatibilidad con las órdenes AT del original. Su firmware modificado puede descargarse de su cuenta en Google Drive.

En ESP8266 Community forum hay disponible mucha información sobre las distintas implementaciones del ESP8266 y también existen personalizaciones y correcciones al firmware así como algún kit de desarrollo alternativo que se puede integrar en el entorno de desarrollo Eclipse.

La herramienta esptool

La herramienta esptool se usa principalmente para grabar en la memoria del módulo las nuevas versiones del firmware pero además incluye una serie de utilidades, como la lectura de la dirección MAC, la identificación de la flash, el volcado de la memoria… con las que gestionar el ESP8266.

Esta herramienta no dispone de GUI (de forma oficial) por lo que se utiliza desde la consola del sistema o la de Python. Dependiendo de tu sistema podrá ejecutarse directamente invocando el script esptool.py o habrá que lanzarlo obligatoriamente desde Python, por ejemplo, con python esptool.py desde la línea de órdenes del sistema. También es posible, dependiendo de la configuración de tu sistema y tu usuario, que sea necesario lanzarlo con privilegios administrativos, por ejemplo con sudo python esptool.py

En cualquier operación que se realice con esptool se pueden especificar los parámetros --port y --baud para indicar, respectivamente, el puerto al que se conecta el módulo (algo como COM5 en Windows o /dev/ttyUSB0 en Linux) y la velocidad en baudios a la que se conecta con el módulo. Una orden con estos parámetros quedaría, por ejemplo, así: python esptool.py --port /dev/ttyUSB0 --baud 9600 read_mac También es posible abreviar los nombres de los comandos por su inicial y usar un guión en lugar de dos.

Los módulos más recientes suelen trabajar a 115200 baudios pero como existen tantas implementaciones es difícil saberlo con seguridad así que es probable que sea necesario probar algunos valores hasta encontrar la velocidad correcta de un módulo concreto.

La herramienta acepta las siguientes operaciones:

  • load_ram
    Carga una imagen en la RAM y la ejecuta. Necesita que se indique como parámetro el nombre del documento que contiene la imagen que se quiere cargar en la memoria.

  • dump_mem
    Graba en un documento una porción arbitraria de la memoria. Es necesario indicar tres parámetros: la dirección de inicio de la memoria, la cantidad de memoria que se desea grabar y el nombre del documento en el que se almacena.

  • read_mem
    Lee la dirección de memoria que se indique como parámetro.

  • write_mem
    Escribe un valor en una dirección de memoria. Es necesario especificar tres parámetros: la dirección de memoria, el valor y la mascara de bits con la que se graba.

  • write_flash
    Graba en la memoria flash una imagen que se carga desde un documento binario. Es necesario especificar la dirección y el nombre del documento. Pueden indicarse en una única operación write_flash varias parejas de direcciones documentos con lo que en una única orden se puede grabar todo el firmware.

  • run
    Lanza la ejecución del código que hay en la memoria flash.

  • image_info
    Muestra las cabeceras de la imagen que hay en memoria.

  • make_image
    Crea una imagen a partir de los binarios. Necesita que se indique el documento que contendrá la imagen que se cree, el segmento de entrada del documento binario, la dirección del segmento base y la dirección del punto de entrada que serán, respectivamente, los parámetros --segfile (abreviado -f) --segaddr (abreviado -a) y --entrypoint (abreviado -e)

  • elf2image
    Crea una imagen a partir de un documento ELF. Será necesario indicar el documento ELF y el documento de imagen resultante con el parámetro --output (abreviado -o)

  • read_mac
    Lee de la OPT ROM el valor de la MAC del módulo.

  • flash_id
    Lee el indicador de fabricante y dispositivo de la flash.

Como es lógico, la operación más frecuente es la grabación de una actualización del firmware. En el caso del firmware oficial, se puede hacer en una sola orden (que se indica abajo en varias líneas por claridad) con el formato:

  • python esptool.py
    • write_flash
      • 0x00000 boot_v1.1.bin
      • 0x01000 user1.bin
      • 0x7C000 esp_init_data_default.bin
      • 0x7E000 blank.bin

Aunque es posible usarlo inmediatamente, es recomendable resetear el módulo para evitar problemas con la nueva imagen después de haberla grabado.

sesión de grabación de firmware en el módulo ESP8266 con esptool

Órdenes AT del ESP8266

La siguiente tabla está actualizada hasta la versión 0.20, que corresponde con el firmware 0.9.4 de diciembre de 2014, la versión (oficial) más avanzada que soportan los módulos ESP8266 con 4 Mbit, que son la mayoría de los disponibles actualmente.

Orden AT Descripción
AT Sirve para verificar si el sistema de órdenes AT está operativo
AT+GMR Muestra información sobre el firmware del módulo
AT+RST Reinicia el módulo
ATE1
ATE0
Activa o desactiva, respectivamente, el eco de los comandos AT. Normalmente el eco está activo por lo que se muestra tanto el resultado de la operación como la propia operación. Con esta orden se puede reservar alguna información, la clave del punto de acceso, por ejemplo, mientras se muestra por una consola el resto de la información.
AT+GSLP Entra en modo de reposo (si el hardware lo permite) durante el tiempo indicado en milisegundos con el formato AT+GSLP={tiempo} siendo {tiempo} el tiempo de reposo expresado en milisegundos.
AT+CWMODE Establece el modo de funcionamiento WiFi del módulo. Hay tres disponibles (1) estación, (2) punto de acceso y (3) mixto: punto de acceso y estación.
Por ejemplo, para establecer el modo de funcionamiento WiFi del módulo como estación se usaría AT+CWMODE=1 y para consultar el modo actual de funcionamiento se usaría AT+CWMODE?
AT+CIOBAUD

AT+IPR

Permite establecer la velocidad de comunicación del módulo (expresada en baudios) según el formato AT+CIOBAUD={velocidad}
Utilizada con el formato AT+CIOBAUD? informa de la velocidad actualmente establecida.
Los valores permitidos son 9600, 19200, 38400, 57600, 74880, 115200, 230400,460800, 921600 y la configuración por defecto es 115200

En realidad, por algún tipo de error, CIOBAUD no funciona y sí IPR (que no está en la documentación) El inconveniente es que AT+IPR? no está implementado y hay que cambiar la velocidad a ciegas.
AT+CSYSWDTENABLE
AT+CSYSWDTDISABLE
Activa o desactiva el watchdog (perro guardián) que permite reiniciar el módulo automáticamente si se produce un error de funcionamiento.
AT+CIPSTAMAC
AT+CIPAPAMAC
Permite establecer una dirección MAC o consultar la actual tanto en el punto de acceso (CIPAPAMAC) como en la estación (CIPSTAMAC). Para establecer una nueva dirección MAC se utiliza la orden con el formato AT+CIPSTAMAC={MAC} siendo {MAC} la dirección MAC en el formato 01:34:67:89:AB:CD
Para consultar la dirección MAC actual se usa la orden con el formato AT+CIPSTAMAC?
AT+CWLAP Muestra una lista con los puntos de acceso disponibles en el alcance del módulo, indicando para cada uno de ellos la codificación, el SSID, el nivel de señal y la dirección MAC.
Las diferentes codificaciones se representan por un número: abierta=0, WEP=1, WPA/PSK=2, WPA2/PSK=3 y WPA/WPA2/PSK=3.
Se puede limitar la búsqueda a los puntos de acceso que cumplan ciertas condiciones como el SSID, la MAC o el número de canal indicándolos en la orden.
AT+CWJAP Usando la orden con el formato AT+CWJAP={SSID},{clave} el módulo se conecta al punto de acceso indicado por el SSID usando la clave especificada.
Para saber a qué punto de acceso se encuentra actualmente conectado el módulo se puede usar la orden en el formato AT+CWJAP?
AT+CWQAP Desconecta el punto de acceso.
Para comprobar si se ha desconectado se puede usar la orden con el formato AT+CWQAP?
AT+CWSAP Configura el modo de funcionamiento del punto de acceso según el formato AT+CWSAP={SSID},{clave},{canal},{cifrado}
Los modos de cifrado corresponden con los códigos abierta=0, WEP=1, WPA/PSK=2, WPA2/PSK=3 y WPA/WPA2/PSK=4
AT+CWDHCP Activa o desactiva el DHCP (asignación dinámica de dirección IP) en el punto de acceso y/o en la estación.
El formato de la orden es AT+CWDHCP={modo},{estado} siendo {modo} el código del que se activa (0 para el punto de acceso, 1 para la estación o 2 para ambos) y {estado} activar/desactivar DHCP según se use 1 ó 0 como valor.
AT+CIPSTA
AT+CIPAP
Establece la dirección IP de la estación (AT+CIPSTA) o del punto de acceso (AT+CIPAP) usada en el formato AT+CIPSTA={IP} o muestra la actual usada en el formato AT+CIPSTA?
AT+CWLIF Muestra una lista de las direcciones IP de los dispositivos conectados al módulo en modo punto de acceso.
AT+CIFSR Muestra la dirección IP local actual del módulo
AT+CIPMUX Establece el modo de conexión simple o múltiple según se use con el formato AT+CIPMUX=0 ó AT+CIPMUX=1 respectivamente.
AT+CIPSERVER Activa o desactiva el modo de servidor según se use en el formato AT+CIPSERVER=0 (que requerirá un reinicio para hacerse efectivo) o AT+CIPSERVER=1,{puerto} que comenzará a aceptar peticiones en el puerto correspondiente.
Para poder establecer el modo servidor debe activarse el modo multi-conexión con AT+CIPMUX=1
AT+CIPSTO Configura el tiempo de espera (timeout) cuando el módulo funciona en modo servidor con el formato AT+CIPSTO={segundos}
Si se usa con el formato AT+CIPSTO? informa del timeout actual.
AT+CIPSTART Inicia una conexión con un servicio. Es necesario indicar el tipo de conexión (TCP/UDP) la dirección IP (o el nombre del servidor, si se tiene acceso a un DNS) y el puerto al que se realiza la conexión con el formato AT+CIPSTART={id},{TCP|UDP},{IP},{puerto} Siendo {id} el número de identificador de la conexión (si se aceptan varias, es decir si se utilizó AT+CIPMUX=1, si AT+CIPMUX=0 no hay que indicarlo)
También es posible añadir al final de la orden (separado por comas como el resto de parámetros) el puerto local y el modo si se trata de una conexión UDP.
Usada con el formato AT+CIPSTART=? muestra la información anterior relativa a la conexión actualmente en curso.
AT+CIPSTATUS Muestra el estado de la conexión actual en el formato STATUS:{estado} siendo {estado} un valor que representa el estado de la conexión como desconectado por un 4, con una IP asignada por un 2, conectado por un 3 y conectado con IP asignada por un 5.
Después del estado genérico detalla la conexión en el formato +CIPSTATUS:{id},{tipo},{dirección},{puerto},{modo} siendo {modo} un valor que representa si el módulo está funcionando como cliente (0) ó como servidor (1)
AT+CIPCLOSE Cierra una conexión activa. Cuando AT+CIPMUX=1 será necesario indicar la conexión que se cierra usando el formato AT+CIPCLOSE={id}
AT+CIPSEND Prepara el envío de datos. Cuando esté listo devolverá el código ">" como inductor para el comienzo del envío. El formato cuando AT+CIPMUX=0 es AT+CIPSEND={longitud} siendo {longitud} la cantidad de bytes que se van a enviar.
Si AT+CIPMUX=1 el formato es AT+CIPSEND={id},{longitud} siendo {id} el número de conexión a la que se hace referencia.
Una vez recibido el inductor se puede enviar la información al módulo.
La información recibida de vuelta vendrá precedida por el código +IPD,{id},{longitud}:{datos} siendo {id} el número de conexión a la que se responde y {longitud} la cantidad de datos que se van a recibir después del signo de dos puntos.

AT+CIUPDATE Se utiliza para actualizar el módulo a través de la red (OTA)
Devuelve el código del punto de la actualización: (1) se ha encontrado el servidor, (2) se ha conectado con el servidor, (3) se ha encontrado la versión y (4) se ha iniciado la actualización.

Lo más sencillo para familiarizarse con el uso de las órdenes AT del módulo ESP8266 es usar un ordenador y una conexión serie que puede realizarse, por ejemplo, un conversor USB-serie (TTL) y la aplicación PuTTY, como expliqué en el blog polaridad.es

Las siguientes imágenes muestran el cuadro de diálogo de configuración de la aplicación y un ejemplo de sesión usando las órdenes AT sin eco local (sin mostrar las órdenes que se van escribiendo) por lo que aparece sólo el resultado. Como el eco en el módulo sí está activado con (ATE1) pueden leerse las órdenes delante de las correspondientes respuestas.

Configuración de PuTTY para usar el módulo ESP8266 por serie
Sesión de PuTTY con el módulo ESP8266 por serie USB

Ahora que el módulo ya está actualizado y configurado y se conoce su uso por medio de órdenes AT es posible implementarlo en un montaje. Para entender más fácilmente la conexión WiFi usando este módulo he desarrollado una pequeña librería para el ESP8266 que implementa además de la conexión a un punto de acceso el envío de peticiones HTTP para comunicarse con un servidor web.

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

119 Respuestas

  1. Carlos

    Hola, gracias por la información… es muy útil.
    Recién compre el modulo y lo estoy probando, pensé que el modulo estaba malo porque realmente se caliente bastante, pero leyendo tu publicación parece que es normal.
    ¿sabes como hago para que en modo servidor no se caiga la conección? supongo que debo mantener «viva» la conección.
    ¿Es normal que el modulo se reinicie tanto? cuando le envío información constante… no sé, creo que se satura y zasss se reinicia. :/ lo cual obviamente también me hace desconectar.
    y debo ingresar nuevamente AT+CIPMUX=1, AT+CIPSERVER=1,2000
    Saludos.

    • Víctor Ventura

      Hola, Carlos.
      Ciertamente el módulo se calienta, pero sólo cuando se somete a trabajo exhaustivo; o al menos eso es lo que yo he observado en los que he probado ¿Es tu caso? ¿Has intentado ponerle un disipador como el que sugiero en el artículo?
      La pérdida de conexión a la que te refieres (a falta de saber cómo lo usas en concreto) parece deberse a un timeout muy bajo ¿Has probado a configurar tiempos de espera más largos con AT+CIPSTO?
      A ver si con esas dos pistas te ayudo un poco. Por favor, cuéntanos cómo lo solucionas finalmente.
      Gracias por tu comentario

      • Carlos

        Si, ya lo había consultado AT+CIPSTO=tiempo (tiempo = 0~7200 segundos), por ese punto puedo lograr una conección sin caida de max 2 horas.

        Lo que quiero hacer es una conección transparente entre dos dispositivos (Table y PIC) para ello solo me interesa la configuración de modo servidor. Pero el módulo tiene una falencia o no sé si hay alguna forma de salvar la configuración , porque siempre que se reinicia se desconfigura el server.
        Otra cosa que veo es que se reinicia mucho, envío datos constantemente y zas se reinicia…
        lo cual hace que tenga que manda AT de configuración de nuevo. (entonces no encuentro sentido a no tener una conección TCP estable, tendría que estar revisando constantemente si no se desconecto), No sé si eso se deba a que se calienta mucho y como protección se reinicia. (podría ser, aún no he probado la opción del disipador o otra cosa talvez es porque TX y RX los tengo a 5V, por supuesto que vcc es 3.3 )

        En tus pruebas ¿tu concección TCP es estable, es decir puedes conectarlo y fácilmente relajarte por un tiempo largo porque sabes que el TCP esta conectado? es cierto que modulo es muy económico, pero de nada sirve si hay estos imprevistos, he probado el modulo wifly rn-xv, me parece una maravilla lo único malo es el precio, lo grande y la necesidad de una antena ejjejejej.

        Nuevamente gracias y el articulo es genial!

        • Víctor Ventura

          Hola, Carlos.
          Los módulos ESP8266 que yo he probado funcionan de forma estable, si bien es cierto que cuando se les hace trabajar muy intensamente se calientan y en algún caso, alguno de ellos, se me ha llegado a quedar bloqueado (pero respondiendo a órdenes AT, por lo que se puede recuperar) En mi caso siempre he podido resolverlo optimizando el código.
          Puede que se reinicien cuando se calientan, tiene sentido, aunque eso nunca me ha pasado. A ojo, sigue pareciéndome que ambas cosas, calentarse y reiniciarse, son causas de una misma circunstancia, el uso intensivo ¿Has probado si el módulo que te da problemas va bien cuando no lo haces trabajar mucho?
          Ciertamente la configuración se pierde al reiniciar y para resolver eso sólo se me ocurre cambiar el firmware, es posible, pero son palabras mayores y no sé hasta qué punto te merecería la pena.
          Con respecto al tiempo de espera, siendo más práctico que científico, se me ocurre que implementes una especie de watchdog en tu aplicación para verificar si el módulo está activo o activarlo en caso contrario. Pero por pura curiosidad, yo revisaría el código o empezaría por hacer uno sencillo de prueba sobre el que experimentar; me parece raro que con un sólo cliente (la tableta) no soporte el ESP8266 sin despeinarse.
          Gracias por tus interesantes comentarios ¡Vuelve pronto!

  2. Xavi

    Hola, querria saber si es posible transmitir por TCP por ejemplo el contenido de un archivo de imagen por el módulo. Lo he intentado primero con un archivo de texto y se envia todo pero al probar CIPSEND con un archivo binario no lo recibo bien con un programa de java que he hecho. Parece como si CIPSEND no enviara todos los bytes. Gracias

    • Víctor Ventura

      Hola, Xavi.
      En principio debería funcionar, aunque se me ocurren unas cuantas circunstancias en las que pueden producirse problemas; no sé si son las tuyas, me das poca información como para ayudarte.
      Por favor ¿Podrías precisar más? La parte del código con la que manejas el módulo ESP8266 también aclararía algo
      ¿Lo has hecho para Arduino? ¿Has usado la librería para el ESP8266 que propuse?
      Mientras, se me ocurren un par de líneas de trabajo: (1) Probar a enviar una imagen a tu programa en Java desde otro origen, para asegurarte de que funciona y/o enviar la imagen a una aplicación que seguro funcione, como un servicio web, por ejemplo (2) Enviar los datos de la imagen en formato Base64, que es texto plano que parece que sí funciona, y reconstruir con ellos la imagen en tu aplicación Java.
      Un saludo y gracias por visitar la web

  3. Tito Fernando Sosa

    Buen día,
    Me parece interesante varios de tus artículos con respecto al módulo WiFi ESP8266, tengo varias dudas, no sé si me puedas aconsejar para mi proyecto. Tengo que hacer una comunicación del Arduino a una App de android (que también me toca hacer), donde mi App es el cliente y el servidor es el Arduino. Es posible recibir tramas en bits? Puedo recibir las tramas por Comunicación serial?

    Gracias.

    • Víctor Ventura

      Hola, Tito.

      Me alegra que te parezcan interesantes mis artículos, ojalá también te resulten prácticos. También me halaga que pidas mi consejo para tu proyecto, no sé si estaré a la altura de lo que necesitas pero gracias en cualquier caso por contar conmigo, espero que también con la opinión y las sugerencias de los otros seguidores de la web.
      Al hablar de tramas de bits sospecho que te refieres a que debes definir tus propios paquetes de datos; en tal caso, el módulo ESP8266 puede servirte pero no en la forma en la que yo he hecho con la librería ESP8266 para Arduino, más bien tendrías que programarlo sobre el propio ESP8266 (nada de comandos AT desde Arduino) lo que, por cierto, son palabras mayores.
      Si te refieres a enviar datos arbitrarios también es posible, por ejemplo, usando algún protocolo estándar (HTTP, FTP…) y sí que sería viable a alto nivel, al estilo de la librería ESP8266 para Arduino.
      ¿Tu proyecto es algo académico (que es lo que intuyo) o una aplicación práctica? Si tratas de resolver un problema concreto, a lo mejor las premisas te ocultan la solución, pero si te piden que ilustres un comportamiento para evaluar tus conocimientos, me temo que tendrás que ceñirte a lo solicitado. A lo mejor nos orienta una descripción más concreta del proyecto y con eso podemos darte alguna idea en la web.
      ¿Alguna otra sugerencia de alguien del público? 🙂

      ¡Gracias por visitar polaridad.es!

  4. SergioR

    Hola,
    He estado usando este modulo para enviar datos de unos sensores a un servidor. El problema es que el dispositivo irá con batería y será necesario dormir el esp para tener una autonomía mayor. ¿Saber si podre hacerlo sin cambiar el firmware? En mi caso en lugar de un arduino estoy usando un stm32f100.
    Gracias.

    • Francisco

      Buenas, estoy analizando realizar un proyecto similar a lo que usted menciona le agradecería muchísimo si me pudiere explicar como logro enviar la lectura del sensor(mi caso lector rfid) a un servidor mediante el esp8266.

      de antemano muchas gracias.

  5. Carlos

    Hola, soy yo de nuevo por aquí.
    Estuve analizando mas de profundo el modulo, incluso instale el firmware con LUA, el cual me parece fantastico. Como comente inicialmente, mi interés es poder hacer una comunicación TCP entre table y modulo para el envío de cualquier dato y mi problema esta en este punto. Como sabrán el comando de envío es AT+CIPSEND=id,tamaño. (lo cual me parece fastidioso).
    El desarrollo que estoy haciendo es con un pic que tiene dos Uart, Debo recibir datos del modulo y reenviarlos por el micro hacia el puerto uart2… pero luego ese uart2 me devuelve datos y lo envío por el uart1 (hacia el modulo).

    Mi problema es tener que contar los datos para armar la trama. ¿Tienes algún ejemplo bidireccional? Server TCP-Cliente.
    Saludos.

  6. giltesa

    Hola Víctor,

    Estupenda entrada, muy bien explicada y útil.

    Quería preguntarte si tu blog tiene algún tipo de licencia sobre el contenido para poder copiar la tabla de comandos AT, es un poco rollo redactarla de nuevo con lo bien que la has dejado 😛

    Saludos!

    • Víctor Ventura

      ¡Hola!

      Todo el contenido del blog lo licenciamos como Reconocimiento-CompartirIgual 3.0 España (CC BY-SA 3.0 ES). En el enlace anterior puedes ver los detalles y dentro la página a la que te lleva también tienes acceso al texto completo de la licencia. Básicamente consiste en que puedes copiar y redistribuir el material en cualquier medio o formato, adaptarlo o crear otro nuevo para cualquier finalidad pero debes citar al autor y compartir en iguales condiciones.

      Espero que te sea útil y muchas gracias por visitarnos.

    • KareN

      Hola Carlos! Disculpa ya lograste solucionar tu problema. También estoy tratando de usar un PIC, podrías ayudarme. De antemano gracias! :3

      • Luis

        Hola Karen? pudiste realizar la recepcion del ESP8266 en el PIC?, me refiero a la recepcion serial, gracias.

  7. David

    Hola. Estoy tratando de hacer andar mi ESP8266 pero tengo algún que otro problema. Ahora necesito fijarle una IP a mi módulo en mi router. Para ello necesito saber la mac del ESP8266. Le he enviado el comando AT+CIPAPAMAC y AT+CIPSTAMAC pero con ambas me da error.
    Intenté darle una dirección MAC dentro de los límites, pero también me da error.

    Aclaro que pruebo esto a penas conecto la alimentación al módulo ESP8266 (por supuesto, espero que me de el mensaje READY para hacerlo)
    Muchas gracias.

    • Víctor Ventura

      Hola, David.
      Las operaciones sobre la MAC no me han dado problemas, pero tampoco recuerdo desde qué versión del firmware están disponibles ¿Has actualizado el firmware de tu ESP8266? Excepto en los módulos más recientes, los ESP8266 suelen entregarse con versiones muy primitivas del firmware. Yo empezaría por ahí, por actualizarlo para estar seguro de que esas órdenes AT están disponibles y los problemas no estén relacionados con errores ya corregidos en el firmware.
      ¡Suerte con tu proyecto y gracias por visitar nuestra web!

  8. Diego

    Hola Víctor,

    Lo primero gracias por compartir esta info tan interesante. Luego, podrías resubir la librería, el enlace no funciona.

    Gracias!

  9. Hernando

    Cordial saludo.

    Primero que todo para felicitarlos por su trabajo, muy bueno. Tengo una pregunta, estoy trabajando con un modulo ESP8266 por el cual quiero enviar datos a una pagina web dinamica, (PHP) realizo toda la configuración previa y no me carga los datos, me puede por favor que pasos se deben tener en cuanta para cargar datos en un servidor con este modulo. Muchas gracias

  10. jhon figueroa

    Como hacer para que no se desprograme porque cuando uno lo desconecta queda en blanco todo que debo de hacer

    • Víctor Ventura

      Hola, Jhon.

      No sé si entiendo muy bien tu pregunta.

      En este artículo no se trata sobre cómo programar el módulo WiFi ESP8266 sino sobre cómo manejarlo usando su puerto serie, es decir, necesitas además del módulo un ordenador o un microcontrolador para usarlo cada vez.

      Si quieres programar el módulo ESP8266 necesitarás el SDK de Espressif o bien tendrás que grabarle un firmware alternativo (como el NodeMCU) que admita almacenar un programa dentro del propio módulo ya que el firmware original está diseñado para el uso a que me refiero, desde un dispositivo independiente que lo controle.

      Espero haber sido de ayuda. Saludos.

  11. Fernando

    Hola Victor! Muy buena data!!!

    Te quiero hacer una consulta:

    Estoy trabajando con 2 ESP. 1 Como Station y otra como Acces Point.
    El station se conecta al Acces Point y le envia un string de informacion.
    Luego ese string los visualizo desde un browser que lee toda esa info desde el Acces Point.

    Preguntas:

    1-Siempre que envio desde la Starion (ESP-1) hacia el Acces Point (ESP-2) siempre al Acces Point le llega el +IPD,0. Hay alguna manera de forzar que llegue con +IPD,1 ???

    2- Cuando me conecto al Browser para recibir el HTML guardado en el Acces Point normalmente me llega por +IPD,0.

    Cuando pongo CIPCLOSE=0 no me cierra bien la conexion.
    Ahora cuando pongo CIPCLOSE=5 (cierra todas las conexiones) me cierra bien!!

    El problema que tenga es que al poner CIPCLOSE=5 no sólo cierra las conexiones del Browser, sino tambien la conexion con el ESP Station.

    Hay alguna manera de corregir eso?

    3- Puedo crear 2 puertos independientes? CIPSERVER=1,80 y CIPRSERVER=1,50 ??
    La idea es que por un puerto al Acces Point le llegue info de la Station y que por otro puerto se haga la transaccion con el browser.

    Si necesitas que te especifique mejor todo avisame!!

    Con que me respondas alguna de esas preguntas super agradecido.
    Gracias!!!!

    • Víctor Ventura

      Hola, Fernando.

      1. Llega +IPD,0 cuando se establece una conexión simple (con AT+CIPMUX=0) Si estableces una conexión múltiple llegará +IPD,X (con X me refiero al número de conexión) Lo que hace recomendable no usar la conexión cero en conexiones múltiples. Si quieres que llegue +IPD,1 tendrás que establecer la conexión múltiple e iniciarla (AT+CIPSTART) con el indicador uno. Esto me parece tan lógico que tengo dudas de haberte entendido la pregunta. No tengas problema en repreguntar.

      2. Si te llega por +IPD,0 ¿Puede ser que estés usando conexiones simples en lugar de múltiples?

        La conexión múltiple no suele dar problemas al cerrarse (con firmware actualizado) Como no uso la conexión cero, lo mismo nunca lo he visto y el problema es ese, tendría que probarlo para poder decirlo con certeza.

      3. No se pueden establecer dos conexiones servidor en dos puertos diferentes a la vez, si lo intentas verás que la segunda (o sucesivas) invalida la primera.

      Espero haberte ayudado ¡Gracias por visitar polaridad.es!

  12. abraham

    buen dia victor, saludos!

    quisiera hacerle una pregunta, lo que sucede es que mi modulo esp8266, no me responde los comandos at, para ser preciso no me los reconoce, he estado leyendo y me he encontrado con que hay que actualizar el firmware, o darle un reset, pero aun no he podido, cabe señalar que lo he intentado con un sketch en el arduino, pero tampoco me ha funcionado, tambien le comento que no cuento con un convertidor serial, solo cuento con un arduino uno, y me gustaria conocer algunas alternativas para poder solucionar mi problema, de antemano le agradezco su atencion

    • Víctor Ventura

      Hola, Abraham.

      Aunque es posible, es realmente extraño que tu módulo ESP8266 no reconozca comandos AT.

      Lo más probable es que no hayas acertado con la velocidad (baudios, bits/segundo) que tiene configurado por defecto. Te recomiendo que pruebes varias velocidades, o todas, empezando por 9600 b/s, que uses sólo AT+RST en las pruebas y que atiendas a si recibes una respuesta coherente o sólo «basura» (caracteres sin sentido) a la salida.

      Otra posibilidad es que las conexiones no sean correctas, seguro que ya las has verificado, o hasta que el módulo ESP8266 se haya averiado. Para verificarlo fácilmente (y para muchas otras cosas) es muy útil poder conectarlo al puerto USB de un ordenador con un convertidor USB a serie TTL, te merece la pena comprar uno, puedes conseguirlo realmente barato.

      Dependiendo de la versión del firmware de tu módulo ESP8266 es importante que lo actualices aunque consigas hacerlo funcionar al cambiar la velocidad de las comunicaciones serie. Desde que salieron las primeras versiones (que aún están a la venta) se han corregido errores y mejorado las funciones. Si no tienes garantía de que el módulo funcione como esperas es complejo tratar de actualizarlo desde el propio Arduino (aunque es posible) Lo más sencillo es que pidas prestado por un rato un conector serie TTL si no te decides a tener el tuyo.

      Espero haber sido de ayuda.

      Gracias por visitar polaridad.es

  13. Pedro

    Hola Victor.

    ¿existe alguna forma de enviar comandos AT al esp8266 via WIFI? En concreto lo que quiero es resetearlo con AT+RST pero una vez que ya está funcionando de forma autónoma, y el único medió de conexión que tengo es su dirección IP.

    Muchas gracias por dedicar tu tiempo a responder estas preguntas.

    • Víctor Ventura

      Hola, Pedro.

      Que yo sepa, tal como está programado el firmware original del ESP8266, los comandos AT se reciben por el puerto serie, no por WiFi.

      Eso no quiere decir que no puedas incorporar a tu programa una especie de «puerta de atrás» de forma que, al recibir cierto código, se reseteara o ejecutara alguna otra función especial.

      Por otra parte, esa cuestión suele plantearse cuando hay problemas en el funcionamiento normal de un dispositivo y es necesario «volverlo a la vida», ya sea el ESP8266 o cualquier otro MCU. Sé que no es eso lo que preguntas pero, por si fuera tu caso o por si ayuda a alguien, para esos casos lo más recomendable es implementar un sistema de «perro guardián» (watchdog) dentro del código, que sea el que se encargue de reiniciar el µC si no reacciona en determinado intervalo de tiempo.

      ¿Te orienta esto a solucionar tu problema?

      Gracias por visitar polaridad.es

  14. fran

    hola he conectado el modulo y por el monitor serial me aparecen los caracteres raros, pero solo eso sigue tirando caracteres raros, no da ok nunca ¿que puede ser?

    • Víctor Ventura

      Hola, Fran.

      Lo habitual es que ese comportamiento se produzca cuando la velocidad del puerto serie que has elegido en el programa con el que monitorizas no corresponde con la del módulo ESP8266. Yo iría probando diferentes velocidades empezando por la más baja (9600 bits/segundo)

      ¡ Gracias por visitar polaridad.es !

  15. Bernardo Dávila Jiménez

    Buenas tardes Víctor me contacto con usted debido a que actualmente estoy utilizando los Modulos ESP8266 pero tengo algunas preguntas acerca de este modulo, primero que nada lo que deseo es que este modulo funcione como AP no se si se pueda hacer que esten en modo WDS estos modulos que un modulo se conecte a otro modulo y poder recibir los datos de uno hacia el otro, lo que deseo es qie el modulo solo me mande la información de un Dispositivo el cual le voy a conectar con Tx y RX, el otro dispositivo tiene ya su voltaje entonces lo configuro y todo y al momento de conectarlo a TX y Rx del otro dispositivo no recibe los datos que se envian mediante el otro dispositivo
    Muchas gracias y espero pueda ayudarme con estas preguntas

    • Víctor Ventura

      Hola, Bernardo.

      Si te he entendido bien, lo que quieres es conectar un ESP8266 con otro (un de ellos configurado como punto de acceso) y enviar datos entre ellos (o de uno a otro, según creo) concretamente la lectura (como voltaje) del primero (esta parte es la que menos clara me queda, pero da igual)

      La respuesta es , de hecho, es una situación relativamente normal. En este artículo y en el que habla sobre la librería para hacer consultas HTTP con el módulo WiFi ESP8266 y Arduino (¡que no necesitas! tu conexión no usa el protocolo HTTP) tienes pistas sobre cómo hacerlo.

      Por cierto, para conectar dos circuitos de forma inalámbrica no necesitas usar este tipo de módulos (WiFi) pero si ya los tienes o, seguramente por precio, no te importa «matar moscas a cañonazos», puedes hacerlo perfectamente.

      Si pudieras ser más concreto con lo de que no llegan los datos seguro que te podríamos ayudar.

      Suerte con tu proyecto.

      • Bernardo Dávila Jiménez

        Hola Víctor gracias por atender mi mensaje, bueno creo que no me explique bien ahorita que volvi a leer el mensaje que envie, lo primero ya supe como hacerlo pero ahora tengo dudas con lo segundo que te comentaba, tengo un dispositivo aparte de los modulos que trabaja con el protocolo UART y este dispositivo envia los datos por TX y RX, como te comento es un dispositivo aparte del modulo, lo que quiero es conectar directamente este dispositivo con un modulo y mediante una terminal putty pueda ver los datos que el otro dispositivo envia. Puedo contactarme con usted por otro medio? para poderle enviar lo que tengo hasta el momento y me guie en lo que me falta es solo eso, muchas gracias

  16. Alejandro suarez

    Hola, excelente página para apreder estas nuevas tecnologías de comunicación y control. Tengo un problema,
    leyendo los comentarios anteriores sobre este modulo wifi ESP8266, coincido con Abraham; Resulta ser que mi modulo funcionaba medianamente bien a 115200 baudios porque aún recibia caracteres basura ,luego utilice el comando AT+CIOBAUD=19200 y se fue todo al diablo. Ahora usando el monitor serie de arduino (MEGA) y enviando
    comandos AT me tira caracteres exclusivamente basura con distintas velocidades. Quiero saber si puedo reestablecer los valores del modulo al origen sin utilizar un convertidor serie TTL o si fue.
    Desafortunamente estoy lejos de un distribuidor de este tipos de tecnologías , el envio es caro y lento. Necesitaba transmitir datos con un sensor DHT11.
    Saludos, espero su respuesta y gracias por este compromiso con los usuarios.

    • Víctor Ventura

      Hola, Alejandro.

      Aunque puede variar dependiendo de la complejidad del programa que lo explote, en un Arduino Mega el ESP8266 suele funcionar bien a 115200 baudios, así que no hay ninguna razón para que no funcione igual de bien a menos velocidad (19200 baudios)

      Depende de la versión del firmware que estés utilizando, pero lo más seguro es que AT+CIOBAUD no esté funcionando; es decir: seguramente no has cambiado la velocidad del módulo, aunque no haya lanzado ningún error al solicitar el cambio.

      Se me ocurre que puedas creer que has cambiado la velocidad y estés usándola en el monitor serie de Arduino y por eso que aparece basura. Como le recomendaba a Abraham, prueba a conectar a diferentes velocidades para encontrar la que está usando el módulo. Entre prueba y prueba asegúrate de que reinicias el módulo ESP8266.

      Sin una conexión serie TTL a un ordenador no se puede cambiar el firmware del ESP8266 (esta afirmación tiene algunos matices pero es lo que más se acerca a la realidad) Te haga o no falta para este caso que estás resolviendo te recomiendo que busques uno; creo que es una herramienta fundamental si vas a hacer tareas de este tipo.

      Espero haber sido de ayuda. No dudes en volver a consultar si sigues en problemas ¡Gracias por visitar polaridad.es!

      • Alejandro suarez

        Ok, gracias por contestar, hace poco que empece en este mundo de Arduino (2 meses) logre avanzar bastante en este tema, conectando y probando varios sensoresy placas, gracias a este tipo de paginas con información fiable. Gracias y saludos atte.

  17. Niko

    Hola Víctor:

    Tengo un modulo ESP8266 conectado al PC y funcionando correctamente, igualmente tengo una aplicación Android con la cual le envío 5 caracteres, estos caracteres cada vez que son recibidos los presentados en la pantalla de un terminal monitor, la pregunta es:

    Hay alguna forma de impedir toda la información añadida a partir de esos 5 caracteres recibidos, pues parece más bien un párrafo del Quijote cada vez que recibe un dato con la consiguiente perdida de tiempo

    Un saludo y gracias por la información aportada en tu página

    • Víctor Ventura

      Hola, Niko.

      Estoy un poco perdido ¿Qué programa es el que recibe la información? ¿Lo has hecho tú? Si es así, basta con que no muestres más que la parte que quieres. Si el programa es algo como un terminal serie la cosa es más difícil pero puede que sea posible algo como desactivar el eco.

      Necesito más información para poder ayudarte con algo útil 🙁

      • Niko

        Gracias por contestar Víctor

        El programa en concreto es el Termite 3.2, la cuestión no es que esta información recibida la tengo que capturar con un Pic y claro la perdida de tiempo que tiene el micro para discriminar esta información no es buena.

        Esto es el texto recibido

        +IPD,2,487:GET /pin=10 HTTP/1.1
        Host: 192.168.1.102
        Connection: keep-alive
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        x-wap-profile: http://wap.samsungmobile.com/uaprof/GT-S7560.xml
        User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; es-es; GT-S7560 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
        Accept-Encoding: gzip,deflate
        Accept-Language: es-ES, en-US
        Accept-Charset: utf-8, iso-8859-1, utf-16, gb2312, gbk, *;q=0.7

        • Víctor Ventura

          Hola, Niko.

          Es normal, si utilizas una infraestructura HTTP (web), que recibas toda esa información, aunque te resulte inconveniente. La alternativa es utilizar otro protocolo, dependerá de los datos que quieras intercambiar (que no distingo en tu ejemplo). Puede que incluso merezca la pena que implementes el tuyo propio.

          Si decides usar el protocolo HTTP (ten en cuenta que no tengo la menor idea de tu proyecto ni de las aplicaciones que estás usando y realmente no sé si merece o no la pena) no es tanto drama. El indicador +IPD te dice cuántos datos llegan (487, en tu ejemplo) si envías una estructura de datos de longitud fija (pensando en simplificarte la programación más que en la eficiencia) puedes «desperdiciar» con un bucle de longitud conocida los datos que te sobran antes de llegar a los que quieres usar (la carga útil). La longitud de datos despreciada será la total menos la útil.

          Espero que esto te ayude un poco 🙂

          Saludos.

          • Niko

            Hola, Víctor.

            Tienes razón, una forma de solucionar esto también seria utilizar un soket de envío distinto al utilizado hasta ahora, el cual solo necesite la IP tal como se hace con bluetooth, pues lo que intento hacer es un pasarela transparente (lo que envía es lo que recibe), otro de los inconvenientes encontrados es que utilizando http siempre el módulo tiene que estar conectado a un router, y tengo que contar que todo el mundo no tiene acceso a internet y menos en pueblos pequeños de montaña, pero estos también necesitan su casa con domotica.

            La aplicación que tengo esta hecha con app inventor pero este programa por lo que veo no tiene un segundo socket que me permita hacer la comunicación necesaria, si hay alguna forma de hacer esta aplicación con app inventor te agradecería me orientaras un poco.

            Gracias por tu ayuda

  18. Fabián Pedrosa

    Hola Victor, excelente información (google me trajo acá).
    Ahora la duda: estoy tratando de conectarme con un ESP8266 a un servidor FTP (My Ftp en un movil con Android) y tengo serias dudas sobre la implementación del protocolo usando sólo los comandos AT. Llego hasta el AT+CIPSTART y luego a mandar (con mensaje de retorno exitoso) AT+CIPSEND los comandos USER y PASS. La cuestión es que por lo que leo que DEBE abrirse un segundo puerto en el cliente 8266 para el envío de datos..
    Puedes ofrecer alguna idea al respecto? Gracias 1000!

    • Víctor Ventura

      Hola, Fabián.
      Sí, la configuración habitual del protocolo FTP incluye que el cliente abra una conexión (otro puerto) con la que el servidor se conecta de vuelta. En algunas implementaciones de servidores FTP se puede modificar un poco para simplificarle las cosas al cliente (dependerá de esa aplicación que has instalado en tu móvil) pero seguirá siendo un poco artificioso.
      No sé exactamente qué quieres hacer, a lo mejor el protocolo FTP no es la mejor elección o, si sólo vas a conectar ESP8266 al móvil (uno a uno), puede que ni WiFi sea lo más conveniente ¿Te has planteado usar Bluetooth?
      Suerte con tu proyecto.

  19. Fabián Pedrosa

    Gracias por la pronta respuesta, Victor. Y sí, Bluetooth es OTRA de las alternativas a probarse.. En realidad quiero enviar un archivo XXX (hasta puede estar vacío) al móvil para que en el mismo una aplicación App Inventor (ya la tengo escrita) detecte la presencia de ese archivo y actúe en consecuencia. Esto porque App Inventor NO tiene un servidor TCP (omisión lamentable). Y escribirlo en Java, por ej, está fuera de mis capacidades actuales… ¿Puedes apuntarme en la dirección de esas implmentaciones simplificadas, a ver si me acerco más? No niego la artificiosidad, pero no veo otra salida…
    Gracias nuevamente!

    • Víctor Ventura

      Hola otra vez, Fabián.

      Parece que no te voy a poder ayudar con el servidor FTP para el móvil, no consigo encontrarlo (Android y yo no somos grandes amigos) A ver si alguien de los que nos lee sabe de alguno.

      Sigo sin tener muy claro lo que quieres hacer pero, App Inventor a parte, tiene toda la pinta de que estás dando un rodeo muy grande. Primero porque parece que sea Bluetooth más cercano a la solución y segundo porque, si lo estoy entendiendo bien, lo de enviar el documento es solamente un recurso para avisar de algo ¿Sabes que el ESP8266 puede «escuchar» (hacer de servidor)?

      Gracias por visitar polaridad.es

      • Fabián Pedrosa

        Gracias Victor! ya di un gran paso con el FTP. Bluetooth es solución, pero en esta fase, estoy OBLIGADO a ir por WiFi. Y el 8266 como servidor ya lo estoy usando, pero por las restricciones que me imponen, no es la manera pura. De todos, modos, ya avancé mucho por el lado del FTP y creo que casi lo tengo derrotado. Gracias por el interés!

  20. Fabián Pedrosa

    Gracias y dime si te parece que hace falta la info de cómo lo hice, así la posteo acá, por si a alguien puede servirle. Saludos!!!

  21. Fabián Pedrosa

    Ok, ahí van los comandos AT con los que se establece comunicación con un server FTP:

    AT+CWMODE=3 <– porque tengo al 8266 como Access Point
    AT+CWDHCP=2,1 <– que proporciona la IP al dispositivo que aloja al server FTP
    AT+CIPMUX=1
    AT+CIPSTART=4,"TCP","xx.xx.xx.xx",puerto USER user
    AT+CIPSEND=4,9
    > PASS pass
    AT+CIPSERVER=1,1027 PORT xx,xx,xx,xx,4,3 STOR test.txt <– nombre del archivo (remoto)
    AT+CIPSEND=0,4 abcd <– datos sin relevancia, sería el contenido del archivo
    AT+CIPCLOSE=0 <– con esto le indico al serve que NO hay más datos
    AT+CIPCLOSE=4

    Después de esa secuencia, en el directorio raíz del servidor FTP aparece el archivo "test.txt" con su contenido de 4 bytes (abcd).
    No afirmo que sea la mejor ni más elegante solución, pero funciona y cumple con los requerimientos que tenía inicialmente.

    Espero les sirva!!
    Saludos!

  22. Fabián Pedrosa

    Se desordenó el mensaje, lo correcto es:

    AT+CIPSTART=4,»TCP»,»xx.xx.xx.xx»,puerto

    AT+CIPSEND=4,9
    > USER user

    AT+CIPSEND=4,9
    > PASS pass

    AT+CIPSERVER=1,1027

    AT+CIPSEND=4,20
    > PORT xx,xx,xx,xx,4,3

    AT+CIPSEND=4,13
    > STOR test.txt

    AT+CIPSEND=0,4
    > abcd

    Espero se entienda

    • Wesley

      Olá Fabian, sou meio leigo ainda e estou com dificuldades de entender como devo inserir esses comandos no meu código. Você por acaso teria esses comando AT inseridos em algum código para arduino? Preciso capturar dados de um txt que se encontra em um FTP, para um projeto de faculdade.

    • Daniel

      Hola Fabian, recuerdas este proyecto? estoy trabajando en una aplicacion similar y tengo una pregunta sobre los comandos, todavias estas disponible? por favor dejame saber

  23. Oscar

    Hola buenas tardes, estoy realizando mi proyecto final de carrera. Y quiero darle conectividad wifi a mi arduino uno con el ESP8266, pues bien el modulo wifi lo tengo bien alimentado con una fuente externa, ahora estoy en el punto que el led azul parpadea pero no aparece nada en el monitor serie del arduino a 115200 baudios. Si el led azul parpadea quiere decir que esta transmiitiendo informacion no?

    El codigo utilizado es el siguiente:

    Podrian darme alguna idea? Gracias!

    • Víctor Ventura

      Hola, Oscar.

      He probado tu código y funciona (sin entrar a discutir cosas como la variable B o la doble declaración de c)

      La luz azul indica actividad en el puerto serie pero eso no significa que sea nada útil, solamente que hay flujo de datos.

      Cosas que podrías que verificar:

      • que el módulo está conectado correctamente (no hace reset y está activado con CHPD a nivel alto)
      • que RX y TX de Arduino conectan con TX y RX del ESP8266
      • que las patillas 2 y 3 que has usado para SoftwareSerial son correctas
      • que la velocidad del ESP8266 es 115200 (varía entre firmwares e incluso se puede cambiar)
      • que le das una orden correcta y que termina correctamente (en mi módulo ESP8266 está configurado NL+CR pero varía entre firmwares)


      Suerte con tu proyecto fin de carrera, a ver si es interesante y nos cuentas más 🙂

      • Oscar

        Hola Victor!

        Me ha costado un rato, pero finalmente he encontrado un problema de conexion de la protoboard… Con la velocidad a 115200 he conseguido que me mostrara por el monitor serie: una serie de caracteres, AiThikesTechnology y un ready.
        Pero al pedirle yo un «AT», no me responde con «OK». He probado con el NL que me comentas pero tampoco responde, alguna idea compañeros?

        Gracias!

  24. g2co

    El modulo se calienta tanto por un error de diseño/montaje:

    La resistencia limitadora del diodo led rojo que trae montada es de aproximadamente 4 Ohm (está justo a la izquierda del led). Si el diodo led montado en la placa tubiera una Vd=3v la corriente estaría limitada a 75mA!.

    El diodo led tiene una Vd entre 1.5 – 1.7v y la corriente de polarización debe estar entre 10-20 mA.
    Por lo que hay que sustituir esa resistencia por una de 100 Ohm. Verás que tando el led rojo como el CI deja de calentarse.

    Saludos

  25. Cristina

    Hola Victor, estoy trabajando con este módulo y un arduino en mi proyecto de la universidad, al fín conseguí que se conectara y que me devolviese OK tras el AT. Mi problema viene que al ponerlo en modo 3 y utilizar el comando AT+CWLAP , no escanea mi móvil( que he puesto en modo Access point) todo esto viene porque necesito recopilar información sobre el RSSI.
    Muchas gracias por tu ayuda
    Saludos

    • Víctor Ventura

      Hola, Cristina.

      Si vas a usar como punto de acceso tu móvil ¿Por qué no configuras como estación (modo 1) el ESP8266?
      En la lista que aparece en la consola al usar AT+CWLAP no aparece tu móvil pero ¿Aparecen otros puntos de acceso? De ser así tendrías que revisar el móvil y no el ESP8266.
      Los puntos de acceso que aparecen ¿Tienen un nivel de señal bajo? Podría ser un problema de antena (o distancia) y que la señal de tu móvil no tenga suficiente potencia, aparecerían otros puntos de acceso con mejor señal pero no tu móvil. Tendrías que revisar la antena del ESP8266 (por cierto ¿Qué módulo es? ¿Tiene antena?)

      No sé si te ayudo con tu problema, a lo mejor con más información…

      Saludos y gracias por participar en polaridad.es

  26. Francisco

    Hola,esta bastante bueno la información, yo tengo el modulo con un arduino uno y utilizo una fuente externa de 3.3Vdc 600mA, el detalle es que me arroja mucha basura en la terminal, si hace caso a los comandos AT, incluso me conecta a la red domestica, utilizo los comandos AT+CIPMUX=1 y AT+CIPSERVER=1,80 para acceder desde navegador y funciona, pero la pantalla de la terminal muestra lo siguiente:

    ets Kan 8 2013,sst cause:2, boot mode:(3,6)

    l+‘�‚Á40100000, len 1396, room 16
    tXZ¢j
    chksum 0x88
    lodmtail h3tailx1 hq ŒÕ(j4�CHECK FAIL !!
    äsl��oÿ
    Ai-Thinker Technology Co. Ltd.

    seady
    WHFI CONNECTED
    WIFH GOT IP

    ¿a que podría deberse? ¿la velocidad de puerto? ¿el puerto serie por software? ¿firmware del ESP8266?

    De antemano gracias.

    Saludos

    • Víctor Ventura

      Hola, Francisco.

      Cuando aparece basura en la terminal, suele ser por culpa de la (baja) velocidad del puerto serie de Arduino con respecto a la del módulo ESP8266. Aumentando la velocidad, normalmente se arregla pero, dependiendo de qué placa Arduino estés usando y cómo de intensivo sea el programa que ejecute, puede que no soporte esa velocidad (y sigan los caracteres raros en la terminal). En cualquier caso, la relación información-ruido que aparece en tu consola no parece indicar que la velocidad sea el problema(o es muy parecida a la adecuada).

      En este caso, es raro que el culpable del error sea el firmware, puede estar más o menos actualizado pero no me consta ninguna versión que se comporte de esa forma.

      En efecto, también la alimentación puede ocasionar que aparezca basura en la consola, pero suele producir otros errores además de la basura, y si estás utilizando una fuente de 600 mA sería bastante raro que ese fuera el problema.

      Así que yo empezaría por probar a no usar comunicaciones serie software, a ver si así funciona correctamente que, por lo dicho, parece que es lo más probable.

      Para investigar el error, puedes probar a conectar el puerto serie software (las patillas de Arduino, claro) a un ordenador usando un conversor USB-TTL (serie) y verificar con alguna aplicación (como PuTTY) que las comunicaciones son correctas.

      Si el problema no estuviera ocasionado por el puerto serie software, lo siguiente que puedes probar es que el módulo ESP8266 no tiene problemas, para hacerlo, conéctalo directamente a un ordenador (que sí soportará cualquier velocidad) y lee la salida con la que responde a las órdenes; si apareciera basura el módulo pasa a ser un buen candidato al error (entendido que la conexión serie-USB es de tu confianza)

      Por favor, avísanos si algo de esto te ayuda y cómo lo resuelves finalmente, así tenemos más datos para resolver otros posibles problemas.

      Gracias por participar en polaridad.es

  27. Alfredo Villanazul

    Excelente aportación Víctor, pero tengo un problema, ya conseguí mandar comandos AT al monitor, pero al enviar a conectar a WiFi por medio del comando AT+CWJAP=»nom»,»contraseña» se conecta e inmediatamente después se desconecta y marca FAIL me pudieras comentar que debe estar fallando, lo intente con mi celular y la mi WiFi de casa y ambos me dan el mismo error.

    • Víctor Ventura

      Hola, Alfredo.

      Sin más pistas, solamente puedo decirte que tiene pinta de ser algo del hardware. Cuando la alimentación no proporciona suficiente amperaje, el ESP8266 se puede comportar de forma errática. Por supuesto, el módulo puede simplemente estar roto ¿Has probado a usar otro módulo?

      Un saludo y gracias por participar en el blog.

      • Alfredo Villanazul

        Estoy utilizando una fuente externa de 5.2 Volts a 1 Ampere, reduzco el voltaje utilizando un regulador de 3.3 Volts (Regulador LD33V); las tierras (o masa) del circuito, arduino uno y regulador están interconectadas para unificar las tierras; realice pruebas con otro modulo y me da exactamente el mismo problema, puedo utilizar los comando para variar la velocidad, cambiar el estado, consultar las redes que se encuentran cerca, pero al momento de querer conectarme a una red me marca «fail».

        • Víctor Ventura

          Hola, Alfredo.

          Por desgracia, es bastante raro y no se me ocurre un diagnóstico claro.

          • Si has probado varios módulos, sería descartable que fuera un problema de (ese lado del) hardware.
          • Si has probado diferentes puntos de acceso, la conexión Wifi de tu casa y la de tu teléfono, se puede descartar que sea achacable a la conexión.
          • Has cuidado bien la alimentación, así que también se pueden descartar los errores aleatorios que a veces produce. Por otro lado, ahora entiendo que tus errores son sistemáticos.
          • Me parece entender que no hay software en juego (un programa) sino que mandas las órdenes AT directamente por la conexión serie.

          Algunas versiones del firmware producen un error equiparable al que describes: conectar pero no llegar a transmitir datos y desconectarse inmediatamente. Supongo que ya sería mala suerte que hubieras grabado en ambos módulos la misma versión del firmware con error (no me consta que se venda ningún modelo de módulo ESP8266 con esas versiones). Si yo estuviera en tu situación, probaría a actualizar el firmware de uno de los módulos a una versión «segura» (digamos que la más reciente) para ver si el comportamiento es el mismo.

          Sospecho que todo esto es de poca ayuda, pero considera que lo que hago es diagnosticar el error a ciegas, quizá si pudieras aportar más información del contexto en el que está funcionando el módulo (por ejemplo ¿La conexión Wifi de casa y del teléfono tienen cierta peculiaridad?) yo mismo, o algún lector, podríamos acertar con el problema.

          Saludos y gracias por participar en polaridad.es.

  28. Ariel Diaz

    Buenos dias, disculpa tengo una duda, podria enviar datos desde mi PC al modulo WIFI? Tendria que instalarme algun programa o como reconosco el MOdulo?

    • Víctor Ventura

      Hola, Ariel.

      Sí, puedes utilizar el módulo desde un PC. Para hacerlo necesitas un conversor USB (u otra conexión serie que tenga el PC) a TTL. Ese conversor deberá ser reconocido por el sistema como un nuevo puerto serie (algo como COM14 en Windows o /dev/ttyACM3 en Linux) y puede que (en Windows) necesites un driver del fabricante, ya que no todos las marcas o modelos son reconocidos directamente por el sistema.

      El conversor USB-TTL lo conectas por la parte USB al PC y por la parte serie UART (TTL) al módulo ESP8266 🙂

      Recuerda que el módulo ESP8266 funciona a 3V3 y puede que necesites convertir los niveles si el adaptador USB-TTL no funciona a esa tensión (la mayoría funciona a 5 V, lo que podría dañar el módulo ESP8266 más pronto que tarde)

      Para intercambiar datos entre el PC y el módulo ESP8266 necesitarás también un programa tipo consola. Mi favorito (multiplataforma) es PuTTY.

      Espero que te resulte útil. Gracias por visitar polaridad.es

  29. Daniel

    Hola buenos días, quisiera saber la distancia de la conexión del Dispositivo hacia el Modulo wifi ?

    • Víctor Ventura

      Hola, Daniel.

      Depende del contexto. A grandes números, con la antena más básica y una antena decente en el punto de acceso, yo diría que 25 m en interior y hasta 100 m en exterior.

      En el querido HackADay hicieron hace tiempo una prueba de alcance del ESP8266 en la que conseguían más de 360 m con la antena en PCB del ESP-01, que es el más básico. Yo no apostaría tan alto, menos en diseño genérico. Si puedes hacer pruebas in-situ podrías arriesgarte a usar distancias mayores, aún así, te recomiendo moderación, que luego pasa una mosca electrostática y te estropea el montaje.

      Saludos.

    • Hexa

      sin obstáculos yo he conseguido >500m con un punto de acceso y una antena direccional de 20dB y 2W

  30. Damian cabrera

    Estimado Victor,

    Te comento un poco de que se trata mi problema.
    Estoy utiluzando el ESP8266f, en el modo servidor, dentro de mi habitacion el equipo funciona correctamente, genera la red y descarga el HTML completo, envia y recibe los request, pero el problema lo tengo cuando realizo la comunicacion fuera de mi habitacion, el equipo recibe las request y envia los paquetes, pero solo envia la mitad del HTML.
    Es problema de señal ruido?
    depende del ambiente donde estoy?, no es un ambiente industrial.

    saludos y gracias por todos.

    • Víctor Ventura

      Hola, Damian.

      Si a menos distancia funciona bien y a más distancia funciona mal, la correlación sugiere que el problema es la distancia 🙂

      El ESP8266 funciona de forma errática cuando la alimentación no le aporta la suficiente corriente. Para transmitir a más distancia puede necesitar más corriente. No es normal que necesite mucho más de medio amperio pero puedes probar a usar una fuente incluso mayor para descartar que el problema no sea ese.

      ¿Hay algo más que cambie, además de la distancia o los obstáculos entre que funciona bien y deja de hacerlo?

      Gracias por participar en polaridad.es

  31. Sebastian

    Hola, buenos dias
    Muy bueno el articulo, he programado el modulo desde el ide de arduino con un ejemplo (blynk) y al conectarlo a la protoboard el led conectado titilaba y funcionaba todo perfecto. El problema surgió luego, cuando trate de cargar otro programa ya no funcionaba
    Estos son mis errores:
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    Otra cosa que observe es que ya no responde a los comandos TA

    Usted tiene idea de cual podria ser mi problema?
    Desde ya, muchas gracias!

    • Víctor Ventura

      Hola, Sebastian.

      No conozco el software que has utilizado y parece que los mensajes que muestras están relacionados con él 🙁 A lo mejor algún lector del blog te puede ayudar 🙂

      Que no responda a las órdenes AT del ESP8266 seguramente tiene que ver con haber modificado el firmware del ESP8266, que por suerte se puede volver a grabar. Como no conozco el software que has utilizado (y sin más datos de contexto) tampoco puedo garantizarte que esa sea la razón de los problemas.

      Gracias por participar en polaridad.es.

  32. Luciano

    Hola estimado Victor, estoy usando este modulo para un proyecto académico. Mi problema es al momento de ejecutar los comandos AT, el modulo al principio me tira caracteres de basura y luego un ready. Pero al ingresar AT+ me tira error.
    Estuve leyendo atentamente las preguntas y son interesantes para mi problema.
    Lo que le pido es que me oriente un poco mas de lo explicado en como actualizar el firmware.
    O si le parece que fuera otro el problema.
    Desde ya gracias por la buena predisposición y atención al público.

    • Víctor Ventura

      Hola, Luciano.

      Lo normal es que los primeros caracteres que el ESP8266 envía no son legibles hasta que manda un mensaje «ready», así que hasta ahí no debes preocuparte, el funcionamiento es el normal.

      Si nos contaras exactamente qué orden AT es la que te muestra qué error concreto a lo mejor te podríamos orientar más para resolver tu problema.

      He escrito en varios artículos de este mismo blog sobre cómo actualizar el firmware del ESP8266 te recomiendo que lo repases e incluso lo tengas delante mientras lo haces. En resumen, debes ① hacerte con la imagen del firmware, ② descargar una aplicación para grabar la imagen en la memoria del ESP8266, ③ conectar el módulo wifi en modo grabación (lo que suele incluir hacer reset antes de empezar) y ④ enviar la imagen al ESP8266 cruzando los dedos para que no se pierda la conexión ni te quedes sin suministro eléctrico 🙂

      La fase de grabación del módulo wifi suele dar problemas hasta familiarizarse con su funcionamiento. No te desesperes, funciona. Algunos problemas están relacionados con algunos modelos concretos de módulo (por ejemplo, si tiene o no el GPIO15 expuesto). No tengas problema en repreguntar; si nos das los datos concretos de la circunstancia en la que se produce el error, seguro que yo mismo o algún lector podemos ayudarte.

      Muchas gracias por participar en polaridad.es.

  33. Maxi

    Hola Victor, muy Buena la información del blog.
    Estoy trabajando con el ESP-01 para un proyecto en el cual commando una base con 3 Omni wheels.

    El ESP01 hace de interfaz entre una placa Z-turn Board y la PC.
    Como experiencia comparto que solucioné los problemas de «reinicio» del modulo al conectar bien cerca de la alimentación un capacitor electrolítico de 470uF x 16V y uno de 100nF en paralelo.

    La idea es que el ESP01 inicie como Servidor TCP y desde la pc crear un TCP Client para conectar y enviar datos desde la PC a la Zturn de forma inalámbrica.
    El ESP01 está conectado a la UART de la Zturn, para iniciar el server envio los commandos CIPMUX CIPSERVER y funciona todo OK.
    El problema está cuando el server está iniciado, con el cliente conectado, y recibe datos, el micro los atiende por interrupción pero no puedo coordinar que reciba el dato completo.
    Por ejemplo, envoi una L desde el cliente, y en el server debería recibir «+IPD0,0:L» , pero recibo esto de a 4 bits o a veces desordenados.
    La consulta es, pudiste conectar el ESP01 con la UART de algún microcontrolador ARM?.
    Evidentemente estoy fallando en la configuración de la recepción del ARM.
    Tambien note que al hacer la comunicación con el ARM el modulo se demora bastante en responder, distinto a como funciona conectado al USB de la PC por medio de un conversor USB-SERIE TTL.
    Muchas gracias por compartir toda la info del blog.

    • Víctor Ventura

      Hola, Maxi.

      He probado el ESP8266 ESP-01 controlándolo desde un ARM Cortex-M3 y usando el IDE de Arduino sin notar ningún retraso en las comunicaciones. Tampoco he notado diferencias en las comunicaciones usando MCU más pequeños, como Arduino Uno; y tampoco he encontrado diferencias de velocidad en comparación con la conexión a un PC. Puede que, si la espera es pequeña, sea inapreciable desde el punto de vista humano (o lo sea para mí) y haya que realizar una medida más precisa para asegurarse, no puedo confirmarte mucho más.

      Muy interesante lo de los condensadores para evitar los problemas de alimentación (reinicio).

      Gracias por participar en polaridad.es ¡Vuelve pronto!

      • Maxi

        Hola Victor, el problema se solucionó trabajando por interrupciones. Yo estaba comprendiendo mal el funcionamiento.
        Con respect a los capacitors funciona muy bien el módulo, muy estable.
        Cualquier cosa estamos en contacto por email. Muchas gracias.
        Saludos.

  34. Luciano

    Hola Victor, disculpa que no conteste antes. Logre hacer funcionar el modulo con los comandos AT. Pero hay un comando que me tira un error. Te lo describo:
    AT+CIPSTART=0, «TCP», «NUMERO DE IP», 80
    Me tira Link typ ERROR
    Desde ya gracias y espero su ayuda.

    • Víctor Ventura

      Hola, Luciano.

      ¿Has establecido el modo con AT+CIPMUX=0? En tal caso no tienes que enviar AT+CIPSTART=0,"TCP","216.58.204.100",80 sino AT+CIPSTART="TCP","216.58.204.100",80

      ¿Has verificado que «número de IP» responde al puerto 80? Puedes hacerlo, por ejemplo, con un navegador web (supongo que el puerto 80 no es casualidad) para ver si funciona y con TelNet para ver lo que responde, que a veces da pistas de lo que pasa.

      Gracias por visitar polaridad.es

  35. santiago

    Hola a mi me muestra comentarios basura, lo reinicion varias veces hasta que me tira un ready, pero despues del ready sigue tirando caracteres basura hasta que me da error. que puede ser?

    • Víctor Ventura

      Hola, Santiago.

      Que el ESP8266 envíe caracteres ilegibles al inicio, hasta enviar el mensaje «ready», es normal. Si lo sigue haciendo después ya es raro.

      Algunas veces no arranca bien porque tiene picos de consumo, por ejemplo al inicio, y necesita que la alimentación los soporte, pero nunca me ha ocurrido que arranque bien e inmediatamente dé errores.

      Recibir información ilegible también podría deberse a una velocidad de transmisión incorrecta, pero en tal caso tampoco se leería el mensaje «ready».

      A falta de más datos, la hipótesis que yo seguiría es la de una conexión defectuosa del puerto serie, seguramente porque se desconecta intermitentemente o bien porque recibe ruido externo.

      Gracias por participar en polaridad.es

  36. Nico

    Buenas!!
    Primero agradecerle todo lo relacionado con la información que das sobre el módulo Esp8266.

    Yo lo estoy utilizando en un arduino Uno con la siguiente conexión:
    GNd módulo -Gnd arduino
    Rx módulo – patilla 3 de arduino
    Tx módulo – patilla 2 de arduino
    CH-PD -3.3v de arduino
    vcc -3.3v de arduino

    Y metiendo el siguiente código:

    Hasta ahora me había conectado a diferentes redes con mi módulo, con una velocidad de 115200 (ya que con las demás no me arrrancaba el módulo) aunque nunca he podido mandar información desde un servidor web a mi módulo.
    El problema lo tengo ahora que no me arranca, salen muchos caracteres raros pero no me sale el Ready tal y como me ha salido siempre. Cuando lo conecto se queda prendida la luz roja de la alimentación del módulo y la luz azul ( la que se supone que se enciende cuando manda información) se queda encendida siempre.
    No he hecho nada raro que pueda llevar a quemarlo por lo que no se a que se puede deber y como se puede solucionar.

    Muchas gracias de antemano

    Un saludo

    • Víctor Ventura

      Hola, Nico.

      Supongo que te has confundido al describir la conexión y no al realizarla. Seguro que sabes que RX de Arduino debe conectar a TX del ESP8266 (y TX al RX).

      El hecho de que la luz azul esté encendida es que al módulo ESP8266 le están llegando datos continuamente; no es un error, indica que está funcionando sin parar (por cierto, esto refuerza la posibilidad de que esté mal conectado).

      Para asegurarte de que el módulo no es el culpable (es decir, que el hardware funciona) ¿Puedes probarlo conectándolo por USB a un PC?

      Si es que el módulo tuviera problemas es raro que se hubiera destruido por completo, un comportamiento así permite sospechar que es algo de software (aunque sea del software que se ejecuta en el ESP8266) así que, en el peor caso, seguramente lo resuelves volviendo a grabar el firmware en el ESP8266.

      Por otro lado, te recomiendo que conectes a nivel alto (3V3) el pin RESET: en algunas circunstancias pueden producirse reinicios aleatorios (algo que nunca he visto, pero no es imposible, es que el módulo esté continuamente reiniciándose, lo que también podría explicar lo de los caracteres raros que llegan sin parar)

      Suerte y gracias por visitar el blog.

  37. LuisChiapas

    Me podrian orientar, estoy configurando un Arduino uno con el modulo ESP8266, conecto mando los comandos AT y todo bien, pero la ip que me asigna no esta dentro del rango de mis equipos, que podra ser, mi ip es 192.168.1.65 y mi modulo wifi siempre tiene APIP:29.26.247.36
    AT+CIFSR

    +CIFSR:APIP,»29.26.247.36″
    espero me puedan orientar saludos.

    • Víctor Ventura

      Hola, Luis.

      Si quieres que el ESP8266 acceda a tu red ¿No debería estar conectado como estación en lugar de como punto de acceso? APIP es la dirección IP de un Access Point (punto de acceso) de ahí el nombre APIP.

      A lo mejor con otros datos de configuración o más información sobre lo que quieres hacer podemos ayudarte mejor.

      Gracias por participar en polaridad.es

      • LuisChiapas

        Buen dia, te explico, cargo el programa en arduino para comunicacion serial, establesco la conexion con el ESP8266 mando los comando AT y las respuestas son satisfactorias, pero no logro que el modulo carge una ip 192.168.x.x siempre me carga la misma IP, lo conecte a mi celular y cuando quito la conexion del celular en la comunicacion me marca desconectado, pero las ip´s siguen siendo
        AT+CIFSR

        +CIFSR:APIP,»29.26.247.36″
        +CIFSR:APMAC,»00:94:c4:0a:40:10″
        +CIFSR:STAIP,»160.200.87.162″
        +CIFSR:STAMAC,»08:c4:a3:3a:ac:c2″

        gracias por contestar y por la ayuda. SALUDOS.

        • Víctor Ventura

          Hola, Luis.

          La respuesta a AT+CIFSR ahora tiene más sentido (aunque no sea lo que necesitas) pero siguen faltando datos para poder ayudarte 🙁

          ¿Qué quieres hacer, usar el ESP8266 para conectar a un servidor (estación) o para que otros dispositivos se conecten a él (punto de acceso)? ¿Tienes en la red un servidor DHCP asigna direcciones IP sin restricciones o limita por dirección MAC (u otro criterio)? En mi red tengo un servidor DHCP que asigna direcciones IP, para conectar un ESP8266, por ejemplo, a un servidor web lo configuro con estas órdenes:

          ¿Te ayuda esto un poco?

          • LuisChiapas

            Hola solo estoy haciendo una practica para encender unos simples led´s, que es el ejercicio mas basico, conecto el modulo y agrego la configuracion talcual me indicaste conectando el ESP8266 al modem de TELMEX, al conectar mis equipos telefono, pc y cualquier dispositivo se conecta sin problema alguno, no se si tenga que configurar el Modem de TELMEX, que no creo que sea el caso, cuando intento conectar el ESP8266 me indica que se conecto pero siguen mandando la misma ip, la cual deberia ser 192.168.x.y, para poder accesar al Modulo.

            AT+CWJAP=»INFINITUM3654_2.4″,»xxxxxxxxx»

            WIFI CONNECTED
            WIFI GOT IP

            OK
            AT+CIFSR

            +CIFSR:STAIP,»160.200.87.162″
            +CIFSR:STAMAC,»08:c4:a3:3a:ac:c2″

            gracias por el interes y la ayuda, espero tus indicaciones para ponerlas en practica. SALUDOS.

          • Víctor Ventura

            Hola, Luis.

            Sigo sin saber si quieres que el ESP8266 funcione como punto de acceso o como estación (aunque lo de los LED me hace sospechar que es lo primero)

            Parece que tu módemrouter… no le asigna bien la dirección IP al ESP8266, no tengo la menor idea de por qué (depende del dispositivo y de su configuración. No sé qué pone TELMEX, estoy en España y aquí cada compañía hace lo que le da la gana y cambia de opinión a cada rato, aunque lo habitual suele ser asignar la dirección IP por DHCP sin poner muchos inconvenientes al dispositivo que la solicita)

            Puedes intentar configurar el DHCP en tu módemrouter (o lo que sea) o renunciar a él en el ESP8266 con AT+CWDHCP=2,0 (el 2 hace referencia tanto a punto de acceso como a estación) y asignar la dirección IP manualmente con algo como:
            AT+CIPSTA=192.168.1.36
            (si funciona como estación) o
            AT+CIPAP=192.168.1.95
            (si funciona como punto de acceso)
            . Lógicamente, las direcciones IP que he puesto son ejemplos.

            Algunas veces me ha dado problemas la asignación de dirección IP por DHCP al ESP8266, pero no me suena que me asignara esa dirección IP pública ¿de Japón? Seguro que algún lector tiene un dato al respecto que nos pueda ayudar.

            Suerte con tu proyecto.

      • LuisChiapas

        Buen día logre la conexion utilizando el ESP8266 como AP lo que sigo sin entender es porque me sigue arrojando esa IP 29.26.247.36 y no me permite modificarla, el siguiente paso sera actualizar el firware y ver que pasa, Les agradezco por la atencion y el apoyo, SALUDOS.

          • Robert

            Tengo el mismo problema que Luis, quiero que mi esp8266 sea un servidor, al cual pueda acceder desde un navegador, cuando lo configuro directamente utilizando una pasarela USB, (la placa de arduino sin arduino :)), tengo los mismo problemas, de echo he actualizado con el firm del fabricante, con otros que están en la página web y no hay manera, ya estoy un poco cansado del tema, así que comprare otra esp8266 de otro fabricante, cual me aconsejas?

          • Víctor Ventura

            Hola, Robert.

            Hasta ahora no me había encontrado con ese problema. En realidad, no me he encontrado, solo lo que contáis en los comentarios. No entiendo qué puede ser, pero me extraña mucho que sea del módulo, especialmente con el firmware actualizado.

            En el artículo sobre los diferentes módulos wifi ESP8266 y cuál elegir hay algunas pistas para ayudarte a escoger uno. Si es para prototipar un servidor yo usaría, por ejemplo, un NodeMCU y si es para fabricar dispositivos finales algún ESP-12 (o el E o el F), que son muy baratos, muy fáciles de conseguir y van razonablemente bien como servidores (una tarea exigente para la que normalmente recomendaría algo con más recursos).

            Una cosa más. Para un servidor no te recomiendo usar órdenes AT, que es de lo que trata este artículo, sino que lo programes directamente, por ejemplo, usando el IDE de Arduino. En el blog hay un artículo que explica cómo programar un módulo wifi ESP8266 usando el IDE de Arduino

            Suerte con tu proyecto y gracias por participar en polaridad.es

  38. Miguel Paez

    Buenas noches
    Primero quiero agradecer por el tutorial, realmente es muy claro y conciso,

    Actual mente me encuentro realizando un proyecto de iluminación el cual tiene por modelo de comunicación un modulo wifi esp8266, y tengo un problema referente a la velocidad de comunicación ya que el modulo por defecto viene a 115200 baudios, y estoy utilizando un potenciometro digital y un sensor de intensidad lumínica que funcionan a 9600, logro cambiar la velocidad del modulo a los 9600 y todo funciona correctamente, el problema radica a la hora de desconectarlo puesto que este no guarda la configuración de velocidad por lo que siempre que desconecto y conecto el modulo me veo obligado a cambiar la velocidad del modulo WIFI de 115200 a 1900 baudios,
    Mi pregunta es hay una opción o una función que me realice este cambio automáticamente?, o puedo cambiar la velocidad que trae por defecto de fabrica el modulo?
    Agradecería mucho si me pudiese colaborar, Saludos

  39. Miguel

    Hola Vìctor
    Otra vez vengo a realizarle una consulta, es posible establecer una ip predeterminada al modulo wifi esp8266 me explico, que siempre que se conecte a un router este le pre-establezca la misma ip?
    Ante mano mucha gracias
    Buena noche

  40. MarianaR

    Hola buenas tardes gracias por tu apaorte, tengo una duda he configurado el modulo pero al abrir el serial me manda demasiada basura y no aparece el ready, y tambien siempre esta prendido el led azul y el rojo, a que se debe esto?

    • Camilo

      Hola Mariana. Yo tenía el mismo problema. Lo pude resolver cambiándole el firmware al ESP8266. Probé muchas versiones, la única con la que mi módulo funcionó correctamente era la «v0.9.2.2 AT Firmware.bin». No es la más reciente, pero es la única con la que pude hacerlo funcionar.

  41. Mario

    Victor, buen articulo. Y aprovechando esta oportunidad para consultarte.
    Tengo un proyecto donde convertir unos dispositivos que usan pueto serial y les puse este wifi.

    Actual: Estos dispositivos (no sistema operativo) guarda la info en memoria y estan conectados en serie y tienen un ID cada uno, despues mediante una Aplicacion pregunto el ID y al que me responda pregunto si hay datos, y si hay, los extraigo y borro.

    Proyecto convertir estos dispositivos a wifi
    Utilizo un Acces Point, ahorita puse un TP LINK.
    2 dispositivos wifi, con ip fija y como cliente
    AT+CIPMUX=0
    AT+CWMODE=1
    AT+CWJAP=»TP-LINK_A91DFF»,»admin»
    AT+CIPMODE=1
    AT+SAVETRANSLINK=1,»192.168.1.2″,8069 –> este es la PC

    AT+CIPSTA_DEF=»192.168.1.113″,»192.168.1.254″,»255.255.255.0″
    el otro es
    AT+CIPSTA_DEF=»192.168.1.114″,»192.168.1.254″,»255.255.255.0″

    Una pc con tarjeta inalambrica y que contienen la misma aplicacion de poleo y una ip fija

    para poder usar la misma aplicacion que polea usando serial, utizo el TCP2COM para salir por el wifi.
    Inicio mi apliacion, pero solo consulta un dispositivo el otro no lo encuentra.
    Pregunta sobre comunicacion:
    1.- el puerto esta ocupado ?

    Pregunta sobre configuracion wifi:
    1.- checando el tp link no tiene getway (0.0.0.0), es necesario poner getway al modulo wifi ??, yo le puse la ip del tp link 192.168.1.254

  42. Mario

    Creo que ya encontre el problema, es la aplicaion intermedia que uso. Utilze el Hercules 3.2.8 y ahi pude comunicarme con los dispositivos y si me contestan.
    Saludos

  43. jose alvarez

    Victor excelente entrada y en general todo el blog. Tu trabajo y explicaciones son excelentes. Mi duda es si puedo enviar datos desde arduino uno a NodeMCU v1.0/V2 y subir estos a ThingSpeak mediante conexión wifi. Saludos.

    • Víctor Ventura

      Hola, Jose.

      Sí que puedes, de hecho, hay algún ejemplo en el blog (mira los comentarios). Desde Arduino puedes hacerlo usando comandos AT, pero no lo necesitas (ni Arduino ni los comandos AT) si usas, como explica este artículo, el IDE de Arduino para programar directamente el propio ESP8266 (en lugar de Arduino) que tiene recursos de sobra, de hecho, más que un Arduino Uno.

      Saludos.

  44. Camilo

    Estimado:
    Tengo un problema con un módulo ESP8266. Lo hice funcionar, le cambié la velocidad con AT+IPR de los 115200 que traía por defecto a 19200. Le cambié también el modo con AT+CWMODE al modo 3. Lo hice con dos módulos y pude ver las redes wi fi disponibles y siempre al AT respondía con OK.
    El problema surgió al volver a conectarlo, ya que prende la luz azul permanente ni bien le doy alimentación, y no responde a ningún tipo de comandos. Volví a probar a 115200bps, y a otras velocidades, y tampoco tuve resultado. Probé lo mismo con los dos módulos a los que anteriormente les había modificado la configuración y no hay caso. Me queda un tercer módulo, que no lo había tocado, y al conectar ese la luz azul no se prende, y responde perfectamente al comando AT a 115200bps.
    La verdad que no entiendo qué debo modificar.
    Gracias.

    • Camilo

      Lo pude resolver cambiándole el firmware al ESP8266. Probé muchas versiones, la única con la que mi módulo funcionó correctamente era la «v0.9.2.2 AT Firmware.bin». No es la más reciente, pero es la única con la que pude hacerlo funcionar.

  45. José

    Hola Victor buenos días , he estado buscando información , sobre una curiosidad y no la encuentro por ningún sitio, he montado un arduino como servidor y otro como cliente con el famoso ESP8266 y el cliente tiene un pulsador , el servidor un led , das al pulsador y el led se enciende durante un segundo, todo funciona perfecto, solo hay un problema , cuando esta más o menos un minuto en reposo sin recibir nada el servidor cierra la conexión, visto lo visto lo que hago es saludarlo cada medio minuto , para que no pase esto, hay alguna orden AT , para evitar este problema??
    Muchas gracias

  46. alejandro

    Que tal Victor y a todos los amigos entusiastas del Arduino

    Pues yo quiero compartirles algo de mi proyecto, como muchos aqui soy novato en esto.

    El proyecto es tomar varias lecturas de sensores de temperatura, PH y medir el flujo en una tuberia, estas lecturas se almacenan en una SD con fecha y hora y despues se transmiten via internet a una base de datos MYSQL en un servidor remoto.

    Bueno pues todo va muy bien, ya me conecte a internet y ya abri mi base de datos, me costo trabajo pero ya lo logre. Bueno pues aqui empieza el problema.

    La placa arduino uno tiene un puente entre rst y gnd para poder programar el esp2866 y por este motivo el programa de la lectura de los sensores y el manejo de los datos obtenidos que se encuentra en la placa arduino no se actualiza, no marca ningun error simplemente la placa arduino uno se quedo con el programa anterior y no puedo regrabarlo ya intente quitar ese puente, poner en modo flash la esp2866, desconectarlo totalmente de la palaca y nada, me sale el siguiente «error: espcomm_upload_mem failed».

    si dejo las conexiones para programar el esp2866 entonces no se actualiza el programa anterior.

    alguna idea???

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *