Utilizzando il multiplexer CD74HC4067 con Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

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

  1. Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
  2. Multiplexer CD74HC4067
  3. Dispositivi di ingresso analogici o digitali (ad esempio, sensori, interruttori)
  4. Breadboard e fili jumper
  5. 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

  1. Leggendo più sensori: Interfaccia con un massimo di 16 sensori (ad es. Temperatura, umidità o luce).
  2. Espansione I/O digitale: Gestisci più switch, LED o relè.
  3. Integrazione del sensore analogico: Leggi i segnali di potenziometri, joystick o sensori di umidità del suolo.
  4. Automazione domestica: Controlla più dispositivi come luci, fan o elettrodomestici.

Risoluzione dei problemi

  1. 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.
  2. 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.
  3. Letture intermittenti:

    • Aggiungi un piccolo ritardo (time.sleep(0.1)) tra i canali di commutazione per consentire la stabilizzazione del segnale.

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! 🚀

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.