De CD74HC4067 är en 16-kanals analog/digital multiplexer som gör att en Raspberry Pi kan gränssnitt med upp till 16 ingångar eller utgångar använder bara några GPIO -stift. Det är perfekt för att utöka I/O -kapaciteten för din Raspberry Pi när du arbetar med flera sensorer eller enheter.
Vad du behöver
- Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
- CD74HC4067 multiplexer
- Analoga eller digitala ingångsenheter (t.ex. sensorer, switchar)
- Breadboard och jumpertrådar
- Python installerad på Raspberry Pi
Steg 1: Förstå CD74HC4067
CD74HC4067 har:
- 16 Ingångs-/utgångskanaler (S0-S15)
- 4 Kontrollstift (S0, S1, S2, S3) För att välja den aktiva kanalen.
- 1 Aktivera stift (EN) För att aktivera multiplexern (aktiv låg).
- En singel Com (vanlig) stift för delad kommunikation.
Sanningstabell för val av kanal
S3 | S2 | S1 | S0 | Aktiv kanal |
---|---|---|---|---|
0 | 0 | 0 | 0 | S0 |
0 | 0 | 0 | 1 | S1 |
0 | 0 | 1 | 0 | S2 |
... | ... | ... | ... | ... |
1 | 1 | 1 | 1 | S15 |
Steg 2: Kopplar CD74HC4067 till Raspberry Pi
Anslut multiplexern till Raspberry Pi enligt följande:
CD74HC4067 -stift | Hallon pi |
---|---|
Vcc | 3.3V (stift 1) |
Gard | GND (stift 6) |
S0 | GPIO17 (stift 11) |
S1 | GPIO27 (stift 13) |
S2 | GPIO22 (stift 15) |
S3 | GPIO23 (stift 16) |
Sv | GND (aktiv låg) |
Com | GPIO18 (stift 12, analog ingång/utgång) |
S0-S15 | Anslut sensorer/enheter |
Steg 3: Installera obligatoriska bibliotek
Uppdatera din Raspberry Pi och installera pythonbibliotek för GPIO -kontroll.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Steg 4: Python -kod för att läsa data från multiplexern
Här är ett Python -skript för att styra CD74HC4067 och läsa data från de anslutna kanalerna.
Python -kodexempel
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()
Steg 5: Tillämpningar av CD74HC4067 med Raspberry Pi
- Läser flera sensorer: Gränssnitt med upp till 16 sensorer (t.ex. temperatur, luftfuktighet eller ljus).
- Utöka digital I/O: Hantera flera switchar, lysdioder eller reläer.
- Analog sensorintegration: Läs signaler från potentiometrar, joysticks eller jordfuktighetssensorer.
- Hemautomation: Kontrollera flera enheter som ljus, fläktar eller apparater.
Felsökning
-
Inga data från kanaler:
- Kontrollera ledningarna för S0-S3-styrstift och COM-stiftet.
- Se till att sensorer/enheter är korrekt anslutna till S0-S15-stiften.
-
Felaktig kanalval:
- Kontrollera sanningstabellen för S0-S3-konfigurationer.
- Se till att EN -stiftet är anslutet till GND för aktivering.
-
Intermittenta avläsningar:
- Lägg till en liten försening (
time.sleep(0.1)
) mellan omkopplingskanaler för att möjliggöra signalstabilisering.
- Lägg till en liten försening (
Slutsats
De CD74HC4067 multiplexer är ett kraftfullt och kostnadseffektivt sätt att utöka Raspberry Pis input/utgångsfunktioner. Genom att följa den här guiden kan du enkelt gränssnitt med upp till 16 analoga eller digitala enheter med bara 4 GPIO -stift. Experimentera med olika sensorer och applikationer för att få ut det mesta av denna mångsidiga modul! 🚀