Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Sistema de Temperatura DIY con Raspberry Pi y Ubidots
Sistema de Temperatura DIY con Raspberry Pi y Ubidots

Construye tu propio sistema de monitoreo de temperatura del aire y líquido utilizando una Raspberry Pi y Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

Un sistema de monitoreo de temperatura proporciona información valiosa tanto en entornos comerciales como industriales para reducir ineficiencias o mantener la calidad de los productos y su calidad. ¿Y si te dijera que puedes monitorear la temperatura de tu bodega de vino autoconstruida o el acuario de tu familia en casa usando el mismo dispositivo? Además, ¿y si te dijera que el mismo dispositivo podría usarse para monitorear las temperaturas del aire y de los líquidos en tu fábrica también? Los creadores de nuestro mundo han hecho esto posible y esta guía está aquí para ayudar a iniciar tus propias iniciativas en casa o en el taller.

Esta guía será tu tutorial para un sistema de monitoreo de temperatura DIY simple que también es impermeable. Usando un Raspberry Pi y Ubidots te mostraremos cómo conectar tu Pi y mostrar en tiempo real las métricas de tu sistema de temperatura. Usando Ubidots, también puedes crear eventos de correo electrónico o SMS para asegurarte de que tu "variable" (en este caso, la temperatura) permanezca dentro de un conjunto de límites definidos asignados por ti para garantizar la calidad y eficiencia de las condiciones de tu sistema.

Para este proyecto vamos a usar una versión 1-wire pre-cableada y impermeable del sensor DS18B20. ¿Qué es 1-wire? Es un protocolo de comunicación que simplifica la conexión de tus sensores IoT al agregar todo el cableado en un solo cable (...bueno, en realidad son tres, dos son conexiones de tierra y energía, el tercero es el 1-wire para la transmisión de datos).

NOTA IMPORTANTE: El sensor de temperatura 1-Wire tiene diferentes versiones a la venta; una con un resistor integrado en el sensor y la otra sin él. Al comprar o configurar tu hardware, es mejor asegurarte de que tus dispositivos y sensores sean compatibles antes de avanzar en este tutorial.

Requisitos

NOTA IMPORTANTE: Esta guía asume que tu Raspberry Pi ha sido configurada y está conectada a Internet. Si no, puedes hacerlo rápidamente usando esta guía de inicio rápido de la Fundación Raspberry Pi.

Configuración del cableado

Como se mencionó anteriormente, el sensor de temperatura OneWire se vende con diferentes versiones que contienen resistores. Para este tutorial, ilustraremos ambas versiones: con y sin un resistor. No importa cuál elijas para tu sistema, asegúrate de verificar que todas las conexiones estén correctamente basadas en los diagramas y fotos a continuación.

Con resistor integrado - con conector grove

Por favor, sigue la tabla a continuación para hacer las conexiones correctas para tu sensor de temperatura OneWire con resistor.

CONSEJO: El Arduberry es una nueva campaña en Kickstarter, que ofrece una forma simple y económica de llevar escudos de Arduino a la Raspberry Pi. Esta increíble opción es la forma fácil de comenzar a conectar tus sensores grove usando un escudo Arduino Grove. Para más información sobre esto, consulta la campaña :)

Sin resistor integrado - sin conector grove

El resistor en esta configuración se utiliza como un pull-up para la línea de datos, y debe estar conectado entre el cable de datos y el cable de energía. Esto asegura que la línea de datos esté en un nivel lógico definido y limita la interferencia del ruido eléctrico si nuestro pin se dejara flotante.

Usa un resistor de 4.7kΩ (o 10kΩ) y sigue el diagrama a continuación para hacer las conexiones correctas. Ten en cuenta que los pines conectados en la Raspberry Pi son los mismos que se usan en la tabla anterior:

Configuración del sensor

  1. Con tu Raspberry Pi conectada a Internet, verifica la dirección IP asignada a la placa accediendo mediante ssh en el terminal de tu computadora:

ssh pi@{IP_Address_assigned}

Si aún no has configurado las credenciales de tu Raspberry Pi, ten en cuenta que deberás usar las credenciales predeterminadas proporcionadas:

  • Nombre de Usuario: pi

  • Contraseña: raspberry

Cuando tu Pi esté configurada y conectada correctamente, el usuario de tu terminal aparecerá como:pi@raspberrypi

2. Ahora vamos a actualizar algunos paquetes e instalar pip, el gestor de paquetes de Python. Copia y pega los siguientes comandos en tu terminal y presiona "enter" después de cada uno para ejecutar los comandos.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip python-dev build-essential 

3. Luego, instala la librería Request , que es una popular librería de Python que simplifica la realización de solicitudes HTTP. Copia y pega los siguientes comandos en tu terminal y presiona "enter" para ejecutar el comando.

$ pip install requests

4. La Raspberry Pi viene equipada con una variedad de controladores para la interfaz. En este caso, para poder cargar el controlador del sensor 1-Wire en los pines GPIO, tenemos que usar estos dos controladores a continuación. Estos controladores se almacenan como módulos cargables y el comando modprobe se emplea para cargarlos en el núcleo de Linux cuando sea necesario.

Ejecuta los siguientes comandos:

$ sudo modprobe w1-gpio
$ sudo modprobe w1-therm

5. Ahora, necesitamos cambiar el directorio a nuestra carpeta del dispositivo 1-Wire y listar los dispositivos para asegurarnos de que nuestro sensor se haya cargado correctamente. Copia y pega los siguientes comandos en tu terminal y presiona "enter" después de cada uno para ejecutar los comandos.

$ cd /sys/bus/w1/devices/
$ ls

En este momento, tu sensor ya debería estar ensamblado y conectado y debería aparecer como una serie de números y letras. En nuestro caso, el dispositivo está registrado como 28-00000830fa90, pero en tu caso será una serie diferente de letras y números, así que reemplaza nuestro número de serie con el tuyo y ejecuta el comando.

$ cd 28-00000830fa90

El sensor escribe periódicamente en el archivo w1_slave, para leer tu sensor de temperatura, por favor ejecuta el siguiente comando:

$ cat w1_slave

Este comando te mostrará dos líneas de texto con la salida t= mostrando la temperatura en grados Celsius. Ten en cuenta que se debe colocar un punto decimal después de los primeros dos dígitos (esto se proporciona en el código final; no te preocupes); por ejemplo, la lectura de temperatura que hemos recibido es 29.500 grados Celsius.

Ahora que puedes tomar lecturas de temperatura, ¡es hora de publicarlas en Ubidots!

Enviando datos a Ubidots para visualización

¡Ahora es hora de codificar! :)

Crea y ejecuta un script de Python en el terminal de tu computadora:

$ nano onewire_temp_ubidots.py

Luego pega y guarda el siguiente código en tu terminal:

import osimport timeimport requestsos.system('modprobe w1-gpio')os.system('modprobe w1-therm')temp_sensor = '/sys/bus/w1/devices/28-00000830fa90/w1_slave'def temp_raw():    f = open(temp_sensor, 'r')    lines = f.readlines()    f.close()    return linesdef read_temp():    lines = temp_raw()    while lines[0].strip()[-3:] != 'YES':        time.sleep(0.2)        lines = temp_raw()    temp_output = lines[1].find('t=')    if temp_output != -1:        temp_string = lines[1].strip()[temp_output+2:]        temp_c = float(temp_string) / 1000.0        temp_f = temp_c * 9.0 / 5.0 + 32.0        payload = {'temp_celsius': temp_c, 'temp_fahrenheit': temp_f}        return payloadwhile True:        try:            r = requests.post('http://industrial.api.ubidots.com/api/v1.6/devices/raspberry/?token={Assign_your_Ubidots_Token}', data=read_temp())            print('Publicando temperaturas en Ubidots')            print(read_temp())        except:            pass                  time.sleep(10)

Asegúrate de reemplazar el número de serie 28-00000830fa90 con el tuyo, y asignar
tu token de cuenta de Ubidots en la URL de la solicitud. Si no sabes cómo obtener tu Token de Ubidots, consulta el artículo a continuación para obtener ayuda:

Ventana de terminal de código completado:

Ahora probemos el script. Pega y ejecuta el siguiente script en el terminal de tu computadora.

python onewire_temp_ubidots.py

Si está funcionando correctamente, verás un nuevo dispositivo en tu cuenta de Ubidots con dos variables: temp_celsius y temp_fahrenheit

Pasos opcionales: Renombrar el Dispositivo y las Variables

Los nombres de las variables creadas son los mismos que las etiquetas de la API, que son los ID utilizados por la API. Esto no significa que sus nombres no puedan ser cambiados, por lo que se recomienda cambiar los nombres de tus dispositivos y variables para hacerlos más amigables a tu nomenclatura. Para aprender cómo renombrar tus variables, consulta a continuación:

También puedes agregar y ajustar las unidades de cada variable desde tu lista de opciones:

Como puedes ver a continuación, hemos asignado diferentes unidades a cada variable, y también asignado nombres más amigables para adaptarse a la nomenclatura de nuestros proyectos. Esto se recomienda encarecidamente a los usuarios que buscan implementar cientos de dispositivos.

Configuración de Eventos

Un evento (o alerta) es cualquier acción desencadenada cuando los datos cumplen o superan una regla de diseño. Por ejemplo, se puede enviar un correo electrónico o un mensaje SMS cada vez que un sensor deja de enviar datos o una temperatura supera un umbral máximo o mínimo.

Para crear el evento, consulta el artículo a continuación:

Resultado

En solo unos minutos has construido un fácil sistema de monitoreo de temperatura DIY. Ahora coloca tus sensores donde sea necesario y comienza a rastrear temperaturas desde tu dispositivo hoy mismo!

¡Feliz hacking! :)

¿Ha quedado contestada tu pregunta?