Analoge sensoren verbinden met Raspberry Pi via MCP3008 – Bedrading, SPI-setup en voorbeeld Python-code
Klaar om analoge signalen met je Raspberry Pi uit te lezen? Deze gids leidt je door het bedraden van een MCP3008 ADC, SPI inschakelen, de benodigde bibliotheken installeren en een basis Python-script draaien om sensordata op te halen.
Stap 1: De MCP3008 bedraden
- Voeding (3,3 V) – VDD & VREF naar Raspberry Pi 3,3 V pin (rood).
- Massa – AGND & DGND naar Raspberry Pi GND (zwart).
- SPI-verbindingen –
- CLK → Pi pin 23 (GPIO11) – oranje.
- DOUT → Pi pin 21 (GPIO9) – geel.
- DIN → Pi pin 19 (GPIO10) – blauw.
- CS → Pi pin 24 (GPIO8) – violet.
- Analoge ingangen – Verbind de signaaldraad van je sensor met een van de A0–A7 pinnen van de MCP3008 (linkerkant van de chip). Gebruik 3,3 V voor V+ en GND voor G–.
Zorg dat de halfcirkelvormige knik van de chip dezelfde richting heeft als in het diagram. Voor een MCP3004 is de pinlayout identiek, behalve dat de chip slechts vier analoge ingangen heeft.
Stap 2: SPI inschakelen op de Raspberry Pi
- Open een terminal en voer uit:
sudo raspi-config
- Navigeer naar Advanced Options → SPI en schakel het in.
- Herstart de Pi:
sudo reboot
- Na herstart, controleer of SPI-devices bestaan:
ls /dev/
Je zouspidev0.0enspidev0.1moeten zien. - Als ze ontbreken, update je systeem:
sudo apt-get update && sudo apt-get upgrade
installeer dan de nieuwste 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 de-blacklisten (indien nodig)
Soms is I²C geblacklist, wat SPI kan verhinderen. Open het blacklist-bestand:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Verwijder of commentarieer elke regel met blacklist i2c-bcm2708, en herstart daarna.
Stap 3: Python SPI-bibliotheek installeren
- Installeer vereisten:
sudo apt-get install python-dev git
- Kloon de py-spidev repository:
git clone https://github.com/doceme/py-spidev
- Installeer de bibliotheek:
cd py-spidev sudo python setup.py install
Stap 4: Voorbeeld Python-code
Maak mcp3008.py in je home directory:
nano ~/mcp3008.py
Plak het volgende script:
# mcp3008.py
import spidev
import time
# Open SPI bus 0, device 0
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) # Lees van kanaal 0
print(f"Kanaal 0: {value}")
time.sleep(1)
except KeyboardInterrupt:
spi.close()
print("Programma beëindigd")
Voer het script uit met:
python3 ~/mcp3008.py
Je zou een continue stroom ruwe ADC-waarden (0–1023) moeten zien. Converteer deze naar spanning of sensoreenheden met behulp van de MCP3008-datasheet.
Referenties
Productieproces
- Raspberry Pi & HDC2010: Complete I2C Temperatuur & Vochtigheid Sensor Setup Gids
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Nauwkeurige Raspberry Pi Temperatuurprofielering Met Python, SQLite En LabVIEW
- TMP006 Infrarood temperatuursensor met Raspberry Pi: Python bibliotheek & installatiegids
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
- Externe weerbewaking met Raspberry Pi 3 en PubNub
- HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
- TI SensorTag integreren met Blynk via Node-RED op Raspberry Pi Zero
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- C# Fundamentals: Invoer en Uitvoer Basis