Käyttämällä CD74HC4067 -multiplekseriä Raspberry PI: n kanssa

Using the CD74HC4067 Multiplexer with the Raspberry Pi

Se CD74HC4067 on 16-kanavainen analoginen/digitaalinen multiplekseri, jonka avulla vadelma Pi voi liittyä 16 tuloa tai lähtöä käyttämällä vain muutamia GPIO -nastat. Se on täydellinen Raspberry PI: n I/O -ominaisuuksien laajentamiseen työskennellessäsi useiden anturien tai laitteiden kanssa.


Mitä tarvitset

  1. Raspberry Pi (Mikä tahansa malli, jolla on GPIO -tuki, esim. Pi 3, pi 4)
  2. CD74HC4067 Multiplekseri
  3. Analogiset tai digitaaliset syöttölaitteet (esim. Anturit, kytkimet)
  4. Leipälevy- ja hyppyjohdot
  5. Python asennettu Raspberry Pi

Vaihe 1: CD74HC4067: n ymmärtäminen

CD74HC4067 on:

  • 16 Syöttö/lähtökanavat (S0-S15)
  • 4 Ohjaustapit (S0, S1, S2, S3) Aktiivisen kanavan valitseminen.
  • 1 Ota nasta (fi) multiplekserin aktivointi (aktiivinen matala).
  • Yksi Com (yleinen) jaettavalle viestintälle.

Kanavan valinnan totuustaulukko

S3 S2 S1 S0 Aktiivinen kanava
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

Vaihe 2: CD74HC4067: n johdotus Raspberry PI: hen

Kytke multiplekseri Raspberry Pi: hen seuraavasti:

CD74HC4067 -nasta Raspberry Pi -tappi
VCC 3,3 V (nasta 1)
Hölynpöly GND (nasta 6)
S0 GPIO17 (nasta 11)
S1 GPIO27 (nasta 13)
S2 GPIO22 (nasta 15)
S3 GPIO23 (nasta 16)
Fi GND (aktiivinen matala)
Com GPIO18 (nasta 12, analoginen tulo/lähtö)
S0-S15 Kytke anturit/laitteet

Vaihe 3: Asenna vaadittavat kirjastot

Päivitä Raspberry Pi ja asenna Python -kirjastot GPIO -ohjaukseen.

sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio

Vaihe 4: Python -koodi lukemaan tietoja multiplekseristä

Tässä on Python -skripti CD74HC4067: n hallitsemiseksi ja tietojen lukeminen kytketyistä kanavista.

Python -koodiesimerkki

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()

Vaihe 5: CD74HC4067: n sovellukset Raspberry PI: llä

  1. Useiden anturien lukeminen: Rajapinta jopa 16 anturia (esim. Lämpötila, kosteus tai valo).
  2. Laajeneva digitaalinen I/O: Hallitse useita kytkimiä, LED -levyjä tai releitä.
  3. Analoginen anturin integraatio: Lue signaaleja potentiometreistä, joystickeistä tai maaperän kosteusantureista.
  4. Kodin automaatio: Hallitse useita laitteita, kuten valoja, tuulettimia tai laitteita.

Vianetsintä

  1. Ei kanavia:

    • Varmista S0-S3-ohjaustappien ja COM-ninan johdotus.
    • Varmista, että anturit/laitteet on kytketty oikein S0-S15-nastaihin.
  2. Väärä kanavan valinta:

    • Tarkista totuustaulukko S0-S3-kokoonpanoista.
    • Varmista, että EN -nasta on kytketty GND: hen aktivointia varten.
  3. Ajoittaiset lukemat:

    • Lisää pieni viive (time.sleep(0.1)) kytkentäkanavien välillä signaalin vakauttamisen mahdollistamiseksi.

Johtopäätös

Se CD74HC4067 Multiplekseri on tehokas ja kustannustehokas tapa laajentaa Raspberry Pi: n syöttö-/lähtöominaisuuksia. Seuraamalla tätä opasta, voit helposti liittyä jopa 16 analogiseen tai digitaaliseen laitteeseen vain 4 GPIO -nastalla. Kokeile erilaisia ​​antureita ja sovelluksia hyödyntääksesi tätä monipuolista moduulia! 🚀

Jätä kommentti

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.