الـ CD74HC4067 هو مُبدِّل متعدد 16 قناة تماثلية/رقمية يتيح لـ Raspberry Pi الاتصال بما يصل إلى 16 مُدخلات أو مُخرجات باستخدام عدد قليل فقط من دبابيس GPIO. إنه مثالي لتوسيع قدرات الإدخال/الإخراج على Raspberry Pi عند العمل مع عدة حساسات أو أجهزة.
ما ستحتاج إليه
- راسبيري باي (أي طراز مزوّد بدعم GPIO، مثل Pi 3، Pi 4)
- CD74HC4067 مُبدِّل إشارة متعدد (مُضاعِف)
- أجهزة الإدخال التناظرية أو الرقمية (على سبيل المثال، أجهزة استشعار، مفاتيح)
- لوحة تجارب وأسلاك توصيل
- تم تثبيت Python على Raspberry Pi
الخطوة 1: فهم الـ CD74HC4067
الـ CD74HC4067 لديه:
- 16 قنوات إدخال/إخراج (S0-S15)
- 4 دبابيس تحكم (S0، S1، S2، S3) لتحديد القناة النشطة.
- 1 تمكين PIN (EN) لتنشيط المُضاعِد (نشط على LOW).
- واحد دبوس COM (مشترك) للتواصل المشترك
جدول الحقيقة لاختيار القناة
| S3 | S2 | S1 | S0 | القناة النشطة |
|---|---|---|---|---|
| 0 | ` | 0 | 0 | S0 |
| 0 | 0 | 0 | 1 | S1 |
| 0 | 0 | 1 | 0 | S2 |
| ... | ... | ... | ... | ... |
| 1 | 1 | 1 | 1 | S15 |
الخطوة 2: توصيل الأسلاك CD74HC4067 إلى Raspberry Pi
قم بتوصيل المُبدِّل (multiplexer) إلى Raspberry Pi كما يلي:
| CD74HC4067 دبوس | دبوس Raspberry Pi |
|---|---|
| VCC | 3.3V (الدبوس 1) |
| أرضي | GND (الدبوس 6) |
| S0 | GPIO17 (الدبوس 11) |
| S1 | GPIO27 (الدبوس 13) |
| S2 | GPIO22 (السن 15) |
| S3 | GPIO23 (الدبوس 16) |
| EN | GND (نشط عند المستوى المنخفض) |
| شركة | GPIO18 (الدبوس 12، إدخال/إخراج تناظري) |
| S0-S15 | توصيل المستشعرات/الأجهزة |
الخطوة 3: تثبيت المكتبات المطلوبة
حدّث Raspberry Pi الخاص بك وثبّت مكتبات Python للتحكم في GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
الخطوة 4: كود Python لقراءة البيانات من المُبدِّل (Multiplexer)
إليك برنامج 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 مستشعرًا (مثل درجة الحرارة أو الرطوبة أو الضوء).
- توسيع الإدخال/الإخراج الرقمي: إدارة مفاتيح متعددة أو مصابيح LED أو مرحّلات.
- تكامل المستشعرات التناظرية: قراءة الإشارات من المقاييس المتغيرة، أو عصي التحكم، أو حساسات رطوبة التربة.
- أتمتة المنزل: تحكم في عدة أجهزة مثل الأضواء أو المراوح أو الأجهزة الكهربائية.
استكشاف الأخطاء وإصلاحها
-
لا توجد بيانات من القنوات:
- تحقق من توصيل دبابيس التحكم S0-S3 ودبوس COM.
- تأكد من توصيل المستشعرات/الأجهزة بشكل صحيح بدبابيس S0-S15.
-
اختيار قناة غير صحيح:
- تحقَّق من جدول الحقيقة لتكوينات S0-S3.
- تأكد من توصيل دبوس EN بـ GND للتفعيل.
-
قراءات متقطعة:
- أضف تأخيرًا صغيرًا (
time.sleep(0.1)) بين تبديل القنوات للسماح باستقرار الإشارة.
- أضف تأخيرًا صغيرًا (
الخلاصة
الـ CD74HC4067 معدل الإرسال المتعدد هي طريقة قوية وفعّالة من حيث التكلفة لتوسيع قدرات الإدخال/الإخراج في Raspberry Pi. باتباع هذا الدليل، يمكنك بسهولة توصيل ما يصل إلى 16 جهازًا تماثليًا أو رقميًا باستخدام 4 دبابيس فقط من GPIO. جرّب مجموعة متنوعة من الحساسات والتطبيقات للاستفادة القصوى من هذه الوحدة متعددة الاستخدامات! 🚀





