Upload
haziqhazri
View
217
Download
0
Embed Size (px)
Citation preview
8/16/2019 Telefon i Cos
1/11
Funcionamiento:
El funcionamiento interno de el proyecto se describe a continuación
el controlador arduino hace la funcion de HOST de el Ethernet Shield, tarjeta que tiene la funcion de
darle comunicacion a el Hardware conectado a la tarjeta arduino hacia internet, una de sus aplicaciones
es mediante la de un servidor web integrado que es la que se aplico en este proyecto.
El servidor web integrado del ethernet shield genera un formulario html en el que especifica con
Arduino HOSTEthernet SHIELDconservidor WEB(FORM
HTML)
Android APKLeendo eIntroduciendo!"#ores $or %edio
de HTML FORMS
8/16/2019 Telefon i Cos
2/11
etiquetas si la iluminacion de la casa/maqueta esta en encendido o apagado y lo muestra en su
sitio.Usando el siguiente codigo HTML
Arduino Remoto
Proyecto Telefonicos
***Iluminación Exterior***
Apagado
***Iluminación Interior***
Apagado
***Iluminaciön Jardin*** Apagado
***Iluminaciön Sala*** Apagado
***Aire Acondicionado*** Apagado
***Alarma*** Apagado
***ACTIVAR*** Apagado
al modificar el formulario web corriendo directamente en el arduino se muestran las siguientes
modificaciones en la pagina y en el codigo corriendo internamente en el ethernet shield.
8/16/2019 Telefon i Cos
3/11
Y en su codigo
Arduino Remoto
Proyecto Telefonicos
***Iluminación Exterior***
Encendido
***Iluminación Interior***Encendido
***Iluminaciön Jardin***
Encendido
***Iluminaciön Sala*** Apagado
8/16/2019 Telefon i Cos
4/11
***Aire Acondicionado*** Apagado
***Alarma*** Apagado
***ACTIVAR*** Apagado
asi generamos la interaccion entre el hardware/maqueta y nuestro sitio web
apoyandonos en el siguiente codigo corriendo sobre la tarjeta arduino/uno.
Codigo Arduino
// Librerias necesarias para el funcionamiento adecuado de la tarjeta arduino y el shield Ethernet
#include
#include
#include
// Aqui se especifica la dirección MAC del Ethernet Shield asi como su dirección IP y puerto
TCP.
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };
byte ip [] = { 192, 168, 1, 200};
EthernetServer server(8090);
// aqui se especifica el valor default de cada variable ledX, x es igual al pin de salida en latarjeta //arduino
int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 9;
//aqui se declara la variable que almacenara el estado del led Encendido/Apagado
String readString = String(30);
String statusLed;
void setup() {
// Aqui se inicializan los dispositivos de el controlador arduino sus puertos y su ethernet shield.
Ethernet.begin(mac, ip);
8/16/2019 Telefon i Cos
5/11
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT); pinMode(led8, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
}
void loop() {
// Aqui se inicializa el codigo de el servidor ethernet
EthernetClient client = server.available();
if (client)
{
while (client.connected())
{
if (client.available()) {
char c = client.read();
if (readString.length() < 30) {
readString += (c);
}
if (c == '\n' )
{
//rutina encendido de leds
if (readString.indexOf("led1") >0) {
digitalWrite(led1, !digitalRead(led1));
}
if (readString.indexOf("led2") >0) {
digitalWrite(led2, !digitalRead(led2));
}
8/16/2019 Telefon i Cos
6/11
if (readString.indexOf("led3") >0) {
digitalWrite(led3, !digitalRead(led3));
}
if (readString.indexOf("led4") >0) {
digitalWrite(led4, !digitalRead(led4));
}
if (readString.indexOf("led5") >0) { digitalWrite(led5, !digitalRead(led5));
}
if (readString.indexOf("led6") >0) {
digitalWrite(led6, !digitalRead(led6));
}
if (readString.indexOf("led7") >0) {
digitalWrite(led7, !digitalRead(led7));
}
if (readString.indexOf("led8") >0) {
digitalWrite(led8, !digitalRead(led8));
}
//Aqui empieza a escribir en el servidor HTTP la pagina WEB a mostrar en el navegador
en la direccion HTTP://192.168.1.200:8090
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("");
client.println("");
client.println("");
client.println(" Arduino Remoto "); client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("Proyecto
Telefonicos" );
//consulta el estado del led 1 por 1 por medio de la opcion GET de HTML FORMS
if(digitalRead(led1)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";
}
8/16/2019 Telefon i Cos
7/11
client.println("" );
//y escribe el resultado en el texto del formulario WEB
client.println("***Iluminación Exterior***
"+statusLed+"");
client.println("
");
if(digitalRead(led2)){
statusLed = "Encendido";}else{
statusLed = "Apagado";
}
client.println("" );
client.println("***Iluminación Interior***
"+statusLed+"");
client.println("
");
if(digitalRead(led3)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";
}
client.println("" );
client.println("***Iluminaciön Jardin***
"+statusLed+"");
client.println("
");
if(digitalRead(led4)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";}
client.println("" );
client.println("***Iluminaciön Sala***
"+statusLed+"");
client.println("
");
if(digitalRead(led6)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";}
client.println("" );
client.println("***Aire Acondicionado***
"+statusLed+"");
client.println("
");
8/16/2019 Telefon i Cos
8/11
if(digitalRead(led7)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";
}
client.println("" );
client.println("***Alarma***
"+statusLed+"");client.println("
");
if(digitalRead(led8)){
statusLed = "Encendido";
}else{
statusLed = "Apagado";
}
client.println("" );
client.println("***ACTIVAR***
"+statusLed+"");
client.println("
");
client.println("");
client.println("");
client.println("");
readString = "";
client.stop();
}
}
}
}
}
//fin de la codificacion
8/16/2019 Telefon i Cos
9/11
Aplicacion android
para la aplicación android, se uso el ide de MIT APPINVENTOR http://ai2.appinventor.mit.edu debido
a que el ide oficial de android es demasiado pesado y no contabamos con un equipo con las
prestaciones necesarias para su manejo.
En general en el sitio de desarrollo http://ai2.appinventor.mit.edu se introducen graficamente todos los
complementos (imagenes, botones, sensores, layouts), se suben al sitio archivos (imagenes, audio,video) y luego se codifica mediante bloques o llaves de complemento llamados bloques.
Diseño de nuestra aplicacion.
Archivos subidos a la plataforma para ser usados luego.
http://ai2.appinventor.mit.edu/http://ai2.appinventor.mit.edu/http://ai2.appinventor.mit.edu/http://ai2.appinventor.mit.edu/http://ai2.appinventor.mit.edu/http://ai2.appinventor.mit.edu/
8/16/2019 Telefon i Cos
10/11
Y codificacion de la aplicación.
8/16/2019 Telefon i Cos
11/11
En general lo que la aplicacion hace es que inicializa una direccion web para tomarla como url. Luego
consulta su “response content” en forma de query para leer el contenido de la etiqueta de los botones
html, y dependiendo de su repuesta cambia el icono de una imagen a otra ejemplo de lampHigh.png a
lampHigh_ON.png para dar sentido al usuario de la acción que se esta llevando acabo. Al ser esta
consulta bidireccional y el archivo ser generado dinamicamente el usuario al presionar un boton el
cambio se refleja tambien en la direccion android-arduino dando la sensación de control.