ال CD74HC4067 هو مضاعفات التناظرية/الرقمية 16 قناة تتيح لـ Raspberry Pi الواجهة مع ما يصل إلى 16 مدخلات أو مخرجات باستخدام عدد قليل من دبابيس GPIO. إنه مثالي لتوسيع إمكانيات I/O لـ Raspberry Pi عند العمل مع أجهزة استشعار أو أجهزة متعددة.
ماذا ستحتاج
- التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
- CD74HC4067 Multiplexer
- أجهزة الإدخال التناظرية أو الرقمية (على سبيل المثال ، أجهزة الاستشعار ، المفاتيح)
- الأسلاك الأسلاك والبلوز
- بيثون مثبت على التوت PI
الخطوة 1: فهم CD74HC4067
يحتوي CD74HC4067 على:
- 16 قنوات الإدخال/الإخراج (S0-S15)
- 4 دبابيس التحكم (S0 ، S1 ، S2 ، S3) لتحديد القناة النشطة.
- 1 تمكين دبوس (EN) لتفعيل المضاعف (النشط المنخفض).
- واحد كوم (شائع) دبوس للاتصال المشترك.
جدول الحقيقة لاختيار القناة
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
قم بتوصيل مضاعفة PI Raspberry كما يلي:
CD74HC4067 دبوس | التوت بي دبوس |
---|---|
VCC | 3.3V (دبوس 1) |
GND | GND (دبوس 6) |
S0 | GPIO17 (PIN 11) |
S1 | GPIO27 (PIN 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 لقراءة البيانات من مضاعف
إليك نص Python للتحكم في CD74HC4067 وقراءة البيانات من القنوات المتصلة.
مثال رمز بيثون
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 بـ GND للتنشيط.
-
قراءات متقطعة:
- أضف تأخيرًا صغيرًا (
time.sleep(0.1)
) بين القنوات التبديل للسماح بتثبيت الإشارة.
- أضف تأخيرًا صغيرًا (
خاتمة
ال CD74HC4067 Multiplexer هي وسيلة قوية وفعالة من حيث التكلفة لتوسيع قدرات الإدخال/الإخراج في Raspberry PI. باتباع هذا الدليل ، يمكنك بسهولة الواجهة مع ما يصل إلى 16 جهازًا تمثيليًا أو رقميًا باستخدام 4 دبابيس GPIO فقط. تجربة مع مختلف أجهزة الاستشعار والتطبيقات لتحقيق أقصى استفادة من هذه الوحدة متعددة الاستخدامات! 🚀