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

por | Abr 30, 2015 | Domótica | 111 Comentarios

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

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.

111 Comentarios

  1. Franco

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

    Responder
    • Jose Benítez

      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?

      Responder
  2. fabian

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

    Responder
    • Jose Benítez

      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

      Responder
  3. Saul Resendiz

    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

    Responder
    • Carlos Corrales

      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

      Responder
      • Saul Resendiz

        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

        Responder
        • Jose Benítez

          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

          Responder
  4. Jorge

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

    Responder
    • Jose Benítez

      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.

      Responder
  5. newbie

    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?

    Responder
    • Jose Benítez

      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

      Responder
  6. Edwin Reyes

    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?

    Responder
    • Jose Benítez

      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

      Responder
  7. Miguel Ga

    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?

    Responder
  8. Reinaldo

    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.

    Responder
  9. Reinaldo

    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

    Responder
    • Jose Benítez

      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!

      Responder
  10. Reinaldo

    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

    Responder
    • Jesus

      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

      Responder
      • Reinaldo

        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?

        Responder
  11. Manuel Silva

    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

    Responder
    • Jose Benítez

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

      Simplemente sustituya «SSSerial» por «Serial»

      Saludos

      Responder
  12. Reinaldo

    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!!!!

    Responder
  13. Reinaldo

    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?

    Responder
    • Tomas

      ya pudiste solucionar eso a mi me pasa igual

      Responder
  14. Eduardo Martinez

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

    Responder
    • Carlos Corrales

      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

      Responder
  15. Sebastian ordoñez rubiano

    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?

    Responder
    • Jose Benítez

      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?

      Responder
      • Douglas

        hola a mi no me aparece la ip solo el scan de otras redes

        Responder
    • Carlos Corrales

      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

      Responder
  16. manuel silva

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

    Responder
  17. Nicolás

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

    Responder
    • Mario

      Buenas tardes oye me puedes apoyar porfas aver como puedo aserle en mi casa me ponen ya sea bolitas de cera plastiquitos laminitas en los botones de los pantalones en mi ropa causan voces en qué parte del aparato del wifi u donde puedo identificar donde ay un dispositivo u no se k sea para poderlo quitar la verdad si me tiene un poco traumado y audio y video también mi esposa Abla así al aire

      Responder
  18. Mirna Texna

    a cuantos baudios debe estar configurado???

    Responder
  19. Alexandra

    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.

    Responder
  20. Rene Gajardo

    Estimado

    Algo paso con las imágenes.

    Responder
    • secmotic

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

      Un saludo!

      Responder
      • René Gajardo

        Gracias ahora si

        Responder
  21. Andy

    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

    Responder
  22. Guillermo

    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

    Responder
  23. David

    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

    Responder
  24. pitux

    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!

    Responder
    • Carlos Corrales

      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

      Responder
  25. alfonso

    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

    Responder
  26. JORGE

    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.

    Responder
  27. JORGE

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

    Responder
  28. JORGE

    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

    Responder
  29. lalo

    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

    Responder
    • Carlos Corrales

      Buenas Lalo,

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

      Responder
  30. Adrian

    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

    Responder
  31. Jose Pablo

    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

    Responder
  32. J

    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?

    Responder
  33. JEI GARCÍA MARTÍNEZ

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

    Responder
    • Brayan

      como lo hiciste?

      Responder
  34. JEI GARCÍA MARTÍNEZ

    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?

    Responder
  35. Jei

    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

    Responder
  36. Raul

    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!

    Responder
  37. Raul Andrade

    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

    Responder
    • Raul Andrade

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

      Responder
      • Raul Andrade

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

        Responder
    • Raul Andrade

      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.

      Responder
  38. EDDY

    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!

    Responder
  39. carlos

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

    Responder
  40. Fonsov

    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

    Responder
  41. Alejandro

    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

    Responder
  42. Jose

    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

    Responder
  43. Miguel

    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

    Responder
  44. Alexandra

    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.

    Responder
    • Rylah

      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

      Responder
  45. Carlos Saldivia

    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?

    Responder
  46. Diego

    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

    Responder
  47. Claudio

    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.

    Responder
  48. JOSE

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

    Responder
  49. jose

    siguen dando seguimiento a este enlace ??

    Responder
  50. Julio

    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!

    Responder
  51. Christian

    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?

    Responder
  52. Guillermo

    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

    Responder
  53. Cristian

    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.

    Responder
  54. Cristian

    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

    Responder
  55. Alejandro

    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.

    Responder
  56. leo

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

    Responder
  57. Emiliano

    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

    Responder
  58. Ricardo

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

    Responder
  59. Ricardo

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

    Responder
  60. Jonhy

    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

    Responder
  61. fernando arriaga

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

    Responder
  62. Hugo Rolon

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

    Responder
  63. vic

    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?

    Responder
  64. Gus

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

    Responder
  65. Francisco

    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.

    Responder
  66. OMAR

    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

    Responder
  67. Emilio

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

    Responder
    • Pablo Campos

      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.

      Responder
  68. Luis Angel

    Hola podrías subir el archivo jquary.min.js por favor 🙂

    Responder
  69. jose recalde

    Buena información lastima que este incompleta ay que cambiar en una condición un parametro, la pagina web que ponen como ejemplo no funciona debido a que debe especificar los piines a que dirección se dirige al pulsar y gracias a otro tutorial que vi de un Español pude complementarlo y hacerlo funcionar, publicaron un post en ingles y lo pusieron en español, y el post en ingles me dio el mismo problema gg, pero lo bueno que ya lo resolvi

    Responder
  70. VICTOR CRUZ

    HOLA BUEN DIA COMO PEDO DECLARAR EN EL CODIGO LA SIGUENTE LINEA:
    SSSerial.begin(19200);
    EL MENSAJE DE ERROR ES ESTE:
    ‘SSSerial’ was not declared in this scope

    Responder
  71. Nestor

    Después de depurar algunas cosas, todo funciona menos la función get; si desde el navegador pongo la ip y el pin correspondiente al led, este se enciende o se apaga pero veo que la funcion get no hace lo mismo. Trate de probar con post que son similares, pero no funciona tampoco. Por lo que pude ver la respuesta del modulo al requerimiento de la ip muestra caracteres raros, como si trabajara a otra velocidad pero si lo hago desde el navegador aparece todo perfecto. Alguien podría tirarme alguna idea sobre donde esta el error ó la función get necesita de algún otro parámetro. Gracias por la ayuda

    Responder
  72. Nestor

    Mande un msj el 31/01 y quedo en moderacion. Pueden verificar la consulta. Gracias

    Responder
  73. wilfredo mamani quispe

    tengo problemas con el html ya lo carge en htdocs de xamap carge lo coloque el mismo ip pero al darle clic a los botones no enciede los leds ni la bombilla
    o si o si se nesesita appserver

    Responder
  74. joab

    en que editor de código esta echo el código de programación?

    Responder
  75. Raul

    Quisiera hacer lo mismo pero que el html este en el arduino en lugar de en un servisor afuera.
    Osea… entrar al Esp01 en modo ap, cooocar su direccion Ip y me muestre unos botones que me sirvan para prender o apagar las salidas del arduino uno.

    Responder
  76. Carlos Ilich Sánchez

    Hola cómo estás,

    Lo puedo hacer con una cinta led y programar varios colores para que se enciendan? Que otro módulo le puedo colocar, puede ser un sensor de sonido para que encienda con un aplauso?

    Responder
  77. VELASCO CORREA CARLOS EDUARDO

    hola excelente tutorial mi duda es que deseo hacer una aplicacion en app inventor y asi enviar informacion del arduino a la aplicación y de la aplicacion mandar datos para cambiar dentro de la programación si podrias ayudarme gracuas

    Responder

Trackbacks/Pingbacks

  1. Internet de las Cosas: Controlando tu casa desde tu móvil | Blog Secmotic Innovation - […] el anterior post sobre domótica vimos como conectar el modulo wifi ESP8266 a un Arduino y encender bombillas. Ahora…
  2. Error Conexiones Multiples Para Servidor - […] Encender una bombilla con un módulo. - Secmotic Innovation – Hola Saul, El código HTML es un código interpretado…
  3. Que Paso En El Error De Diciembre - […] Encender una bombilla con un módulo. - Secmotic Innovation – Como estan? Despues de varios intentos y alcualizar el…

Enviar un comentario

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

Conoce conceptos clave de la era digital en nuestro HUB

 

 

Descarga nuestro ebook con todo lo que necesitas saber sobre IoT Industrial.

Suscríbete a nuestra newsletter

Recibe las últimas noticias sobre innovación y nuevas tecnologías y mantente al día de los avances más destacados

Cesión de datos

Calle Factores 2, 41015 Seville

Phone: +34 618 72 13 58

Email: info@secmotic.com

MENU

We are

We do

Blog

Contact