Lectura de Sensores Analógicos con Raspberry Pi y Zabbix: Guía Paso a Paso
Lectura de Sensores Analógicos con Raspberry Pi y Zabbix
Aunque la Raspberry Pi carece de entradas analógicas nativas, el ADC MCP3008 de 10 bits y 8 canales hace trivial añadir capacidades analógicas. Se enchufa directamente en el header GPIO de la Pi vía el bus SPI y no requiere componentes extra.
Este tutorial le guía en el cableado de un MCP3008 a la Pi, lectura de una resistencia dependiente de luz (LDR) con Python, y alimentación de los datos a Zabbix para monitorización.
El hardware:
- Raspberry Pi
- ADC MCP3008 de 8 canales
- Resistencia dependiente de luz (LDR)
- Resistencia de 10 kΩ
- Protoboard
- Algo de cableado
Entendiendo el Bus SPI
El MCP3008 transmite un valor digital de 10 bits sobre la interfaz SPI, un protocolo serie síncrono full‑duplex que opera en modo maestro/esclavo. Múltiples esclavos pueden compartir el bus, cada uno seleccionado por su propia línea CS.
En la Raspberry Pi, SPI se expone vía el header de 4 pines (GPIO8, 9, 10, 11). Para habilitar el driver SPI de hardware, edite el archivo de lista negra:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Localice la línea que contiene spi-bcm2708 y préndale un # para comentarla. Guarde y reinicie:
sudo reboot
Tras reiniciar, verifique que el driver está cargado:
lsmod | grep spi_bcm2708
Debería ver spi_bcm2708 listado.
Instalando la Biblioteca Python SPI
Para acceder al bus SPI desde Python usaremos py-spidev. Primero instale los headers de desarrollo para Python:
sudo apt-get install python-dev
Luego descargue e instale la biblioteca:
mkdir py-spidev cd py-spidev wget https://raw.github.com/doceme/py-spidev/master/setup.py wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c sudo python setup.py install
Conectando el MCP3008 a la Raspberry Pi
| Pin MCP3008 | Pin Raspberry Pi |
|---|---|
| VDD | 3.3 V |
| VREF | 3.3 V |
| AGND | GND |
| CLK | GPIO11 (P1‑23) |
| DOUT | GPIO9 (P1‑21) |
| DIN | GPIO10 (P1‑19) |
| CS | GPIO8 (P1‑24) |
| DGND | GND |
Los ocho pines CH0‑CH7 en el MCP3008 sirven como entradas analógicas. En este ejemplo conectaremos uno de ellos a un LDR.
Usando una Resistencia Dependiente de Luz (LDR)
Usamos un LDR EG & G Vactec, VT43, CdS, 8 Ω – 300 kΩ. En iluminación normal su resistencia es aproximadamente 10 kΩ; en oscuridad supera 2 MΩ.
Cuando la luz incide en el LDR, su resistencia cae, tirando del voltaje en la entrada del MCP3008 hacia 0 V. En la oscuridad la resistencia sube, empujando el voltaje hacia la referencia de 3.3 V.
Cualquier sensor que cambie resistencia con una magnitud física puede cablearse de esta forma.
Interpretando la Salida del ADC
El MCP3008 produce un número de 10 bits que va de 0 a 1023, donde 0 corresponde a 0 V y 1023 a 3.3 V. Para un LDR, esto se traduce a un rango de intensidad lumínica de aproximadamente 0 – 10,000 lux.
Estos valores en bruto pueden enviarse a Zabbix vía el script Python de la Raspberry Pi, permitiéndole crear paneles, establecer umbrales y disparar alertas.
Para más detalle: Lectura de Sensores Analógicos con Raspberry Pi y Zabbix Supervisor
Proceso de manufactura
- Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
- Monitorizar eficientemente temperaturas de salas con Raspberry Pi y Nagios
- Cómo leer temperatura con un DS18B20 en Raspberry Pi 2
- Monitor de temperatura y humedad en casa con Raspberry Pi y panel web – Seguimiento remoto en tiempo real
- Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
- Centro de Energía Doméstica: Monitorización de paneles solares fotovoltaicos, térmicos y temperaturas con Raspberry Pi y Moteino
- Monitorización precisa de temperatura en armario de servidores con Raspberry Pi
- Construya un Controlador Domótico 433 MHz con Sensorflare y Raspberry Pi
- Medición de Sensores Analógicos en Raspberry Pi con un Solo Pin GPIO
- Mida Sensores Analógicos en Raspberry Pi sin ADC Nativo
- Construya un Sistema Rápido y Fiable de Detección de Incendios con Samsung SAMIIO, Arduino UNO y Raspberry Pi