A مشفّر دوار هو جهاز استشعار يحول الحركة الدورانية إلى إشارات رقمية، مما يتيح تحكماً دقيقاً في الموضع والسرعة والاتجاه. يُستخدم عادة في أدوات التحكم في مستوى الصوت، والروبوتات، وآلات CNC، والتنقل في القوائم. سيُطلعك هذا الدليل على كيفية توصيل واستخدام مشفّر دوار مع Raspberry Pi باستخدام Python.
ما ستحتاجه
- Raspberry Pi (أي طراز يدعم GPIO، مثل Pi 3، Pi 4)
- مشفّر دوار (مثلاً، KY-040)
- لوحة تجارب وأسلاك توصيل
- تثبيت Python على Raspberry Pi
الخطوة 1: فهم كيفية عمل المشفّر الدوار
يحتوي المشفّر الدوار على مخرجين رئيسيين:
- CLK (A) – إشارة نبض الساعة
- DT (B) – إشارة الاتجاه
- SW (اختياري) – زر ضغط (يُستخدم لاختيار الخيارات)
عند تدويره، فإن دبابيس CLK و DT تولّد نبضات. ترتيب هذه النبضات يحدد اتجاه الدوران.
الخطوة 2: توصيل المشفّر الدوار بـ Raspberry Pi
| دبوس المشفّر الدوار | دبوس Raspberry Pi | الوظيفة |
|---|---|---|
| VCC | 3.3V (Pin 1) | مزود الطاقة |
| GND | الأرضي (Pin 6) | أرضي |
| CLK (A) | GPIO17 (Pin 11) | نبضة الساعة |
| DT (B) | GPIO27 (Pin 13) | إشارة الاتجاه |
| SW (زر) | GPIO22 (Pin 15) | زر الضغط |
الخطوة 3: تثبيت المكتبات المطلوبة
حدّث Raspberry Pi وقم بتثبيت مكتبة RPi.GPIO للتعامل مع مقاطعات GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
الخطوة 4: كود Python لقراءة مدخلات المشفّر الدوار
كود Python أساسي لقراءة الدوران
import RPi.GPIO as GPIO
import time
# Define GPIO pins
CLK = 17
DT = 27
counter = 0
last_state = None
# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(CLK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Read initial state
last_state = GPIO.input(CLK)
try:
while True:
current_state = GPIO.input(CLK)
if current_state != last_state:
if GPIO.input(DT) != current_state:
counter += 1
direction = "Clockwise"
else:
counter -= 1
direction = "Counterclockwise"
print(f"Position: {counter}, Direction: {direction}")
last_state = current_state
time.sleep(0.01) # Debounce delay
except KeyboardInterrupt:
print("Exiting...")
finally:
GPIO.cleanup()
إضافة اكتشاف ضغط الزر
# Define button pin
SW = 22
GPIO.setup(SW, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def button_pressed(channel):
print("Button Pressed!")
# Add event detection for button press
GPIO.add_event_detect(SW, GPIO.FALLING, callback=button_pressed, bouncetime=300)
الخطوة 5: تطبيقات المشفّر الدوار مع Raspberry Pi
- التنقل في القوائم – التمرير عبر قوائم LCD أو OLED.
- التحكم في مستوى الصوت – ضبط مستوى الصوت في تطبيقات الوسائط.
- آلات CNC – تحكم دقيق في الحركة لتطبيقات محركات السائر.
- الروبوتات – كشف دوران العجلات لقياس السرعة والموضع.
- أتمتة المنزل الذكي – استخدامه كمحدد لوظائف المنزل المختلفة.
استكشاف الأخطاء وإصلاحها
-
المشفّر الدوار غير مستجيب
- تحقق من الأسلاك وتعيينات دبابيس GPIO.
- تأكد من تمكين المقاومات السحبية (
PUD_UP).
-
تخطي خطوات أو حركة متقلبة
- أضف زمن تصفية الاهتزاز (debounce) (
time.sleep(0.01)). - استخدم مقاطعات GPIO بدلاً من الاستطلاع (
GPIO.add_event_detect).
- أضف زمن تصفية الاهتزاز (debounce) (
-
زر الضغط غير مكتشف
- تأكد من توصيل دبوس الزر بشكل صحيح بالأرضي (GND).
- أضف زمن تصفية 300ms في
GPIO.add_event_detect.
الخاتمة
يعد المشفّر الدوار جهاز إدخال متعدد الاستخدامات لـ التنقل في القوائم، التحكم بالمحركات، وتتبع الموضع. باتباع هذا الدليل، يمكنك بسهولة دمج المشفّر الدوار مع Raspberry Pi لمشاريع تفاعلية. 🚀



