Blog Search

Recent Articles

Latest Comments

Como conectar Arduino a una red WIFi con el módulo ESP8266

Como conectar Arduino a una red WIFi con el módulo ESP8266

Como conectar Arduino a una red WIFI con el módulo ESP8266

En nuestra entrada de hoy, conoceremos la tecnología WIFI y haremos una practica en la que conectamos Arduino a una de estas redes, configuraremos el sistema y enviaremos datos desde nuestro navegador web a Arduino.
Para hacer esto, hemos elegido el módulo ESP8266, ya que es una de las mejores y más económicas opciones que nos ofrece el mercado.
En primer lugar, decir que este módulo es muy sencillo de usar y esta diseñado desde el principio para la corriente tecnológica del Internet de las cosas. Este módulo incluye todo lo necesario para conectarse a un punto WIFI enviando comandos AT (Comandos de texto) mediante un puerto serie.

Algo sobre la tecnología WIFI.

WI-FI, es una marca comercial de la WIFI-Alliance, esta es la organización encargada de certificar que los equipos cumplan los standares para usar esta tecnología.
WIFI, es un metodo de conexión de los dispositivos electrónicos de forma inalambrica, con un alcance de 20m en interiores y algo superior en exteriores.

Materiales usados:

arduino uno leantec

-Arduino UNO

esp8266 leantec

-Módulo ESP8266

cables leantec

-Cables de conexión





Conexion del módulo:

-En la siguiente imagen se puede ver una descripción de los pines del módulo.
El pin GND del módulo lo conectamos a GND de Arduino, VCC y RST, lo conectamos al pin de 3,3V de Arduino. TX lo conectamos al pin 2 de Arduino y RX al pin 3.
conexión modulo esp8266

Decir que si usamos como fuente de alimentación la que incorpora Arduino de 3,3V tendremos problemas en el arranque, ya que está fuente nos proporciona una corriente máxima de salida de 50mA y el módulo en su arranque necesita algo más. Aun así para la primera toma de contacto y hacer algunas pruebas se puede usar los 3,3V de Arduino. Si se dispone de una fuente externa a Arduino es aconsejable usarla.

Práctica. (Primer programa y comandos AT)

Código

En primer lugar carga el siguiente código en tu Arduino
#include <SoftwareSerial.h>
SoftwareSerial BT1(3, 2); // RX | TX

void setup()
  {  Serial.begin(9600);
     BT1.begin(9600);
  }

void loop()
  {  String B= "." ;
     if (BT1.available())
         { char c = BT1.read() ;
           Serial.print(c);
         }
     if (Serial.available())
         {  char c = Serial.read();
            BT1.print(c);
         }
   }


A continuación abrimos el monitor serial de nuestro arduino y nos aseguramos que esta bien comfigurado. (Configurar como la imagen)
configuración monitor serial

Si en el monitor serial no aparece nada, desconecta y vuelve a conectar la alimentación, es posible que el modulo wifi no haya arrancado por el motivo que antes comentabamos.

tutorial esp8266 leantec ready

Como se aprecia en la imagen superior, tiene que aparecer el mensaje “ready” cuando el módulo haya arrancado. Los símbolos que parecen en las primeras lineas son normales, no hace falta prestarles mucha atención.

Empezamos con los comandos AT.
El primer comando que usaremos será, AT. Escribimos AT y pulsamos intro.

tutorial esp8266 ok leantec

El módulo os responderá con un OK si recibió correctamente los comandos.
El ESP8266 tiene tres modos de funcionamiento, 1,2y3. La mejor opción según nuestra experiencia es la 3.
Para cambiarlo usad el comando AT+CWMODE=(número de modo).
Para saber el modo actual usad el comando; AT+CWMODE?, después si no tenéis el modo 3 seleccionado, lo seleccionáis.

post esp8266

tutoriel esp8266 wifi

El siguiente comando os ayudará a saber que puntos WIFI tenéis a vuestros alrededores.
Este comando es: AT+CWLAP

post blog esp8266

Aparecen 2, LIBERATEL.ES es la nuestra.
El siguiente paso es conectarse al uno de los puntos WIFI que os apareció antes. Para esto hay que usar el siguientes comando:
AT+CWLAP= “nombre del punto”, “contraseña”
Al poco tiempo, si todo esta bien, el modulo os responderá con un OK y esto nos indica que esta conectado correctamente.

tutorial esp8266 arduino leantec

Para saber que IP os ha asignado el módulo automáticamente, tecleamos el comando: AT+CIFSR.
A mi en concreto me ha asignado la dirección 192.168.2.100

post leantec esp8266 arduino
Ahora se puede empezar con a manejar cosas más interesantes de este módulo, como por ejemplo montar un pequeño servidor web.
Para activar conecciones simultaneas teclea: AT+CIPMUX=1
y para arrancar un servicio web con el número de servicio 1 y el puerto 80 teclea: AT+CIPSERVER=1,80.

esp8266 tutorial leantec arduino

Una vez configurado el módulo para hacer funcionar Arduino como servidor WEB, podéis enviar datos desde el navegador a Arduino de una forma muy sencilla.
Por ejemplo; escribiendo en el navegador esto...

esp8266 funcionamiento
en el monitor serial aparecerá esto...

esp8266 funcionamiento leantec

Conclusiones y resultados.

En esta entrada del blog de Leantec; hemos aprendido a usar el módulo ESP8266. Conenctandlo a nuestra red WIFI y hemos enviado datos desde duestro navegador web a Arduino.
Tambien aprendimos un poco sobre el protoclo WIFI.
En proximos post profuncizaremos más en este módulo y sus posibilidades.

12Comentarios

    • Avatar
      Guillermo
      oct 1, 2015

      Hola. He probado tu ejemplo con dos módulos esp8266 (el 01 y el 12) y sólo consigo recibir cadenas de caracteres extraños con ambos. He probado con las conexiones que indicas y también poniendo el pin CHPD/EN a +3.3 V. También he probado con otras velocidades y nada. ¿a qué se puede deber? Lo alimento con una fuente externa (de un PC).

    • Avatar
      DanyNoega
      oct 28, 2015

      Hola he recibido un modulo esp 07 y lo he conectado con el arduino pero no recibo ninguna contestacion por parte del modulo. He probado todo, el arduino recibe pues si hago contactos a masa con un cable algun simbolo sale. El modulo ya lo puse a 3,3 v con baterias y he puesta a vcc la pata"RSTt" y "EN" ademas de la vcc y nada de nada. Pregunta hay que programar o hacer algo con el modulo antes?

    • Avatar
      mega kk
      dic 15, 2015

      hay dos velocidades en baudios. la del modulo wifi puede ser diferente a 9600 en mi caso tuve que probar hasta dar con la de 115200 Cuando empezo a funcionar bien, use el comando AT+CIOBAUD=74880 y esos son los que se quedan fijos en el modulo wifi hasta que los cambie yo de nuevo. Luego, los baudios del arduino conviene igualarlos a los del modulo wifi para que no pierda caracteres el arduino al recibir textos muy largos. yo he puesto ambas velocidades a 74880 y asi recibo todos los mesajes del modulo wifi, esos que salen al principio en forma rara.

    • Avatar
      mega kk
      dic 15, 2015

      Por cierto, a mi me funciona con la propia alimentacion del arduino DUE (en mi caso 3.3v), gracias a que pongo a nivel bajo y tras esperar un instante lo pongo a nivel alto, las dos patillas que unos dicen que no se conectan, y otros dicen que se deben dejar fijos a nivel alto. ======= int LED = 13; boolean LEDst = false; //este par de pines han de estar en estado HIGH para que opere el modulo wifi. //pero debo pasarlos de LOW a HIGH tras el encendido para que se active el wifi. //y para ello debo añadir un DELAY(1), o no se activara el wifi. int RST_8266 = 51; int CH_PD_8266 = 53; void setup() { pinMode(RST_8266, OUTPUT); pinMode(CH_PD_8266, OUTPUT); pinMode(LED, OUTPUT); digitalWrite(LED, LEDst); Serial.begin(74880); // la del arduino Serial3.begin(74880); // la del modulo wifi delay(1); digitalWrite(RST_8266, LOW); digitalWrite(CH_PD_8266, LOW); delay(1); digitalWrite(CH_PD_8266, HIGH); digitalWrite(RST_8266, HIGH); } void loop() { while (Serial.available() > 0) { char a = Serial.read(); Serial3.write(a); } } void serialEvent3() { while (Serial3.available() > 0) { char a = Serial3.read(); Serial.write(a); ToggleLED(); } } void ToggleLED(){ //por cada respuesta del wifi se cambia el estado del LED digitalWrite(LED, LEDst = !LEDst); } =======

    • Avatar
      eduardo
      jul 4, 2016

      hola, necesito enviar datos de un arduino a una base de datos haciendo uso del esp8266 pero de momento me es imposible, si pudieran proporcionarme una guía me seria muy util

      • Avatar
        Luis Franco
        ago 28, 2016

        Hola eduardo, yo quiero hacer lo mismo, lograste realizar algo? podrias compartirlo. muchas gracias de antemano

    • Avatar
      Rafa
      sep 1, 2016

      Buenas tardes, Llevo poco tiempo con arduino y mi problema es que cada vez que quito alimentacion al módulo ESP8266, el comando AT+CIPMUX cambia de 1 a 0 y pierdo la comunicación. ¿Podrias darme una solución al problema? Muchas gracias Rafael

    • Avatar
      Cesar
      oct 31, 2016

      queria avisarle que esta mal el comando AT+CWLAP= “nombre del punto”, “contraseña” que escribió, el que me funciono fué: AT+CWJAP= “nombre del punto”, “contraseña” para que lo edite :) Buena guía.

    • Avatar
      ajcm
      ene 5, 2017

      por que razón no se conecto TX del modulo con PIN1(TX) DEL ARDUUINO y RX del modulo, con PIN0(RX) DEL ARDUINO?

    • Avatar
      fco boni
      jun 10, 2017

      TX lo conectamos al pin 2 de Arduino y RX al pin 3. conexión modulo esp8266 ES AL REVES

    • Avatar
      Erik
      jun 13, 2017

      Buenas, he probado ha hacer lo que dices pero no me aparece nada en el monitor serial aunque conecte y desconecte la alimentación. Sabes por qué puede ser?

    • Avatar
      miguel
      jul 20, 2017

      Ya he proved varias vexes y me do error pone. +cwjap:1 Fail Q puede ser muchas graciass

Leave a Reply

* Name:
* E-mail: (Not Published)
   Website: (Site url withhttp://)
* Comment:
Type Code