miércoles, 3 de mayo de 2017

ARDUINO MEGA CON ETHERNET W5100 CON APLICACION DE PARA ANDROID ENVIANDO Y RECIBIENDO DESDE ARDUINO COMO SERVIDOR

   EN ESTE TUTORIAL TE EXPLICO COMO CONECTAR UN ARDUINO CON ETHERNET CON UNA APLICACIÓN PARA  ANDROID EN LA CUAL VAMOS A ENVIAR Y RECIBIR DATOS DESDE EL ARDUINO COMO SERVIDOR WEB.

  EL ARDUINO CON ETHERNET ESTARÁ CONFIGURADO COMO SERVIDOR Y LA APLICACIÓN PODRÁ CONTROLAR EL DISPOSITIVO A DISTANCIA A TRAVÉS DE INTERNET. 

  PARA QUE LA APLICACIÓN FUNCIONE CUANDO ESTEMOS CONECTADO  A INTERNET FUERA DE CASA  NECESITARAREMOS  HACER LOS SIGUIENTES DOS PASOS.

1º SI NO DISPONEMOS DE UNA IP FIJA, TENDREMOS QUE DAR DE ALTA UNA  DNS, POR EJEMPLO CON NOIP QUE ES GRATUITO Y EN NUESTRO ROUTER CONFIGURARLO PARA QUE ENVIÉ LA DIRECCIÓN IP.

2 º  ABRIREMOS EL PUERTO A LA DIRECCIÓN IP DEL ARDUINO.


COMPONENTES:

ARDUINO MEGA

ETHERNET SHIELD

RELÉ

SENSOR DE ENTRADA, EN ESTE CASO VAMOS A UTILIZAR UN DTH 11 SENSOR DE TEMPERATURA Y HUMEDAD.













IMPORTANTE:

ARDUINO UNO------- NO SE PUEDE CONECTAR NADA EN EL PIN 11,12,13
ARDUINO MEGA----- NO SE PUEDE CONECTAR NADA EN EL PIN 50,51,52
ESTO PINES SERÁN UTILIZADO SHIELD ETHERNET.

LA APLICACIÓN CON APP INVENTOR




CÓDIGO PARA EL ARDUINO


#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 250);// LA IP QUE LE ASIGNAMOS

EthernetServer server(80);
#define DHTTYPE DHT11 //MODELO DE DTH
#define DHTPIN 9 //PIN DONDE CONECTAMOS EL SENSOR DTH11
DHT dht(DHTPIN, DHTTYPE);

int const rele=8;//PIN DONDE CONECTAREMOS EL RELÉ
float h,t;//VARIABLES PARA GUARDAR LA TEMPERATURA Y HUMEDAD

void setup() {
pinMode(rele,OUTPUT);//PIN DE SALIDA RELÉ
Ethernet.begin(mac, ip);//
server.begin();//INICIAMOS EL SERVIDOR
dht.begin();//INICIAMOS ES SENSOR DTH11
}

void loop() {

EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
      if (client.available()) {
      String c = client.readString();
      client.println("HTTP/1.1 200 OK ");
      client.println("Content-Type: text/html");
      client.println("Connection: close");
      client.println();
       
        if (c.indexOf("encender")>=0)
          {
           digitalWrite(rele,HIGH);
          client.println("RELE ENCENDIDO");  
           }
        if (c.indexOf("apagar")>=0)
          {
          digitalWrite(rele,LOW);
          client.println("RELE APAGADO");  
          }
       
        if (c.indexOf("temperatura")>=0)
          {
          leer();
          client.print("Temperatura: ");
          client.print(t);
          client.print(" Humedad: ");
          client.println(h);  
          }
       
         delay(50);
         client.stop();

                      }
                      }
}
}

void leer()
{      // FUNCIÓN PARA LEER EL SENSOR DE HUMEDAD
h = dht.readHumidity();// Leemos la humedad y la guardamos en la variable h
t = dht.readTemperature();//Leemos la temperatura y la guardamos en la variable t
delay(50);
}

6 comentarios:

  1. Estimado, talvez me puedes facilitar este proyecto ya que tengo un problema en la recepcion de las variables hacia la aplicacion en el app inventor.

    ResponderEliminar
  2. No entiendo bien lo que quieres pero mira que ip tiene tu ordenador
    si por ejemplo es 192.168.***.yyy

    byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
    IPAddress ip(192, 168, ***, 250);// LA IP QUE LE ASIGNAMO

    pon xxx el mismo valor que tenga tu ordenador.

    ResponderEliminar
  3. mi problema es que cuando quiero que en la app movil de app inventor muestre la temperatura y la humedad no la muestra no se si me puedes guiar en eso, por que yo quiero visualizar en la aplicacion movil el valor de la temperatura y la humedad.

    ResponderEliminar
  4. Buenas tienes
    un arduino uno o mega?
    que tipo de sensor tienes DHT11?

    ResponderEliminar
  5. Ya me salio gracias pero tenia un Arduino Uno, Shield Ethernet y sensor DHT22

    ResponderEliminar
  6. Una pregunta, ¿conectas directamente la ethernet shield al Arduino mega o aislas los pines 10, 11, 12 y 13 para conectarlos con los pines 50, 51, 52 y 53?
    Te agradecería mucho la respuesta.

    ResponderEliminar