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