miércoles, 21 de enero de 2015

Domos - Enviando la temperatura con Arduino

Recapitulemos. Mi intención es crear un sistema domótico de andar por casa, o sea de bajísimo coste. Solo pretendo dos cosas: Ver la temperatura a distancia y encender una estufa de pellets que no está preparada para ello y de hecho me lo pone difícil porque no va a ser suficiente con darle corriente con un relé porque ella al recibir corriente se queda en off.

De momento tengo hecha una aplicación colgada en Internet que hace de puente. Esto podemos verlo en los capítulos anteriores. En el último capítulo vimos esta aplicación servidora.

  Capítulo anterior: http://luisetemiravalles.blogspot.com.es/2014/12/domos-segundo-paso-crear-la-aplicacion.html

Hacía mucho tiempo que no avanzaba en este proyecto porque estaba esperando que me llegara un chip Arduino. Por fin ha llegado.

Lo que he hecho en este paso es crear un circuito con un programa asociado que lea la temperatura y se la envie periódicamente a la aplicación que hace de puente (EL servidor).

El material necesario ha sido el siguiente:

  1. Chip Arduino:  10€
  2. Sensor de temperatura RHT11: 2€
  3. Shield Ethernet: 17€
  4. Cables: 1€
En el futuro necesitaré una fuente de alimentación

El programa que hace funcionar este circuito es el siguiente:

/*
*  Sensor de Temperatura que registra el valor en Internet llamando a la
*  aplicación con la URL
*      http://php-domos.rhcloud.com/insert.php?sensor=1236&valor=xx
*/
#include "DHT.h"
#include "SPI.h"
#include "Ethernet.h"

char server[]= "php-domos.rhcloud.com";
char query[]="GET /insert.php?sensor=1236&valor=%d HTTP/1.1";
char host[]="Host: php-domos.rhcloud.com";

#define DHTPIN 2  
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,6);
EthernetClient client;

void setup() {
  Serial.begin(9600);
  dht.begin();
  if(Ethernet.begin(mac)==0) {
     Serial.println("Error inicializando!");
     Ethernet.begin(mac, ip);
  }
  delay(1000);
}

void loop() {

  int t = (int)dht.readTemperature();
  Serial.print("Leida la temperatura:");
  Serial.println(t);
  if(client.connect(server, 80)) {
    char aux[256];
    Serial.println("Conectado");
    sprintf(aux, query, t);
    client.println(aux);
    client.println(host);
    client.println("Connection: close");
    client.println();
    client.stop();
  } else {
    Serial.println("Error conectando");
  }
    delay(60 * 1000);
  
}

El esquema del circuito es sencillísimo. La shield Ethernet se enchufa directamente, y el sensor de temperatura DHT.11 es muy fácil de conectar. Hay que bajarse una librería para controlarlo. Busca en Google "Arduino DHT11" y encontrarás multitud de esquemas, enlaces a la librerías necesarias, videos, etc.

Al poner este circuito en marcha enviará la temperatura al servidor cada minuto y podré consultarla en cualquier momento desde la URL ya conocida; http://php-domos.rhcloud.com/query.php.

Como además guardo todos los datos que recibo podré también crear un gráfico de la tendencia de la temperatura, con el tiempo en el eje X y la temperatura en el Eje Y.

Siguientes pasos:


  1. Copiar los códigos del mando a distancia de la estufa y hacer un circuito que haga lo mismo que el mando a distancia de la estufa para así poder automatizar su encendido.
  2. Conseguir un Router y un pincho con tarjeta 3G para poder disponer de Internet en la casa del pueblo (Allí no llega el internet por cable). En Simyo tenemos una tarifa baratísima:300MB por 2,15€ al mes. Con eso será suficiente. En Amazon tenemos un Router por 25€ que tiene conexiones Ethernet necesarias y permite enchufarle un pincho 3G que tendré también que conseguir.





No hay comentarios:

Publicar un comentario