Librería para hacer consultas HTTP con un módulo WiFi ESP8266 y Arduino

publicado en: Portada | 45

Una forma sencilla de enviar información de y a un microcontrolador es centralizándola en un servidor web. Si bien no es un método tan eficiente como, por ejemplo, acceder directamente a una base de datos, sí que es lo suficientemente eficaz, especialmente si se considera un proyecto basado en un microcontrolador, y se añade las ventajas de la ubicuidad (datos en la nube) y la simplicidad (puede manejarse como texto información y órdenes) El envío de información usando este sistema puede consistir en hacer peticiones HTTP POST y la recepción en analizar el contenido de la respuesta a una petición HTTP GET.

El módulo WiFi ESP8266 es una opción muy económica, con un rendimiento muy adecuado para su uso con microcontroladores y muy sencillo de usar trabajando con órdenes AT.

Para sistematizar su uso con peticiones HTTP he desarrollado una pequeña librería que da soporte a las necesidades de mi proyecto de dispositivo gestor de sueño (que he llamado SleepManager) ya que basa su infraestructura en un servidor web que permite extenderlo a un objeto IoT como servicio en la nube. No es difícil agregar a la librería otros servicios como peticiones UDP, por ejemplo, para sincronización horaria por NTP aunque, como explico en el texto enlazado, no es crítico para mis necesidades y puedo resolverlo aceptablemente con una petición HTTP a una página web preparada a ese efecto como muestro en un ejemplo de uso de esta librería.

El funcionamiento de la librería se basa en el envío de órdenes AT cuando el dispositivo está disponible y la repetición (con un pequeño retraso) en caso de error, que se interpreta como no disponibilidad (con éxito, por las pruebas) por ejemplo del punto de acceso WiFi o del servidor al que se consulta.

La librería aprovecha el hecho de que el módulo WiFi ESP8266 devuelva un código +IPD como aviso de la recepción de datos para ir rellenando un pequeño buffer con la información devuelta por el servidor. Para el proyecto de dispositivo gestor del sueño necesito analizar muy pocos datos devueltos desde el servidor por lo que, para economizar, el buffer y el puntero que lo recorren son especialmente pequeños; esta será una de las primeras cosas que deberás cambiar para reutilizar la librería para procesar un volumen de datos mayor.

Las funciones que se exponen como públicas permiten (1) saber el estado del módulo: si está conectado o no, si hay datos en el buffer y cuántos y si el módulo ESP8266 ha terminado la operación que se le ha solicitado; (2) conectar a un punto de acceso WiFi en una red con un servidor DHCP y (3) hacer peticiones HTTP de tipo GET y POST aunque, como verás, el código está diseñado pensando en que sea muy sencillo añadir otras.

En cuanto al funcionamiento interno, en primer lugar se construyen dos matrices, una con las órdenes AT y otra con las respuestas esperadas para éxito y error; luego, el programa que usa la librería, debe ir llamando cada cierto tiempo a la función enviar que se encargará de mandar las órdenes al módulo si hay disponibles y no está ocupado y a la función recibir que procesará las respuestas del módulo ESP8266 (y del servidor HTTP a través de él si procede)

Como cabe la posibilidad de que el módulo se desconecte por pérdida de señal, el programa principal puede comprobar si el módulo ESP8266 está conectado al punto de acceso WiFi (con la función conectado) y tratar de conectar en caso contrario (con la función conectar_wifi)

Para saber si la operación que se ha solicitado ha terminado, el programa puede usar la función operacion_terminada y en tal caso enviar otra o utilizar los datos resultantes para lo que se utiliza la función leer_buffer, que devuelve el contenido del buffer que se ha ido rellenando con los datos que llegaban al módulo ESP8266 hasta completar la operación, y la función longitud_buffer que informa de la cantidad de esos datos que el servidor ha avisado de que iban a ser enviados (con lo que poder descontar la información del propio módulo)

El ejemplo de más abajo usa la librería de consultas HTTP con el módulo WiFi ESP8266 para enviar datos al servidor (un porcentaje obtenido de la lectura de una entrada analógica) cada cierto intervalo de tiempo. Como no espera recibir ninguna respuesta no hace uso del buffer y le basta que la operación se complete correctamente. Este sistema es el que utilizo en mi proyecto de dispositivo gestor del sueño para ir almacenando los resultados de las lecturas de los sensores en el servidor.

El siguiente ejemplo usa una consulta HTTP GET para consultar la hora del servidor y sincronizarla con la del dispositivo microcontrolado añadiéndole el tiempo estimado de respuesta; en realidad, añade entre 4 y 6 segundos más para asegurar que la hora del dispositivo es mayor que la del servidor y poder comprobar fácilmente si la hora del reloj en tiempo real que forma parte del dispositivo es correcta o se ha perdido por descarga de la batería.

Después de muchas pruebas he verificado que este sistema de sincronización horaria con el módulo WiFi ESP8266 es lo bastante precisa para mis necesidades; en el peor caso con un error de menos de 10 segundos que es algo irrelevante en mi caso.

Como puede verse en el código, es necesario consultar primero la longitud del buffer ya que la lectura lo reinicia para que esté disponible para almacenar nuevos datos.

Una vez leído el contenido del buffer, en este ejemplo se procesa para obtener la hora. En primer lugar se selecciona el texto que queda entre las llaves (el servidor responde usando la orden PHP echo "{".time()."}") lo transforma en un "objeto tiempo" y de él obtiene en formato humano la fecha y la hora.

El siguiente programa de ejemplo, inspirado en la consulta de un usuario, sirve para buscar la dirección IP pública usando el servicio CheckIP de AWS (Amazon Web Services) cada cinco minutos.

Como en los ejemplos anteriores, se hacen una serie de presunciones que habrá que cambiar conforme a la configuración de la red que se use (192.168.1.X, en el ejemplo) el SSID y la clave del WiFi… La forma de encontrar la dirección IP no es muy elegante, supone que es la última línea de la respuesta a la petición HTTP GET aunque puede que exista una API para hacerlo de manera más ortodoxa.


Aquí puedes descargar la librería ESP8266 para consultas HTTP con Arduino Uno (sin consola) y desde aquí puedes descargar la librería ESP8266 de consultas HTTP para Arduino que usa consola, es decir que necesita implementar un puerto serie por software o usar como hardware, por ejemplo, una placa Arduino Mega o Arduino Leonardo.

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.

45 Respuestas

  1. ANDERSON CIFUENTES DUARTE

    hola buenas he descargado la librería y diseccionado la informacion necesaria para que se ajuste a mi servidor local para realizar dicha prueba pero hasta el momento no tengo resultados. me gustaría saber cual es procedimiento adecuado o que paso debo seguir pues hasta el momento no me ha funcionado.

    • Víctor Ventura

      Hola, Anderson.

      Para hacer funcionar la librería debes utilizar los valores de conexión de tu WiFi en lugar de los de los ejemplos (el SSID, la clave, indicar la dirección de tu red…)
      Puedes empezar probando el ejemplo más sencillo, que es el que busca la IP pública de tu conexión a Internet en los servicios web de Amazon. Debes cambiar las constantes WIFI_SSID, WIFI_CLAVE y RED_DIRECCION
      En tu servidor web local deben existir los script PHP que gestionen las consultas (por ejemplo graben en una base de datos los valores que le pasas) y las aplicaciones Arduino que usen la librería deben enviar la información conforme hayas previsto en dichos script (en formato JSON, por ejemplo)

      Espero haberte ayudado con esto.

      Un saludo.

  2. Miguel

    Hola buen dia, soy nuevo en esto, mi duda es de como sería la conexion del modulo esp8266 con la placa arduino uno. Saludos

    • Víctor Ventura

      Hola, Miguel.

      Supongo que te refieres a un módulo que contiene el ESP8266 y en ese caso depende de qué módulo se trate. El más común (y barato) es el que se muestra en las fotos de la portada de las entradas Conexión WiFi con un módulo ESP8266 y Sincronización horaria con un módulo ESP8266 del blog, en tal caso las patillas que hay que conectar son las llamadas UTXD del módulo a la RX de Arduino, URXD del módulo a TX de Arduino, VCC y CHPD del módulo a 3.3V de Arduino y GND del módulo a GND de Arduino.

      Mirando el módulo desde la cara de las patillas con la antena hacia arriba, VCC queda abajo a la izquierda, GND arriba a la derecha, UTXD bajo GND, URXD sobre VCC y CHPD justo a la izquierda de UTXD (el siguiente es RST antes de VCC)

      Hay una salvedad, aunque si lo conectas sin más seguramente no lo rompas, el ESP8266 funciona a 3,3 V y no soporta 5 V por lo que no es una buena idea que URXD conecte directamente a TX, deberías regular la tensión. Para eso te puede servir un sencillo divisor de tensión (un par de resistencias) o puedes usar un diodo y una resistencia, un regulador «casero» para pruebas como el que aparece en el artículo cómo poner pines a un componente de montaje superficial o, lo que te recomiendo, un módulo que cambie de nivel la tensión entre URXD y TX. Si usas un módulo con varios canales para convertir la tensión también te recomiendo que no sólo conectes URXD (que es lo menos que debes hacer) sino también UTXD.

      No tengas problema en preguntar más si no ha quedado claro.

      Saludos.

  3. Edgar

    Muy buena labor. Estoy trabajando con un sensor IMU conectado a un Arduino Pro Mini (programando y recibiendo datos por medio de un UNO) y quiero enviar esos datos del sensor a un servidor utilizando también el ESP8266. Leí tu trabajo y quisiera que me explicaras un poco mejor lo de las alternativas de la librería para uso Con y Sin consola que no me queda bien claro. Agradezco la ayuda.

    • Víctor Ventura

      Hola, Edgar.

      La diferencia es que la librería sin consola funciona sin más en las placas Arduino que sólo tienen un puerto serie (como Arduino Uno) mientras que la otra librería necesita una placa Arduino con más de un puerto serie, como ocurre con Arduino Leonardo o Arduino Mega.

      En los ejemplos de la librería el otro puerto serie (el que no comunica con el módulo ESP8266) sólo se usa para mostrar mensajes de depuración pero en producción también puede ser necesario, por ejemplo, para comunicar con un tercer dispositivo, que puede ser (a lo mejor es tu caso) precisamente otro Arduino.

      Puedes sustituir el puerto serie hardware de Arduino por uno software (gestionar por software las comunicaciones) pero aparte de que pudiera ser que el rendimiento se viera afectado, depende del proyecto, lo que es seguro es que tendrás que medir con cuidado el uso de memoria; el inconveniente de los comandos AT es que necesitan bastante memoria.

      Muchas gracias por participar en el blog.

  4. aNDRES

    Hola
    Como hago una conexión directa del ESP8266 y servidor web como hostinger, para que capture los datos y los envié a una base de datos.
    Gracias

  5. Guille

    Hola gracias por compartir.
    Estoy trabajando en un proyecto en el que necesito que un sensor añadido a una placa ardruino mande una señal a una app a través de la web. Es posible resolverlo con este modulo? cuando el ardruino tenga información del sensor la envía a una base de datos y a través de ahí con consultas php la app determina si enviar una notificación al usuario o no. Este sería una solución viable? gracias.

  6. Hector Ricardo

    Muy buen trabajo soy principiante en esto de arduino y he intentado hacer funcionar el esp8266 con el modulo board y es un verdadero dolor de cabeza al menos para mi de hecho nunca logre hacerlo funcionar tu libreria se ve increiblemente facil de usar la pregunta es, como la implementaria en un mega haciendola funcionar como un server rest api por ejemplo implementandola con la libreria arest es muy flexible en cuanto a comunicacion desde una app o un website a traves de este metodo. muchas gracias por tan buen articulo y porfavor digame que piensa al respeco de mi pequeño proyecto tenga un excelente dia

    • Víctor Ventura

      Hola, Hector.

      La librería de este artículo está pensada para hacer consultas, es decir, para funcionar como cliente. Por lo que dices de tu proyecto, lo que tratas de hacer es usar una placa Arduino Mega como servidor. Desde luego, un proyecto así es viable pero debes considerar que un sistema así (Arduino Mega + ESP8266) podrá atender pocas peticiones cada vez. Si necesitas atender un número considerable de consultas debes plantearte usar un servidor web mayor, algo como Apache, al menos; incluso, si necesitas mucha disponibilidad, implementarlo usando Node.js En ambos casos necesitarás también más recursos hardware, como mínimo una placa tipo Raspberry Pi.

      En la serie de artículos sobre el almacenamiento de los datos obtenidos por los dispositivos de la Internet de las cosas (IoT) tienes algunas pistas sobre cómo funcionaría un servidor así (Apache, PHP y MySQL) que puede servirte como punto de partida para implementarlo.

      Espero haber sido de ayuda ¡Suerte con tu proyecto!

    • Hexa

      En realidad no necesitas ni un Arduino, con un módulo ESP8266 y su SDK puedes programar un servidor web

      • Víctor Ventura

        Hola, Hexa.

        En efecto, se puede programar directamente el ESP8266, con su SDK o con el IDE de Arduino, pero este artículo trata de cómo usarlo con órdenes AT desde Arduino y el problema de Hector en cualquier caso seguiría siendo el mismo: un sistema muy pequeño como para atender muchas peticiones a la vez.

        Gracias por participar en polaridad.es 🙂

  7. angel

    Para solamente cargar una pagina web, como si fuera un navegador, cuando cumpla una condicion como seria?

    • Víctor Ventura

      Hola, Ángel.

      El último ejemplo te puede servir más o menos de referencia. Tendrías que cambiar la condición en la línea 60, la línea 62 ya no sería necesaria (lo que hace es reiniciar el cronómetro) y la carga útil después de leer la página está entre las líneas 82 y 84, que es donde tendrías que poner tu código, lo que sea que quieres hacer con la página cargada.

      Espero que eso te ayude. Gracias por visitar polaridad.es 🙂

  8. Alejandro

    Actualmente estamos desarrollando un proyecto escolar que consiste en un invernadero donde se realiza un DataLog de ciertos valores que se toman mediante sensores (temperatura, humedad y luminosidad) y se va a implementar un modulo ESP8266, para la comunicación con un ordenador.

    La problemática que nos ha surgido es que la conexión a Internet en el lugar, es muy mala, y en algunas ocasiones el sistema podría estar desconectado durante dos horas aproximadamente(es por eso que decidimos realizar el Data Log).

    Se planea que desde el arranque del sistema, se comience a registrar el estado del sistema, y en cuanto reciba conexión a Internet, envie los datos recabados durante el tiempo fuera de linea, al terminar, cierre el enlace, siga con las mediciones y nuevamente al conectarse envíe un nuevo archivo, y así sucesivamente. De los tiempos de transmisión y lectura de los valores ya se encargaran los microcontroladores, pero lo que no logro encontrar, es el como enviar los archivos del Log directamente al ordenador.

    De antemano agradezco por tu atención y te envío un cordial saludo

    • Víctor Ventura

      Hola, Alejandro.

      Enviar los archivos del log directamente al servidor, aunque posible, no me parece la opción más eficaz. Lo que yo haría sería ir leyendo del log los datos monitorizados en cada entrada (temperatura, humedad y luminosidad), mandar cada entrada al servidor y para saber las que ya se han enviado, almacenar el código de tiempo del último registro enviado al servidor, por ejemplo.

      El resto de la lógica sería la que describes: ir monitorizando desde que se inicia el sistema e ir almacenando los datos promediados, con registro de tiempo, cada cierto intervalo. Con un periodo de tiempo mayor que el de almacenamiento de datos (podría ser un múltiplo, para simplificar las cosas) verificaría que hay conexión a Internet y si la hay enviaría al servidor los datos (registro a registro). Si termina correctamente, empezaría un nuevo documento (log) y repetiría el proceso.

      Si te quedas sin conexión mientras mandas los datos puedes volver a intentar conectar cuando pase el periodo que hayas prefijado y si lo consigues, envías solamente los datos que tengan un registro de tiempo mayor que el del instante en el que se produjo el error. Como el proceso no terminó si se cortó la conexión a Internet, el documento es el mismo (se siguen almacenando los datos en el documento a medio leer) y solamente usaría un documento nuevo si el envío de datos termina correctamente.

      No sé cómo de concreto está ya tu código (no dices, por ejemplo, cómo envías los datos al servidor) y por tanto el nivel de detalle que necesitas para terminarlo. En cualquier caso, en polaridad.es puedes encontrar información sobre cómo leer y grabar en una tarjeta SD con Arduino o sobre cómo conectar una tarjeta SD a Arduino usando el bus SPI, por si estás más atrás en el proceso. Hay un comentario en el que muestro un ejemplo sobre cómo hacer un log de datos de un sensor de ultravioleta (muy interesante, por cierto, para un invernadero). En este mismo artículo tienes información (del lado del cliente) sobre cómo enviar los datos al servidor y también hay una serie de artículos sobre cómo almacenar en Internet (en un servidor) los datos monitorizados que explican cómo preparar la infraestructura del servidor y el proceso de recepción y almacenamiento de la información. En esos artículos (y otros) también puedes hacer consultas de algo más concreto si lo necesitas o contarnos cómo va vuestro proyecto de invernadero.

      Espero que esto te resulte útil. Gracias por participar en polaridad.es.

  9. Abraham

    Victor que tal, un saludo.

    Que arduino utilizaste en los ejemplos?, es posible hacer peticiones a un servidor por medio de HTTPS & ssl ??? quiero mandar datos médicos desde un arduino a una pagina web, muchas gracias

    • Víctor Ventura

      Hola, Abraham.

      Suelo hacer las pruebas de lo que publico en el blog con placas pequeñas, como Arduino Uno o Arduino Leonardo.

      Utilizar HTTPS con el módulo ESP8266 es posible, pero no desde Arduino mediante comandos AT, como se muestra en este artículo. Necesitarás un firmware para el módulo Wifi que soporte SSL; con ese firmware no necesitarás Arduino y podrás programar sobre el propio módulo, aunque la forma de hacerlo es completamente diferente (usando el SDK del ESP8266) a cómo lo haces con órdenes AT.

      En la web del fabricante, Espressif, hay algún ejemplo sobre cómo usar SSL. Ya te adelanto que, principalmente por los certificados, SSL necesita mucha memoria y tendrás que trabajar siempre con esa circunstancia en mente.

      Gracias por participar en polaridad.es

    • Hexa

      Ni lo intentes. ESP8266+SSL=PROBLEMAS
      Si no puedes utilizar un IC WiFi de gama alta, el ESP8266 es de gama baja, mejor monta un servidor local con una RaspberryPi o algo así y manda cada tanto los datos al servidor de verdad.
      El ESP8266 va muy bien para cosas pequeñas pero como trates de hacer cosas más exigentes, como HTTPS, todo son inconvenientes, por lo menos en mi experiencia.

  10. Joel Leal

    Buen día. Muchas gracias por el apoyo y los conocimientos compartidos. Pudiera ayudarme por favor.
    Tengo un arduino Mega que monitorea unos sensores, junto con el modulo ESP8266. Por ejemplo, tengo el sensor de temperatura y establecí un valor minimo y un valor maximo, como puedo enviar un correo de alerta cuando se sale del rango por medio del modulo ESP8266?

    • Víctor Ventura

      Hola, Joel.

      Para enviar un correo debes acceder a tu servidor de envío de correo (algo como smtp.tuservidor.com) y utilizar el protocolo SMTP para comunicarte. Con la excepción de la autentificación (que la mayoría de servidores exigen) el proceso es muy sencillo, basta con indicar el remitente después del texto MAIL FROM:, el destinatario después de RCPT TO: y los datos del correo (incluyendo el asunto) después de DATA. Para cerrar la conexión con el servidor se envían dos líneas en blanco. Normalmente, entre los datos del correo se incluyen, además del asunto (con Subject:) otra vez el remitente (From:) y el destinatario (To:) delante del cuerpo del mensaje.

      El protocolo también permite formatear el mensaje en HTML así como incluir imágenes. Creo que sería largo de explicar todo aquí en respuesta a un comentario así que estudiaré si es interesante como para desarrollar un artículo sobre el tema… Tendrás que seguir pendiente de polaridad.es 🙂

      ¡Gracias por participar en el blog!

  11. rssg

    Estimado Victor, antes que todo gracias por:
    Compartir, tu amabilidad para responder y por el Español que nos permite a todos los hispano parlantes tener una fuente mas clara, llegue a tu blog buscando informacion sobre arduino uno y el modulo esp8266 ya que estoy en un proyecto para el cual e implementado un sistema web en php y MYSQL, donde con arduino + sensor infrarrojo sharp efectuo la contabilidad de objetos dato que envio a mysql via LAN arduinol, hasta hay todo bien pero hay una zona en donde no tengo cableado pero si wifi y es donde quiero usar el esp8266 y si me lo permites tu ejemplo get para lo cual te solicito si tienes a bien indicar las conexiones usadas entre arduino uno y sp8266

    • Víctor Ventura

      La conexión entre Arduino y un ESP8266 depende del tipo de módulo wifi ESP8266 que hayas elegido y también del tipo de Arduino, es difícil darte los número de patilla de cada uno de ellos sin saberlo.

      Lo que sí es seguro es que tendrás que alimentar el módulo ESP8266 a 3V3 (puedes hacer pruebas a 5 V pero no utilices ese voltaje para producción o es posible dañarlo) así que ya tienes el destino de VCC y GND del ESP8266.

      Para comunicar el módulo ESP8266 con Arduino debe conectarse RX de uno con TX del otro (RX de Arduino a TX del ESP8266 y TX de Arduino a RX del ESP8266) Como te decía antes, el ESP8266 funciona a 3V3, así que tendrás que utilizar un conversor de nivel si tu Arduino funciona a 5 V.

      El pin RESET del ESP8266 debe estar a nivel alto (VCC a 3V3) para que no se reinicie a la mínima alteración electromagnética.

      Para terminar, la patilla de activación del ESP8266 (Chip enable o CH_PD) debe estar también a nivel alto (VCC a 3V3) para que el módulo wifi funcione.

      Como el módulo ESP8266 que más se utiliza es el ESP-01, a lo mejor este diagrama de las patillas (pinout) te puede resultar útil.

      ESP8266 Módulo Wifi ESP-01 diagrama de las conexiones

      Espero que esto te ayude. Gracias por participar en polaridad.es

  12. rssg

    Hola Victor, muchas gracias por tu comunicacion, bueno te comento que estoy trabajando con la placa Arduino uno y el modulo SP8266-01, sobre las conexiones indicadas para los pines ax y tx las mia son paralelas, el pin reset no lo estoy ocupando y el dato sobre la alteración electromagnética no lo tenia considerado, como dispongo de rectificador para los 3.3 volts no sera problema energizarlo, ademas te comento que el modulo wifi lo tengo programado con comandos AT y su conexion es inmediata, me puedes explicar a que te refieres con:
    #define SERVIDOR_AGENTE y se puede omitir #define SERVIDOR_DIRECCION pues el envio GET seria sobre #define SERVIDOR_NOMBRE que esta en un hosting.

    • Víctor Ventura

      He usado SERVIDOR_AGENTE para el nombre (agente) con el que se identifica el cliente. En la mayoría de los servidores es opcional, seguramente puedas omitirlo.

      Si puedes resolver la dirección IP del servidor utilizando el nombre del dominio (usando un DNS, cosa que depende de la red a la que te conectes) puedes omitir SERVIDOR_DIRECCION e indicarle al módulo ESP8266 la IP a la que te conectas con el nombre del servidor.

      En cambio, el nombre del dominio SERVIDOR_NOMBRE seguramente no podrás omitirlo, dependerá del servidor. Cuando en una misma máquina se alojan varios dominios virtuales compartiéndola (esto es muy común en alojamientos pequeños) es necesario indicar el nombre del dominio al conectar, dado que en la misma dirección IP (indicada expresamente o resuelta con DNS por medio del nombre del servidor) escucharán peticiones de varios dominios diferentes y será necesario saber al que se refiere la petición.

      Espero que esto te ayude 🙂

  13. Sergio Alberto Mozo Pacheco

    Hola, soy nuevo en esto y quisiera saber que debo modificar para poder usar la libreria con la placa arduino UNO, de antemano gracias

  14. Francuqo

    Consulta ! … ¿Cómo logro decodificar un mensaje escrito en el navegador, para que arduino pueda interpretarlo ??

    Saludos Cordiales

  15. Monica García

    Hola Víctor Ventura, me parece excelente tu articulo

    Me llamo mucho la atención lo que publicas, me parece muy bueno, te comento que yo soy estudiante de 2 semestre en la carrera de informática en México y te quiero preguntar si este proyecto lo podemos implementar en una Esp8266 D1, he analizado y creo que sí, además quisiera implementarle algunas cosillas como algunas órdenes para apagar y encender focos

    Saludos y felicidades por tu excelente trabajo

    • Víctor Ventura

      Hola, Mónica.

      Gracias por tus halagos 🙂

      La librería puede que funcione en una placa basada en el ESP8266 pero no te lo puedo asegurar porque no lo he probado 🙁

      Acabo de publicar un artículo sobre el manejo básico (y genérico) del ESP8266 que te puede dar pistas sobre cómo explotarlo sin usar una librería y, por el enfoque genérico, aunque está pensado para usarlo desde una placa Arduino, puede ayudarte a trasponer a tu placa el código.

      Ahora estoy preparando otro artículo sobre el ESP8266, cuando lo termine lo probaré en una placa basada en este MCU, que los usuarios lo demandan, y podré decirte qué cambios serían necesarios (¡no te pierdas polaridad.es!). Por desgracia no te puedo garantizar que eso coincida con los plazos de tu universidad.

      Gracias por participar en polaridad.es

  16. alejandro franco

    hola victor muy bueno tu post pero tube unos problemitas quisiera saber si me podrias dar una mano ,uchas gracias 🙂

    wifi_http__prueba_.ino:33:1: error: ‘time_t’ does not name a type
    wifi_http__prueba_.ino: In function ‘void setup()’:
    wifi_http__prueba_.ino:39:3: error: expected initializer before ‘Serial’
    wifi_http__prueba_.ino: In function ‘void loop()’:
    wifi_http__prueba_.ino:93:15: error: ‘fecha_hora’ was not declared in this scope
    wifi_http__prueba_.ino:97:38: error: ‘day’ was not declared in this scope
    wifi_http__prueba_.ino:98:40: error: ‘month’ was not declared in this scope
    wifi_http__prueba_.ino:99:39: error: ‘year’ was not declared in this scope
    wifi_http__prueba_.ino:101:39: error: ‘hour’ was not declared in this scope
    wifi_http__prueba_.ino:102:41: error: ‘minute’ was not declared in this scope
    wifi_http__prueba_.ino:103:41: error: ‘second’ was not declared in this scope

    • Víctor Ventura

      Hola, Alejandro.

      Así, sin ver el código que produce esos errores no te voy a poder ayudar mucho 🙁

      Tiene pinta de que se te haya olvidado incluir la librería Time con #include <Time.h>, pero no puedo decirte mucho más.

      ¿Estás usando el ejemplo de la sincronización horaria? ¿Para qué placa Arduino lo compilas (por si tienes el puerto Serial1)?

      Gracias por participar en polaridad.es

  17. Fredy

    Que tal Victor, muy buen aporte.
    Estoy programando un ESP8266 NODEMCU, y quisiera saber si hay alguna libreria o comando para poder determinar la IP de un sitio web.
    Lo quiero hacer es por ejemplo: decirle a ESP8266 que consulte http://www.google.com y me devuelva la IP.
    No se si se pueda.
    Saludos y gracias por tus conocimientos.

  18. martin

    hola victor, mi pregunta es si se puede mandar datos con un teclado matricial, que en cada case# mande cierto dato a una ip

  19. Mary

    Hola!
    Disculpe me podría ayudar a mandar instrucciones por medio del modulo wifi, utilizando una aplicación móvil para encender Led. Y así mismo que el arduino por medio del modulo mande datos a la aplicación…
    Gracias

Deja un comentario

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