Der CD74HC4067 ist ein 16-Kanal-Analog-/digitaler Multiplexer, mit dem ein Raspberry PI mit bis zu schneiden kann 16 Eingänge oder Ausgänge nur wenige GPIO -Stifte. Es ist perfekt, um die I/A -Funktionen Ihres Himbeer -PI bei der Arbeit mit mehreren Sensoren oder Geräten zu erweitern.
Was Sie brauchen werden
- Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
- CD74HC4067 Multiplexer
- Analoge oder digitale Eingabegeräte (z. B. Sensoren, Schalter)
- Breadboard- und Jumper -Drähte
- Python installiert Auf dem Raspberry Pi
Schritt 1: Verständnis des CD74HC4067
Der CD74HC4067 hat:
- 16 Eingangs-/Ausgangskanäle (S0-S15)
- 4 Kontrollstifte (S0, S1, S2, S3) So wählen Sie den aktiven Kanal aus.
- 1 Pin aktivieren (en) Um den Multiplexer zu aktivieren (aktiv niedrig).
- Eine Single Com (gemeinsam) Pin für gemeinsame Kommunikation.
Wahrheitstabelle für die Kanalauswahl
S3 | S2 | S1 | S0 | Aktiver Kanal |
---|---|---|---|---|
0 | 0 | 0 | 0 | S0 |
0 | 0 | 0 | 1 | S1 |
0 | 0 | 1 | 0 | S2 |
... | ... | ... | ... | ... |
1 | 1 | 1 | 1 | S15 |
Schritt 2: Verkabelung des CD74HC4067 mit Raspberry Pi
Schließen Sie den Multiplexer wie folgt mit dem Himbeer -PI an:
CD74HC4067 PIN | Raspberry Pi Pin |
---|---|
VCC | 3,3 V (Pin 1) |
GND | GND (Pin 6) |
S0 | Gpio17 (Pin 11) |
S1 | Gpio27 (Pin 13) |
S2 | Gpio22 (Pin 15) |
S3 | Gpio23 (Pin 16) |
En | GND (aktiv niedrig) |
Com | GPIO 18 (Pin 12, Analogeingang/Ausgang) |
S0-S15 | Schließen Sie Sensoren/Geräte an |
Schritt 3: Installieren Sie die erforderlichen Bibliotheken
Aktualisieren Sie Ihren Raspberry Pi und installieren Sie Python -Bibliotheken für die GPIO -Steuerung.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Schritt 4: Python -Code zum Lesen von Daten aus dem Multiplexer
Hier ist ein Python -Skript zur Steuerung des CD74HC4067 und zum Lesen von Daten aus den verbundenen Kanälen.
Beispiel für Python -Code
import RPi.GPIO as GPIO
import time
# Define GPIO pins
S0 = 17
S1 = 27
S2 = 22
S3 = 23
COM = 18 # Common pin for input/output
# Initialize GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup([S0, S1, S2, S3], GPIO.OUT)
GPIO.setup(COM, GPIO.IN) # Set COM pin as input for reading data
# Function to select a channel
def select_channel(channel):
GPIO.output(S0, channel & 0x01)
GPIO.output(S1, (channel >> 1) & 0x01)
GPIO.output(S2, (channel >> 2) & 0x01)
GPIO.output(S3, (channel >> 3) & 0x01)
try:
while True:
for channel in range(16):
select_channel(channel)
time.sleep(0.1) # Small delay for channel stabilization
value = GPIO.input(COM) # Read data from the active channel
print(f"Channel {channel}: {value}")
time.sleep(1)
except KeyboardInterrupt:
print("Exiting...")
finally:
GPIO.cleanup()
Schritt 5: Anwendungen des CD74HC4067 mit Raspberry Pi
- Mehrere Sensoren lesen: Schnittstelle mit bis zu 16 Sensoren (z. B. Temperatur, Luftfeuchtigkeit oder Licht).
- Erweiterung der digitalen E/O: Verwalten Sie mehrere Switches, LEDs oder Relais.
- Analoge Sensorintegration: Lesen Sie Signale aus Potentiometern, Joysticks oder Bodenfeuchtigkeitssensoren.
- Heimautomatisierung: Steuern Sie mehrere Geräte wie Lichter, Lüfter oder Geräte.
Fehlerbehebung
-
Keine Daten von Kanälen:
- Überprüfen Sie die Verkabelung von S0-S3-Kontrollstiften und den COM-Pin.
- Stellen Sie sicher, dass Sensoren/Geräte ordnungsgemäß mit den S0-S15-Stiften verbunden sind.
-
Falsche Kanalauswahl:
- Überprüfen Sie die Wahrheitstabelle für S0-S3-Konfigurationen.
- Stellen Sie sicher, dass der EN -Pin zur Aktivierung mit GND verbunden ist.
-
Intermittierende Lesungen:
- Fügen Sie eine kleine Verzögerung hinzu (
time.sleep(0.1)
) zwischen den Schaltkanälen, um die Signalstabilisierung zu ermöglichen.
- Fügen Sie eine kleine Verzögerung hinzu (
Abschluss
Der CD74HC4067 Multiplexer ist eine leistungsstarke und kostengünstige Möglichkeit, die Eingangs-/Ausgangsfunktionen des Raspberry Pi zu erweitern. Wenn Sie diesem Handbuch folgen, können Sie einfach mit bis zu 16 analogen oder digitalen Geräten mit nur 4 GPIO -Stiften übergeordnet werden. Experimentieren Sie mit verschiedenen Sensoren und Anwendungen, um dieses vielseitige Modul optimal zu nutzen! 🚀