Telefon i Cos

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.