Huerto Urbano: Temperatura del Suelo

Para obtener medidas de la temperatura del suelo de nuestro huerto urbano tuve que echar manos de un sensor de temperatura DS18B20 en la versión que viene insulado para poder ser sumergido en líquidos y tomar la temperatura de estos. Este mismo sensor si es enterrado registrará lecturas de la temperatura de nuestro suelo, bastantes confiables. Aunque lo ideal sería contar con un sensor especializado para esta tarea.

Importancia de la temperatura del suelo

Por las condiciones del clima local, se vuelve necesario el monitorear la temperatura del suelo.

Esta variable puede que no parezca tan importante para el desarrollo de nuestro huerto, pues la mayoría de veces con solo saber que nuestras plantas son compatibles con la temperatura del aire es suficiente.

Pero en realidad es importante medirla, porque está variable tiene impacto en la cantidad de nutrientes que nuestro huerto puede llegar a recibir, el tamaño al que pueden alcanzar las raíces de nuestras plantas, en la cantidad de humedad que el suelo es capaz de retener, en cómo el oxígeno se mueve a través del sistema de raíces, influye en la capacidad que tiene la planta para absorber nutrientes y en la germinación de las semillas.

El dispositivo para medir temperatura del suelo.

Para este dispositivo reutilizamos casi todas las piezas de la mediciones anteriores.

Este dispositivo comparte la mayoría de sus partes con los dispositivos que utilizamos para medir tanto la exposición a la luz, como la temperatura y humedad relativa del aire. La idea es poder utilizar varias veces los mismos componentes, esto con la idea de poder recopilar la mayor cantidad de información sobre las variables atmosféricas. Así solo tenemos que ir cambiando los sensores con los cuales capturamos la data; de esta manera nos mantenemos amigables con el presupuesto.

Para capturar los datos, el dispositivo tiene un sensor de temperatura DS18B20 el cual está encapsulado para su aislamiento de los elementos externos, esto lo hace ideal para tomar la temperatura de líquidos y/o, como lo haremos nosotros, medir la temperatura del suelo. Ya que este tipo de sensor tiene una buena resolución, aunque no este diseñado para este tipo de tarea, si registrará datos de la temperatura del suelo.

Metodología

Para este ejercicio se utilizará la misma metodología empleada en la medición de las otras variables de nuestro huerto urbano. Se desplegará nuestro dispositivo durante varios días. Posteriormente descargamos los datos recopilados en la tarjeta de memoria SD y los analizaremos con un programa para hojas de cálculo y de esta manera podremos determinar el comportamiento de la variable durante las diferentes horas del día.

Partes necesarias

PartesPrecio
Placa Arduino UNO precioUSD 15.00
Sensor DS18B20 en su versión de sonda impermeableUSD 9.00
Un módulo RTC DS3231USD 6.00
Módulo lector de tarjetas SD SPIUSD 5.80
Breadboard mini de 4.5×3.5cmUSD 2.00
Cables dupont para hacer las conexionesUSD 1.00
Un contenedor o caja, de preferencia resistente a la intemperie para
hacer el despliegue del dispositivo en campo
USD 4.95
TotalUSD 43.75

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 y la exposición a la luz. Por lo tanto, si haces la inversión para construir estos dispositivos, pueden reutilizar las mismas piezas, sin tener que comprar todo nuevamente.

Código y cableado para medir temperatura del suelo

Temperatura del Suelo
Cableado que utilice para la toma de datos en campo.

Tanto el cableado como el código para el dispositivo, nuevamente, es muy similar con el utilizado para los demás dispositivos colectores de datos. De igual forma aquí dejo la forma en que ha sido cableado y el código que utilice. En estos dispositivos lo único que cambia prácticamente es el tipo de sensor que hemos utilizado.

#include <SPI.h> // para el modulo tarjeta SD
#include <SD.h> // para la tarjeta SD
#include <OneWire.h> // para el sensor de temperatura
#include <DallasTemperature.h> // para el sensor de temperatura
#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;
OneWire ourWire = 5;
int input_val = 0;

DallasTemperature sensors(&ourWire);
float Celsius = 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("Fecha,Tiempo,Temperatura Suelo C");
  }
  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 loggingSueloTemp() {
  sensors.requestTemperatures();
  Celsius = sensors.getTempCByIndex(0);

  // verifica si alguna lectura fallo y termina para volver a intentar
  if  (isnan(Celsius) /*|| isnan(f)*/) {
    Serial.println("Failed to read from LDR sensor!");
    return;
  }

  // para depurar cualquier error
  Serial.print("Temperatura es: ");
  Serial.print(Celsius);
  Serial.println(" C");

  myFile = SD.open("DATA.txt", FILE_WRITE);
  if (myFile) {
    Serial.println("open with success");
    myFile.print(Celsius);
    myFile.print(" C");
    myFile.println(",");

  }
  myFile.close();
}

void loop() {
  loggingTime();
  loggingSueloTemp();
  delay(300000);
}

Temperatura del Suelo: resultados de prueba de campo

El comportamiento que tiene la temperatura del suelo es muy similar al que muestra la temperatura del aire; únicamente que con la temperatura del suelo es algunos grados más baja que la que registra el aire, en el mismo momento del día.

Temperatura del Suelo

A medida que el día va corriendo la temperatura del suelo va en aumento, llegando a su punto más alto alrededor de las 3pm, con una temperatura máxima promedio de 28.8 °C. A partir de la hora antes señalada, la temperatura comienza a descender, hasta alcanzar su punto más bajo a alrededor de las 6am, con un temperatura de 23.5°C.

Conclusión

Luego de analizar los datos colectados durante la prueba de campo, es inevitable darse cuenta que la temperatura del aire esta directamente relacionado con la temperatura que se registra en el suelo de nuestro huerto urbano. Notando que esta siempre está un par de grados por debajo de la temperatura que se registra en el aire, esto debido a que la tierra es considerablemente más densa que el aire y tarda más en reaccionar a los cambios.

Saludos.-

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top