การใช้ Multiplexer CD74HC4067 กับ Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

ที่ CD74HC4067 เป็นมัลติเพล็กเซอร์แบบอะนาล็อก/ดิจิตอล 16 ช่องที่ช่วยให้ Raspberry Pi สามารถเชื่อมต่อได้มากถึง 16 อินพุตหรือเอาต์พุต ใช้พิน GPIO เพียงไม่กี่ตัว เหมาะสำหรับการขยายขีดความสามารถ I/O ของ Raspberry Pi ของคุณเมื่อทำงานกับเซ็นเซอร์หรืออุปกรณ์หลายตัว


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
  2. CD74HC4067 มัลติเพล็กเซอร์
  3. อุปกรณ์อินพุตแบบอะนาล็อกหรือดิจิตอล (เช่นเซ็นเซอร์สวิตช์)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. ติดตั้ง Python บนราสเบอร์รี่ pi

ขั้นตอนที่ 1: ทำความเข้าใจกับ CD74HC4067

CD74HC4067 มี:

  • 16 ช่องอินพุต/เอาต์พุต (S0-S15)
  • 4 หมุดควบคุม (S0, S1, S2, S3) เพื่อเลือกช่องที่ใช้งานอยู่
  • 1 เปิดใช้งาน PIN (EN) เพื่อเปิดใช้งานมัลติเพล็กเซอร์ (ใช้งานต่ำ)
  • เดี่ยว com (สามัญ) พิน สำหรับการสื่อสารที่ใช้ร่วมกัน

ตารางความจริงสำหรับการเลือกช่องสัญญาณ

S3 S2 S1 S0 ช่องที่ใช้งานอยู่
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

ขั้นตอนที่ 2: เดินสาย CD74HC4067 ไปยัง Raspberry Pi

เชื่อมต่อมัลติเพล็กเซอร์เข้ากับ Raspberry Pi ดังนี้:

CD74HC4067 PIN Raspberry Pi Pin
VCC 3.3V (พิน 1)
gnd GND (พิน 6)
S0 GPIO17 (พิน 11)
S1 GPIO27 (พิน 13)
S2 GPIO22 (พิน 15)
S3 GPIO23 (พิน 16)
en GND (ใช้งานต่ำ)
com GPIO18 (พิน 12 อินพุต/เอาต์พุตแบบอะนาล็อก)
S0-S15 เชื่อมต่อเซ็นเซอร์/อุปกรณ์

ขั้นตอนที่ 3: ติดตั้งไลบรารีที่ต้องการ

อัปเดต Raspberry Pi ของคุณและติดตั้งไลบรารี Python สำหรับการควบคุม GPIO

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

ขั้นตอนที่ 4: รหัส Python เพื่ออ่านข้อมูลจากมัลติเพล็กเซอร์

นี่คือสคริปต์ Python เพื่อควบคุม CD74HC4067 และอ่านข้อมูลจากช่องที่เชื่อมต่อ

ตัวอย่างรหัส 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()

ขั้นตอนที่ 5: แอปพลิเคชันของ CD74HC4067 กับ Raspberry Pi

  1. อ่านเซ็นเซอร์หลายตัว: อินเทอร์เฟซกับเซ็นเซอร์สูงสุด 16 ตัว (เช่นอุณหภูมิความชื้นหรือแสง)
  2. ขยาย I/O ดิจิตอล: จัดการสวิตช์ LED หรือรีเลย์หลายตัว
  3. การรวมเซ็นเซอร์แบบอะนาล็อก: อ่านสัญญาณจากโพเทนชิโอมิเตอร์จอยสติ๊กหรือเซ็นเซอร์ความชื้นในดิน
  4. ระบบอัตโนมัติในบ้าน: ควบคุมอุปกรณ์หลายเครื่องเช่นไฟพัดลมหรือเครื่องใช้ไฟฟ้า

การแก้ไขปัญหา

  1. ไม่มีข้อมูลจากช่อง:

    • ตรวจสอบการเดินสายของหมุดควบคุม S0-S3 และหมุด Com
    • ตรวจสอบให้แน่ใจว่าเซ็นเซอร์/อุปกรณ์เชื่อมต่อกับหมุด S0-S15 อย่างถูกต้อง
  2. การเลือกช่องที่ไม่ถูกต้อง:

    • ตรวจสอบตารางความจริงสำหรับการกำหนดค่า S0-S3
    • ตรวจสอบให้แน่ใจว่า EN PIN เชื่อมต่อกับ GND สำหรับการเปิดใช้งาน
  3. การอ่านเป็นระยะ ๆ:

    • เพิ่มความล่าช้าเล็กน้อย (time.sleep(0.1)) ระหว่างช่องสลับเพื่อให้สัญญาณมีเสถียรภาพ

บทสรุป

ที่ CD74HC4067 มัลติเพล็กเซอร์ เป็นวิธีที่ทรงพลังและคุ้มค่าในการขยายขีดความสามารถในการป้อนข้อมูล/เอาต์พุตของ Raspberry PI โดยทำตามคำแนะนำนี้คุณสามารถเชื่อมต่อกับอุปกรณ์อะนาล็อกหรือดิจิตอลได้สูงสุด 16 ตัวโดยใช้พิน GPIO เพียง 4 ตัว ทดลองกับเซ็นเซอร์และแอพพลิเคชั่นต่างๆเพื่อใช้ประโยชน์จากโมดูลอเนกประสงค์นี้มากที่สุด! 🚀

แสดงความคิดเห็น

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.