. CD74HC4067 jest 16-kanałowym multiplekserem analogowym/cyfrowym, który umożliwia raspberry Pi interfejs z do 16 wejść lub wyjść Używając tylko kilku pinów GPIO. Jest idealny do rozszerzenia możliwości we/wy twoich Raspberry Pi podczas pracy z wieloma czujnikami lub urządzeniami.
Czego będziesz potrzebować
- Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
- CD74HC4067 Multiplexer
- Analogowe lub cyfrowe urządzenia wejściowe (np. Czujniki, przełączniki)
- Druty chleba i skoczków
- Zainstalowany Python na Raspberry Pi
Krok 1: Zrozumienie CD74HC4067
CD74HC4067 ma:
- 16 kanałów wejściowych/wyjściowych (S0-S15)
- 4 szpilki kontrolne (S0, S1, S2, S3) Aby wybrać aktywny kanał.
- 1 Włącz pin (EN) Aby aktywować multiplekser (aktywny niski).
- Singiel Com (wspólny) pin do wspólnej komunikacji.
Tabela prawdy do wyboru kanału
S3 | S2 | S1 | S0 | Aktywny kanał |
---|---|---|---|---|
0 | 0 | 0 | 0 | S0 |
0 | 0 | 0 | 1 | S1 |
0 | 0 | 1 | 0 | S2 |
... | ... | ... | ... | ... |
1 | 1 | 1 | 1 | S15 |
Krok 2: Okablowanie CD74HC4067 do Raspberry Pi
Podłącz multiplekser z Raspberry Pi w następujący sposób:
Pin CD74HC4067 | Pin Raspberry Pi |
---|---|
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 (aktywny niski) |
Com | GPIO18 (pin 12, analogowe wejście/wyjście) |
S0-S15 | Połącz czujniki/urządzenia |
Krok 3: Zainstaluj wymagane biblioteki
Zaktualizuj swoje Raspberry Pi i zainstaluj biblioteki Python do kontroli GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Krok 4: Kod Pythona do odczytu danych z multipleksera
Oto skrypt Python do kontrolowania CD74HC4067 i odczytu danych z podłączonych kanałów.
Przykład kodu Pythona
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()
Krok 5: Zastosowania CD74HC4067 z Raspberry Pi
- Czytanie wielu czujników: Interfejs z maksymalnie 16 czujnikami (np. Temperatura, wilgotność lub światło).
- Rozszerzanie cyfrowych we/wy: Zarządzaj wieloma przełącznikami, diodami LED lub przekaźnikami.
- Integracja czujnika analogowego: Przeczytaj sygnały z potencjometrów, joysticków lub czujników wilgoci gleby.
- Automatyzacja domu: Kontroluj wiele urządzeń, takich jak światła, wentylatory lub urządzenia.
Rozwiązywanie problemów
-
Brak danych z kanałów:
- Sprawdź okablowanie pinów sterujących S0-S3 i pin.
- Upewnij się, że czujniki/urządzenia są odpowiednio podłączone do pinów S0-S15.
-
Nieprawidłowy wybór kanału:
- Sprawdź tabelę prawdy dla konfiguracji S0-S3.
- Upewnij się, że pin jest podłączony do GND do aktywacji.
-
Przerywane odczyty:
- Dodaj niewielkie opóźnienie (
time.sleep(0.1)
) między kanałami przełączającymi, aby umożliwić stabilizację sygnału.
- Dodaj niewielkie opóźnienie (
Wniosek
. CD74HC4067 Multiplexer jest potężnym i opłacalnym sposobem rozszerzenia możliwości wejściowych/wyjściowych Raspberry Pi. Postępując zgodnie z tym przewodnikiem, możesz łatwo połączyć się z maksymalnie 16 urządzeniami analogowymi lub cyfrowymi za pomocą zaledwie 4 pinów GPIO. Eksperymentuj z różnymi czujnikami i aplikacjami, aby jak najlepiej wykorzystać ten wszechstronny moduł! 🚀