La Raspberry Pi pasó de ser una plataforma educativa a convertirse en el corazón de sistemas de automatización industrial en plantas de manufactura, almacenes y edificios conectados. Su combinación de potencia de cómputo, conectividad y ecosistema maduro la hace ideal para proyectos IoT de producción.
¿Por qué Raspberry Pi para proyectos IoT industriales?
| Plataforma | Fortaleza | Mejor para |
|---|---|---|
| Raspberry Pi 5 | SO completo, Python nativo, conectividad robusta | Gateway IoT, procesamiento local, dashboards |
| Arduino | Bajo consumo, tiempo real determinístico | Lectura de sensores, control de actuadores |
| ESP32 | WiFi/BLE integrado, muy bajo costo | Nodos IoT de bajo consumo en campo |
| PLC industrial | Robustez extrema, certificaciones | Entornos críticos con requisitos estrictos |
Una arquitectura IoT bien diseñada combina ESPs como nodos de captura en campo, con Raspberry Pi como gateway local que procesa y retransmite a la nube.
Modelos recomendados en 2026
| Modelo | CPU / RAM | Caso de uso IoT |
|---|---|---|
| Raspberry Pi 5 | Cortex-A76 4-core 2.4GHz / 4–8 GB | Gateway IoT principal, Edge AI |
| Raspberry Pi 4 Model B | Cortex-A72 4-core 1.8GHz / 2–8 GB | Gateway IoT, servidor MQTT, Grafana |
| Raspberry Pi Zero 2 W | Cortex-A53 4-core 1GHz / 512 MB | Nodo IoT compacto de bajo costo |
| Compute Module 4 | Igual que Pi 4, factor industrial | Integración en equipo industrial |
Sensores y actuadores más usados
- DHT22 / SHT31: Temperatura y humedad. SHT31 preferible para producción por su precisión ±0.2°C.
- DS18B20: Sonda de temperatura sumergible para tuberías y tanques. Protocolo 1-Wire.
- PZEM-004T: Medición de consumo eléctrico (voltaje, corriente, potencia, kWh).
- RC522: Lector RFID para control de acceso vía tarjetas MIFARE.
- Módulo de relé 4/8 canales: Controla cargas de alta tensión (motores, luces, válvulas) desde GPIO.
Protocolo MQTT: el lenguaje del IoT
MQTT es el protocolo de mensajería ligero más adoptado en IoT industrial. Su arquitectura publish/subscribe es ideal para sistemas con muchos nodos que reportan a un punto central.
# Instalar Mosquitto (broker MQTT) en Raspberry Pi
sudo apt update && sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto && sudo systemctl start mosquitto
# Publicar un mensaje de prueba
mosquitto_pub -h localhost -t "fabrica/linea1/temperatura" -m "23.5"
# Suscribirse a un topic
mosquitto_sub -h localhost -t "fabrica/linea1/#"Node-RED: automatización visual sin código
Node-RED corre perfectamente en Raspberry Pi y permite conectar sensores, APIs y bases de datos mediante nodos visuales, sin código complejo.
# Instalar Node-RED en Raspberry Pi OS
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl enable nodered.service && sudo systemctl start nodered.service
# Acceder desde el navegador en http://<IP-Pi>:1880Proyecto 1: Monitor de temperatura con alertas automáticas
Lee un sensor DS18B20 y publica los datos por MQTT cada 30 segundos.
import glob, time
import paho.mqtt.client as mqtt
BROKER = "localhost"
TOPIC = "fabrica/linea1/temperatura"
def leer_temperatura():
base = '/sys/bus/w1/devices/'
dispositivo = glob.glob(base + '28*')[0]
with open(dispositivo + '/w1_slave', 'r') as f:
lineas = f.readlines()
return round(float(lineas[1].split('t=')[1]) / 1000.0, 2)
cliente = mqtt.Client()
cliente.connect(BROKER)
while True:
temp = leer_temperatura()
cliente.publish(TOPIC, str(temp))
print(f"Temperatura publicada: {temp}°C")
time.sleep(30)Para habilitar 1-Wire: añade dtoverlay=w1-gpio al archivo /boot/config.txt y conecta el sensor al GPIO pin 4. Reinicia la Pi para que surta efecto.
Proyecto 2: Monitor de consumo eléctrico por máquina
El sensor PZEM-004T mide voltaje, corriente, potencia y energía acumulada (kWh). Se instala en serie con el cable de fase del equipo a monitorear.
import paho.mqtt.client as mqtt
from pzem004t import PZEM004T # pip install pzem004t
BROKER = "localhost"
EQUIPO = "compresor_principal"
pzem = PZEM004T('/dev/ttyUSB0')
cliente = mqtt.Client()
cliente.connect(BROKER)
while True:
datos = pzem.read()
if datos:
base = f"fabrica/energia/{EQUIPO}"
cliente.publish(f"{base}/potencia", datos.power)
cliente.publish(f"{base}/energia_kwh", datos.energy)
print(f"{EQUIPO}: {datos.power}W | {datos.energy}kWh")
time.sleep(60)Proyecto 3: Control de acceso con RFID
import RPi.GPIO as GPIO
import mfrc522
import paho.mqtt.client as mqtt
from datetime import datetime
LED_OK = 17; LED_FAIL = 27; RELE = 22
AUTORIZADAS = {"A1B2C3D4", "11223344"}
GPIO.setmode(GPIO.BCM)
GPIO.setup([LED_OK, LED_FAIL, RELE], GPIO.OUT, initial=GPIO.LOW)
lector = mfrc522.MFRC522()
cliente = mqtt.Client(); cliente.connect("localhost")
while True:
estado, _ = lector.MFRC522_Request(lector.PICC_REQIDL)
if estado == lector.MI_OK:
estado, uid = lector.MFRC522_Anticoll()
if estado == lector.MI_OK:
uid_str = "".join([hex(x)[2:].upper() for x in uid])
acceso = uid_str in AUTORIZADAS
cliente.publish("acceso/eventos", f"{uid_str},{datetime.now().isoformat()},{acceso}")
pin = LED_OK if acceso else LED_FAIL
GPIO.output(pin, GPIO.HIGH)
if acceso: GPIO.output(RELE, GPIO.HIGH)
time.sleep(3)
GPIO.output([LED_OK, LED_FAIL, RELE], GPIO.LOW)Seguridad en dispositivos IoT industriales
- Cambia la contraseña por defecto inmediatamente: El usuario
picon contraseñaraspberryes conocido mundialmente. - Autenticación SSH con llaves: Desactiva la autenticación por contraseña y usa solo llaves Ed25519.
- Firewall con UFW: Solo permite los puertos necesarios (SSH en puerto no estándar, MQTT 1883 solo desde red local).
- MQTT con TLS: Sin esto, cualquier persona en tu red puede publicar y suscribirse a tus topics.
- Red IoT aislada: Los dispositivos IoT deben estar en una VLAN separada del resto de la red.
De prototipo a producción industrial
- Watchdog de hardware: Habilita el watchdog del kernel (
bcm2835_wdt) para reinicio automático si el software se cuelga. - Almacenamiento confiable: Usa SSD externo via USB o NVMe via HAT en lugar de tarjeta microSD para producción.
- Respaldo de imagen: Una vez estable, genera una imagen completa del disco. Si la Pi falla, restaura en 10 minutos.
- Arquitectura recomendada: Raspberry Pi como gateway local (MQTT + Node-RED + InfluxDB) → datos replicados a cloud (AWS IoT o Grafana Cloud) → dashboards accesibles desde cualquier dispositivo.