Encender una bombilla con un módulo wifi ESP8266 – Arduino

Hoy vamos a aprender cómo utilizar un módulo wifi ESP8266 conectado a un Arduino. Se trata de encender una bombilla y tres led a través de una interfaz web.

 

Los componentes que utilizaremos serán los siguientes:

  • Protoboard
  • Módulo wifi ESP8266
  • Relé
  • Arduino
  • Bombilla
  • Cableado

 

El conexionado del módulo wifi consta de 8 pines, en la siguiente imagen vemos qué función tiene cada uno de éstos:

esp8266

  • Pin de Recepción. URXD
  • Pin de voltaje 3.3v. VCC
  • Pin GPIO0. No conectar
  • Pin RST. No conectar
  • Pin GPIO2. No conectar
  • Pin voltaje 3.3v. CH_PD
  • Pin de tierra. GND
  • Pin de transmisión. UTXD

El siguiente paso que debemos dar, es hacer el conexionado total de los componentes. En la siguiente imagen podemos verlo.

 

conexion_wifi

Una vez realizada la conexión de todos los componentes tendremos que subir el código de programación al Arduino.
El código de programación que hemos utilizado nosotros es el siguiente:

 

#include <SoftwareSerial.h>

#define DEBUG true

SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
                             // This means that you need to connect the TX line from the esp to the Arduino's pin 2
                             // and the RX line from the esp to the Arduino's pin 3
void setup()
{
  SSSerial.begin(19200);
  esp8266.begin(19200); // your esp's baud rate might be different
  
  pinMode(10,OUTPUT);
  digitalWrite(10,LOW);
  
  pinMode(11,OUTPUT);
  digitalWrite(11,LOW);
  
  pinMode(12,OUTPUT);
  digitalWrite(12,LOW);
  
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
   
  sendData("AT+RSTrn",2000,DEBUG); // reset module
  sendData("AT+CWMODE=2rn",1000,DEBUG); // configure as access point
  sendData("AT+CIFSRrn",1000,DEBUG); // get ip address
  sendData("AT+CIPMUX=1rn",1000,DEBUG); // configure for multiple connections
  sendData("AT+CIPSERVER=1,80rn",1000,DEBUG); // turn on server on port 80
}

void loop()
{
  if(esp8266.available()) // check if the esp is sending a message 
  {

    
    if(esp8266.find("+IPD,"))
    {
     delay(1000); // wait for the serial buffer to fill up (read all the serial data)
     // get the connection id so that we can then disconnect
     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns 
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
          
     esp8266.find("pin="); // advance cursor to "pin="
     
     int pinNumber = (esp8266.read()-48)*10; // get first number i.e. if the pin 13 then the 1st number is 1, then multiply to get 10
     pinNumber += (esp8266.read()-48); // get second number, i.e. if the pin number is 13 then the 2nd number is 3, then add to the first number
     
     digitalWrite(pinNumber, !digitalRead(pinNumber)); // toggle pin    
     
     // make close command
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId; // append connection id
     closeCommand+="rn";
     
     sendData(closeCommand,1000,DEBUG); // close connection
    }
  }
}

/*
* Name: sendData
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
*/
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    
    esp8266.print(command); // send the read character to the esp8266
    
    long int time = millis();
    
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        
        // The esp has data so display its output to the serial window 
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }
    
    if(debug)
    {
      Serial.print(response);
    }
    
    return response;
}

 

Una vez cargado correctamente el programa abrimos el monitor serie y nos debería salir la siguiente pantalla.

monitor serie


Finalmente creamos nuestra propia interfaz web. Aquí dejamos el código html utilizado.

 

<html>
<head>
<title>ESP8266 LED Control</title>
</head>
<body>
<button id="10" class="led">BOMBILLA</button> 
<button id="11" class="led">LED AZUL</button> 
<button id="12" class="led">LED VERDE</button> 
<button id="13" class="led">LED ROJO</button> 
<script src="jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){ 
$(".led").click(function(){ var p = 
$(this).attr('id');  
$.get("https://192.168.4.1:80/", {pin:p}); 
}); 
});
</script>
</body>
</html>

Hay que tener en cuenta que la ip puede variar según la puerta de enlace de cada usuario.

 

Este sería el resultado final de la interfaz web:

web

 

 

 

 

 

 

 

 


 

Con la interfaz web ya montada y el enlace WiFi funcionando, ya podemos interactuar con los LED’s y la bombilla remotamente.

By | 2017-03-06T09:34:00+00:00 abril 30th, 2015|Domótica|97 Comments

About the Author:

97 Comments

  1. […] el anterior post sobre domótica vimos como conectar el modulo wifi ESP8266 a un Arduino y encender bombillas. Ahora […]

  2. Franco agosto 15, 2015 at 2:05 am - Reply

    Hola Secmotic, no me responde el modulo :/ con su codigo

    • Jose Benítez agosto 15, 2015 at 12:10 pm - Reply

      Hola,

      ¿Cuál es el error exactamente? Necesitaría más información.
      -¿Compila el código?
      -¿Lo has conseguido subir a la placa?
      -¿Aparecen mensajes por el monitor serie?
      -De ser así ¿cuáles?

  3. fabian agosto 23, 2015 at 5:47 am - Reply

    Hola, en el monitor serie no me aparece nada…
    Gracias por tu ayuda

    • Jose Benítez agosto 28, 2015 at 8:42 am - Reply

      Hola, disculpa la tardanza en contestar.
      Si en el monitor serie no aparecen datos, pueden ser debido a diferentes factores:
      – Las conexiones de Arduino a la tarjeta WiFi no han sido conectadas correctamente.
      – La velocidad de transmisión no está a los baudios correctos (115200 baudios)
      – El código no se ha subido al Arduino

      Si todo esto está correcto, dímelo y lo seguimos estudiando.
      Un saludo

  4. Saul Resendiz septiembre 12, 2015 at 1:11 am - Reply

    Hola: disculpa, ya subi a mi arduino el programa y me corio perfectamente, ta obtengo en el monitor serial los datos de los comando AT, ahora quiero saber si el codigo para HTML tengo que programarlo en el mismo codigo en arduino o en otra pagina?

    saludos

    • Carlos Corrales septiembre 13, 2015 at 3:27 pm - Reply

      Hola Saul,

      El código HTML es un código interpretado por un navegador web y servido por un servidor web. Para que todo funcione correctamente, debes instalar un servidor web (por ejemplo Apache), copiar ahí el fichero HTML y acceder a él desde un navegador. Una forma fácil de instalar Apache es usar una XAMPP que venga bien a tu sistema operativo, y que ya instala servidor web Apache, base de datos MySQL, PHP y Pearl, así como todas sus dependencias.

      Para cualquier duda no dudes en volver a consultarnos.

      Un saludo

      • Saul Resendiz septiembre 15, 2015 at 12:48 am - Reply

        hola de nuevo;

        gracias por tu ayuda y por el tiempo que te tomas por ayudarnos, te comento que ya logre montar el codigo html, cargo el programa y no me responde, que hice mal? o las posibles causas que causaron que no me funcionara?

        saludos

        • Jose Benítez septiembre 16, 2015 at 11:37 am - Reply

          Hola Saul,
          ¿Podrías mandarme el código HTML y le echo un vistazo?
          Puedes pegarlo aquí o si lo prefieres mándamelo a jose[at ]secmotic.com

          Un saludo

  5. Jorge septiembre 14, 2015 at 4:22 am - Reply

    Disculpa el modulo wifi tiene que ser forzosamente ese, lo quiero provar con uno esp8266-05 con antena, podrias ayudarme.

    • Jose Benítez septiembre 14, 2015 at 4:06 pm - Reply

      No tiene por qué ser ese Jorge, aunque nosotros en el ejemplo hemos utilizado un modelo ligeramente distinto, las funciones de librerías deben estar también disponibles para ese modelo.

  6. newbie septiembre 16, 2015 at 11:53 am - Reply

    did not work. im using arduino uno. follow all the steps. but cannot make my esp working. how it can work if we not connect to particular network like u did in this sketch?

    • Jose Benítez septiembre 28, 2015 at 8:48 am - Reply

      I would need more information, such as if the serial monitor is showing any information or not.
      If you don’t connect to your private network, I am afraid this scenario is quite different!

      Kind regards

  7. Edwin Reyes septiembre 26, 2015 at 2:42 am - Reply

    Es un excelente aporte,pero he tenido problemas una vez con el código cargado,no me muestra el mensaje que esta en la foto, sino que salen letras muy extrañas,como se soluciona esto,podrias ser especifico en ese detalle,para ejecutar el monitor la pc debe estar estrictamente conectada al modulo?

    • Jose Benítez septiembre 28, 2015 at 8:45 am - Reply

      Gracias por tu comentario Edwin.

      Probablemente sea un problema en cuanto a los baudios seleccionados en el monitor. Asegúrate que lo tienes a 19200.

      Un saludo

  8. Miguel Ga octubre 2, 2015 at 2:02 am - Reply

    Hola que tal, estoy utilizando el modulo ESP8266 modelo ESP-05, tienes la configuración de conexion?, otra pregunta, en que momento se conecta al SSID del acces?

  9. Reinaldo octubre 3, 2015 at 2:35 am - Reply

    Hola,

    No me funciona, cargo el programa al arduino y en el serial, el modulo esp8266 no me entrega nada, lo provè con otro programa para los comandos AT y funciona perfectamente. Puedes ayudarme, està todo conectado como se indica y no pasa nada.

  10. Reinaldo octubre 6, 2015 at 12:52 am - Reply

    Hola,

    Me funciona todo, pero no puedo hacer que desde la web funcionen los botones, en algún comentario anterior de carlos, le indicas que debe abrir la pagina desde un servidor web como apache, puedes ayudarme para probar esa ultima parte por favor.
    Saludos

    • Jose Benítez octubre 6, 2015 at 8:27 am - Reply

      Hola Reinaldo.
      El código HTML debe estar interpretado por un servidor apache. Para montar un apache hay múltiples guías, pero no entran dentro de este post.
      Si buscas un poco de información sobre esto, verás que tienes que montar una pila WAMPP/LAMPP/XAMPP e instalar apache.
      Suerte!

  11. Reinaldo octubre 15, 2015 at 4:53 am - Reply

    Estimado,

    todo me funciona pero no puedo poner la web dentro de apache, puedes ayudarme con eso, o donde puedo encontrar la informaciòn paso a paso.

    saludos

    • Jesus octubre 17, 2015 at 12:55 am - Reply

      Reinaldo, si usaste el APPSERV, haz lo siguiente:
      1) En la carpeta C:appservwww crea la carpeta leds.
      2) Dentro de esta carpeta guarda el archivo html con el nombre index.html
      3) Ya desde tu navegador escribe: https://localhost/leds/ (Intro)
      4) Debe aparecer la página. Saludos

      • Reinaldo octubre 22, 2015 at 11:47 pm - Reply

        Estimado Jesus,

        Tengo un servidor real, ahi carge la pagina con el nombre luces, la habro desde el hosting pero no funciona al pinchar los botones con el arduino, todo lo que aparece en el monitor serial, lo tengo igual, pero no funciona la pagina, que puedo hacer? por favor, me ayudan a que pueda lograrlo?

  12. Manuel Silva octubre 19, 2015 at 4:38 am - Reply

    Hola me podria decir porque cuando lo copilo en el arduino me sale un error de SSSerial no a sido declaro. Gracias por su tiempo

    • Jose Benítez octubre 19, 2015 at 10:20 am - Reply

      Si, ha sido un error al copiar el código.

      Simplemente sustituya “SSSerial” por “Serial”

      Saludos

  13. Reinaldo octubre 22, 2015 at 11:53 pm - Reply

    Amigos,

    Instale un servidor real, un hosting para realizar pruebas y dentro del dominio publico, agregue la pagina que indican con el nombre luces, pero al abrirla desde el servidor, me aparece pero no funciona ningun boton, no envia la orden para que se enciendan los led o la ampolleta, pueden ayudarme por favor!!!!

  14. Reinaldo octubre 23, 2015 at 3:42 am - Reply

    stimado Jesus,

    Tengo un servidor real, ahi carge la pagina con el nombre luces, la habro desde el hosting pero no funciona al pinchar los botones con el arduino, todo lo que aparece en el monitor serial, lo tengo igual, pero no funciona la pagina, que puedo hacer? por favor, me ayudan a que pueda lograrlo?

    • Tomas noviembre 29, 2016 at 9:23 am - Reply

      ya pudiste solucionar eso a mi me pasa igual

  15. Eduardo Martinez noviembre 11, 2015 at 12:02 am - Reply

    buen dia tengo una duda en q momento se conecta a la ssd del acces point

    • Carlos Corrales noviembre 12, 2015 at 1:19 pm - Reply

      Hola Eduardo,

      En este post no se hace conexión a ningún access point, el ESP de Arduino crea su propio access point al que te conectas desde la aplicación web.

      Un saludo

  16. Sebastian ordoñez rubiano noviembre 12, 2015 at 5:03 am - Reply

    Buenas noches,
    Hola, he tratdo de hacer el ejercicio tal cual, tengo los mismos componentes, cuando compilo funciona todo bien, parparea el arduino y el modulo wifi de color azul, cuando miro el monitor serie me aparece lo siguiente: �)�)ҩ�)��)RJ��))���
    La implementaciòn solo la estoy haciendo para el modulo wifi me podrias colaborar con dicho error?

    • Jose Benítez noviembre 12, 2015 at 1:18 pm - Reply

      Seguramente se deba a la configuración de los baudios. ¿Has comprobado que en el monitor serie hayas puesto el mismo número que en el código?

    • Carlos Corrales noviembre 12, 2015 at 1:21 pm - Reply

      Buenas Sebastian,

      Ese error se debe a que no tienes bien configurados los baudios en el monitor serie. Por favor, ponlo a 19200, que son los que están configurados en el código arduino.

      Un saludo

  17. manuel silva noviembre 21, 2015 at 8:44 am - Reply

    tengo una duda, debo cargarle el firmware al modulo esp8266, o asi como viene de fabrica debe trabajar?

  18. Nicolás diciembre 4, 2015 at 3:18 pm - Reply

    Hola, me gustó este proyecto. Una pregunta se puede hacer el mismo proyecto sin la placa arduino?

  19. Mirna Texna diciembre 8, 2015 at 4:29 am - Reply

    a cuantos baudios debe estar configurado???

  20. Alexandra diciembre 28, 2015 at 12:42 am - Reply

    Hola, hace unos meses compre una placa rele, un arduno uno y este modulo Wifi, mi idea es hacer funcionar todo como aaparece aqui (muchas gracias por cierto por el gran aporte), pero en lugar de tres leds quisiera poner otros tres reles (compre la placa de 4 reles para hacer funcionar 4 focos), como deberia de hacer mis conexiones (y mi codigo)?.

    De nuevo muchas gracias.

    Besos.

  21. Rene Gajardo enero 11, 2016 at 5:28 pm - Reply

    Estimado

    Algo paso con las imágenes.

    • secmotic enero 14, 2016 at 7:32 am - Reply

      Hola Rene!
      Acabamos de cambiar la web y estamos arreglando las rutas de ficheros, las imágenes estarán disponibles en breve.

      Un saludo!

      • René Gajardo enero 16, 2016 at 12:23 am - Reply

        Gracias ahora si

  22. Andy enero 28, 2016 at 2:42 am - Reply

    Como estan?
    Despues de varios intentos y alcualizar el firm del ESP pude llagar a montar una conexion pero no he podido hacer que responda a la web

    osea si entro a la ip el serial me responde que esta entrando, pero no he podido hacer que active los pines de los leds
    es un hibrido de varias cosas que encontre por ahi xq en realidad ninguna me llegaba a funcionar


    #include

    #define DEBUG true

    SoftwareSerial esp8266(3,2); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
    // This means that you need to connect the TX line from the esp to the Arduino’s pin 2
    // and the RX line from the esp to the Arduino’s pin 3
    char serialbuffer[400];//serial buffer for request url
    const String ssid = “——-“;
    const String pw = “———“;
    void setup()
    {
    Serial.begin(19200);
    esp8266.begin(19200); // your esp’s baud rate might be different

    pinMode(11,OUTPUT);
    digitalWrite(11,LOW);

    pinMode(12,OUTPUT);
    digitalWrite(12,LOW);

    pinMode(13,OUTPUT);
    digitalWrite(13,LOW);

    sendData(“AT+RST\r\n”,2000,DEBUG); // reset module
    sendData(“AT+CWMODE=3\r\n”,1000,DEBUG); // configure as access point
    sendData(“AT+CWJAP=\”” + ssid + “\”,\””+ pw +”\”\r\n”,12000,DEBUG);
    sendData(“AT+CIFSR\r\n”,1000,DEBUG); // get ip address
    sendData(“AT+CIPMUX=1\r\n”,1000,DEBUG); // configure for multiple connections
    sendData(“AT+CIPSERVER=1,80\r\n”,1000,DEBUG); // turn on server on port 80
    }

    void loop()
    {
    if(esp8266.available()) // check if the esp is sending a message
    {

    if(esp8266.find(“+IPD,”))
    {
    delay(1000); // wait for the serial buffer to fill up (read all the serial data)
    // get the connection id so that we can then disconnect
    int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns
    // the ASCII decimal value and 0 (the first decimal number) starts at 48

    esp8266.find(“pin=”); // advance cursor to “pin=”

    int pinNumber = (esp8266.read()-48)*10; // get first number i.e. if the pin 13 then the 1st number is 1, then multiply to get 10
    pinNumber += (esp8266.read()-48); // get second number, i.e. if the pin number is 13 then the 2nd number is 3, then add to the first number

    digitalWrite(pinNumber, !digitalRead(pinNumber)); // toggle pin

    // make close command
    String closeCommand = “AT+CIPCLOSE=”;
    closeCommand+=connectionId; // append connection id
    closeCommand+=”\r\n”;

    sendData(closeCommand,1000,DEBUG); // close connection
    }
    }
    }

    /*
    * Name: sendData
    * Description: Function used to send data to ESP8266.
    * Params: command – the data/command to send; timeout – the time to wait for a response; debug – print to Serial window?(true = yes, false = no)
    * Returns: The response from the esp8266 (if there is a reponse)
    */
    String sendData(String command, const int timeout, boolean debug)
    {
    String response = “”;

    esp8266.print(command); // send the read character to the esp8266

    long int time = millis();

    while( (time+timeout) > millis())
    {
    while(esp8266.available())
    {

    // The esp has data so display its output to the serial window
    char c = esp8266.read(); // read the next character.
    response+=c;
    }
    }

    if(debug)
    {
    Serial.print(response);
    }

    return response;
    }

    y esta es el html

    ESP8266 LED Control

    <!– in the tags below the ID attribute is the value sent to the arduino –>

    Toggle Pin 11
    Toggle Pin 12
    Toggle Pin 13

    $(document).ready(function(){
    $(“.led”).click(function(){
    var p = $(this).attr(‘id’); // get id value (i.e. pin13, pin12, or pin11)
    // send HTTP GET request to the IP address with the parameter “pin” and value “p”, then execute the function
    $.get(“https://192.168.1.208/”, {pin:p}); // execute get request
    });
    });

    Soy bastante nuevo en esto y entre que recien empiezo con arduino y de html ni j…….
    Gracias y saludos desde Uruguay

  23. Guillermo enero 30, 2016 at 12:22 am - Reply

    Hola, disculpa pero el navegador no manda absolutamente nada a la wifi y por lo tanto no pasa nada por el serial salvo que hago uso de los comandos at y si me responde la wifi… lastima que no pongas un video de este proyecto porque seria mas ilustrativo como lo hiciste.

    Saludos

  24. David febrero 20, 2016 at 6:41 am - Reply

    HOLA a todos tengo problemas con el modulo wifi, mi modulo es ESP8266-12 CREO que el motivo por el que no me sale nada en el monitor de serie . podriad ayudarme GRACIAS

  25. pitux febrero 25, 2016 at 11:27 am - Reply

    Hola a todos, muy bueno el site y gracias x mostrarnos el alcance y las posibilidades de este módulo, quería agregar que no es necesario un servidor web apache, se puede crear el html en el escritorio y al abrirlo lo ejecuta el navegador, apache sería útil en el caso de querer hacer uso de PHP. Un saludo!

    • Carlos Corrales febrero 29, 2016 at 8:31 pm - Reply

      Muchas gracias pitux. La verdad es que si abres un fichero html con un navegador se puede obtener la misma información como bien dices, aunque no lo estás sirviendo desde ninguna parte. El usar un servidor te permite abrir el fichero desde un ordenador remoto, no siendo necesario abrirlo desde el mismo en el que se encuentre.

      Saludos

  26. alfonso febrero 29, 2016 at 9:25 am - Reply

    buenas disculpe tengo un problema cuando realizo todos los pasos en el monitor serie me aparese esto AR+RSTrnAT+CWMODE=2rnAT+CIFSRroAT+CIPLUX=1rnAT+CIPSERVES=1,80rn
    a que se debe o estoy conctando algo mal estoy ocupando el arduino uno

  27. JORGE febrero 29, 2016 at 8:17 pm - Reply

    hola buenas tardes
    Soy nuevo en este proyecto. he realizado todos los pases que figuran en el proyecto y no me funciona.
    Si es cierto que lo estoy haciendo con un arduino nano, Cambiando los pin de rx y tx a los 11 y 10. puede ser que tenga algun problema por ser arduino nano.?? un saludo a todos.

  28. JORGE febrero 29, 2016 at 8:18 pm - Reply

    el problema es que no carga nada en la pantalla del serial

  29. JORGE febrero 29, 2016 at 8:33 pm - Reply

    ok, lo siento, lo he cambiado según los pin del ejemplo y funcionando. Si es cierto que tengo el mismo problema que muchos, los códigos salen con letras raras. por los baudios no es, lo he cambiados uno a uno y nada. Pero sabiendo que comunica, considero que funciona y pasaré al 2º problema con el servidor apache

  30. lalo abril 5, 2016 at 3:30 am - Reply

    Buen dia muy buen post pero todavia no e podido hacer jalar nada, primero carge bien el codigo en arduino y en el monitor serial no me aparece todo lo q muestran (puerta de enlace 192.168.4.1 ni los OK) en la imagen y 2 ya puse la pagina en un servidor y ni asi me hace algo

    • Carlos Corrales abril 6, 2016 at 12:15 pm - Reply

      Buenas Lalo,

      ¿Puedes comprobar que los baudios están bien configurados? Es muy probable que sea ese el problema 🙂

  31. Adrian abril 13, 2016 at 1:10 am - Reply

    Disculpa, me da error al cargar el programa al Arduino, estoy usando Arduino Uno y me dice “SSSerial was not declared in this scope” y otro que dice: “esp8266 begin(19200); // you esp´s baud might be different

  32. Jose Pablo mayo 2, 2016 at 2:38 am - Reply

    Me salen los siguientes warnings:

    /Users/josepablorodriguez/Documents/Arduino/sketch_apr29a/sketch_apr29a.ino: In function ‘void loop()’:
    /Users/josepablorodriguez/Documents/Arduino/sketch_apr29a/sketch_apr29a.ino:38:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    if(esp8266.find(“+IPD,”))
    ^
    /Users/josepablorodriguez/Documents/Arduino/sketch_apr29a/sketch_apr29a.ino:45:25: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    esto podria afectar en algo?

    y en el monitor de serie me aparecen un simbilos que no logro decifrar

  33. J mayo 3, 2016 at 5:26 am - Reply

    Buenas a todos,
    llevo varios días peleándome con este ejercicio y casi lo tengo. Creo que he advertido varios errores en el script de arriba. Al menos sólo para poder cargarlo he tenido que hacer algunas correcciones. Aparte del SSS -> S, los “rn” los he convertido en “\n”.
    Aún así, cuando leo el terminal, es como si transmitiera en minúsculas e hiciera distinción. No sé, no tengo mucha idea de esto, pero por ejemplo: la orden “AT+RST” del script vuestro me tira ERROR. En cambio, si cargo un programa de simple comunicación, me da error también sólo cuando lo escribo en minúsculas.

    Me podéis echar un cable?

  34. JEI GARCÍA MARTÍNEZ mayo 7, 2016 at 7:00 pm - Reply

    Hola, Mira que intento compilar y me dice que no ha sido delcarado sendData()
    dice: ‘sendData’ was not declared in this scope

  35. JEI GARCÍA MARTÍNEZ mayo 7, 2016 at 7:03 pm - Reply

    Ya lo resolví, disculpa, no sé cómo borran los post.

  36. JEI GARCÍA MARTÍNEZ mayo 7, 2016 at 8:32 pm - Reply

    sendData(“AT+RSTrn”, 2000, DEBUG); // reset module
    sendData(“AT+CWMODE=2rn”, 1000, DEBUG); // configure as access point
    sendData(“AT+CIFSRrn”, 1000, DEBUG); // get ip address
    sendData(“AT+CIPMUX=1rn”, 1000, DEBUG); // configure for multiple connections
    sendData(“AT+CIPSERVER=1,80rn”, 1000, DEBUG); // turn on server on port 80
    Estos COmandos no modifican nada en el wifi solo los muestra todos pegados como si fueran una sola línea, pareciera que el salto de línea y “enter” no se sirviera o sea no se envían uno por uno.

    Qué podría hacer?

  37. Jei mayo 17, 2016 at 7:59 am - Reply

    Mira tengo un problema todos los comandos retornan error.
    AT+RST

    ERSOR
    AT+CWLODE=2

    ERQOR
    AZ¥¨RÔ*ªC¡C¡Q*ªJÕHøAT+CIPMUX=1

    EQROR
    AT+CIPSERVDR=1,80

    EQROR

  38. Raul mayo 27, 2016 at 8:43 pm - Reply

    Hola carlos la verdad no tengo problemas alguno al cargar el programa al arduino ni tampoco en el codigo html todo me va perecto el problema que al cargar el programa y abrir el monitor serie no me sale nadaaaaaaaa en absoluto ya cambie los baudios que vienen en el programa y hasta cambie los baudios del programa y nada! ayudaaaaaaaa!

  39. Raul Andrade junio 8, 2016 at 9:19 am - Reply

    hola, saludo desde Chile, quería dar las gracias por los conocimientos compartidos en esta pagina, mi nombre es raul, sigo todo los pasos que mencionas, use en mismo código que subiste pero al momento que intento encender el led, no pasa nada, mi problema es que no logro obtener respuesta del esp8266´por mas que lo intento , eh probado con varios vídeos en youtube donde igual explican el procedimiento y todo que siempre me pasa lo mismo al intentar realzar alguna acción, me ayudaría mucho qe me orientaras en que puedo hacer, muchas gracias por tu atención, saludos.

    Para que pueda cargar el código de arduino ,,, cambie: ssserial por serial,,, y “rn” por “\r\n”
    y en el interfaz web , utilice la misma IP, ya que me arrojaba la misma.
    Esperando su respuesta, se despide Raúl Andrade

    • Raul Andrade junio 8, 2016 at 9:22 am - Reply

      y baje la velocidad del código a 9600 baudios , y el modulo wifi también lo deje en 9600.

      • Raul Andrade junio 8, 2016 at 9:25 am - Reply

        cabe destacar que leí todos los comentarios, y no encontré respuesta es por eso que escribo, muchas gracias por su atención.

    • Raul Andrade noviembre 26, 2016 at 3:57 pm - Reply

      después de muchos intentos logre hacer que funcionara implementando algunas modificaciones al código.
      si alguien que no ha logrado hechar a andar el modulo quiere que le de una mano con el código que me deje su correo mas abajo y se lo envío.

  40. EDDY junio 22, 2016 at 6:17 pm - Reply

    Hola ya tengo todo armado, me carga el código, cree la pag. con un bloc de nota y la guarde en mi servidor XAMPP, entro en mi computadora a la red ESP_055973 que es la que me proporciona mi módulo ESP8266, pero cuando abro la pag. y presiono los botones no me hace nada, ya cheque la puerta de enlace y me da la misma 192.168.4.1 donde crees que este el error.

    GRACIAS Y SALUDOS MUY BUEN APORTE!

  41. carlos julio 12, 2016 at 4:34 am - Reply

    Hola me marca un error al compilar el codigo:
    dise que la variable SSSerial no a sido declarada.

  42. Fonsov julio 14, 2016 at 11:48 am - Reply

    El problema por el que no les está funcionando es porque se necesita, para el arduino uno un convertidor serial, no es sólo por los baudios, no creo que al utor del post, tal cual lo expone le funcione

  43. Alejandro julio 21, 2016 at 3:24 pm - Reply

    Hola, estoy queriendo hacer algo que me detecte que una luz esta encendida o quemada, es para saber en una ciudad que luminaria esta correctamente encendida y las horas de consumo y cual hay que ir a reemplazar o esta encendida fuera de horario. Agradezco mucho sus comentarios.

    Alejandro

  44. Jose julio 22, 2016 at 1:08 pm - Reply

    Hola que tal buenas tardes no se si siga aun esta publicación, he tenido problemas con la subida del programa, no me compila correctamente,

    Arduino:1.6.8 (Windows 10), Tarjeta:”Arduino/Genuino Uno”

    C:\\segundo semestre\\arduino modulo wifi\wifi dos\wifi\wifi.ino: In function ‘void setup()’:

    wifi:10: error: ‘SSSerial’ was not declared in this scope

    SSSerial.begin(19200);

    ^

    C:\segundo semestre\arduino modulo wifi\wifi dos\wifi\wifi.ino: In function ‘void loop()’:

    C:\segundo semestre\arduino modulo wifi\wifi dos\wifi\wifi.ino:38:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(esp8266.find(“+IPD,”))

    ^

    C:\Trabajo fin de maseter\arduino modulo wifi\wifi dos\wifi\wifi.ino:45:25: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    esp8266.find(“pin=”); // advance cursor to “pin=”

    ^
    exit status 1
    ‘SSSerial’ was not declared in this scope

  45. Miguel julio 22, 2016 at 7:06 pm - Reply

    Hola, he seguido el tutorial paso a paso, comprobando las conexiones y demás, mi problema es que no me devuelve respuesta el modulo, es decir ningún OK, solo muestra los comandos AT que se van insertando, he probado con todos los baudios y el único que me funciona es 9600

  46. Alexandra julio 23, 2016 at 8:12 am - Reply

    Hola, sigo con mi duda que puse hace meses:

    Hola, hace unos meses compre una placa rele, un arduno uno y este modulo Wifi, mi idea es hacer funcionar todo como aaparece aqui (muchas gracias por cierto por el gran aporte), pero en lugar de tres leds quisiera poner otros tres reles (compre la placa de 4 reles para hacer funcionar 4 focos), como deberia de hacer mis conexiones (y mi codigo)?.

    De nuevo muchas gracias.

    Besos.

    • Rylah agosto 8, 2016 at 7:30 pm - Reply

      Según tengo entendido el código seria el mismo, así como el conexionado de los reles, los 4 serian iguales a como se muestra el del diagrama. Lo unico que deberias hacer es que donde estan conectados los leds, vas a conectar la activacion de cada rele.

      Espero poder ayudar un poco, aunque creo que no soy muy bueno explicando.

      Saludos

  47. Carlos Saldivia julio 25, 2016 at 3:25 pm - Reply

    Buen dia, como haria yo para conectar este modulo a internet? es decir, con un hosting o dominio? porque entiendo que para que esto pueda funcionar asi debo estar conectado a la misma red wifi, pero si quisiera activarlo directamente desde el navegador con mi plan de datos del celular por ejemplo?

  48. Diego julio 26, 2016 at 4:25 pm - Reply

    Buenos días, estoy intentando hacer funcionar el mismo esquema. El problema que tengo es de comunicación con el módulo WIFI, es un ESP8266-ESP01, ya monté el servidor web y demás, pero en el monitor me ocurren dos cosas, cuando lo seteo a 115200 baudios, me despliega lo siguiente:
    AT+RSTrn
    AT+CWMODE=2rn
    AT+CIFSRro
    AT+CIPLUX=1rn
    AT+CIPSERVES=1,80rn
    Termino Setup:

    Cuando lo cambio a 19200 por ejemplo:
    ©Ò©ý
    )Êéý
    Ê)Òý
    Ò)Tý
    ))T©ý
    Termino Setup:

    Donde dice “Termino Setup” es una línea de control que agregué luego de uno de los ultimos sendData:
    sendData(“AT+CIPSERVER=1,80rn”,1000,DEBUG); // turn on server on port 80

    Serial.println();
    Serial.print(“Termino Setup: “);

    Si lo seteo a 9600 no me muestra nada, sólo “Termino Setup”…

    Agradezco cualquier orientación.

    El módulo WIFI creo que funciona bien, al menos me responde los pings, todo me hace pensar que lo que falla es la respuesta del Módulo con el Arduino.

    Pero a su vez, montado el servidor web, tampoco funcionan las órdenes que desde el mismo ejecuto.

    Gracias.
    Saludos
    Diego

  49. Claudio julio 27, 2016 at 9:03 am - Reply

    Alejandra, necesitas controlar los rieles desde un multiplexor.
    Cuando el receptor WiFi recibe la señal, esta puede tener diferentes datos; imagínate canal 1, 2, 3 y 4; que van al multiplexor y este habilita la línea para controlar el rele correspondiente que enciende la lámpara.
    Esta es la idea general, ahora hay que implementar el hardware y software.

  50. JOSE julio 30, 2016 at 2:45 pm - Reply

    HOLA DISCULPEN ME PODRIAN MANDAR EL ARCHIVO CON EL CODIGO ? NO SE PORQUE ME SIGUE MANDANDO ERROR CADA VEZ QUE COMPILO, MUCHAS GRACIAS

  51. jose agosto 6, 2016 at 1:48 pm - Reply

    siguen dando seguimiento a este enlace ??

  52. Julio agosto 15, 2016 at 4:31 pm - Reply

    Hola!

    No logro conectar mi modulo wifi con arduino. Utilizo el mismo ESP, con ardino Mega. Además una fuente de alimentación externa. El código que estoy utilizando es el vuestro, compila y lo carga correctamente, luego abro el monitor serie pero no me aparece nada, he probado con distintas velocidades sin exito, Ayuda por favor!!

    Gracias!

  53. Christian agosto 29, 2016 at 1:49 am - Reply

    Hola secmotic

    Acabe de leer este tutorial y me parecio muy interesante
    Pero tengo un problema
    El còdigo me compila facilmente ..el led rojo del ESP està encendido osea significa que esta funcionando (pq escuche que puede ser problema de arranque ya que la corriente del arduino es 50 mA)
    Solo que cuando abro el Monitor serie no me aparece nada .. ya intente con 19200 y 11500
    Cùal podria ser el problema?

  54. Guillermo septiembre 3, 2016 at 1:30 am - Reply

    Hola , programe directamente el ESP8266 y use su salida GPIO para controlar un modulo de rele de 2 reles , uso una fuente MB102 que tiene salidas de voltaje de 3.3 v y 5 v , el voltaje bajo lo uso para el ESP8266 y el voltaje de 5 VDC lo uso para el modulo de rele , he logrado controlar el rele mediante wifi, pero cuando le conecto una lampara de 220 VAC a loscontactos del modulo de rele , el ESP8266 deja de responder..por favor si me pudieran ayudar con este problema. NO encuentro alguna relacion en las conexiones , el voltaje de 220 VAC esta totalmente aislado mediante los opto del modulo de rele , y mediante el contacto del modulo de rele , no comprende porque falla el ESP8266 cuando conecto una carga en los contactos del rele…Muchas gracias por su atencion

  55. Cristian octubre 15, 2016 at 1:27 am - Reply

    Hola…me podrias ayudar.
    me da el siguiente error al querer subirlo a arduino:
    Arduino:1.6.8 (Windows 10), Tarjeta:”Arduino/Genuino Uno”

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino: In function ‘void setup()’:

    sketch_oct14a:10: error: ‘SSSerial’ was not declared in this scope

    SSSerial.begin(19200);

    ^

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino: In function ‘void loop()’:

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino:38:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(esp8266.find(“+IPD,”))

    ^

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino:45:25: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    esp8266.find(“pin=”); // advance cursor to “pin=”

    ^

    exit status 1
    ‘SSSerial’ was not declared in this scope

    Este reporte podría tener más información con
    “Mostrar salida detallada durante la compilación”
    opción habilitada en Archivo -> Preferencias.

  56. Cristian octubre 15, 2016 at 1:53 am - Reply

    Perdon por el comentario anterior pero ya lo puedes borrar, ya mire la solución en los comentarios, era solo que esta mal SERIAL tenia tres SSS

    Podrias pasarme tu correo para ver otras dudas que tengo por favor

  57. Alejandro octubre 21, 2016 at 7:41 pm - Reply

    Hola alguien me puede ayudar porq me tira solo letras en el monitor serie. Ya cambie la configuración para todas las velocidades y la mas legible es a 15200 que me tira esto (la velocidad la cambio tanto en la programacion como en el monitor serie) AR+RSTrnAT+CWMOBE=2rnAT+CIFSRroAT+CIPMUÕŠ’¹ÿAT+CIPSERVER>a,80rn.
    Que solución puedo tener para poder ver la ip y q todo sea legible.

  58. leo octubre 28, 2016 at 6:35 am - Reply

    alguien sabe agregar un slider al codigo arduino para bajar y subir la intensidad del led

  59. Emiliano noviembre 30, 2016 at 8:37 pm - Reply

    Hola gracias por el aporte. Quería consultar si la bombilla se podria prender de forma manual en el caso de que no este activa la red wifi.
    Y si el proyecto se podria realizar con una placa Arduino Pro Mini en lugar de la UNO

    Muchas gracias

  60. Ricardo enero 20, 2017 at 10:49 pm - Reply

    Despúes de montar el código en el Arduino UNO, hay que dejarlo conectado al puerto USB?

  61. Ricardo enero 21, 2017 at 3:52 pm - Reply

    Buen día. Despúes de haber cargado el código en la Arduino UNO, es necesario que siga conectada al cable USB?

  62. Jonhy enero 26, 2017 at 9:36 am - Reply

    Hola, buenos días.

    Al compilar siempre me sale:

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino: In function ‘void loop()’:

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino:38:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    if(esp8266.find(“+IPD,”))

    ^

    C:\Users\crist\Documents\Arduino\sketch_oct14a\sketch_oct14a.ino:45:25: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    esp8266.find(“pin=”); // advance cursor to “pin=”

    Por qué me sucede esto? gracias

  63. fernando arriaga febrero 3, 2017 at 12:32 am - Reply

    hola buen dia , como le puedo hacer si quiero encender mas leds ya agregue los botones pero no se prenden.

  64. Hugo Rolon febrero 22, 2017 at 3:48 pm - Reply

    Buen dia… muy buen ejemplo. Como hago si tengo varios wifi… y quiero acceder desde internet

  65. vic abril 2, 2017 at 6:04 pm - Reply

    Hola, yo he hecho ya algunos sistemas con ESP 8266 y arduino mega pero tengo un problema, no se como hacerlo 100% wireless, es decir, sin cables, tienes alguna guía o tal vez visto alguna que me pudiese ayudar?

  66. Gus mayo 31, 2017 at 1:52 am - Reply

    como hago para poder controlar los leds y la bombilla desde internet y desde cualquier sitio

  67. Francisco junio 24, 2017 at 7:49 am - Reply

    Hola, disculpa mi ignorancia, pero al compiar y pegar tu código me tira un error:

    exit status 1
    ‘SSSerial’ was not declared in this scope

    tengo muy poco conocimiento en arduino, no se si tengo que hacer otra cosa, mas que copiar y pegar, agradecería tu ayuda, desde ya gracias.

  68. OMAR julio 6, 2017 at 6:52 am - Reply

    AMIGO MUY BUENAS NOCHES AL SUBIR EL CÓDIGO AL ARDUINO Y MIRAR EL PUERTO SERIE NO ME A PÁRESE LA IP ???? POR QUE Y COMO CONECTO AL WIFI EL ESP8266???? O YA VIENE TODO TODO EN EL CÓDIGO ARDUINO

  69. Emilio agosto 18, 2017 at 1:14 am - Reply

    Hola buen día, esa pagina web solo funcionaria dentro de mi red, o tambien en la red global?

    • Pablo Campos agosto 31, 2017 at 8:31 am - Reply

      Hola Emilio, esa página web solo funcionará en tu red local, salvo que configures el router para abrir los puertos y redirigir el tráfico hacia esa IP local.

Leave A Comment