Monitorización profesional de temperatura con Raspberry Pi y DS18B20
Introducción
La Raspberry Pi es un ordenador de placa única (SBC) compacto desarrollado por la Raspberry Pi Foundation en el Reino Unido. Ejecuta diversas distribuciones Linux basadas en ARM y expone un conjunto de pines GPIO que permiten conectar una amplia gama de componentes externos, como sensores y actuadores. Dado que la Pi carece de un convertidor analógico-digital (ADC) integrado, sensores analógicos de temperatura como el TMP36 no pueden utilizarse directamente. En su lugar, un sensor digital como el DS18B20 es la opción recomendada para mediciones de temperatura precisas basadas en comunicación serie.
Componentes necesarios
- Raspberry Pi (cualquier modelo reciente)
- Sensor digital de temperatura DS18B20
- Resistencia de 4,7 kΩ (valor estándar)
- Placa de prototipado (breadboard o Pi-Cobbler)
- Medio breadboard (opcional para cableado extendido)
- Cables jumper (macho-macho o macho-hembra según necesidad)
Diseño básico
Montaje del hardware
El núcleo del montaje consiste en la Raspberry Pi, el DS18B20, una resistencia pull-up de 4,7 kΩ, un Pi-Cobbler (o cableado directo en breadboard) y cables jumper. Todos los componentes se insertan en el breadboard para prototipado rápido y fácil depuración.
Diagrama de conexiones
El DS18B20 utiliza una interfaz serie de un solo hilo (1-Wire), permitiendo que múltiples sensores compartan la misma línea de datos. En Raspbian (o derivados) de Raspberry Pi, el sensor aparece como un dispositivo serie una vez cargados los módulos del kernel apropiados. El sensor debe conectarse al pin GPIO 4 (BCM 4), el único que soporta el protocolo 1-Wire. Una referencia visual está disponible en la guía de configuración DS18B20 de Adafruit.
Selección del DS18B20
El DS18B20 está disponible en tres variantes:
- Paquete DIP estándar (para prototipado)
- Versión impermeable con cable (adecuada para monitorización ambiental)
- Modelo de alta temperatura (hasta 125 °C)
Todas las variantes incluyen la interfaz 1-Wire y la lógica de conversión de temperatura, entregando lecturas digitales directamente a la Pi. Las imágenes modernas de Raspbian incluyen los controladores necesarios, permitiendo acceso sencillo mediante el sistema de archivos.
Verificación desde línea de comandos
Tras el cableado, verifique el sensor desde la terminal:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxxxxxxxxx # reemplace con el número de serie de su sensor
cat w1_slave
La salida contendrá una línea terminada en YES seguida del valor de temperatura en milésimas de grado Celsius en la siguiente línea.
Software – Registrador básico
El siguiente script en Python lee la temperatura cada segundo e imprime los valores en la salida estándar. Guárdelo como temp_logger_basic.py y ejecútelo con privilegios de root.
#!/usr/bin/env python3
import os
import glob
import time
# Asegurar carga de módulos 1-Wire
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
BASE_DIR = '/sys/bus/w1/devices/'
DEVICE_FOLDER = glob.glob(BASE_DIR + '28*')[0]
DEVICE_FILE = f'{DEVICE_FOLDER}/w1_slave'
def read_temp_raw():
with open(DEVICE_FILE, 'r') as f:
return f.readlines()
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
La ejecución produce salidas como:
(18.875, 65.975)
(18.875, 65.975)
(18.875, 65.975) …
Ejecute el script con sudo python3 temp_logger_basic.py porque los archivos del sensor residen en un directorio de sistema protegido.
Diseño avanzado
Para uso en producción, un shield PCB soldado puede reemplazar al breadboard, proporcionando una solución más robusta y portable. He fabricado un shield personalizado que se enchufa directamente en la Pi, encerrado en una carcasa compacta negra. El software registra lecturas cada hora y las almacena en una base de datos MySQL. Los datos se visualizan con Google Charts, ofreciendo análisis de tendencias claro.
Hardware avanzado
Se conservan todos los componentes del montaje básico, más:
- Shield de prototipado Adafruit para Raspberry Pi (o PCB personalizado equivalente)
- Cajas y herrajes de montaje opcionales
Para una guía detallada, consulte la guía del sensor de temperatura DS18B20 y la documentación de Raspberry Pi sobre soporte 1-Wire.
Proceso de manufactura
- Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
- Perfilado preciso de temperatura en Raspberry Pi con Python, SQLite y LabVIEW
- Monitor de temperatura y humedad en red con Raspberry Pi – Guía DIY completa
- Cómo leer temperatura con un DS18B20 en Raspberry Pi 2
- Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Monitorización fluida de temperatura y humedad en Raspberry Pi con EzTemp
- Monitorización precisa de temperatura en armario de servidores con Raspberry Pi
- Control de temperatura casero para cerveza: monitorizar y regular con Arduino
- Raspberry Pi BMP085: Lecturas precisas de temperatura y presión vía I2C
- Monitorización meteorológica remota con Raspberry Pi 3 y PubNub