Analoge Sensoren mit Raspberry Pi und Zabbix auslesen – Schritt-für-Schritt-Anleitung
Analoge Sensoren mit Raspberry Pi und Zabbix auslesen
Obwohl der Raspberry Pi keine nativen Analogeingänge besitzt, macht der MCP3008 10-Bit, 8-Kanal ADC das Hinzufügen analoger Fähigkeiten trivial. Er steckt direkt in den GPIO-Header des Pi via SPI-Bus und benötigt keine zusätzlichen Bauteile.
Dieses Tutorial führt Sie durch das Verdrahten eines MCP3008 am Pi, das Auslesen eines lichtabhängigen Widerstands (LDR) mit Python und das Einspeisen der Daten in Zabbix zum Monitoring.
SPI-Bus verstehen
Der MCP3008 überträgt einen 10-Bit-Digitalwert über das SPI-Interface, ein voll-duplexes, synchrones Serialprotokoll im Master/Slave-Modus. Mehrere Slaves können den Bus teilen, jeder über seine eigene CS-Leitung selektiert.
Auf dem Raspberry Pi ist SPI über den 4-Pin-Header (GPIO8, 9, 10, 11) verfügbar. Um den Hardware-SPI-Treiber zu aktivieren, die Blacklist-Datei bearbeiten:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Die Zeile mit spi-bcm2708 finden und mit # auskommentieren. Speichern und neu starten:
sudo reboot
Nach Reboot prüfen, ob Treiber geladen ist:
lsmod | grep spi_bcm2708
Es sollte spi_bcm2708 gelistet sein.
Python SPI-Bibliothek installieren
Für SPI-Zugriff aus Python nutzen wir py-spidev. Zuerst Python-Entwicklungsheader installieren:
sudo apt-get install python-dev
Dann Bibliothek herunterladen und installieren:
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
MCP3008 an Raspberry Pi anschließen
| MCP3008 Pin | Raspberry Pi Pin |
|---|---|
| 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 |
Die acht CH0‑CH7 Pins am MCP3008 dienen als Analogeingänge. In diesem Beispiel verbinden wir einen davon mit einem LDR.
Lichtabhängigen Widerstand (LDR) nutzen
Wir verwendeten einen LDR EG & G Vactec, VT43, CdS, 8 Ω – 300 kΩ. Bei normaler Beleuchtung beträgt sein Widerstand ca. 10 kΩ; in Dunkelheit steigt er über 2 MΩ.
Fällt Licht auf den LDR, sinkt sein Widerstand und zieht die Spannung am MCP3008-Eingang Richtung 0 V. Im Dunkeln steigt der Widerstand und drückt die Spannung Richtung 3,3 V Referenz.
Jeder Sensor, der seinen Widerstand mit einer physikalischen Größe ändert, lässt sich so verdrahten.
ADC-Ausgabe interpretieren
Der MCP3008 liefert eine 10-Bit-Zahl von 0 bis 1023, wobei 0 für 0 V und 1023 für 3,3 V steht. Für einen LDR entspricht dies einem Lichtintensitätsbereich von ca. 0 – 10.000 Lux.
Diese Rohwerte können via Python-Skript des Raspberry Pi an Zabbix gesendet werden, um Dashboards zu erstellen, Schwellenwerte zu setzen und Alarme auszulösen.
Für weitere Details: Analog Sensors Reading with Raspberry Pi and Zabbix Supervisor
Herstellungsprozess
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Raumeffizient Temperaturen mit Raspberry Pi und Nagios überwachen
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Heim-Temperatur- & Feuchtigkeitsmonitor mit Raspberry Pi & Web-Dashboard – Echtzeit-Fernüberwachung
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- Home Energy Centre: Solar PV, Thermische Panels & Raumtemperaturen mit Raspberry Pi & Moteino überwachen
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- 433 MHz Smart-Home-Controller mit Sensorflare und Raspberry Pi selbst bauen
- Analoge Sensoren am Raspberry Pi mit nur einem GPIO-Pin auslesen
- Analoge Sensoren am Raspberry Pi ohne nativen ADC auslesen – Step-Response Methode