Monitorización temperatura hormigón con Raspberry Pi

Quiero monitorizar la evolución en el tiempo de la temperatura de una masa de hormigón armado de gran espesor en tres puntos de su volumen durante su fraguado. Para ello, voy a disponer 4 sondas DS18B20 en el interior de la masa (en el centro, y cerca de las caras), y un sensor DHT22 en el exterior para controlar la temperatura y humedad ambientes, conectados todos a una Raspberry Pi que irá registrando los valores cada minuto, archivándolos en un pincho USB, y enviándolos por correo electrónico cada hora.

Materiales

  • Raspberry Pi. Vale cualquier modelo. Yo he empleado una Raspberry Pi B+ v1.2 que tenía disponible. Aprox 20€.
  • Tarjeta SD 16 GB. Valdría con una de 8 GB, lo suficiente para una instalación de Raspbian.
  • Memoria USB. Cualquier pincho USB que tengamos.
  • 4x DS18B20 sumergibles. Comprados aquí por 2.59€ la unidad. Total: 7.77€
  • Sensor DHT22 de temperatura y humedad, para monitorizar la temperatura y humedad ambientes
  • 5m cable CAT5
  • Modem 3G USB
  • Caja Estanca IP55, o un tupper.
  • Batería

Preparo los sensores

Los DS18b20 vienen con 1 m de cable. Como necesito algo más de longitud, empalmo un par de metros más por cada sensor y luego los junto todos a un cable de 5m. El tipo de cable que empleo es RJ45.

Hasta los 10m de longitud aproximadamente me basta con soldar entre dos de los cables una resistencia de 4.7kohm. Para longitudes mayores, en esta página hablan de la resistencia pull-up a disponer en función de la longitud del cable.

Tras soldar todos los cables, los protejo con cola térmica, y luego con cinta aislante.

Código para registrar las temperaturas

En esta entrada ya hablé de cómo usar un sensor DS18B20 con una Raspberry Pi, y esta otra, del sensor DHT22. Antes de la conexión definitiva hago pruebas con cada uno de los sensores por separado para ver que está todo en orden.

Básicamente, sigo los pasos que indiqué en la entrada en la que hablé del DS18B20 para probar que funcionan cada uno de los sensores. Una vez que averiguo el identificador de cada uno de los sensores, preparo este pequeño script en Python que registra la temperatura de los sensores en un fichero:

# -*- coding: utf-8 -*-

import os	#Para poder pasar comandos al sistema (sudo modprobe...)
import time	#Para poder sacar la hora del sistema
import logging	#Para loguear los eventos
import Adafruit_DHT	#Para poder usar el DHT


termo1 = "28-0417838399ff"
termo2 = "28-041783898fff"
termo3 = "28-04178386dbff"
termo4 = "28-04178389e9ff"

sensor = Adafruit_DHT.DHT22
pin = 24	#Pin donde está conectado el DHT22


#Cargo los módulos para el termómetro:
os.system("sudo modprobe wire")
os.system("sudo modprobe w1-gpio")
os.system("sudo modprobe w1-therm")


#Inicializo el log:
logging.basicConfig(filename='/media/pincho/temps.log',level=logging.INFO,format='%(asctime)s %(message)s')

#Función para obtener la hora del sistema:
def get_date_time():
	return time.strftime("%d/%m/%Y,%H:%M:%S")

#Función para obtener la temperatura de un termómetro:
def get_temp_sens(term):
	try:
		ruta = "/sys/bus/w1/devices/" + term + "/w1_slave"
		tfile = open(ruta)
		text = tfile.read()
		tfile.close()
		secondline = text.split("\n")[1]
		temperaturedata = secondline.split(" ")[9]
		temperature = float(temperaturedata[2:])
		temperature = temperature / 1000
		temperature = round (temperature,1)
	except:
		temperature = 0
	return float(temperature)

#Función para obtener la temperatura y humedad del DHT22:
def get_tempYhum():
        try:
                humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
		temperature = round (temperature,1)
		humidity = round (humidity,1)
	except:
		humidity = 0
                temperature = 0
        return float(temperature), float(humidity)


hora = get_date_time()
temp0,humedad = get_tempYhum()
temp0 = str(temp0)
humedad  = str(humedad)
tempsens1= str(get_temp_sens(termo1))
tempsens2= str(get_temp_sens(termo2))
tempsens3= str(get_temp_sens(termo3))
tempsens4= str(get_temp_sens(termo4))


linealog = hora + \
"," + temp0 + \
"," + humedad + \
"," + tempsens1 + \
"," + tempsens2 + \
"," + tempsens3 + \
"," + tempsens4

print(linealog)

logging.info(linealog)

Conexión de los sensores

Para conectar los DS18B20, decido emplear un conector RJ45 (para facilitar la conexión en obra) que saco de una tarjeta de red vieja que tenía por ahí (ni siquiera la desueldo, directamente la corto con una sierra:

Y le sueldo la resistencia y los cables que conectaré a la Raspberry Pi:

Configuro la Raspberry Pi

  • Descargo la última versión de Raspbian (Raspbian Stretch, 2018-03-13) y la instalo en una tarjeta SD con Etcher
  • Configuro Raspbian para poder acceder desde SSH, configuro los locales y teclado, etc. La nombro RaspiHormiMon
  • Creo un túnel reverso SSH, siguiendo las instrucciones que preparé en esta entrada.

Conecto el pincho USB

Además de enviar los datos por internet, voy a archivar los registros en un pincho USB. Para ello tengo que instalarlo y garantizar que se cargue siempre en el arranque, modificando /etc/fstab. Sigo los pasos que ya conté en esta entrada.

Conexión a internet

Pensaba que tendría que seguir los pasos de esta entrada que escribí hace un par de años, pero compruebo que al conectar el Huawei E303 con una tarjeta SIM con el pin deshabilitado, la Raspberry Pi la reconoce perfectamente (en las últimas versiones de Raspbian viene por defecto usbmodeswitch) sin necesidad de hacer nada y se conecta automáticamente a internet como si fuese una conexión alámbrica, eth1.

Que envíe el log por email

Configuro la Raspberry Pi para que pueda enviar ficheros por correo, siguiendo los pasos que cuento en esta entrada.

Crontab

Ahora añado las siguientes líneas al crontab para que se ejecuten las tareas descritas anteriormente:

  • Registro de temperaturas cada minuto
  • Envío por correo electrónico del fichero de registros cada hora

Ejecuto:

crontab -e

Y añado las dos siguientes líneas:

* * * * * sudo python /home/pi/logsens.py
0 * * * *  mpack -s "Log Temps" /media/pincho/temps.log direccionDeCorreo@dominio.com

Batería y alimentación

Como pretendo dejar el invento en una obra, que estará alimentado a saber de qué forma (un grupo electrógeno seguramente), le pongo una batería, que permita seguir funcionando si se va un rato la luz, y también que proteja de las subidas de tensión.

La alimentación se hará por medio de un cargador convencional micro-usb de 5V (los de los móviles).

Carcasa

Con todo ya listo, lo meto dentro de una caja IP55, que es relativamente estanca, y de dimensiones perfectas para encajar todo sin estar muy apretado.

Montaje en obra

Tengo que decir que yo no pude colocar los sensores en obra y los colocó mi compañero y amigo Jorge. Como no podía ser de otra forma, estuvo lloviendo mientras lo colocaba, por lo que ¡se empapó enterito!

Aquí van una serie de fotos de la colocación de los sensores en obra:

Resultados

La Raspberry Pi tomaba medidas cada minuto, y enviaba un correo electrónico con todo el registro cada hora.

Versión 2

Código revisado, que incorpora los leds de aviso de si hay un error cada minuto, para poder comprobar en obra una vez instalado que está todo en orden, sin tener que esperar a recibir el mensaje cada hora. En caso de haber algún problema, y tras descartar error en conexiones, podría ajustarse la resistencia variable (potenciómetro).

También instalé 5 conectores RJ-45, para poder conectar directamente varios cables y no tener que hacer laboriosos empalmes como tuve que hacer en la ocasión anterior…

 

On Structural Engineering

Cita

The welfare of the earth and its inhabitants is a defining theme for the 21st century. Structural engineering has a significant role to play as the world faces these challenges. In fulfilling this function, building engineers continue the age-old human endeavor to provide society with structures that protect, serve, and inspire mankind. From pioneering new systems for better buildings with economy, to ensuring the safety of human life from nature’s wrath, to stabilizing implausible forms to defy gravity and lateral loads, building engineers venture to create livable spaces from humaninity’s dreams and ideas. Building engineering requires a comprehensive understanding of building assembly and an appreciation of how forces are resisted within the structure and eventually by the earth.

 

Bungale S. Taranath, «Structural Analysis and Design of Tall Buildings. Steel and Composite Construction». CRC Press, Boca Raton, 2012

On seismic design

Cita

On seismic design:

Although over the years, experience and research have diminished our uncertainties and concerns regarding the characteristics of earthquake motions and its manifestations, it is unlikely, though, that there will be such a change in the nature of knowledge to relieve us of the necessity of dealing openly with random variables. In a way, earthquake engineering is a parody of other branches of engineering. Earthquake effects on structures systematically bring out the mistakes made in design and construction, even the minutest mistakes. Add to this the undeniable dynamic nature of disturbances, the importance of soil-structure interaction and the extremely random nature of it all; it could be said that earthquake engineering is to the rest of the engineering disciplines what psychiatry is to other branches of medicine. This aspect of arthquake engineering makes it challenging and fascinating, and gives it an educational value beyond its inmediate objectives. If structural engineers are to acquire fruitful experience in a brief span of time, expose them to the concepts of earthquake engineering, even if their interest in earthquake-resistant design is indirect. Sooner or later, they will learn that the difficulties encountered in seismic design are technically intriguing and begin to exercise that nebulous trait called engineering judgment to make allowance for these unknown factors.

Bungale S. Taranath, «Structural Analysis and Design of Tall Buildings. Steel and Composite Construction». CRC Press, 2012, Boca Raton, Florida.

Elon Musk digging tunnels to save the world’s congestion problem?

I don’t know if you follow Elon Musk (Tesla, SpaceX…) on Twitter. I do. A few weeks ago he twitted on his way to work -on a Tesla, I suppose- that he was exasperated with Los Angeles traffic, and wondered about boring a tunnel. A moment later he twitted again that he would do it.

It seems now that he’s taken seriously the idea, and this past weekend workers started excavating a test trench at SpaceX headquarters.

I’m somewhat confused about this: being Elon Musk the visionaire and entrepeneur he is in so many different areas (PayPal, Tesla, SpaceX, Hyperloop…) this shouldn’t surprise anyone. But this is civil engineering (tunnel boring) he’s talking now, and he even claims he wants to improve tunneling speed by 500 or even 1,000 percent! Although he did say: «We have no idea what we’re doing – I want to be clear about that» (!!!!???!!!)

What do you think? Is Elon Musk out of his depth this time? Will this new idea fail? Or if it works (I don’t know what innovative technology he wants to try out), will it work on all types of soils/rocks? Something deep in my cartesian/engineer mind tells me that it’s very difficult for someone with no previous (civil) engineering knowledge to suddenly come up with an idea that thousands of engineers and contractors all over the world are struggling with everyday. Or is it?

This is Elon Musk we’re talking about. They said the same things about him and the electric car or about launching rockets and landing them back again… And he proved them wrong. And what about the Hyperloop…? We’ll soon see.

Maybe he will fail in this new tunnel adventure, maybe he wont. But in any case this is exactly what the civil engineering world requires: out-of-the-(cartesian)-box thinking and people like Elon Musk with enough ingenuity -and money- to propose and experiment on new, world-changing ideas.

Let’s keep a close eye on Elon Musk’s latest idea, because it would indeed change our profession and the world!

More info:
https://www.wired.com/2017/01/inside-tunnel-elon-musk-already-digging-los-angeles/
https://www.wired.com/2017/01/elon-musks-plan-tunnel-la-misguided-nonsense/http://gizmodo.com/elon-musk-on-digging-big-ass-tunnel-we-have-no-idea-wh-1791803837