IL CD74HC4067 è un multiplexer analogico/digitale a 16 canali che consente a Raspberry Pi di interfacciarsi 16 ingressi o output Usando solo pochi perni GPIO. È perfetto per espandere le capacità I/O del tuo Raspberry Pi quando si lavora con più sensori o dispositivi.
Cosa avrai bisogno
- Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
- Multiplexer CD74HC4067
- Dispositivi di ingresso analogici o digitali (ad esempio, sensori, interruttori)
- Breadboard e fili jumper
- Python installato Sul Raspberry Pi
Passaggio 1: Comprensione del CD74HC4067
Il CD74HC4067 ha:
- 16 canali di input/output (S0-S15)
- 4 pin di controllo (S0, S1, S2, S3) Per selezionare il canale attivo.
- 1 Abilita PIN (EN) Per attivare il multiplexer (basso attivo).
- Un singolo Com (comune) pin per comunicazione condivisa.
Tabella della verità per la selezione dei canali
S3 | S2 | S1 | S0 | Canale attivo |
---|---|---|---|---|
0 | 0 | 0 | 0 | S0 |
0 | 0 | 0 | 1 | S1 |
0 | 0 | 1 | 0 | S2 |
... | ... | ... | ... | ... |
1 | 1 | 1 | 1 | S15 |
Passaggio 2: Cablaggio del CD74HC4067 a Raspberry Pi
Collegare il multiplexer al Raspberry Pi come segue:
PIN CD74HC4067 | Pin di lampone |
---|---|
VCC | 3.3V (pin 1) |
GND | GND (PIN 6) |
S0 | GPIO17 (PIN 11) |
S1 | GPIO27 (PIN 13) |
S2 | GPIO22 (PIN 15) |
S3 | GPIO23 (PIN 16) |
En | GND (basso attivo) |
Com | GPIO18 (pin 12, ingresso/output analogico) |
S0-S15 | Collegare sensori/dispositivi |
Passaggio 3: installa le librerie richieste
Aggiorna il tuo Raspberry Pi e installa le librerie Python per il controllo GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Passaggio 4: codice Python per leggere i dati dal multiplexer
Ecco uno script Python per controllare il CD74HC4067 e leggere i dati dai canali collegati.
Esempio di codice Python
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()
Passaggio 5: applicazioni del CD74HC4067 con Raspberry Pi
- Leggendo più sensori: Interfaccia con un massimo di 16 sensori (ad es. Temperatura, umidità o luce).
- Espansione I/O digitale: Gestisci più switch, LED o relè.
- Integrazione del sensore analogico: Leggi i segnali di potenziometri, joystick o sensori di umidità del suolo.
- Automazione domestica: Controlla più dispositivi come luci, fan o elettrodomestici.
Risoluzione dei problemi
-
Nessun dato dai canali:
- Verificare il cablaggio di perni di controllo S0-S3 e il PIN COM.
- Assicurarsi che i sensori/i dispositivi siano correttamente collegati ai pin S0-S15.
-
Selezione errata del canale:
- Controlla la tabella della verità per le configurazioni S0-S3.
- Assicurarsi che il pin EN sia collegato a GND per l'attivazione.
-
Letture intermittenti:
- Aggiungi un piccolo ritardo (
time.sleep(0.1)
) tra i canali di commutazione per consentire la stabilizzazione del segnale.
- Aggiungi un piccolo ritardo (
Conclusione
IL Multiplexer CD74HC4067 è un modo potente ed economico per espandere le funzionalità di input/output di Raspberry Pi. Seguendo questa guida, puoi facilmente interfacciarsi con un massimo di 16 dispositivi analogici o digitali utilizzando solo 4 pin GPIO. Sperimenta vari sensori e applicazioni per sfruttare al meglio questo modulo versatile! 🚀