Cultivo con Arduino + LED

alejokaban

Crecimiento
17 Febrero 2013
92
66
23
Hola! buenas vibras. Zion brother fabuloso trabajo!! todo se ve muy bien, ha habido mucho progreso felicitaciones :) perdón por estar ausente y colaborar poco los últimos meses; me he mudado a una finca y han surgido unos compromisos, y un ritmo de trabajo distinto; Zion brother lo siento. Espero participar de una mejor manera.. estoy mentalizado a organizarme mejor los próximos meses, independiente de otras cosas.. ps para cumplir con el deber aquí también :)

Saludos!!
 
  • 👍
Reacciones: Zion Lion

Belda

Semilla
6 Octubre 2015
2
4
3
26
Me he unido al foro por este proyecto, realmente impresionante la implicación desde 0 de alguién con escasas ideas en arduíno y las ganas de mostrarnos a todos sus aventuras jeje. Estoy estudiando Ingeniería Electrónica Industrial y Automática y llevo trasteado bastante con Arduíno por lo que cualquier cosa en la que pueda ayudar, sin problema ninguno. Voy a pedir los los componentes y ponerme a ello.

Cuándo puedas pon el código para ver como va y ya se le puede añadir también la activación del extractor e intractor y el tiempo de luz y de oscuridad. Lo más básico pero más útil.

Un saludoo!!
 

polutin

Gran Cogollo
30 Abril 2012
1.118
1.002
143
Asturies
que buen hilo....solo he leído la primer pagina de momento,,pero seguro que ya habrá cosas muy buenas
curiosamente voy hacer algo similar de momento con hps,,por problemas técnicos mu graves no puedo hacer como quería el cambio a leds :mad:
y no se si usar un portátil jodido que aveces se pone como si tuviese la "z" pulsada,,,,o con arduino

al final los aerogeneradores en que qeudo la cosa???
 

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Me he unido al foro por este proyecto, realmente impresionante la implicación desde 0 de alguién con escasas ideas en arduíno y las ganas de mostrarnos a todos sus aventuras jeje. Estoy estudiando Ingeniería Electrónica Industrial y Automática y llevo trasteado bastante con Arduíno por lo que cualquier cosa en la que pueda ayudar, sin problema ninguno. Voy a pedir los los componentes y ponerme a ello.

Cuándo puedas pon el código para ver como va y ya se le puede añadir también la activación del extractor e intractor y el tiempo de luz y de oscuridad. Lo más básico pero más útil.

Un saludoo!!
De momento la luz la controlo con temporizador estoy en un cultivo ahora. Pero cuando puedo le voy haciendo cosas el Ethernet shield no lo pilles si coges un wifi porque no hace falta. Será un placer compartir en cuanto tenga tiempo un saludo.
 
Última edición:

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
  • 👍
Reacciones: nopongona

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
que buen hilo....solo he leído la primer pagina de momento,,pero seguro que ya habrá cosas muy buenas
curiosamente voy hacer algo similar de momento con hps,,por problemas técnicos mu graves no puedo hacer como quería el cambio a leds :mad:
y no se si usar un portátil jodido que aveces se pone como si tuviese la "z" pulsada,,,,o con arduino

al final los aerogeneradores en que qeudo la cosa???
La tecla se arregla fácil la quitas y la limpias

El generador está también en funcionamiento le saque el motor a un disco duro para hacer pruebas ya veremos que sale de ahí un saludo
 

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Hola! buenas vibras. Zion brother fabuloso trabajo!! todo se ve muy bien, ha habido mucho progreso felicitaciones :) perdón por estar ausente y colaborar poco los últimos meses; me he mudado a una finca y han surgido unos compromisos, y un ritmo de trabajo distinto; Zion brother lo siento. Espero participar de una mejor manera.. estoy mentalizado a organizarme mejor los próximos meses, independiente de otras cosas.. ps para cumplir con el deber aquí también :)

Saludos!!
Disculpado estas hermano ya sabes que tenemos buen flow hay que dejar que la cosa fluya por su propio camino y prisa no hay cuando quieras ponerte a ello aquí estamos ok. Oye que he pensado mandarte yo el módulo wifi y vamos preparando el servidor ok?
 

alejokaban

Crecimiento
17 Febrero 2013
92
66
23
Hola buenas noches :)

Muchas gracias hermano Zion por las buenas vibras, he recibido el mensaje. Bueno ahora mismo estoy probando el ethernet shield, junto con los demás periféricos; la idea es reproducir uno de tus 1ros vídeos donde se controla el riego con un sensor, bomba y ps el LCD shield y todo juntito :) Sí oye a propósito lo coordinamos mi brother; te pediría quizá unos días para un chance de Internet y poder investigar y revisar lo que has puesto sobre el wifi, (sorry!). De igual manera confío brother en tu criterio y ya sabes full receptivo estoy. Por hay que te enviado un mensaje acerca del RTC, estoy en eso.. para integrarlo, wee!

:D

Saludos gente buenas vibras!!!
 

tguilleng

Semilla
11 Noviembre 2015
7
6
3
44
lo primero de todo felicidades a todos los que estais trabajando en este gran proyecto, que aunque Zion sea la cabeza me consta que sois muchos los que aportais vuestro conocimiento y tiempo.

casualidades de la vida estoy intentando hacer el mismo proyecto, pero yo estoy, bueno estaba, jeje, mucho mas verde. pero viendo que no soy el unico loco que le ha dado por aqui, me uno al mega proyecto LED-ARDUINO

Ahora mismo estoy a la espera de la llegada de mis led, una configuracion un tanto especial, obviamente no es la mas barta, pero creo que despues de leer durante horas sobre led, iluminacion, y fisiologia vegetal, esta configuracion puede resultar muy, muy buena. ya verremos.
Os paso a detallar de lo que consta:
-2 unids/lote reptil fluorescente compacta Vivarium luz de la lámpara 10.0 UVB UVA UV 26 W E27 tornillo de la luz P415
-Hidroponía 30 w 7 led grow luces de chip, luz del crecimiento de bricolaje para cultivan / vegetativo / floración (660nm 630nm 470nm 450nm 38nm 730nm 600nm)
-10 W Base cuadrada infrarrojos IR850nm LED , diodos emisores de luz + AC 85 ~ 265 V impermeable del conductor del LED-
-30 W Cree XLamp XP-E rojo( 620-625nm,) planta crece XPE LED de luz 350mA ~ 1000mA-
-3x 10 W 380nm-840nm espectro completo de alta potencia Led crece la lámpara-3x
-30 W 660nm y 470nm Hybrid planta crece la lámpara Led DC24-27V 1A
-2x 10 W alto brillo blanco cálido 3000 - 3200 K Led emisor + 10 W DC12-24V a DC 9 - 11 V 900mA Led Driver

En total me slen unos 172w, obviamente predomina el rojo, y he añadido un poco de UVB y algo de IR, que aunqeu co nlos full spectrum y los 7band estan cubiertos, pero me quedo mas tranquilo, y prefiero hacer una lampara mas grande con l amisma potencia por aquello de abarcar mas radio de luminosidad.

Bueno luego sigo

ciao


 
  • 👍
Reacciones: Zion Lion

tguilleng

Semilla
11 Noviembre 2015
7
6
3
44
solo una apreciacion, para medir el ph es muy importante la temperatura, auqnue creo que sera bastante constante en un interior con el agua dentro del armario, pero pero si esta se ve sometida a grandes cambio si tendras que medir la temperatura y o bien hacerte una tabla de conversion, o cargarsela al arduino,
he visto varios phmeter uno de ellos con sonda de temperatura incorporada, os pongo los precios mas baratos que he encontrado, y tal vez lo más económico sea por separadao, inluyendo una sonda de temperatura

Líquido PH0-14 valor detección del módulo del Sensor + PH electrodo sonda BNC para Arduino
€ 28,05 / unidad Envío gratis

Paquete de acero inoxidable sonda de temperatura DS18b20 impermeable del sensor de temperatura 18B20 para Arduino
€ 1,09 / unidad Envío gratis

Envío gratis de la solución valuo y temperatura del detector sensor módulo arduino mejor calidad
€ 44,50 / unidad
€ 51,75 - 14%
Envío gratis

Líquido de detección de valor detección del módulo del Sensor de Control de vigilancia para arduino
€ 16,21 / unidad Envío gratis

2015 la mejor calidad PH electrodo sonda BNC conector para el acuario PH Controller Meter Sensor gib
€ 5,65 / unidad Envío gratis

 
  • 👍
Reacciones: AraeTamae y Zion Lion

tguilleng

Semilla
11 Noviembre 2015
7
6
3
44
y otra cosilla,para los que tengais problema de altas temperaturas, no se si sabreis, yo lo descubri hace poco, lo del "efecto poltiere o seebeck", pero vamos a groso modo una placa de dos metales difertenes que al pasar la corriente po rellos crea una difencia de temperatura en cada metal, una enfria mucho y la otra calienta mas, con un par de ventiladores se consigue algo asi

Especificaciones:

Nombre del producto: termoeléctrico Peltier Refrigeración refrigeración Kit Cooler System
Energía: 12VDC 6A (no incluir en Este kit)
Color principal: plata
Potencia de enfriamiento: 72 W
Peso neto: 350g

no se si aprecia bien, pero hay un ventialdor grande que es el que mueve el aire frio, y otro abajo mas pequeñoque es el que extrae el calor, dos placa difusoras y la celula en medio, todo se vende suelto
esta seria la celula suelta

vamos un aire acondicionado perfecto para cuartos pequeños de cultivo dandole una pequeña vuelta
 
  • 👍
  • 😲
Reacciones: AraeTamae y Zion Lion

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Hola a todos he estado trabajando en la sombra y con la ayuda de los compañeros del foro Arduino he actualizado algunas cosas el proyecto anda verde aun pero voy por buen camino.

El código avanza con muchos cambios por el camino para ir mejorando y puliendo los tiempos de respuesta.

Código:
/*
FECHA 05/03/2016
NOMBRE DEL PROYECTO: EasyGrowWeed
VERSIÓN: 2.7 (Para Arduino MEGA)
AUTORES: hiddenotebook, Surbyte, Noter del foro Arduino.cc
USO: Este sketch es un cultivo autónomo avanzado.
Fuente: podeis visitar el tema en arduino.cc aqui http://forum.arduino.cc/index.php?topic=303135.0

Agradecimientos:

En especial por su gran ayuda a colaboradores del foro arduino:

- surbyte, por sus múltiples aportaciones sin duda una gran persona.
- noter, Por hacer posible el uso correcto del LCD y por todos sus aportes.

Licencia:
Este sketch es Libre para mejorar y compartir! Se prohibe su uso con fines comerciales sin autorizacion de los autores. */

// TFT:
  #include "Adafruit_GFX.h" // Librerias para pantalla QVGA 2.2 TFT SPI 240*320
  #include "Adafruit_ILI9341.h"

// RTC:
  #include "RTClib.h"  // Cargar Libreria RTC.
  #include <Wire.h>  // Cargar Libreria comunicacion I2C.
  #include "SPI.h"  // Cargar Libreria comunicacion SPI.
  RTC_DS1307 RTC;  // Crear RTC
  const char* DayTXT[7]= {"Domingo ", "Lunes ", "Martes ", "Miercoles ","Jueves ", "Viernes ", "Sabado "};

// DHT22
  #include "DHT.h"  // Cargar Librería DHT.
  #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.

// ARDUINO MEGA:
  #define TFT_DC 47
  #define TFT_CS 48
  #define TFT_RST 49
  Adafruit_ILI9341 tft = Adafruit_ILI9341 (TFT_CS, TFT_DC, TFT_RST);

  // RELAY PUMP1
  #define RELAY_ON 0  // Rele encendido en estado 0
  #define RELAY_OFF 1 // Rele apagado en estado 1
  #define RELAY_1 39  // Rele 1 al pin 39
  // END RELAY PUMP1

  int SoilSensor;  // Variable para sensor humedad en tierra.
  int hysterisis = 10;  // Margen de riego.
  char textBuff[40];  // Buffer Para imprimir datos de sensores en TFT.
  unsigned long updateScreen; // Creamos variable para refrecar la pantalla
  unsigned long  moistureTest; //


// POWER ON/OFF ATX
  bool PowerON = false;  // Variable booleana para el encendido.
  
void setup() {

//-------------- POWER ON/OFF ATX -------------------

  pinMode(44, 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 un boton de encendido.

//-------------- RELAY PUMP1 ------------------------

  pinMode(RELAY_1, OUTPUT); // define el pin 39 como salida activa rele 1 para la bomba.

//-------------- TFT SETTINGS -----------------------
  tft.begin();  // Inicia TFT 2.2"
  tft.setRotation(3);  // Rotación de pantalla.
  tft.setTextWrap(true);  // Si el texto no cabe pasarlo a la siguiente linea.
  tft.fillScreen(ILI9341_BLACK); // Rellenar la pantalla con fondo negro.

//-------------- RTC --------------------------------
  Wire.begin();  // Inicia el puerto I2C.
  RTC.begin();  // Inicia la comunicacion con el RTC.
  // RTC.adjust(DateTime(2015,010,19, 15,51,00));

//-------------- DHT --------------------------------
  dht.begin();  //Se inicia el sensor DHT22.
}

void loop() {

//-------------- POWER ON/OFF ATX -------------------
  bool boton = digitalRead(45);  // Variale booleana para leer el boton.

  if (boton == LOW)  // Si pulsamos el boton
  {
  digitalWrite(23, PowerON);  // Como el pin va invertido, lo establecemos antes de cambiar el estado.
  PowerON = ! PowerON ;  // Ivertimos el estatus de la fuente.
  digitalWrite(44, PowerON); // Encender o apagar el LED.
  delay(300);
  }
//-------------- REFRESH THE SCREEN -------------------

  if (millis() - updateScreen > 1000UL) // Refrescamos la pantalla cada segundo
  {
  display();
  updateScreen = millis();
  }
  if (millis() - moistureTest > 5000UL) // Sondeamos la humedad de la tierra cada 5 segundos
  {
  moistureSampling();
  moistureTest = millis();
  }

}

void display() {

//-------------- RTC --------------------------------

  DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC.

//-------------- DHT --------------------------------

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

// ------------- SOIL SENSOR ------------------------

  SoilSensor = analogRead(A15);
  SoilSensor = map (SoilSensor, 0, 1023, 100, 0);

  //-------------- TFT DISPLAY ----------------------

//(header)
  // DAY ON TEXT:
  tft.setTextColor(ILI9341_GREEN, ILI9341_BLACK);
  tft.setTextSize(2);
  tft.setCursor(0, 0);
  tft.print(DayTXT[now.dayOfWeek()]);
  tft.println(" ");
  tft.setCursor(160, 0);
  tft.println("EasyGrowWeed");

  // DATE:
  char DateBuffer[16];
  sprintf(DateBuffer, "%02d:%02d:%02d", now.day(), now.month(), now.year());
  tft.print(DateBuffer);
  tft.setCursor(160, 19);
  
  // ATX STATE
  tft.print("ATX:  ");
  
  if (PowerON  == LOW)
  {
  tft.print("OFF");
  tft.println(" ");
  }
  
  else
  {
  tft.print("ON");
  tft.println(" ");
  }

  
  // CLOCK RTC:
  char ClockBuffer[16]; // Creamos myBuffer para mostrar bien los dijitos del 1 al 9.
  sprintf(ClockBuffer, "%02d:%02d", now.hour(), now.minute());
  tft.setTextSize(3);
  tft.println(ClockBuffer);
  
  // DATA:
  tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
  tft.setTextSize(2);
  tft.println(" ");
  tft.println("Datos del ambiente:");
  tft.println(" ");

//(body)
  // DHT:
  tft.setTextSize(2);
  tft.print("Humedad aire:  ");
  sprintf(textBuff, "%3d", h); 
  tft.print(textBuff);
  tft.println("%");
  tft.println(" ");
  tft.print("Temperatura aire:");
  sprintf(textBuff, "%3d", t); 
  tft.print(textBuff);
  tft.print((char)247);
  tft.println("C");
  tft.println(" ");
  
//(footer)
  // REFERENCES:
  tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
  tft.setTextSize(1);
  tft.setCursor(15, 220);
  tft.print("http://forum.arduino.cc/index.php?topic=303135.0");
  
//-------------- END TFT ----------------------------

}

void moistureSampling (){

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

  if (SoilSensor < 85) // Si el sensor detecta menos de 80%H
  {
  digitalWrite(RELAY_1, RELAY_ON);  // Activamos rele y bomba
  }
  if (SoilSensor > (85 + hysterisis))// Si detecta mas de 90%H
  {
  digitalWrite(RELAY_1, RELAY_OFF); // Apaga el rele y la bomba
  }
  
  // SOILSENSOR:
  tft.setTextColor(ILI9341_CYAN, ILI9341_BLACK);
  tft.setCursor(0, 170);
  tft.setTextSize(2);
  tft.print("Agua en Sustrato:");
  sprintf(textBuff, "%3d", SoilSensor); 
  tft.print(textBuff);
  tft.println("%");
  tft.println(" ");
}
Este es el código que llevo y aun falta por integrar el wifi y datos web, los sistemas de abonado, el sensor de ultrasonidos para subir el foco automáticamente con su motor, y seguro que me dejo cosas pero os podéis imaginar que si el código es grande lo sera mucho mas.
 
  • 👍
Reacciones: alejokaban

ElramboEspañol

Cogollo
20 Abril 2014
515
397
83
38
wtf chicos, sois los amos, he quedado impresionado con el conocimiento que teneis y como lo habeis aplicado al cultivo, sinceramente yo anunciaria algun microcultivo cn toda esa parafernalia, que podeis sacar dinero haciendo lo que os gusta xddd
 
  • 👍
Reacciones: Zion Lion

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Ya te digo hermano hay mucha gente que me lo ha pedido ya pero no está terminado la gente tiene parcelas y tierras donde no suele ir y quieren un sistema como éste para poder vigilarlo desde su casa sin tener que ir a ver el cultivo cuando esté terminado mucha gente estará interesada en el porque vas a poder hacer casi todo sin estar ni siquiera presente en el cultivo yo creo que hasta las mafias van a interesarse porque puedes poner el cultivo a funcionar y volver sólo cuando esté preparado para cortar sin tener que ir a vigilar las y el peligro que eso conlleva ya te digo que tengo más de una persona interesada en comprarlo pero tampoco es mi intención mi intención es autoabastecerme sin tener que estar todo el día encima de las plantas haré un cultivo pequeño un armario chiquitito con 4 plantas y todo automatizado eso sí que pienso venderlo para personas que tienen familia y trabajo y no quieren estar todo el día encima de las plantas porque simplemente no tienen tiempo pero me voy a enfocar al autoconsumo de personas normales
 
  • 👍
Reacciones: ElramboEspañol

AraeTamae

Crecimiento
24 Febrero 2016
44
45
23
46
Buen proyecto!

Yo estoy con lo mismo pero utilizo como base la RaspberryPi.

Ahora mismo tengo acceso desde internet a una webcam que tengo instalada dentro del armario. Jeje, mola mucho poder tener controladas a las nenas en todo momento y a tiempo real!

Ahora me falta conectar un DHT11 para controlar los ventiladores y el humidificador.
Lo tengo funcionando sobre la mesa de laboratorio, pero me falta meterlo dentro del armario e ir ajustando valores.
Ya os iré contando.

Me quedo por aquí para ver cómo va evolucionando tu proyecto.

Felicidades por tan buen trabajo compañero!
 

AraeTamae

Crecimiento
24 Febrero 2016
44
45
23
46
El esp8266 esta muy bien para dar conectividad inalámbrica, e incluso programarlo para que le de ordenes al sensor al que le tengas conectado. Pero para montar un servidor creo que se queda algo corto.
Además, si te decantas por el modelo económico, si no me equivoco, solo puedes conectar un sensor, rondando el precio sobre los 6 euros. Y si te vas a el modelo grande para poder conectar varios sensores, deja de ser una opción tan barata, sobre los 26 euros.
Yo acabo de comprar la Raspberry3 que ya tiene Wan y Bluethoot integrados en placa, creo que puede ser muy interesante para proyectos de este tipo. Además de ir sobrada para montar un server en condiciones para un proyecto de este tipo.
Para un cultivo en interior, puede ser más económico utilizar radio-frecuencia, o directamente cableado. Pero la verdad es que el esp8266 es muy interesante. Yo estoy esperando a que me lleguen para empezar a trastearlos.
Pero para un cultivo más extenso o de exterior sin duda la conectividad WiFi sería la mejor opción.

Por el tema de los sensores de humedad en tierra es lo que hay a día de hoy, aún gastando dinero, terminan dando falsas lecturas por su pronta degradación. Una solución para alargar un poco más la vida de estos, sería no abusar con las lecturas del mismo.
Al igual con 2 o 3 lecturas diarias sería más que suficiente, ya que si tenemos la humedad y temperatura ambiente estables, la humedad de la tierra no debería de caer drásticamente en poco tiempo, suele ser un medio que mantiene la humedad y la pierde gradualmente.
Yo personalmente cultivo en tierra y sé que más o menos he de regar cada 2 o 3 días, por lo que no es necesario estar haciendo lecturas constantes sobre este medio.

Pero bueno, esto son teorías. Aún estoy pendiente de implementar y extraer datos para poder hablar con más rigurosidad.

Sl2.
 
  • 👍
Reacciones: alejokaban

octavianmp

Semilla
13 Julio 2014
16
18
3
43
Yo me voy a poner manos a la obra esta noche a trastear con Arduino y el codigo que se ha colgado en este hilo. A ver que tal. Solo tengo el sensor de temperatura DHT 11, algún relé, el sensor de ultrasonidos...os iré contando. También tengo un controlador de temperatura, el W1209, que funciona a 12V, a ver que tal.

Es este en concreto:
 

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Gracias noter me ha servido de mucho la explicación. Sabéis acabo de terminar mi boceto de conexiones al final he tirado de photoshop que es lo que mas controlo para hacer el esquema. lo dejo para que puedan ver las conexiones exactamente.



Pulsar sobre la imagen con el botón derecho y ver imagen para tamaño real.

Solo hay un error que yo vea, no he puesto el GND del botón en la próxima actualización lo arreglo. : )
 

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Sabéis acabo de terminar mi boceto de conexiones al final he tirado de photoshop que es lo que mas controlo para hacer el esquema. lo dejo para que puedan ver las conexiones exactamente.



Solo hay un error que yo vea, no he puesto el GND del botón en la próxima actualización lo arreglo. : )
 

Zion Lion

Gran Cogollo
17 Julio 2013
1.733
3.420
143
44
Y la revisión del código:

Código:
/*
FECHA 13/03/2016
NOMBRE DEL PROYECTO: EasyGrowWeed
VERSIÓN: 2.8 (Para Arduino MEGA)
AUTORES: hiddenotebook, Surbyte, Noter del foro Arduino.cc
USO: Este sketch es un cultivo autónomo avanzado.
Fuente: podeis visitar el tema en arduino.cc aqui http://forum.arduino.cc/index.php?topic=303135.0

Agradecimientos:

En especial por su gran ayuda a colaboradores del foro arduino:

- surbyte, por sus múltiples aportaciones sin duda una gran persona.
- noter, Por hacer posible el uso correcto del LCD y por todos sus aportes.

Licencia:
Este sketch es Libre para mejorar y compartir! Se prohibe su uso con fines comerciales sin autorizacion de los autores. */

// TFT:
  #include "Adafruit_GFX.h" // Librerias para pantalla QVGA 2.2 TFT SPI 240*320
  #include "Adafruit_ILI9341.h"

// RTC:
  #include "RTClib.h"      // Cargar Libreria RTC.
  #include <Wire.h>       // Cargar Libreria comunicacion I2C.
  #include "SPI.h"       // Cargar Libreria comunicacion SPI.
  RTC_DS1307 RTC;       // Crear RTC
  const char* DayTXT[7]= {"Domingo ", "Lunes    ", "Martes   ", "Miercoles","Jueves   ", "Viernes  ", "Sabado   "};

// DHT22
  #include "DHT.h"             // Cargar Librería DHT.
  #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.

// ARDUINO MEGA:
  #define TFT_DC 47
  #define TFT_CS 48
  #define TFT_RST 49
  Adafruit_ILI9341 tft = Adafruit_ILI9341 (TFT_CS, TFT_DC, TFT_RST);

  // RELAY PUMP1
  #define RELAY_ON 0  // Rele encendido en estado 0
  #define RELAY_OFF 1 // Rele apagado en estado 1
  #define RELAY_1 39  // Rele 1 al pin 39
  // END RELAY PUMP1

  int SoilSensor;        // Variable para sensor humedad en tierra.
  int hysterisis = 10;  // Margen de riego.
  char textBuff[50];   // Buffer Para imprimir datos de sensores en TFT.
  int botonAnt;
  unsigned long updateScreen; // Creamos variable para refrescar la pantalla
  unsigned long  moistureTest; // Variable para refrescar datos del sensor de suelo


// POWER ON/OFF ATX
  bool PowerON = false;  // Variable booleana para el encendido.
                                                                                                  
void setup() {

//-------------- POWER ON/OFF ATX -------------------

  pinMode(44, 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 un boton de encendido.

//-------------- RELAY PUMP1 ------------------------

    pinMode(RELAY_1, OUTPUT); // define el pin 39 como salida activa rele 1 para la bomba.

//-------------- TFT SETTINGS -----------------------
  tft.begin();                      // Inicia TFT 2.2"
  tft.setRotation(3);              // Rotación de pantalla.
  tft.setTextWrap(true);          // Si el texto no cabe pasarlo a la siguiente linea.
  tft.fillScreen(ILI9341_BLACK); // Rellenar la pantalla con fondo negro.

//-------------- RTC --------------------------------
  Wire.begin();   // Inicia el puerto I2C.
  RTC.begin();   // Inicia la comunicacion con el RTC.
  // RTC.adjust(DateTime(2015,010,19, 15,51,00));

//-------------- DHT --------------------------------
  dht.begin();   //Se inicia el sensor DHT22.
}

void loop() {

//-------------- POWER ON/OFF ATX -------------------
  bool boton = digitalRead(45);             // Variale booleana para leer el boton.

  if (boton == LOW && botonAnt == HIGH) { // Si pulsamos el boton
      digitalWrite(23, PowerON);         // Como el pin va invertido, lo establecemos antes de cambiar el estado.
      PowerON = ! PowerON ;             // Ivertimos el estatus de la fuente.
      digitalWrite(44, PowerON);       // Encender o apagar el LED.
    }
    botonAnt = boton;               // almacena estado anterior

//-------------- REFRESH THE SCREEN -------------------

  if (millis() - updateScreen > 1000UL) // Refrescamos la pantalla cada segundo
    {
      display();
      updateScreen = millis();
    }
  
//-------------- MOISTURE PROBE -------------------

  if (millis() - moistureTest > 3000UL) // Sondeamos la humedad de la tierra cada 3 segundos
    {
      moistureSampling();
      moistureTest = millis();
    }
  
}

void display() { // Rutina para mostrar datos en TFT

//-------------- RTC --------------------------------

  DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC.

//-------------- DHT --------------------------------

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

// ------------- SOIL SENSOR ------------------------

  SoilSensor = analogRead(A15);
  SoilSensor = map (SoilSensor, 0, 1023, 100, 0);

//-------------- TFT DISPLAY DATA --------------------

//(header)
   // DAY ON TEXT:
    tft.setTextColor(ILI9341_GREEN, ILI9341_BLACK);
    tft.setTextSize(2);
    tft.setCursor(0, 0);
    tft.println(DayTXT[now.dayOfWeek()]); // Aqui tengo que arreglar la sobreescritura de caracteres
    tft.setCursor(160, 0);
    tft.println("EasyGrowWeed");

   // DATE:
    char DateBuffer[16];
    sprintf(DateBuffer, "%02d:%02d:%02d", now.day(), now.month(), now.year());
    tft.print(DateBuffer);
    tft.setCursor(160, 19);
  
   // ATX STATE
    tft.print("ATX:  ");
  
   if (PowerON  == LOW)
     {
       tft.print("OFF\n");
     }
  
   else
     {
         tft.print("ON \n");
     }

  
   // CLOCK RTC:
    char ClockBuffer[16]; // Creamos myBuffer para mostrar bien los digitos del 1 al 9.
    sprintf(ClockBuffer, "%02d:%02d", now.hour(), now.minute());
    tft.setTextSize(3);
    tft.println(ClockBuffer);
  
   // DATA:
    tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
    tft.setTextSize(2);
    tft.println("\nDatos del ambiente:\n");

//(body)
   // DHT:
    tft.setTextSize(2);
    sprintf(textBuff, "Humedad aire:    %3d%\% \n\nTemperatura aire:%3d%cC\n", h, t, (char)247);
    tft.println(textBuff);
  
//(footer)
   // REFERENCES:
    tft.setTextSize(1);
    tft.setCursor(15, 220);
    tft.print("http://forum.arduino.cc/index.php?topic=303135.0");
  
//-------------- END TFT ----------------------------

}

void moistureSampling (){ // Rutina para sondear la humedad de la tierra.

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

  if (SoilSensor < 85) // Si el sensor detecta menos de 80%H
    {
      digitalWrite(RELAY_1, RELAY_ON);  // Activamos rele y bomba
    }
  if (SoilSensor > (85 + hysterisis))// Si detecta mas de 90%H
    {
      digitalWrite(RELAY_1, RELAY_OFF); // Apaga el rele y la bomba
    }
  
   // SHOW ON TFT SCREEN THE SOILSENSOR DATA:
    tft.setTextColor(ILI9341_CYAN, ILI9341_BLACK);
    tft.setCursor(0, 170);
    tft.setTextSize(2);
    tft.print("Agua en Sustrato:");
    sprintf(textBuff, "%3d", SoilSensor);
    tft.print(textBuff);
    tft.println("%");
  
}
 
  • 😍
Reacciones: AraeTamae

octavianmp

Semilla
13 Julio 2014
16
18
3
43
Alguien tiene el código para Arduino Uno? Porque estoy intentando adaptar este código que esta escrito para Mega y no lo consigo.
Me ahorraría bastante trabajo. Gracias de antemano.
 
-