Bombilla Wifi
Publicado: 22 Mar 2015 23:26
Aprobechando que tengo que aprender a usar y ver lo fiable que es el modulo Wifi ESP8266 e pensado en hacer una bombilla wifi y probarla aver que fallos da:
Material a emplear:
- Bombilla de bajo consumo.
- Casquillo de bombilla modificado con la electronica necesaria.
- Electronica necesaria:
-Fuente de alimentación entrada 220v alterna y 3.3 v continua de salida: http://www.dx.com/es/p/jr-3w-3w-led-con ... 40v-202083
- Modulo ESP8266 Wifi: http://www.dx.com/es/p/esp8266-wi-fi-wi ... ack-369015
- Rele, entrada 3,3v y 220 de salida minimo 10A y a ser posible normalmente cerrado, (el del enlace no lo especifica):http://www.dx.com/es/p/ssr-40da-single- ... ver-184274
Las primeras pruebas las he realizado con arduino mega, activando el led del pin 13 a traves de un navegador escribiendo despues de la direccion que le ha asignado el router en mi caso la 192.168.2.106 seguida de la palabra p13, quedando asi 192.168.2.106/p13
Y aqui el programa del arduino que lo ejecuta:
String ordenes[]=
{ //"AT+RST", // Resetea el modulo esta comentado porque no funciona no se porque
"AT+CWMODE=3", // Para poner el modulo en modo 3
"AT+CIFSR" , // Consulta la dirección IP del modulo
"AT+CIPMUX=1", // Habilita varias conexiones simultaneas
"AT+CIPSERVER=1,80", // Arranca un servidor web con el numero de servicio = 1 en el puerto 80
"END" // Para reconocer el fin de los comandos AT
};
String W =" ";
char w ;
void setup()
{
Serial3.begin(19200);
Serial.begin(19200);
delay (1000);
int index = 0;
while(ordenes[index] != "END")
{ Serial3.println(ordenes[index++]);
while ( true)
{ String s = GetLineWIFI();
if ( s!= "") Serial.println(s);
if ( s.startsWith("no change"))
break;
if ( s.startsWith("OK"))
break;
if ( s.startsWith("ready"))
break;
// if (millis()-T >10000) break;
}
Serial.println("....................");
}
Serial.begin(19200);
Serial3.begin(19200);
pinMode(13, OUTPUT);
}
void loop()
{
if (Serial3.available()) // Lo que entra por WIFI - Serial
{ w = Serial3.read() ;
Serial.print(w); // Vamos montando un String con lo que entra
W = W + w ;
}
if (Serial.available()) // Lo que entra por Serial - WIFI
{ char s = Serial.read();
Serial3.print(s);
}
if ( w == '\n') // Sin han pulsado intro
{ if ( W.indexOf("p13") > 0 ) // Si P13 esta incluido en el string
{ digitalWrite( 13, !digitalRead(13)) ;
Serial.println("Invirtiendo pin 13");
}
W = "" ; w = ' ' ;
}
}
String GetLineWIFI()
{ String S = "" ;
if (Serial3.available())
{ char c = Serial3.read(); ;
while ( c != '\n' ) //Hasta que el caracter sea intro
{ S = S + c ;
delay(25) ;
c = Serial3.read();
}
return( S ) ;
}
}
Mejoras a probar:
- Manejar las salidas GPIO del modulo ESP3866 sin Arduino
- Mejorar la interface de control de la bombilla mediante navegador web
Material a emplear:
- Bombilla de bajo consumo.
- Casquillo de bombilla modificado con la electronica necesaria.
- Electronica necesaria:
-Fuente de alimentación entrada 220v alterna y 3.3 v continua de salida: http://www.dx.com/es/p/jr-3w-3w-led-con ... 40v-202083
- Modulo ESP8266 Wifi: http://www.dx.com/es/p/esp8266-wi-fi-wi ... ack-369015
- Rele, entrada 3,3v y 220 de salida minimo 10A y a ser posible normalmente cerrado, (el del enlace no lo especifica):http://www.dx.com/es/p/ssr-40da-single- ... ver-184274
Las primeras pruebas las he realizado con arduino mega, activando el led del pin 13 a traves de un navegador escribiendo despues de la direccion que le ha asignado el router en mi caso la 192.168.2.106 seguida de la palabra p13, quedando asi 192.168.2.106/p13
Y aqui el programa del arduino que lo ejecuta:
String ordenes[]=
{ //"AT+RST", // Resetea el modulo esta comentado porque no funciona no se porque
"AT+CWMODE=3", // Para poner el modulo en modo 3
"AT+CIFSR" , // Consulta la dirección IP del modulo
"AT+CIPMUX=1", // Habilita varias conexiones simultaneas
"AT+CIPSERVER=1,80", // Arranca un servidor web con el numero de servicio = 1 en el puerto 80
"END" // Para reconocer el fin de los comandos AT
};
String W =" ";
char w ;
void setup()
{
Serial3.begin(19200);
Serial.begin(19200);
delay (1000);
int index = 0;
while(ordenes[index] != "END")
{ Serial3.println(ordenes[index++]);
while ( true)
{ String s = GetLineWIFI();
if ( s!= "") Serial.println(s);
if ( s.startsWith("no change"))
break;
if ( s.startsWith("OK"))
break;
if ( s.startsWith("ready"))
break;
// if (millis()-T >10000) break;
}
Serial.println("....................");
}
Serial.begin(19200);
Serial3.begin(19200);
pinMode(13, OUTPUT);
}
void loop()
{
if (Serial3.available()) // Lo que entra por WIFI - Serial
{ w = Serial3.read() ;
Serial.print(w); // Vamos montando un String con lo que entra
W = W + w ;
}
if (Serial.available()) // Lo que entra por Serial - WIFI
{ char s = Serial.read();
Serial3.print(s);
}
if ( w == '\n') // Sin han pulsado intro
{ if ( W.indexOf("p13") > 0 ) // Si P13 esta incluido en el string
{ digitalWrite( 13, !digitalRead(13)) ;
Serial.println("Invirtiendo pin 13");
}
W = "" ; w = ' ' ;
}
}
String GetLineWIFI()
{ String S = "" ;
if (Serial3.available())
{ char c = Serial3.read(); ;
while ( c != '\n' ) //Hasta que el caracter sea intro
{ S = S + c ;
delay(25) ;
c = Serial3.read();
}
return( S ) ;
}
}
Mejoras a probar:
- Manejar las salidas GPIO del modulo ESP3866 sin Arduino
- Mejorar la interface de control de la bombilla mediante navegador web