ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

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

Using the CD74HC4067 Multiplexer with the Raspberry Pi

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


สิ่งที่คุณจะต้องมี

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

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

ตัว CD74HC4067 มี:

  • 16 Input/Output Channels (S0-S15)
  • 4 Control Pins (S0, S1, S2, S3) เพื่อเลือกช่องที่ใช้งาน
  • 1 Enable Pin (EN) เพื่อเปิดใช้งานมัลติเพล็กเซอร์ (active LOW)
  • A single COM (common) pin สำหรับการสื่อสารร่วม

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

S3 S2 S1 S0 Active Channel
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 (Pin 1)
GND GND (Pin 6)
S0 GPIO17 (Pin 11)
S1 GPIO27 (Pin 13)
S2 GPIO22 (Pin 15)
S3 GPIO23 (Pin 16)
EN GND (Active LOW)
COM GPIO18 (Pin 12, Analog Input/Output)
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 Code Example

import RPi.GPIO as GPIO
import time

# กำหนดพิน GPIO
S0 = 17
S1 = 27
S2 = 22
S3 = 23
COM = 18  # พินร่วมสำหรับอินพุต/เอาต์พุต

# เริ่มต้น GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup([S0, S1, S2, S3], GPIO.OUT)
GPIO.setup(COM, GPIO.IN)  # ตั้งค่าพิน COM เป็นอินพุตเพื่ออ่านข้อมูล

# ฟังก์ชันสำหรับเลือกช่อง
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)  # หน่วงเวลาสั้นๆ เพื่อให้สัญญาณนิ่ง
            value = GPIO.input(COM)  # อ่านข้อมูลจากช่องที่เปิดใช้งาน
            print(f"Channel {channel}: {value}")
        time.sleep(1)
except KeyboardInterrupt:
    print("Exiting...")
finally:
    GPIO.cleanup()

ขั้นตอนที่ 5: การประยุกต์ใช้ CD74HC4067 กับ Raspberry Pi

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

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

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

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

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

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

สรุป

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

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.

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