Domótica con Arduino, WiFi y Android Módulo WiFi ESP8266 Usaremos para este ejemplo el módulo ESP8266 para activar las luces de casa desde un teléfono móvil Android con WiFi. Realizamos las siguientes conexiones entre el módulo 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 módulo 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 módulo ESP8266 se configura utilizando comandos AT. Cuando en el monitor serie escribamos AT y lo enviemos recibiremos.
Ejemplo de algunos comandos AT que se necesitarán para configurar el módulo: -Reiniciar el módulo: AT+RST #ü Ôþ##ºü#!Lk)]«#Ä # Ä [Vendor:www.ai-thinker.com Version:0.9.2.4] ready -Averiguar el modo WiFi de funcionamiento: AT+CWMODE? +CWMODE:1 -Poner el módulo en modo 3: AT+CWMODE=3 -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 -Averiguar la dirección IP del módulo: AT+CIFSR 192.168.4.1 192.168.0.115 -Habilitar múltiples conexiones al módulo: AT+CIPMUX=1 -Configurar el servidor web en el puerto 80: AT+CIPSERVER=1,80
Después cargamos en el Arduino el siguiente programa: // Prueba de funcionamiento con el ESP8266 (wifi) // funciona con el programa Arduin Remote del google play (sólo comandos A y a) // software serial en D2 y D3 (TX, RX) // velocidad 9600, tanto para serie como para comunicación con el módulo #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 módulo WiFi:
Introducimos la dirección IP del módulo WiFi y el puerto 80: En el programa se puede definir cuántos 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 envía una a, y al volver a pulsarlo envía A. Con esto en el código de Arduino se enciende y se apaga el LED conectado al pin13. Actividades: 1.-Averigua lo que envían 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 lámparas
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 botón 5 como DOS LUCES y el botón 6 como TODAS LUCES. Los demás 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 lámparas 1 y 2 y al pulsar TODAS LUCES se enciendas o apaguen las 4 lámparas. 4.-Conecta 4 lámparas AC a las salidas anteriores de Arduino utilizando 4 relés para controlarlas y comprueba el funcionamiento correcto de las dos actividades anteriores. Haz un esquema de todas las conexiones.