The CD74HC4067 este un multiplexor analog/digital cu 16 canale care permite unui Raspberry Pi să interfațeze cu până la 16 intrari sau iesiri folosind doar câțiva pini GPIO. Este perfect pentru a extinde capacitățile I/O ale Raspberry Pi atunci când lucrați cu mai mulți senzori sau dispozitive.
Ce vei avea nevoie
- Raspberry Pi (orice model cu suport GPIO, de exemplu, Pi 3, Pi 4)
- Multiplexor CD74HC4067
- Dispozitive de intrare analogice sau digitale (de exemplu, senzori, comutatoare)
- Breadboard și fire jumper
- Python instalat pe Raspberry Pi
Pasul 1: Înțelegerea CD74HC4067
CD74HC4067 are:
- 16 canale de intrare/ieșire (S0-S15)
- 4 pini de control (S0, S1, S2, S3) pentru a selecta canalul activ.
- 1 Activare PIN (EN) pentru a activa multiplexorul (activ LOW).
- Un singur PIN COM (comun). pentru comunicarea partajată.
Tabelul de adevăr pentru selectarea canalului
S3 | S2 | S1 | S0 | Canal activ |
---|---|---|---|---|
0 | 0 | 0 | 0 | S0 |
0 | 0 | 0 | 1 | S1 |
0 | 0 | 1 | 0 | S2 |
... | ... | ... | ... | ... |
1 | 1 | 1 | 1 | S15 |
Pasul 2: Conectați CD74HC4067 la Raspberry Pi
Conectați multiplexorul la Raspberry Pi după cum urmează:
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) |
RO | GND (Activ LOW) |
COM | GPIO18 (Pin 12, intrare/ieșire analogică) |
S0-S15 | Conectați senzori/dispozitive |
Pasul 3: Instalați bibliotecile necesare
Actualizați-vă Raspberry Pi și instalați biblioteci Python pentru controlul GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Pasul 4: Cod Python pentru a citi datele din multiplexor
Iată un script Python pentru a controla CD74HC4067 și a citi datele de pe canalele conectate.
Exemplu de cod 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()
Pasul 5: Aplicații ale CD74HC4067 cu Raspberry Pi
- Citirea mai multor senzori: Interfață cu până la 16 senzori (de exemplu, temperatură, umiditate sau lumină).
- Extinderea I/O digitale: Gestionați mai multe comutatoare, LED-uri sau relee.
- Integrarea senzorilor analogici: Citiți semnalele de la potențiometre, joystick-uri sau senzori de umiditate a solului.
- Home Automation: controlați mai multe dispozitive, cum ar fi lumini, ventilatoare sau aparate.
Depanare
-
Nu există date de la canale:
- Verificați cablarea pinilor de control S0-S3 și a pinului COM.
- Asigurați-vă că senzorii/dispozitivele sunt conectați corect la pinii S0-S15.
-
Selectare incorectă a canalului:
- Verificați tabelul de adevăr pentru configurațiile S0-S3.
- Asigurați-vă că pinul EN este conectat la GND pentru activare.
-
Citirile intermitente:
- Adăugați o mică întârziere (
time.sleep(0.1)
) între canalele de comutare pentru a permite stabilizarea semnalului.
- Adăugați o mică întârziere (
Concluzie
The Multiplexor CD74HC4067 este o modalitate puternică și rentabilă de a extinde capacitățile de intrare/ieșire ale Raspberry Pi. Urmând acest ghid, puteți interfața cu ușurință cu până la 16 dispozitive analogice sau digitale folosind doar 4 pini GPIO. Experimentați cu diverși senzori și aplicații pentru a profita la maximum de acest modul versatil! 🚀