Servidor Web Arduino y control de LEDS

Servidor Web Arduino para el control de leds. En este tutorial aprenderemos a hacer el control de leds mediante el modulo ESP8266 y Arduino con una interfaz, Aprenderemos un poco de programación HTML  Y como crear una página web con botones y mandar datos para que el arduino los interprete.

Lo que necesitaremos es:

Un módulo wifi Esp8266

Un Arduino UNO

Lo primero es reconocer los pines de nuestro módulo ESP8266, aquí se muestra una imagen:

ESP8266

Después de conocer un poco nuestro módulo lo siguiente es conectarlo al Arduino:

-De modo que el pin “URXD” este conectado al pin 2 de Arduino.

-El pin “UTXD” este conectado al pin 3 de Arduino.

-El pin “VCC” y “CH_PD” esten conectados  al pin “3.3v” de Arduino (no es recomendable conectarlo a “5v” por qué podrían dañarse).

-El pin “GND” este conectado al pin “GND” de Arduino.

aquí se muestra una imagen sobre las conexiones:

botones

Nota: el módulo wifi esp8266 necesita una corriente superior a la que el arduino puede dar que es 50mv por lo que podríamos quitar la corriente al módulo y volverlo a conectar para que arranque y después se estabilizara.

ARDUINO

Después de realizar las respectivas conexiones, pasamos a nuestro PC y abrimos un nuevo sketch de arduino, ahora copeamos y pegamos este código al programa de arduino:


config_esp8266

Después de pasar el código, conectamos  y lo cargamos al arduino, luego abrimos el monitor serial y nos aseguramos que en la parte de abajo diga “Ambos NL & CR” y en los baudios ”115200 baud” hecho esto ahora cortamos y volvemos a conectar  la alimentación del módulo wifi para reiniciarlo y después de unos momentos veremos algo como esto y un poco más abajo la palabra “ready”:

imagen ready

Si no apareciera volver a reiniciar el modulo. Si no se entendiera el mensaje verificar que los baudios del módulo ESP8266 sea “115200 baud” y si no bajar los baudios hasta ver algo legible.

Ahora comenzamos a configurar el modulo,  ingresamos  en el monitor serial la palabra “AT”.

Y recibiremos un “OK”:

IMAGEN AT

Ahora cambiamos la configuración de los baudios  con el siguiente comando “AT+CIOBAUD=9600”:

IMAGEN BAUD

Después de hacer esto cambiar los baudios de 115200 a 9600 en el código para estabilizar la comunicación con arduino por que podría llegar a tener errores en la comunicación a 115200 baud.

Cambiamos esta parte:

Después probamos este comando “AT+CWMODE?” para ver en qué modo está configurado el modulo, nos respondería con un “+CWMODE: 3”  y si no aparece el modo 3  utilizamos el comando “AT+CWMODE=3”:

IMAGEN MODE

CONECTANDO A UNA RED WIFI

Después pasamos a revisar nuestras redes WI-FI mediante el comando “AT+CWLAP” y nos mostraría algo como esto:

IMAGEN CWLAP

Ahora nos conectaremos a una red, en mi caso será “FAMILIA TORRES” y claro con su contraseña.

Mediante este comando  AT+CWJAP=”FAMILIA TORRES”,”torres150”.

Nos respondería con algo como esto:

IMAGEN CWJAP

Después vemos que dirección “IP” se nos asignó con el comando “AT+CIFSR”.

Y nuestra dirección será la segunda en aparecer (la dirección puede variar) en mi caso es “192.168.15.19”.

Tenemos que recordar esta «IP» o anotarla porque es la que ingresamos  en  nuestro navegador:

IMAGEN CIFSR

Ahora tenemos que habilitar las conexiones múltiples y habilitar un servidor.

Mediante los comandos «AT+CIPMUX=1» y este otro «AT+CIPSERVER=1,80»:

IMAGEN MUX

Después ingresamos la dirección  IP del módulo en nuestro navegador:

IMAGEN IP

Ahora como pueden ver si vemos el monitor serial podremos observar que veremos nuestra IP. Luego escribimos un “/” después de la IP  luego escriban lo que gusten y en el monitor serial aparecerá lo que escribieron en su navegador por ejemplo “192.168.15.19/abcdefg123” y esto aparecerá en su monitor serial:

IMAGEN IP SERIAL

CODIGO EN ARDUINO

Ahora descargamos este archivo que contiene el programa de Arduino que utilizaremos: botones_ESP8266. copiamos este código en su Arduino (sin desconectar el módulo wifi y recordando la «IP»  sino tendrían que volver a configurar su módulo otra vez).

En el código esta agregado un poco de código HTML lo cual explicaré un poco para saber qué hacen cada línea en el código. Después de cargar el código en el Arduino abrimos en monitor serial e ingresamos la dirección IP y tendríamos una página como esta:

hetpro.com

19 comentarios en «Servidor Web Arduino y control de LEDS»

  1. Hola que tal, he intentado todos los pasos que nos brindaste y todo bien hasta el momento de abrir la pagina Web, el problema es que no se abre la pagina Web. El monitor Serial da:

    +IPD,0,376:GET / HTTP/1.1
    Host: 192.xxx.yyy.zz
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: es-ES,es;q=0.8

    Pero en la pagina web sale:

    La página 192.xxx.yyy.zz no funciona

    192.xxx.yyy.zz no ha enviado ningún dato.

  2. Muchas gracias por el tutorial me sirvio demasiado la verdad, una pregunta, el modulo se desconfigura si se desconecta a se apaga?
    si es asi como es que podemos mantener las configuraciones aunque se desconecte el modulo???

      1. Hola pues dejeme decirle, use el modulo estuve haciendo pruebas y vi que por defecto la comunicación en Baudios siempre viene por defecto en 115200 si el modulo se apaga y se vuelve a encender sigue estando en 115200, ahora cuando se configura una velocidad de 9600 baudios el modulo lo acepta y trabaja a esa velocidad, cuando el modulo se apaga y se vuelve a encender la configuracion de 9600 baudios asignada anteriormente se resetea y el modulo vuelve a 115200, es solo una aclaracion que hago nada mas para ayudar a que mas gente vea como funciona el modulo
        fuera de todo el tutorial me ayudo

  3. buenas noches, estoy haciendo en proyecto donde lee la temperatura y humedad desde un arduino, lo que quiero hacer es que los valores de las lecturas se visualicen en una aplicación en c#, des mismo modo que desde la aplicación c# pueda enviar datos al arduino, ya tengo el esp8266 pero la verdad no tengo idea de como usarlo, no se si necesito un servidor como intermediario entre el arduino y la aplicación o puedo establecer comunicación directamente?

  4. Hola,

    He hecho funcionar el servidor web, pero tengo un problema: Si entro la web del servidor me va bien, pero si cierro el navegador e intento acceder de nuevo me da error y no entra. Es como solo se pudiera acceder una sola vez….

    Si abres el monitor serie de arduino me doy cuenta de que intenta «invertir» el pin -539.

    ¿¿ A alguien más le pasa esto ??

      1. Lo he «solucionado», y digo esto porque ahora uso un código y módulo distinto (NODEMCU) ya que me ha resultado imposible arreglarlo. Una vez que entra en el bucle while (x1 == 1) no vuelve a salir nunca más, por lo que si cierras el navegador el módulo sigue recibiendo datos, es decir, no cierra el cliente.

        Si quieres intentarlo prueba a añadirle al while otra condición más para que siga leyendo datos SOLO cuando el cliente esté activo y además x1==1. Pruébalo y nos cuentas.

        Te recomiendo que compres el módulo NODEMCU (este tiene hasta 10 entradas/salidas), es como lo estoy haciendo yo ahora, programando sobre dicho módulo SIN arduino. Lo recibí ayer y de momento estoy haciendo pruebas.

  5. C:\Users\mrwn_\Desktop\sketch_aug01a\Wifi\Wifi\Wifi2\Wifi2.ino: In function ‘void loop()’:

    C:\Users\mrwn_\Desktop\sketch_aug01a\Wifi\Wifi\Wifi2\Wifi2.ino:23:21: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(BT1.find(«+IPD,»))

    ^

    Hola me da este error por favor me pueden ayudar.

  6. lo he intentedo una y otra ves y nada legue a la conclusion de que el modulo todavia tiene errores
    no funciona esos codigos. solo funciona los comandos at y nada mas pero cuando cargo el codigo al arduino ya no manda ni señal

  7. Hola que tal, he buscado corregir el error pero realmente no se cual es, al momento de presionar cualquiera de los botones me da un balor de 24, el primero y los siguientes me dan valores de 10 en 10, a lo que me refiero es 24,34,44,54, ayuda por favor!

Deja una respuesta

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