Tutorial IoT para principiantes: Streaming de datos de temperatura desde Raspberry Pi
“¡Hola Mundo!” – Probablemente sea la salida del primer programa que escribiste al aprender a programar. Configurar un dispositivo para transmitir datos de temperatura se está convirtiendo rápidamente en el proyecto “¡Hola Mundo!” de facto del Internet de las Cosas (IoT). Si imprimir “¡Hola Mundo!” la primera vez fue una tarea larga y frustrante, quizás nunca habrías escrito otro programa. Tu primer proyecto IoT solo debería ponerte una gran sonrisa en la cara. Este proyecto divertido y fácil te introducirá al maravilloso mundo del streaming de datos IoT.
Un tutorial en vídeo de todo el proyecto se encuentra en:
https://youtu.be/HMqPbfvCshs
Estos son los suministros que necesitarás:
- Una Raspberry Pi conectada a internet o tu ordenador de placa única preferido.
- Un sensor de temperatura DS18B20 (https://www.adafruit.com/product/381).
- Un breadboard para cablear un circuito simple (en el kit de inicio Adafruit Pi).
- Una resistencia de 4,7K a 10K (también en el kit de inicio Adafruit Pi).
Paso 1: Configuración del hardware
El sensor de temperatura DS18B20 funciona bien con la Raspberry Pi porque tiene salida digital, y la Pi no tiene convertidores analógico-digitales (ADC) a bordo. Raspbian incluye una interfaz para leer la salida del sensor. Solo tenemos que escribir un poco de código para capturar y analizar la temperatura. Adafruit tiene un gran tutorial aquí para usar el DS18B20 que simplemente vamos a seguir y modificar para transmitir la temperatura en lugar de solo mostrarla en pantalla.
La configuración de hardware es simple. Cable rojo del DS18B20 a 3,3 V. Cable negro a GND. Cable azul a una resistencia pull-up y al pin GPIO 4 de tu Pi.
Paso 2: Leer la temperatura
Para iniciar la interfaz de lectura del sensor de temperatura, necesitamos ejecutar dos comandos. Vaya a una terminal en su Pi o conéctese por SSH. Escriba los siguientes comandos:
sudo modprobe w1-gpio sudo modprobe w1-therm
La salida de su sensor de temperatura ahora se escribe en un archivo en su Pi. Para encontrar ese archivo,
cd /sys/bus/w1/devices
En este directorio, habrá un subdirectorio que comienza con “28-“. Lo que sigue al “28-” es el número de serie de su sensor. Entre en ese directorio. Dentro hay un archivo llamado w1_slave que contiene la salida de su sensor. El contenido será algo como:
a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES a2 01 4b 46 7f ff 0e 10 d8 t=26125
El número después de “t=” es el que queremos. Es la temperatura en 1/1000 grados Celsius (en el ejemplo, 26,125 °C). Solo necesitamos un programa simple que lea este archivo y extraiga ese número. Por suerte, Adafruit ya creó un script en Python que hace justo eso y muestra la temperatura en pantalla. Cree un nuevo archivo en su Pi (p. ej., temperature.py) y copie el siguiente código:
Haga clic aquí para ver el código
Ejecute este script (sudo python temperature.py) para ver la salida de su sensor de temperatura en pantalla.
Paso 3: Transmitir la temperatura
Aquí es donde nos desviamos del tutorial de Adafruit. Enviar la temperatura a la pantalla es aburrido. Queremos transmitir estos datos a algún lugar donde podamos ver no solo la temperatura actual sino un historial de datos capturados (además, ¿quién quiere “leer” un montón de temperaturas como texto; queremos una bonita visualización de datos). Primero instale el streamer de Initial State para dar a nuestras mediciones de temperatura un destino al que ir (vaya aquí para instrucciones sobre la configuración del streamer de Initial State; es superfácil y toma menos de dos minutos). Vamos a modificar el script anterior para transmitir la temperatura a nuestra cuenta de Initial State en lugar de mostrarla en pantalla. Aquí están las modificaciones:
Haga clic aquí para ver el código
Deberá copiar y pegar la clave de cliente asociada a su cuenta de Initial State entre las comillas en la línea 6 donde dice client_key = "". Puede encontrar su clave de cliente en la configuración de su cuenta o en la página de inicio al iniciar sesión.
Estas son las modificaciones que acabamos de hacer:
- En la línea 4, importamos el módulo streamer de Initial State.
- En la línea 6, creamos un nuevo bucket llamado “Temperature Stream” y lo asociamos a nuestra cuenta mediante nuestra clave de cliente.
- En la línea 30, modificamos la función
read_temp()para que solo devuelva la temperatura en Celsius. - En la línea 34, convertimos la salida de
read_temp()a Fahrenheit. - En las líneas 35 y 36, transmitimos las dos temperaturas.
Para más detalle: IoT 101 Project: Stream Temperature from your Raspberry Pi
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
- Monitorización profesional de temperatura con Raspberry Pi y DS18B20
- 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 precisa de temperatura en armario de servidores con Raspberry Pi
- Raspberry Pi BMP085: Lecturas precisas de temperatura y presión vía I2C
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Tu primer proyecto IoT con Raspberry Pi, DHT11 y ThingSpeak