Siguiendo con los dispositivos para monitorear las variables de nuestro huerto urbano, el nivel de exposición a la luz es una de estas variables. Ya que para que nuestros cultivos tengan un desarrollo correcto es necesario que tenga abundante luz solar. Por el lugar donde está nuestro huerto, sé que tienen acceso a buena cantidad de luz solar, pero con los datos que recolectemos podremos respaldar esto.

Importancia de la exposición a la luz
Para cualquier planta la exposición solar es importante, debido a la relación tan estrecha que existe entre la luz solar y la fotosíntesis. Por tal motivo es importante saber a cuánta luz solar estarán expuestos durante las horas diurnas nuestros cultivos. La exposición necesaria varía de cultivo en cultivo y es un parámetro que se debe de tener en cuenta al momento de elegir los cultivos que vamos a plantar en nuestro huerto urbano. El que sepamos a cuánta luz solar estarán expuestas nuestras plantas nos permite saber si tendrán el desarrollo que esperamos.
Dispositivo para medir la exposición a la luz

Básicamente vamos a reutilizar la mayoría de las partes del dispositivo que utilizamos para medir la temperatura y humedad relativa. De hecho, el esquema es el mismo, únicamente que en vez de utilizar el sensor DHT22, vamos a utilizar un fotorresistor (LDR), el cual transforma o emite más voltaje cuando es iluminado por alguna fuente de luz.
Si bien el LDR reacciona a cualquier tipo de luz y no solo a la luz solar, el Huerto Urbano esta ubicado en una parte en la cual solo recibe iluminación por parte del sol. El funcionamiento del dispositivo es bastante simple, el fotorresistor registra la intensidad de la luz que recibe, enviando una señal análoga y luego es convertida a un porcentaje, a través del código quemado en nuestra placa de prototipado. Este porcentaje nos indica la cantidad de luz que recibe nuestro LDR y este las transmite al microcontrolador donde luego son almacenadas en una tarjeta de memoria para su posterior análisis.
Metodología
Para este caso se repite la metodología que utilizamos para tomar los datos de temperatura y humedad relativa del aire. Vamos a desplegar el dispositivo construido en nuestro huerto urbano. Vamos a dejarlo funcionando de manera ininterrumpida durante al menos 5 días.
Por la naturaleza de la variable, únicamente analizaremos los datos recolectados durante las horas diurnas. Pues sabemos que cuando cae el sol la exposición a la luz se reduce a cero; de esta forma cualquier dato de exposición que se registre luego de la hora de la puesta del sol, definitivamente se trata de luz artificial a la que se expone nuestro huerto. Gracias al módulo de reloj que utilizamos en nuestro dispositivos, podemos saber la hora en que un dato determinado fue guardado.
Partes necesarias para nuestro dispositivo
| Componentes | Precio |
|---|---|
| Placa Arduino UNO precio | USD 15.00 |
| Fotoresistor o light dependent resistor (LDR) precio | USD 0.50 |
| Un módulo RTC DS3231 precio | USD 6.00 |
| Breadboard mini de 4.5×3.5cm precio | USD 2.00 |
| Módulo lector de tarjetas SD SPI precio | USD 5.80 |
| Cables dupont para hacer las conexiones precio | USD 1.00 |
| Un contenedor o caja, de preferencia resistente a la intemperie para hacer el despliegue del dispositivo en campo precio | USD 4.95 |
| Total | USD 35.25 |
La mayoría de las piezas de este dispositivo son las mismas que utilice en el dispositivo para medir la temperatura y la humedad relativa del aire. Por lo tanto si haces la inversión para construir estos dispositivos, se pueden reutilizar las mismas piezas, sin tener que comprar todo nuevamente, de hecho, únicamente se ha cambiado el sensor DHT22 por el fotoresistor LDR. Así que por un valor aproximado de poco más de los USD 35.0 podemos realizar este proyecto.
Cableado y código
Tanto el cableado como el código para el dispositivo, nuevamente, es muy similar con el utilizado para el colector de temperatura y humedad relativa del aire. De igual forma aquí dejo la forma en que ha sido cableado y el código que utilice.

#include <SPI.h> // para el modulo tarjeta SD
#include <SD.h> // para la tarjeta SD
#include <RTClib.h> // para el RTC
// cambiar esto segun el shield de SD que se utilice;
// Arduino Ethernet shield y modulos: pin 4
// Data loggin SD shields y modulos: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 4;
const int LDR = A0;
int input_val = 0;
// Creamos un archivo para guardar nuestra data
File myFile;
// RTC
RTC_DS1307 rtc;
void setup() {
// inicializamos el monitor serial
Serial.begin(9600);
// configuracion para para el RTC
while (!Serial); // para un Leonardo/Micro/Zero
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
else {
// esta linea establece el RTC a la hora y fecha en que se compilo este sketch
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
}
// configuracion para la tarjeta SD
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// abrimos el archivo
myFile = SD.open("DATA.txt", FILE_WRITE);
// si el archivo se abrio bien escribir:
if (myFile) {
Serial.println("File opened ok");
// se imprimen las cabeceras de nuestra data
myFile.println("Date,Time,Nivel Luz %");
}
myFile.close();
}
void loggingTime() {
DateTime now = rtc.now();
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.print(now.year(), DEC);
myFile.print('/');
myFile.print(now.month(), DEC);
myFile.print('/');
myFile.print(now.day(), DEC);
myFile.print(',');
myFile.print(now.hour(), DEC);
myFile.print(':');
myFile.print(now.minute(), DEC);
myFile.print(':');
myFile.print(now.second(), DEC);
myFile.print(",");
}
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.println(now.day(), DEC);
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
myFile.close();
delay(300000);
}
void loggingLuz() {
input_val = analogRead(LDR);
int value = map(input_val, 1023, 0, 0, 100); // mapeo para la lectura analoga del sensor
// verifica si alguna lectura fallo y termina para volver a intentar
if (isnan(value) /*|| isnan(f)*/) {
Serial.println("Failed to read from LDR sensor!");
return;
}
// para depurar cualquier error
Serial.print("LDR Value is: ");
Serial.print(value);
Serial.println(" %");
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
Serial.println("open with success");
myFile.print(value);
myFile.print(" %");
myFile.println(",");
}
myFile.close();
}
void loop() {
loggingTime();
loggingLuz();
delay(300000);
}
Datos colectados sobre la exposición a la luz
Luego de haber sido desplegado durante cinco días de corrido en nuestro huerto urbano experimental, obtuvimos los siguientes resultados; en la gráfica se muestra la exposición promedio que recibió nuestro huerto de prueba durante el tiempo que se extendió el ejercicio.

Podemos observar que prácticamente durante todas las horas diurnas nuestro huerto recibe luz. Los porcentajes a los que esta expuesto son completamente compatibles con los vegetales que pensamos cultivar.
Conclusión
Es importante que el lugar que elijamos para nuestro huerto urbano tenga suficiente exposición a luz durante el día, pues de esta proviene la energía para que los cultivos se desarrollen de manera saludable. El poder medir a cuanta luz estará expuesto el huerto también nos puede ayudar a tomar la decisión de plantar variedades de cultivos que sean compatibles con este nivel de exposición.
Saludos a todos.-
Israel es un Xennial entusiasta del PC Case Modding y del hardware en general. Ha surfeado la web desde 1995 y ha pasado toda su vida rodeado de PCs, Legos y Nintendos. Siempre aprendiendo algo fuera de las aulas. Cree firmemente que si el hardware no se puede modificar, en realidad no te pertenece y que las computadoras tienen el corazón de quien las diseña y construye.


Muchas gracias por explicar tan detallado como echar andar este proyecto.