Está en la página 1de 8

Domtica con Arduino, WiFi y Android

Mdulo WiFi ESP8266

Usaremos para este ejemplo el mdulo ESP8266 para activar las luces de casa
desde un telfono mvil Android con WiFi.

Realizamos las siguientes conexiones entre el mdulo ESP8266 y Arduino:


-ESP8266 +3v3 a Arduino 3v3
-ESP8266 CH_PD a Arduino 3v3
-ESP8266 GND a Arduino GND
-ESP8266 TX a Arduino D3
-ESP8266 RX a Arduino D2

Conectamos el Arduino al USB de un ordenador.


Utilizamos el siguiente programa para el Arduino para hablar con el mdulo
WiFi:

#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);
}
}
Ejecutamos este programa en el Arduino y abrimos el Monitor Serie.

El mdulo ESP8266 se configura utilizando comandos AT. Cuando en el monitor


serie escribamos AT y lo enviemos recibiremos OK.
Ejemplo de algunos comandos AT que se necesitarn para configurar el
mdulo:
-Reiniciar el mdulo:
AT+RST

OK
####!Lk)] # #
[Vendor:www.ai-thinker.com Version:0.9.2.4]

ready

-Averiguar el modo WiFi de funcionamiento:


AT+CWMODE?
+CWMODE:1

OK

-Poner el mdulo en modo 3:


AT+CWMODE=3

OK

-Averiguar las redes WiFi disponibles:


AT+CWLAP
+CWLAP:(2,"NuCom_54A5C8",-91,"c8:3a:35:54:a5:c8",6)
+CWLAP:(3,"Aula1",-67,"c8:3a:35:2f:77:b0",6)
CA(,C_T-0c0:::4a6

-Conectarse a la WiFi cuya SSID es Aula1 y cuya clave es 12345678:


AT+CWJAP="Aula1","12345678

OK

-Averiguar la direccin IP del mdulo:


AT+CIFSR
192.168.4.1
192.168.0.115

OK

-Habilitar mltiples conexiones al mdulo:


AT+CIPMUX=1

OK

-Configurar el servidor web en el puerto 80:


AT+CIPSERVER=1,80

OK
Despus cargamos en el Arduino el siguiente programa:

// Prueba de funcionamiento con el ESP8266 (wifi)


// funciona con el programa Arduin Remote del google play (slo comandos A y a)
// software serial en D2 y D3 (TX, RX)
// velocidad 9600, tanto para serie como para comunicacin con el mdulo

#include <SoftwareSerial.h>
SoftwareSerial BT1(3, 2); // RX | TX
String W =" ";
char w ;

void setup(){
Serial.begin(9600);
BT1.begin(9600);
pinMode(13, OUTPUT);
String ordenes[]={ // definimos un String con las 7 rdenes a enviar
"AT+RST",
"AT+CWMODE=3",
"AT+CWQAP",
"AT+CWJAP=\"Aula1\",\"12345678\"", //Cambiar por la SSID y clave adecuadas
"AT+CIFSR" ,
"AT+CIPMUX=1",
"AT+CIPSERVER=1,80",
};
for (byte i = 0; i<7; i++){ // enviamos las 7 rdenes
Serial.print ("--->"); Serial.println (ordenes[i]);
BT1.println(ordenes[i]);
delay (100);
if (i==3) delay (8000); // esperamos 8 seg para que se conecte a la WiFi
pintarRespuestaAT();
}

void loop()
{ if (BT1.available()) // Lo que entra por WIFI a Serial
{ w = BT1.read() ;
Serial.print(w);
W=W+w; // Vamos montando un String con lo que entra
}
if (Serial.available()) // Lo que entra por Serial a WIFI
{ char s = Serial.read();
BT1.print(s);
}
if ( w == '\n'){
if ( W.indexOf(":A") > 0 ){
digitalWrite( 13, HIGH) ;
Serial.println("Enciendo switch 1");
}
if ( W.indexOf(":a") > 0 ){
digitalWrite( 13, LOW) ;
Serial.println("Apago switch 1");
}
W = "" ; w = ' ' ; // Limpiamos las variables
}
}

//------------------------------------------------------------------------------
void pintarRespuestaAT(){
while (BT1.available()){
w = BT1.read();
Serial.print(w);}
}

Instalamos en Android el programa Arduin Remote que se encuentra en el


Play Store. Conectamos desde este programa con el mdulo WiFi:
Introducimos la direccin IP del mdulo WiFi y el puerto 80:

En el programa se puede definir cuntos pulsadores queremos visualizar y


definir un nombre para cada uno de ellos. En esta imagen el Switch 1 se ha
renombrado por Luz 1:
Abrimos el Monitor Serie de Arduino:
Vemos que al pulsar el pulsador Luz 1, el programa de Android enva una a, y
al volver a pulsarlo enva A.

Con esto en el cdigo de Arduino se enciende y se apaga el LED conectado al


pin13.

Actividades:
1.-Averigua lo que envan los pulsadores del 2 al 9 cuando se activan y cuando
se desactivan en el programa de Android Arduin Remote:

Pulsador ACTIVADO DESACTIVADO


2
3
4
5
6
7
8
9

2.-Modifica el programa de Arduino para que puedas controlar 4 lmparas


conectadas a los terminales 10, 11, 12 y 13 de Arduino, utilizando
respectivamente los pulsadores 1, 2, 3, 4 del programa de Android. Estos
pulsadores deben llamarse Luz 1, Luz 2, Luz 3 y Luz 4.

3.-Define el botn 5 como DOS LUCES y el botn 6 como TODAS LUCES. Los
dems botones del 7 al 9 no deben verse en el programa de Android. Modifica
el programa anterior de Arduino para que al pulsar DOS LUCES se enciendan o
apaguen las lmparas 1 y 2 y al pulsar TODAS LUCES se enciendas o apaguen
las 4 lmparas.

4.-Conecta 4 lmparas AC a las salidas anteriores de Arduino utilizando 4 rels


para controlarlas y comprueba el funcionamiento correcto de las dos
actividades anteriores. Haz un esquema de todas las conexiones.