Video. Conectar ESP8266 a Internet. WifiClient

TODO: poner enlace al vídeo

Una vez escaneadas las redes, vamos a conectarnos a una de ellas y acceder a internet llegando a un servidor y ver su contenido.

El ejemplo WiFiClientBasic que podemos encontrar en Archivos – Ejemplos – ESP8266WiFi – WiFiClientBasic.

Este ejemplo se conecta a una red WiFi y manda un mensaje a un servidor TCP, en este caso a la IP 192.168.1.1 y al puerto 80.

La clase ESP8266WiFiMulti es igual que la clase ESP8266WiFi pero que permite configurar múltiples conexiones a puntos de acceso que en caso de perder la conexión se conecte al siguiente: http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-examples.html?highlight=ESP8266WiFiMulti

Con WiFi.mode(WIFI_STA); pongo el ESP8266 en modo estación, es decir, para conectar a una red WiFi de un punto de acceso.

Para más información:

Una vez conectado entramos en el loop y me conecto a un servidor como cliente. La clase cliente permite acceder a servicios de los servidor pudiendo enviar y recibir datos:

NOTA: en caso que el router wifi de una IP en otro rango que no sea el 192.168.1.x, cambiar la IP de la variable host por la IP del router wifi al que nos conectamos.

Ejercicio propuesto: conectar a https://www.aprendiendoarduino.com/servicios/aprendiendoarduino/ y leer el mensaje que devuelve.

Solución: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiClientBasicMejorado/WiFiClientBasicMejorado.ino

En este caso debemos usar un lenguaje de comunicación común para hablar entre el servidor y el ESP8266, es el mismo lenguaje que usa cualquier navegador que se conecta a una página web y es el HTTP.

Una vez conectados al puerto 80 debe mandar un GET con la ruta del servidor y acabar con una línea nueva, tal y como funciona este protocol. Para ello mando:

 
client.println("GET /servicios/aprendiendoarduino/ HTTP/1.0");
client.println("Host: www.aprendiendoarduino.com");
client.println();

Si todo funciona bien recibiré la respuesta “HTTP1.1 200 OK” seguido de las cabeceras y luego una línea nueva, tras la cual aparecerá la respuesta del servidor. Para leer todas las líneas y no solo la primera es necesario hacer un bucle while mientras haya datos recibidos con la instrucción client.available(): https://www.arduino.cc/en/Reference/WiFiClientAvailable

NOTA: es necesario añadir la cabecera HTTP “Host: http://www.aprendiendoarduino.com” para que el hosting de la web resuelva el nombre del dominio.

La respuesta obtenida es:

Mensaje oculto: “Bienvenido al servidor de http://www.aprendiendoarduino.com

Más información sobre el protocolo HTTP: https://aprendiendoarduino.wordpress.com/2017/06/26/protocolo-http-2/

Anuncios

4 pensamientos en “Video. Conectar ESP8266 a Internet. WifiClient

  1. Pablo

    Buenas!! muy buenas guías,
    tengo una consulta, quisiera medir caudal, tengo el problema que si quiero usar solo el ESP8266, ya sea el 01 o el NodeMCU, necesito usar una interrupcion para poder contar bien todos los pulsos que el sensor me envía.
    1- Estos modulos no cuentan con interrupciones? no he encontrado y nose como hacerlo.

    Por otro lado, con Arduino UNO puedo leer bien el sensor, quisiera comunicar estos datos desde el Arduino al ESP, a través de UART, y que el modulo me envio los mismos a Internet,

    2- Hay alguna libreria para configuración de UART para Arduino y para ESP8266??

    Muchas gracias!!

    Saludos!

    Le gusta a 1 persona

    Responder
    1. jecrespom Autor de la entrada

      Hola Pablo,

      Con el ESP8266 las interrupciones funcionan igual que con otro Arduino, en este post tienes toda la información https://techtutorialsx.com/2016/12/11/esp8266-external-interrupts/

      En el ESP8266 casi todos los pines soportan interrupciones externas.

      Para comunicar por UART el Arduino con el ESP8266, puedes usar la librería “software serial” https://www.arduino.cc/en/Reference/SoftwareSerial que está incluida en el propio IDE de Arduino. Luego es mandar datos por el serial que creas mediante software serial y el el ESP8266 escuchar los datos enviados desde Arduino.

      En este ejemplo tienes un chat serie, se pone el mismo sketch en el emisor y en el recepetor https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio15-ChatSerie

      Un saludo,
      EC

      Me gusta

      Responder
    1. jecrespom Autor de la entrada

      Hola, puedes hacerlo con cualquiera que tenga acceso a Internet o en redes conectadas, para ello deberías abrir puertos (que no recomiendo) o usando un servidor intermedio que se encargue de la entrega de mensajes, la mejor opción es usar el protocolo MQTT

      Me gusta

      Responder

Responder a jecrespom Cancelar respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.