Analoge Sensoren mit MCP3008 an Raspberry Pi anschließen – Verdrahtung, SPI-Setup und Python-Beispielcode
Bereit, analoge Signale mit Ihrem Raspberry Pi auszulesen? Dieser Leitfaden führt Sie durch das Verdrahten eines MCP3008 ADC, das Aktivieren von SPI, die Installation der erforderlichen Bibliotheken und die Ausführung eines grundlegenden Python-Skripts zum Abrufen von Sensordaten.
Schritt 1: MCP3008 verdrahten
- Stromversorgung (3,3 V) – VDD & VREF an Raspberry Pi 3,3 V Pin (rot).
- Masse – AGND & DGND an Raspberry Pi GND (schwarz).
- SPI-Verbindungen –
- CLK → Pi Pin 23 (GPIO11) – orange.
- DOUT → Pi Pin 21 (GPIO9) – gelb.
- DIN → Pi Pin 19 (GPIO10) – blau.
- CS → Pi Pin 24 (GPIO8) – violett.
- Analoge Eingänge – Verbinden Sie das Signalkabel Ihres Sensors mit einem der MCP3008 A0–A7 Pins (linke Seite des Chips). Nutzen Sie 3,3 V für V+ und GND für G–.
Achten Sie darauf, dass die halbkreisförmige Kerbe des Chips in die gleiche Richtung zeigt wie im Diagramm dargestellt. Für einen MCP3004 ist das Pin-Layout identisch, außer dass der Chip nur vier analoge Eingänge hat.
Schritt 2: SPI auf dem Raspberry Pi aktivieren
- Öffnen Sie ein Terminal und führen Sie aus:
sudo raspi-config
- Navigieren Sie zu Advanced Options → SPI und aktivieren Sie es.
- Starten Sie den Pi neu:
sudo reboot
- Nach dem Neustart prüfen Sie, ob SPI-Geräte existieren:
ls /dev/
Sie solltenspidev0.0undspidev0.1sehen. - Falls sie fehlen, aktualisieren Sie Ihr System:
sudo apt-get update && sudo apt-get upgrade
installieren Sie dann die neueste Firmware:sudo wget https://goo.gl/1BOfJ -O /usr/bin/rpi-update sudo chmod +x /usr/bin/rpi-update sudo rpi-update sudo reboot
I²C aus Blacklist entfernen (falls nötig)
Manchmal ist I²C auf der Blacklist, was SPI verhindert. Öffnen Sie die Blacklist-Datei:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Entfernen oder kommentieren Sie jede Zeile mit blacklist i2c-bcm2708 aus, dann neu starten.
Schritt 3: Python SPI Bibliothek installieren
- Voraussetzungen installieren:
sudo apt-get install python-dev git
- py-spidev Repository klonen:
git clone https://github.com/doceme/py-spidev
- Bibliothek installieren:
cd py-spidev sudo python setup.py install
Schritt 4: Python-Beispielcode
Erstellen Sie mcp3008.py in Ihrem Home-Verzeichnis:
nano ~/mcp3008.py
Fügen Sie das folgende Skript ein:
# mcp3008.py
import spidev
import time
# SPI Bus 0, Device 0 öffnen
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1350000
def read_channel(channel):
if channel < 0 or channel > 7:
return -1
adc = spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
try:
while True:
value = read_channel(0) # Kanal 0 auslesen
print(f"Channel 0: {value}")
time.sleep(1)
except KeyboardInterrupt:
spi.close()
print("Programm beendet")
Führen Sie das Skript aus mit:
python3 ~/mcp3008.py
Sie sollten einen kontinuierlichen Strom roher ADC-Werte (0–1023) sehen. Konvertieren Sie diese mithilfe des MCP3008-Datenblatts in Spannung oder Sensoreinheiten.
Referenzen
Herstellungsprozess
- C# Grundlagen: Eingabe und Ausgabe Essentials
- Raspberry Pi & HDC2010: Kompletter I2C Temperatur- & Feuchtigkeitssensor Setup-Guide
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Präzises Raspberry Pi Temperaturprofiling mit Python, SQLite und LabVIEW
- TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
- Remote-Wetterüberwachung mit Raspberry Pi 3 & PubNub
- HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung
- TI SensorTag mit Blynk via Node-RED auf Raspberry Pi Zero integrieren