The CD74HC4067 เป็นมัลติเพล็กเซอร์อนาล็อก/ดิจิทัล 16 ช่องที่ช่วยให้ Raspberry Pi เชื่อมต่อกับได้ถึง 16 inputs or outputs โดยใช้เพียงไม่กี่พิน GPIO เหมาะสำหรับขยายความสามารถ I/O ของ Raspberry Pi เมื่อทำงานกับเซ็นเซอร์หรืออุปกรณ์หลายชิ้น
สิ่งที่คุณจะต้องมี
- Raspberry Pi (ทุกรุ่นที่รองรับ GPIO เช่น Pi 3, Pi 4)
- CD74HC4067 Multiplexer
- อุปกรณ์อินพุตแบบอนาล็อกหรือดิจิทัล (เช่น เซ็นเซอร์ สวิตช์)
- เบรดบอร์ดและสายจัมเปอร์
- ติดตั้ง 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
- อ่านเซ็นเซอร์หลายตัว: เชื่อมต่อได้ถึง 16 เซ็นเซอร์ (เช่น อุณหภูมิ ความชื้น หรือแสง)
- ขยาย Digital I/O: ควบคุมสวิตช์ LED หรือรีเลย์หลายตัว
- การรวมเซ็นเซอร์อนาล็อก: อ่านสัญญาณจากโพเทนชิโอมิเตอร์ จอยสติ๊ก หรือเซ็นเซอร์ความชื้นในดิน
- ระบบอัตโนมัติภายในบ้าน: ควบคุมอุปกรณ์หลายอย่างเช่น ไฟ พัดลม หรือตู้ไฟฟ้า
การแก้ไขปัญหา
-
ไม่มีข้อมูลจากช่อง:
- ตรวจสอบการเดินสายของพินควบคุม S0-S3 และพิน COM
- ตรวจสอบให้แน่ใจว่าเซ็นเซอร์/อุปกรณ์เชื่อมต่อกับพิน S0-S15 อย่างถูกต้อง
-
การเลือกช่องผิด:
- ตรวจสอบตารางความจริงสำหรับการกำหนดค่า S0-S3
- ตรวจสอบให้แน่ใจว่าพิน EN ต่อเข้ากับ GND เพื่อเปิดใช้งาน
-
การอ่านไม่เสถียร:
- เพิ่มหน่วงเวลาเล็กน้อย (
time.sleep(0.1)) ระหว่างการสลับช่องเพื่อให้สัญญาณนิ่ง
- เพิ่มหน่วงเวลาเล็กน้อย (
สรุป
The CD74HC4067 multiplexer เป็นวิธีที่ทรงพลังและคุ้มค่าในการขยายความสามารถอินพุต/เอาต์พุตของ Raspberry Pi โดยการทำตามคู่มือนี้ คุณสามารถเชื่อมต่อกับอุปกรณ์อนาล็อกหรือดิจิทัลได้ถึง 16 ตัวโดยใช้เพียง 4 พิน GPIO ลองทดสอบกับเซ็นเซอร์และการประยุกต์ใช้งานต่างๆ เพื่อใช้ประโยชน์สูงสุดจากโมดูลที่ยืดหยุ่นนี้! 🚀





