Cultivo con Arduino + LED

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Actualizo el código y dejo un vídeo, he puesto todo en una tabla por comodidad y he añadido el sensor DHT22.
Código:
/*
VERSION: 2.2 (Arduino MEGA)
AUTOR: hiddenotebook
USO: Este sketch es un cultivo autonomo avanzado.

Agradecimientos:
 En especial por su gran ayuda a colaboradores del foro http://forum.arduino.cc
- surbyte, por sus multiples aportaciones sin duda una gran persona.
- noter, Por hacer posible el uso correcto del LCD

Licencia:
 Este sketch es Libre para mejorar y compartir! Se prohibe su uso con fines comerciales sin autorizacion del autor.
 */
#include <LiquidCrystal.h>  // Libreria para LCD
#include <Wire.h>  // Libreria comunicacion I2C
#include "RTClib.h"  // Libreria RTC
#include "DHT.h"  // Librería DHT

  // RELAY PUMP1
  #define RELAY_ON 0
  #define RELAY_OFF 1
  #define RELAY_1 39
  // END RELAY PUMP1
 
  // DHT22
  #define DHTPIN 25  //Seleccionamos el pin en el que se conectará el sensor
  #define DHTTYPE DHT22  //Se selecciona el DHT22(hay otros DHT)
  DHT dht(DHTPIN, DHTTYPE); //Variable usada para comunicarse con el sensor
  // END DHT22
 
  LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Asigniacion de pines para LCD Keypad Shield.
  RTC_DS1307 RTC;  // Creamos objeto reloj RTC.
  bool PowerON = false;  // Variable booleana para el encendido.
  int sensorHumedad;  // Variable para SoilSensor.
  int histeresis = 5;  // Margen de riego.
  // Array para mostrar los dias de la semana gracias a surbyte.
  const char* diaDeSemana[7]= {"Domingo", "Lunes", "Martes", "Miercol","Jueves", "Viernes", "Sabado"};
 
  // Creamos un nuevo caracter una gota de agua para el LCD
  byte newChar[8] =
  {
  B00000,
  B00100,
  B01110,
  B11111,
  B11111,
  B11111,
  B01110,
  B00000
  };
 
// Configuracion:
void setup()
{
  // POWER ON/OFF ATX:
  pinMode(53,OUTPUT);  // Para usar un LED de encendido.
  pinMode(23, OUTPUT);  // Para encender la fuente con un LOW.
  digitalWrite(23, HIGH);  // Inicia la Fuente apagada.
  pinMode(45, INPUT_PULLUP); // Para leer el boton.
  // END POWER ON/OFF ATX.

  // RELAY PUMP1
  pinMode(RELAY_1, OUTPUT);
  // END RELAY PUMP1

  dht.begin();  //Se inicia el sensor DHT22
  Wire.begin();  // Inicia el puerto I2C.
  RTC.begin();  // Inicia la comunicacion con el RTC.
  lcd.createChar(0, newChar);
  lcd.begin(16, 2); // Inicia LCD 16X2.
  lcd.clear();  // Limpiamos la pantalla.
  // Establece la fecha y hora, Comentar una vez establecida la hora!! Descomentar para establecer hora.
  // RTC.adjust(DateTime(2015,06,13, 21,44,00));
} // Cerramos la llave de la configuracion.

// Funciones
void loop() // Esta funcion se mantiene en bucle...
{
  // POWER ON OFF ATX:
  bool boton = digitalRead(45);
   
  if (boton == LOW)
  {
  digitalWrite(23, PowerON);  // Como el pin va invertido, lo establecemos antes de cambiar el estado.
  PowerON = ! PowerON ;  // Ivertimos el estatus de la fuente.
  digitalWrite(53, PowerON);  // Encender o apagar el LED.
  }
  // END POWER ON OF ATX.

  sensorHumedad = analogRead(A15); // Leemos sensor de suelo, entrada analogica pin A15:
  sensorHumedad = map (sensorHumedad, 0, 1023, 100, 0); // Mapeamos el valor del sensor de 0 a 100.

  int h = dht.readHumidity();  //Se lee la humedad DHT22
  int t = dht.readTemperature(); //Se lee la temperatura DHT22
 
  // TIME LCD
  DateTime now = RTC.now();  // Obtiene la fecha y hora del RTC.
  lcd.setCursor(8, 0);  // Cursor en fila 1 posicion 1.
  char myBuffer[16];  // Creamos myBuffer para mostrar bien los dijitos del 1 al 9.
  sprintf(myBuffer, "%02d:%02d", now.hour(), now.minute());
  lcd.print(myBuffer);  // Muestra la hora, minutos y segundos.
  lcd.setCursor(0, 0);  // Cursor en fila 1 posicion 12.
  lcd.print(diaDeSemana[now.dayOfWeek()]); // Muestra dia de la semana.
  // END TIME LCD
 
  // SOIL_SENSOR LCD
  lcd.setCursor(0, 1);  // Cursor en fila 2 posicion 1.
  lcd.write((byte)0);  // Muestra una gota de agua.
  lcd.print(sensorHumedad);  // Muestra valor leido de humedad.
  lcd.print("% ");  // Muestra Signo de %
  // END SOIL_SENSOR LCD

  // DHT22 LCD
  lcd.setCursor(6, 1);  // Cursor en fila 2 posicion 1.
  lcd.print(t);  // Muestra la temperatura.
  lcd.print((char)223);  // Simbolo de los grados.
  lcd.print("C  ");  // La C de centigrados
  lcd.print(h);  // Muestta la Humedad
  lcd.print("%");  // Simbolo de %
  lcd.println("H");  // Muestra caracter H  
  // END DHT22 LCD
 
  // RELAY BOMBA1  
  if (sensorHumedad < 85)
  {
  digitalWrite(RELAY_1, RELAY_ON);
  }
  if (sensorHumedad > (85 + histeresis))
  {
  digitalWrite(RELAY_1, RELAY_OFF);
  }
  // END RELAY BOMBA1
 
} // Cerramos la llave del bucle y vuelve arriba.

Jajaja me ha gustado eso de crear caracteres no pongo los que hice por respeto jajaja os dejó la foto del carácter que acabo de hacer un reloj para la hora.

 
Última edición:

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Me estreno en el foro para felicitarte tio!!

Increible lo que estás apretando ese arduino jajaja

Hace tiempo que a mi me ronda una idea parecida por la cabeza, un cultivo totalmente autosuficiente. Cuando digo totalmente me refiero a meter dos paneles fotovoltaicos junto a un rack de baterías y poder usar los paneles cuando haga sol para encender las luces y en caso de no disponer de sol tirar de baterías. Eso sería ya la hostia.

Por cierto, el ciclo de hysteresis deberías hacerlo más grande, no? Tendrás muchas encendidas y apagadas, las plantas capaz que estarían siempre humedad.. Capaz que es mejor programarlo como que cuando baje de x valor regar durante unos minutos que puedas preestablecer o simplemente tirar tantos litros (he visto que puedes medir cabal) en función del tiesto que tenemos. También tendrás que apañar mejor esa goma de goteo para repartir mejor y cubrir más área jeje.

He visto que tenéis problemas con lo del sensor de temperatura. Lo que más se acostumbra a utilizar es una cosa llamada tremopar. Es minúsculo y barato. Consiste en una resistencia eléctrica que varia en función de la temperatura. El problema que puedes tener es que tal vez tengas que acondicionar la señal, es decir, no es conectar y disfrutar. Tendrías que mirar el rango al que trabaja/oscila y necesitarías un pin analógico del arduino para tratarlo. Lo bueno es que tendrías mucha precisión y es casi instantáneo.

Bueno, he visto esto y me he emocionado jajaja Voy a hacer una leída más detenida. Ya me iré pasando. Si hay algún tema técnico relacionado con electrónica y electricidad es posible que pueda ayudarte.

Me has incitado a ponerme a diseñar algo.. veremos! jeje

Un saludo.
Uno de mis objetivos es precisamente poner paneles solares porque vivo en el último piso y tengo acceso a la azotea cultivar con la energía del sol sería lo suyo. Tengo pensado hacer los paneles desde 0

Veo que entiendes Bienvenido hermano aquí te esperamos para ver tus sugerencias en electrónica no estoy muy puesto así que tu ayuda será muy valiosa.

 
Última edición:

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Hoy me esta dando tiempo a adelantar muchas cosas ahora e integrado el ethernet shield de momento para hacer pruebas me sirve hasta que tenga el wifi

Os dejo el vídeo de la prueba 9


y el código:

Código:
/*
FECHA: 14/06/1015
AUTOR: hiddenotebook
VERSION: V2.2
USO: Este sketch es un cultivo autonomo avanzado, usando un Arduino MEGA2560

Agradecimientos:
 En especial por su gran ayuda a colaboradores del foro http://forum.arduino.cc
- surbyte, por sus multiples aportaciones sin duda una gran persona.
- noter, Por hacer posible el uso correcto del LCD

Licencia:
 Este sketch es Libre para mejorar y compartir! Se prohibe su uso con fines comerciales sin autorizacion del autor.
 */
#include <LiquidCrystal.h> // Libreria para LCD.
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>  // Libreria comunicacion I2C.
#include "RTClib.h"  // Libreria RTC.
#include "DHT.h"  // Librería DHT.

  // RELAY PUMP1
  #define RELAY_ON 0
  #define RELAY_OFF 1
  #define RELAY_1 39
  // END RELAY PUMP1
 
  // DHT22
  #define DHTPIN 25  // Seleccionamos el pin en el que se conectará el sensor.
  #define DHTTYPE DHT22  // Se selecciona el DHT22(hay otros DHT).
  DHT dht(DHTPIN, DHTTYPE); // Variable usada para comunicarse con el sensor DHT22.
  // END DHT22
 
  // ETHERNET
  byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
  IPAddress ip(169, 254, 48, 41); //IP
  EthernetServer servidor(80); // Puerto HTTP estándar

  int PIN_LED= 13;
  String readString=String(30); //lee los caracteres de una secuencia en una cadena.
  String state=String(3);//Los strings se representan como arrays de caracteres (tipo char)
  // END ETHERNET
 
  LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Asigniacion de pines para LCD Keypad Shield.
  RTC_DS1307 RTC;  // Creamos objeto reloj RTC.
  bool PowerON = false;  // Variable booleana para el encendido.
  int sensorHumedad;  // Variable para SoilSensor.
  int histeresis = 5;  // Margen de riego.
  // Array para mostrar los dias de la semana gracias a surbyte.
  const char* diaDeSemana[7]= {"Domingo", "Lunes", "Martes", "Miercoles","Jueves", "Viernes", "Sabado"};
 
  // Creamos un par de caracteres, gota de agua y reloj para el LCD.
  byte Drop[8] =
  {
  B00000,
  B00100,
  B01110,
  B11111,
  B11111,
  B11111,
  B01110,
  B00000
  };

  byte Clock[8] =
  {
  B01110,
  B11011,
  B11011,
  B11000,
  B11111,
  B11111,
  B01110,
  B00000
  };

// Configuracion:
void setup()
{
  // POWER ON/OFF ATX:
  pinMode(53,OUTPUT);  // Para usar un LED de encendido.
  pinMode(23, OUTPUT);  // Para encender la fuente con un LOW.
  digitalWrite(23, HIGH);  // Inicia la Fuente apagada.
  pinMode(45, INPUT_PULLUP); // Para leer el boton.
  // END POWER ON/OFF ATX.

  // RELAY PUMP1
  pinMode(RELAY_1, OUTPUT);
  // END RELAY PUMP1
   
  //ETHERNET
  Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
  servidor.begin();
 
  pinMode(PIN_LED,OUTPUT);
  digitalWrite(PIN_LED,LOW);
  state="OFF";
  // END ETHERNET

  dht.begin();  //Se inicia el sensor DHT22.
  Wire.begin();  // Inicia el puerto I2C.
  RTC.begin();  // Inicia la comunicacion con el RTC.
  lcd.createChar(0, Drop);
  lcd.createChar(1, Clock);
  lcd.begin(16, 2); // Inicia LCD 16X2.
  lcd.clear();  // Limpiamos la pantalla.
  // Establece la fecha y hora, Comentar una vez establecida la hora!! Descomentar para establecer hora.
  // RTC.adjust(DateTime(2015,06,13, 21,44,00));
} // Cerramos la llave de la configuracion.

// Funciones
void loop() // Esta funcion se mantiene en bucle...
{
  // POWER ON/OFF ATX:
  bool boton = digitalRead(45); // Variale booleana para leer el boton.

  if (boton == LOW)
  {
  digitalWrite(23, PowerON);  // Como el pin va invertido, lo establecemos antes de cambiar el estado.
  PowerON = ! PowerON ;  // Ivertimos el estatus de la fuente.
  digitalWrite(53, PowerON); // Encender o apagar el LED.
  }
  // END POWER ON/OFF ATX.
 
  // ETHERNET
  //EthernetClient Crea un cliente que se puede conectar a una dirección específica de Internet IP
  EthernetClient cliente= servidor.available();
 
  if(cliente) {
   
  boolean lineaenblanco=true;
  while(cliente.connected()) {
   
  if(cliente.available()) {
   
  char c=cliente.read();
 
  if(readString.length()<30) {
   
  readString.concat(c);
  //Cliente conectado
  //Leemos petición HTTP caracter a caracter
  //Almacenar los caracteres en la variable readString
}
  if(c=='\n' && lineaenblanco) //Si la petición HTTP ha finalizado
{
  int LED = readString.indexOf("LED=");
 
  if(readString.substring(LED,LED+5)=="LED=T") {
   
  digitalWrite(PIN_LED,HIGH);
  state="ON"; }
   
  else if (readString.substring(LED,LED+5)=="LED=F") {
   
  digitalWrite(PIN_LED,LOW);
  state="OFF";
}
  //Cabecera HTTP estándar
  cliente.println("HTTP/1.1 200 OK");
  cliente.println("Content-Type: text/html");
  cliente.println(); //Página Web en HTML
  cliente.println("<html>");
  cliente.println("<head>");
  cliente.println("<title>LAMPARA ON/OFF</title>");
  cliente.println("</head>");
  cliente.println("<body width=100% height=100%>");
  cliente.println("<center>");
  cliente.println("<h1>LAMPARA ON/OFF</h1>");
  cliente.print("<br><br>");
  cliente.print("Estado de la lampara: ");
  cliente.print(state);
  cliente.print("<br><br><br><br>");
  cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
  cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
  cliente.println("</center>");
  cliente.println("</body>");
  cliente.println("</html>");
  cliente.stop();
  //Cierro conexión con el cliente.
  readString="";
  }
  }
  }
  }
  // END ETHERNET

  sensorHumedad = analogRead(A15); // Leemos sensor de suelo, entrada analogica pin A15:
  sensorHumedad = map (sensorHumedad, 0, 1023, 100, 0); // Mapeamos el valor del sensor de 0 a 100.

  int h = dht.readHumidity();  //Se lee la humedad DHT22.
  int t = dht.readTemperature(); //Se lee la temperatura DHT22.

  // TIME LCD
  DateTime now = RTC.now();  // Obtiene la fecha y hora del RTC.
  lcd.setCursor(10, 0);  // Cursor en fila 10 posicion 1.
  lcd.write((byte)1);  // Muestra el caracter creado reloj.
  lcd.setCursor(11, 0);  // Cursor en fila 11 posicion 1.
  char myBuffer[16];  // Creamos myBuffer para mostrar bien los dijitos del 1 al 9.
  sprintf(myBuffer, "%02d:%02d", now.hour(), now.minute());
  lcd.print(myBuffer);  // Muestra la hora, minutos y segundos.
  lcd.setCursor(0, 0);  // Cursor en fila 1 posicion 12.
  lcd.print(diaDeSemana[now.dayOfWeek()]); // Muestra dia de la semana.
  // END TIME LCD

  // SOIL_SENSOR LCD
  lcd.setCursor(0, 1);  // Cursor en fila 2 posicion 1.
  lcd.write((byte)0);  // Muestra la gota de agua.
  lcd.print(sensorHumedad); // Muestra valor leido de humedad.
  lcd.print("% ");  // Muestra Signo de %
  // END SOIL_SENSOR LCD

  // DHT22 LCD
  lcd.setCursor(6, 1);  // Cursor en fila 2 posicion 1.
  lcd.print(t);  // Muestra la temperatura.
  lcd.print((char)223);  // Simbolo de los grados.
  lcd.print("C  ");  // La C de centigrados.
  lcd.print(h);  // Muestta la Humedad.
  lcd.print("%");  // Muestra simbolo de %
  lcd.println("H");  // Muestra caracter H
  // END DHT22 LCD

  // RELAY BOMBA1
  if (sensorHumedad < 85) // Si el sensor detecta menos de 80%H
  {
  digitalWrite(RELAY_1, RELAY_ON);  // Activamos rele y bomba
  }
  if (sensorHumedad > (85 + histeresis))// Si detecta mas de 90%H
  {
  digitalWrite(RELAY_1, RELAY_OFF); // Apaga el rele y la bomba
  }
  // END RELAY BOMBA1
 
} // Cerramos la llave del bucle y vuelve arriba.
 

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Les dejo una prueba de riego mucho mejor que la anterior con este motor de 220V no hay interferencias con la medida de la humedad del suelo, riega mejor y en menos tiempo porque tiene mas potencia, sera la bomba definitiva por varias razones, son bombas de acuario y tienen mucha demanda con lo que son muy económicas al igual que la fuente ATX.


Código:
/*
FECHA: 14/06/1015
AUTOR: hiddenotebook
VERSION: V2.2
USO: Este sketch es un cultivo autonomo avanzado, usando un Arduino MEGA2560

Agradecimientos:
En especial por su gran ayuda a colaboradores del foro http://forum.arduino.cc
- surbyte, por sus multiples aportaciones sin duda una gran persona.
- noter, Por hacer posible el uso correcto del LCD

Licencia:
Este sketch es Libre para mejorar y compartir! Se prohibe su uso con fines comerciales sin autorizacion del autor.
*/
#include <LiquidCrystal.h> // Libreria para LCD.
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>         // Libreria comunicacion I2C.
#include "RTClib.h"      // Libreria RTC.
#include "DHT.h"        // Librería DHT.

  // RELAY PUMP1
  #define RELAY_ON 0
  #define RELAY_OFF 1
  #define RELAY_1 39
  // END RELAY PUMP1

  // DHT22
  #define DHTPIN 25         // Seleccionamos el pin en el que se conectará el sensor.
  #define DHTTYPE DHT22     // Se selecciona el DHT22(hay otros DHT).
  DHT dht(DHTPIN, DHTTYPE); // Variable usada para comunicarse con el sensor DHT22.
  // END DHT22

  // ETHERNET
  byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
  IPAddress ip(169, 254, 48, 41); //IP
  EthernetServer servidor(80); // Puerto HTTP estándar

  int PIN_LED= 13;
  String readString=String(30); //lee los caracteres de una secuencia en una cadena.
  String state=String(3);//Los strings se representan como arrays de caracteres (tipo char)
  // END ETHERNET

  LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Asigniacion de pines para LCD Keypad Shield.
  RTC_DS1307 RTC;                     // Creamos objeto reloj RTC.
  bool PowerON = false;              // Variable booleana para el encendido.
  int sensorHumedad;                // Variable para SoilSensor.
  int histeresis = 5;              // Margen de riego.
  // Array para mostrar los dias de la semana gracias a surbyte.
  const char* diaDeSemana[7]= {"Domingo", "Lunes", "Martes", "Miercoles","Jueves", "Viernes", "Sabado"};

  // Creamos un par de caracteres, gota de agua y reloj para el LCD.
  byte Drop[8] =
  {
    B00000,
    B00100,
    B01110,
    B11111,
    B11111,
    B11111,
    B01110,
    B00000
  };

    byte Clock[8] =
  {
    B01110,
    B11011,
    B11011,
    B11000,
    B11111,
    B11111,
    B01110,
    B00000
  };

// Configuracion:
void setup()
{
    // POWER ON/OFF ATX:
    pinMode(53,OUTPUT);        // Para usar un LED de encendido.
    pinMode(23, OUTPUT);       // Para encender la fuente con un LOW.
    digitalWrite(23, HIGH);    // Inicia la Fuente apagada.
    pinMode(45, INPUT_PULLUP); // Para leer el boton.
    // END POWER ON/OFF ATX.

    // RELAY PUMP1
    pinMode(RELAY_1, OUTPUT);
    // END RELAY PUMP1
  
      //ETHERNET
  Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
  servidor.begin();

  pinMode(PIN_LED,OUTPUT);
  digitalWrite(PIN_LED,LOW);
  state="OFF";
  // END ETHERNET

    dht.begin();      //Se inicia el sensor DHT22.
    Wire.begin();     // Inicia el puerto I2C.
    RTC.begin();      // Inicia la comunicacion con el RTC.
    lcd.createChar(0, Drop);
    lcd.createChar(1, Clock);
    lcd.begin(16, 2); // Inicia LCD 16X2.
    lcd.clear();      // Limpiamos la pantalla.
    // Establece la fecha y hora, Comentar una vez establecida la hora!! Descomentar para establecer hora.
    // RTC.adjust(DateTime(2015,06,13, 21,44,00));
} // Cerramos la llave de la configuracion.

// Funciones
void loop() // Esta funcion se mantiene en bucle...
{
   // POWER ON/OFF ATX:
   bool boton = digitalRead(45); // Variale booleana para leer el boton.

   if (boton == LOW)
  {
     digitalWrite(23, PowerON);   // Como el pin va invertido, lo establecemos antes de cambiar el estado.
     PowerON = ! PowerON ;       // Ivertimos el estatus de la fuente.
     digitalWrite(53, PowerON); // Encender o apagar el LED.
  }
  // END POWER ON/OFF ATX.

  // ETHERNET
  //EthernetClient Crea un cliente que se puede conectar a una dirección específica de Internet IP
  EthernetClient cliente= servidor.available();

  if(cliente) {
  
    boolean lineaenblanco=true;
    while(cliente.connected()) {
    
  if(cliente.available()) {
  
    char c=cliente.read();

  if(readString.length()<30) {
  
    readString.concat(c);
  //Cliente conectado
  //Leemos petición HTTP caracter a caracter
  //Almacenar los caracteres en la variable readString
}
  if(c=='\n' && lineaenblanco) //Si la petición HTTP ha finalizado
{
    int LED = readString.indexOf("LED=");

  if(readString.substring(LED,LED+5)=="LED=T") {
  
    digitalWrite(PIN_LED,HIGH);
    state="ON"; }
  
  else if (readString.substring(LED,LED+5)=="LED=F") {
  
    digitalWrite(PIN_LED,LOW);
    state="OFF";
}
  //Cabecera HTTP estándar
  cliente.println("HTTP/1.1 200 OK");
  cliente.println("Content-Type: text/html");
  cliente.println(); //Página Web en HTML
  cliente.println("<html>");
  cliente.println("<head>");
  cliente.println("<title>LAMPARA ON/OFF</title>");
  cliente.println("</head>");
  cliente.println("<body width=100% height=100%>");
  cliente.println("<center>");
  cliente.println("<h1>LAMPARA ON/OFF</h1>");
  cliente.print("<br><br>");
  cliente.print("Estado de la lampara: ");
  cliente.print(state);
  cliente.print("<br><br><br><br>");
  cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
  cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
  cliente.println("</center>");
  cliente.println("</body>");
  cliente.println("</html>");
  cliente.stop();
  //Cierro conexión con el cliente.
  readString="";
        }
      }
    }
  }
  // END ETHERNET

  sensorHumedad = analogRead(A15); // Leemos sensor de suelo, entrada analogica pin A15:
  sensorHumedad = map (sensorHumedad, 0, 1023, 100, 0); // Mapeamos el valor del sensor de 0 a 100.

    int h = dht.readHumidity();    //Se lee la humedad DHT22.
    int t = dht.readTemperature(); //Se lee la temperatura DHT22.

  // TIME LCD
  DateTime now = RTC.now();  // Obtiene la fecha y hora del RTC.
  lcd.setCursor(10, 0);      // Cursor en fila 10 posicion 1.
  lcd.write((byte)1);        // Muestra el caracter creado reloj.
  lcd.setCursor(11, 0);      // Cursor en fila 11 posicion 1.
  char myBuffer[16];         // Creamos myBuffer para mostrar bien los dijitos del 1 al 9.
  sprintf(myBuffer, "%02d:%02d", now.hour(), now.minute());
  lcd.print(myBuffer);       // Muestra la hora, minutos y segundos.
  lcd.setCursor(0, 0);       // Cursor en fila 1 posicion 12.
  lcd.print(diaDeSemana[now.dayOfWeek()]); // Muestra dia de la semana.
  // END TIME LCD

  // SOIL_SENSOR LCD
  lcd.setCursor(0, 1);        // Cursor en fila 2 posicion 1.
  lcd.write((byte)0);        // Muestra la gota de agua.
  lcd.print(sensorHumedad); // Muestra valor leido de humedad.
  lcd.print("% ");         // Muestra Signo de %
  // END SOIL_SENSOR LCD

  // DHT22 LCD
  lcd.setCursor(6, 1);     // Cursor en fila 2 posicion 1.
  lcd.print(t);           // Muestra la temperatura.
  lcd.print((char)223);  // Simbolo de los grados.
  lcd.print("C  ");     // La C de centigrados.
  lcd.print(h);        // Muestta la Humedad.
  lcd.print("%");     // Muestra simbolo de %
  lcd.println("H");  // Muestra caracter H
  // END DHT22 LCD

  // RELAY BOMBA1
  if (sensorHumedad < 85) // Si el sensor detecta menos de 80%H
  {
      digitalWrite(RELAY_1, RELAY_ON);  // Activamos rele y bomba
  }
  if (sensorHumedad > (85 + histeresis))// Si detecta mas de 90%H
  {
      digitalWrite(RELAY_1, RELAY_OFF); // Apaga el rele y la bomba
  }
  // END RELAY BOMBA1

} // Cerramos la llave del bucle y vuelve arriba.
Esto va cogiendo color ya parece que va funcionando todo en cuanto termine el foco y algunas cosas mas ya tendre un cultivo bastante serio, Cuando regule el PH y fertilize solo sera la super polla yo llevo cultivando desde los 18 ó 19 años asi que estoy un poco cansado del trabajo que da esto al principio es la novedad y tal pero ya con famila y curro y todo el trajin esto va a ser una ayuda cojonuda para que yo gaste menos tiempo cuidando plantas tiempo que no tengo claro porque a mi cuidar las plantas me encanta, ahora cuando llegas de currar hasta los cojones seamos claros, y ves que tienes que regar y ponerte a mezclar cosas y demas pues no sienta nada bien. ya os digo que siempre me gusto hacerlo pero con un hijo la cosa ha cambiado ya que no tengo suficiente tiempo ni para dormir 8 horas con eso lo digo todo.

Un abrazo y espero mas comentarios que me encanta!! Bless
 
Última edición:
  • 👍
Reacciones: alejokaban

Gory

Cogollito
12 Mayo 2006
288
177
53
@Zion Lion Prueba cuando lo hagas desde el movil a activar la opcion de "ver como ordenador" en el navegador del movil y luego accede a tu sistema, a ver si asi te va, un saludo y enhorabuena macho, te lo estas currando.
 
  • 👍
Reacciones: Zion Lion

Papa Oscar

Semilla
16 Junio 2015
2
2
3
63
Hola Zion Lion. tomo asiento en este tu proyecto, pues acabo de empezar en este mundo, y despues de leer bastante me decidi por indor( construccion casera) + led´s ( construccion casera ) + automatismos programadores de tiempo.
Lo de los automatismos con pc ó este tipo de programadores multiusos de programacion abierta tambien lo contemple, pero al no encontrar proyectos terminados o muy complicados lo descarte( hasta que encontre el tuyo). y aunque no entiendo nada de programacion, seguro que algo aprendere. donde mas podre aportar sera en temas bricoleros y automatismos .
Asi que desde aqui te animo a seguir y terminar tu proyecto ,como no con la ayuda de toda la comunidad de este y otros foros a los que tambien agradezco su aportacion.
Saludos
 
  • 👍
Reacciones: Zion Lion

puni

Semilla
3 Junio 2015
53
8
8
42
Puedo echar una mano con estas cosas, una pregunta, esto puede aguantar poner muchos leds en serie para el cultivo en interior?
 
  • 👍
Reacciones: Zion Lion

tupie

Semilla
14 Junio 2012
66
22
8
Si señor, muy interesante. Yo empecé un proyecto similar, solo que me interesaba guardar los datos así que conecté el arduino a una raspberry. Con eso lo guardaba en un server mysql y construía gráficas de temperatura y humedad en una web que podía acceder en local o remoto. Por diversos asuntos lo deje de lado mientras probaba a introducir ordenes en el arduino desde la raspberry, por consola o con botones en la web.
 
  • 👍
Reacciones: Zion Lion

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
@Zion Lion Prueba cuando lo hagas desde el movil a activar la opcion de "ver como ordenador" en el navegador del movil y luego accede a tu sistema, a ver si asi te va, un saludo y enhorabuena macho, te lo estas currando.
Vale voy a probar hoy vi algunas fotos y el Ethernet tiene que estar conectado al router, por eso siempre digo que voy a necesitar un wifi ya estoy en eso para no usar cables

Hola Zion Lion. tomo asiento en este tu proyecto, pues acabo de empezar en este mundo, y despues de leer bastante me decidi por indor( construccion casera) + led´s ( construccion casera ) + automatismos programadores de tiempo.
Lo de los automatismos con pc ó este tipo de programadores multiusos de programacion abierta tambien lo contemple, pero al no encontrar proyectos terminados o muy complicados lo descarte( hasta que encontre el tuyo). y aunque no entiendo nada de programacion, seguro que algo aprendere. donde mas podre aportar sera en temas bricoleros y automatismos .
Asi que desde aqui te animo a seguir y terminar tu proyecto ,como no con la ayuda de toda la comunidad de este y otros foros a los que tambien agradezco su aportacion.
Saludos
Bienvenido amigo muchas gracias para seguir este proyecto no hace falta saber programar el código lo pongo porque con cargarlo en Arduino ya esta hecho el trabajo, eso sí hay que conectar todo como yo lo hago y por eso voy poniendo el esquema de conexiones, y si quedan dudas a preguntar el caso es aprender cosas nuevas entre todos.

Por cierto como automático quiero poner el foco que suba y baje solo a la altura de la planta con un sensor de distancia y un servo.
Puedo echar una mano con estas cosas, una pregunta, esto puede aguantar poner muchos leds en serie para el cultivo en interior?
Creo que puedes usar la fuente atx para alimentar LEDs pero yo no he probado... buena pregunta tengo que probar lo mismo me ahorro los drivers

Si señor, muy interesante. Yo empecé un proyecto similar, solo que me interesaba guardar los datos así que conecté el arduino a una raspberry. Con eso lo guardaba en un server mysql y construía gráficas de temperatura y humedad en una web que podía acceder en local o remoto. Por diversos asuntos lo deje de lado mientras probaba a introducir ordenes en el arduino desde la raspberry, por consola o con botones en la web.
Y me interesa guardar los datos claro ver el historial de todo ayuda mucho a prevenir cosas en el cultivo tu serías de gran ayuda aquí porque yo ese tema no lo he tocado aún espero que te quedes por aquí jajaja

Por cierto el cultivo que tenía si me descuido ni os lo enseñó porque Ya me lo estoy fumando dejó un par de fotos que tenía en en móvil.



 

alejokaban

Crecimiento
17 Febrero 2013
92
66
23
hola! saludos a todos . Zion brother tremendo trabajo. muchas gracias muchas buenas vibras men :)
qué cosecha taan bonita felicidades felices humos :D

Puedo echar una mano con estas cosas, una pregunta, esto puede aguantar poner muchos leds en serie para el cultivo en interior?

Creo que puedes usar la fuente atx para alimentar LEDs pero yo no he probado... buena pregunta tengo que probar lo mismo me ahorro los drivers

en este mismo tema está este post que hace referencia al tema de la fuente atx y el panel de leds.

http://www.lamarihuana.com/foros/threads/cultivo-con-arduino-led.158187/page-8#post-1499610

el link con el tutorial es: Lampara LED Casera 45W/80W (Con fuente de PC)

dentro de la atx hay voltajes altos,, la info incluye recomendaciones de seguridad ;)


saludos
 
  • 😍
Reacciones: Zion Lion

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Que tal brother @alejokaban aquí andamos, oye una cosa tu me comentaste que hiciste un proyecto con unos robots verdad que se comunicaban vía wifi o bluetooth, pues ahora estoy con esa parte del proyecto con un ESP8266 wifi para controlar todo vía web tu ayuda seria muy valiosa en estos momentos el modulo trabaja con comandos AT+





Bueno pana espero que pronto vuelvas de la montaña y le demos un poco a esto un abrazo.
 
Última edición:
  • 👍
Reacciones: Damn son!

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Seguimos con el foco ya he montado la chapa de la parte trasera donde irá la ventilación









Ahora toca probar espero que no explote nada jajaja



Da una caña importante...



El depósito 100L de agua estoy haciendo pruebas para que no se corrompa y este limpia y oxigenada



La zona de cultivo esta a punto con su riego.



Y Arduino controlando el riego de momento estoy fijandome mucho en este tema para que sea un riego en condiciones.



De momento estos son los avances, con el foco aún queda poner la ventilación, el termostato que pille uno que es la caña y va a quedar de lujo, y falta también poner el sensor de distancia para que suba solo. Nos vemos pronto.
 
Última edición:
  • 😍
Reacciones: Damn son! y raven87

Gory

Cogollito
12 Mayo 2006
288
177
53
Por eso te pregunto, ese no es el lugar apropiado, lo que tu quieres controlar es la temperatura de los leds, lo tienes que poner justo detrás del led que este situado en la zona que más calor irradie, tanto por la posición de los leds como la de la refrigeración y disipador donde van montados la temperatura varía, yo lo que hice fue hacer una rajíta tipo hucha en el disipador y pegue tumbado el sensor con pegamento térmico justo detrás del PCB y encajado en esa rajita, yo lo tengo programado a 40ºC , en invierno o no se enciende la refrigeración o se enciende muy poco, no sobrepasando esos 40ºC que es donde se enciende la refrigeración, y se mantiene ahí, pero ahora en verano está siempre encendido y ronda los 51ºC, según leí en su día y si no mal recuerdo, este tipo de leds llegan a su temperatura crítica a partir de los 80ºC, todo lo que se aproxime a esa temperatura es restarle vida al led, y todo lo que se aleje de esa temperatura será mejor para su vida útil, la refrigeración la tengo centrada en la parte superior de la chapa de mi estructura y tengo aberturas laterales que dejan salir el aire para que no se formen bolsas de aire caliente y la temperatura sea lo mas homogénea posible, espero te sirva de algo, un saludo amigo y a ver si rula ya tu tema del arduino que me tienes peor que las marujas cuando se quedan a medias con el final de la telenovela.
 
Última edición:

Zion Lion

Oldtimer
17 Julio 2013
1.733
3.420
228
45
Claro que me sirve si señor esos consejos me vienen de lujo y te haré caso voy a ponerlo justo detrás de los LED en la chapa y también haré unos taladros a modo de rejilla para que circule el aire.

El Arduino va despacito pero va, en invierno seguro que lo termino que uno pasa más tiempo en casa
 

Gory

Cogollito
12 Mayo 2006
288
177
53
@Zion Lion Cuando coloques el sensor hazlo detrás de un led que es donde mas temperatura registrarás, tu PCB es grande y lo mismo lo pones entre dos leds sin darte cuenta, lo mio son PCBs individuales y no hay error al colocarlo, un saludo.
 
  • 👍
Reacciones: alejokaban

Gory

Cogollito
12 Mayo 2006
288
177
53
Suena muy razonable voy a seguir tus consejos si senor.

Estoy pensando en lijar el panel y pintarlo de blanco mate del todo total tengo compresor y pistola y la pintura con la pistola queda muy pro.
Pues te va a quedar muy bien terminado, total, si lo tienes todo, pues da rienda suelta a tu lado artistico a ver como te queda ;)
 

Gory

Cogollito
12 Mayo 2006
288
177
53
Oye @Zion Lion mirando por youtube he visto un canal de electronica donde explican lo de la tarjeta Ethernet y como manejarlo desde movil o pc, te dejo los enlaces para que les heches un vistazo por si te vienen bien, no se si ya has solucionado los problemas de conexion que tenias, un saludo.
 
Última edición:

alejokaban

Crecimiento
17 Febrero 2013
92
66
23
Que tal brother @alejokaban aquí andamos, oye una cosa tu me comentaste que hiciste un proyecto con unos robots verdad que se comunicaban vía wifi o bluetooth, pues ahora estoy con esa parte del proyecto con un ESP8266 wifi para controlar todo vía web tu ayuda seria muy valiosa en estos momentos el modulo trabaja con comandos AT+





Bueno pana espero que pronto vuelvas de la montaña y le demos un poco a esto un abrazo.


HolA!! buenas vibras :) uuuu brother te está quedando de maravilla, uff buena mano tienes sí señor. felicitaciones!!

Bueno sí una vez hice unos robots (2) que cooperaban, ps se comunicaban con un pc y éste les daba las ordenes.. esa vez usé un standard que se llama zigbee. eso fue ya hace 6 años. ahora ese standard está más evolucionado; y bueno la verdad en esa época lo seleccioné entre los demás (bluetooth, wifi, etc) por su economía y "fácil" manejo.. bueno ahora usaría wifi sin duda alguna ps ya los módulos están más baratos y por su alcance... ps el de zigbee y bluetooth es limitado .

Claro estoy mentalizado a ponerme al día y mejorar la conexión para darle en forma.

Algo que se me ocurre con el termostato es ubicarlo de manera temporal en 2 o 3 partes distintas donde sospechas que se calienta más.. tomar nota de las temps y luego dejarlo en el lugar más sensible, cerca a los leds..

Otra cosa que pienso es que (aunque no he llegado a ese punto) el ethernet shield sirve de transición al wifi. o sea el sistema podría 1ro funcionar con el etheshield y luego ir migrando. Y hasta se podría dejar las dos opciones, por ejm para un indoors en una casa donde no hay internet o modems... ps lo conectas a un pc viejito y ahí vas gestionando y mirando el progreso..

Bueno saludos gente un abrazo felices humos
 

obiwancanabis

Floración
23 Agosto 2014
104
79
33
42
Me estoy animando a hacer un bicho de estos, y asi dedicarle menos tiempo a mis plantikis y nas a mi familia, funcionaria igual con focos de 600w?
 

Cambador

Cogollito
25 Febrero 2015
660
262
53
45
Bueno ..después de pegarme el curro de leerlo todo..jeje llevo dos dias a ratos.
Decir que muchas gracias a @Zion Lion, a @alejokaban y a los que han colaborado aportando algo a este hilo. Me ha resultado muy entretenido y didáctico a la vez que me recordó muchas cosas de cuando estudié electrónica que tenía olvidadas..
Para el año que viene me gustaria hacermelo, igual no tan completo pero si controlando lo mas básico..
El panel led estuve mirando hace meses para hacerme uno para mi primer indoor pero finalmente opté por un 600w hps ya que si me hago el panel será con cobs si es que de aqui a que me decida no hay algo mejor y, por ahora los cobs los veo caros.
 
-