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);
}
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.
ResponderEliminarNo entiendo bien lo que quieres pero mira que ip tiene tu ordenador
ResponderEliminarsi 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.
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.
ResponderEliminarBuenas tienes
ResponderEliminarun arduino uno o mega?
que tipo de sensor tienes DHT11?
Ya me salio gracias pero tenia un Arduino Uno, Shield Ethernet y sensor DHT22
ResponderEliminarUna 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?
ResponderEliminarTe agradecería mucho la respuesta.