APDS9960، مستشعر الإيماءات وRGB والقرب لأردوينو
في هذا الدرس سنستكشف كيفية استخدام وحدة المستشعر APDS9960، التي تجمع بين كشف الإيماءات واستشعار الألوان RGB وقدرات استشعار القرب. هذا المستشعر متعدد الاستخدامات يمكنه اكتشاف الحركات في اتجاهات مختلفة ويمكن دمجه في مشاريع للتحكم بالمحركات أو الأضواء أو أجهزة أخرى بناءً على إيماءات اليد. بنهاية هذا الدرس ستفهم كيفية توصيل أسلاك المستشعر وتنفيذ كشف الإيماءات الأساسي في مشاريع أردوينو الخاصة بك.

وحدة APDS9960 صغيرة الحجم وتتطلب توصيلات قليلة، مما يجعلها خيارًا ممتازًا للمشاريع التفاعلية. سنستخدم Arduino IDE لبرمجة المستشعر وعرض الإيماءات المكتشفة على المراقب التسلسلي. للحصول على دليل بصري، راجع الفيديو عند (00:00).
شرح الأجهزة
المكون الرئيسي في هذا المشروع هو وحدة المستشعر APDS9960. تستطيع هذه الوحدة اكتشاف الإيماءات مثل السحب لليسار، السحب لليمين، السحب للأعلى، والسحب للأسفل. كما تقيس قيم ألوان RGB والقرب من الأجسام القريبة. يتواصل المستشعر مع لوحة Arduino عبر واجهة I2C، مما يبسط عملية الأسلاك والبرمجة.
يحتوي APDS9960 على عدة مستشعرات داخلية: مستشعر إيماءات، ومستشعر ألوان RGB، ومستشعر ضوء محيط. يستخدم مستشعر الإيماءات LED بالأشعة تحت الحمراء وكاشفًا ضوئيًا لاكتشاف حركات اليد، بينما يقيس مستشعر RGB شدة الضوء الأحمر والأخضر والأزرق لتحديد الألوان. يحدد مستشعر القرب مدى قرب جسم ما من المستشعر، وهو أمر مفيد في تطبيقات مختلفة.
تفاصيل ورقة البيانات
| المصنّع | أفاجو تكنولوجيز |
|---|---|
| رقم القطعة | APDS-9960 |
| جهد المنطق/الإدخال/الإخراج | 1.8 V إلى 3.6 V |
| جهد التغذية | 3.3 فولت |
| تيار الخرج (لكل قناة) | 20 mA كحد أقصى |
| تيار الذروة (لكل قناة) | 100 ميلي أمبير |
| إرشادات تردد PWM | غير قابل للتطبيق |
| عتبات الإدخال المنطقية | 0.3 V (منخفض)، 0.7 V (مرتفع) |
| هبوط الجهد / Rمقاومة المصرف-المصدر عند التشغيل/ التشبع | 0.5 V كحد أقصى |
| الحدود الحرارية | -40 إلى 85 °C |
| حزمة | LGA ذو 6 دبابيس |
| ملاحظات / متغيرات | لا شيء |
- زوّد جهاز APDS9960 دائمًا بجهد 3.3V؛ الجهد الأعلى قد يتلف المستشعر.
- تأكد من وجود مقاومات سحب مناسبة على خطوط I2C عند توصيل عدة أجهزة.
- أبقِ المستشعر بعيدًا عن أشعة الشمس المباشرة لتجنب التداخل.
- استخدم مكثف فصل بالقرب من دبابيس الطاقة لتحقيق الاستقرار.
- كن على دراية بنطاق الاستشعار للكشف عن القرب (عادةً حوالي 20 سم).
تعليمات الأسلاك

لتوصيل وحدة المستشعر APDS9960 بلوحة أردوينو الخاصة بك، اتبع الخطوات التالية:
- قم بتوصيل الـ
VCCوصل دبوس APDS9960 إلى دبوس 3.3V على لوحة الأردوينو. - وصل الـ
GNDوصل الدبوس بأحد دبابيس GND في لوحة الأردوينو. - قم بتوصيل الـ
SDAدبوس إلى الأردوينوA4دبوس (خط بيانات I2C). - قم بتوصيل الـ
SCLدبوس إلى الأردوينوA5دبوس (خط الساعة لـ I2C). - وصل الـ
INTدبوس إلى دبوس رقمي2على الأردوينو لمعالجة المقاطعات.
لاحظ أنه إذا كنت تستخدم نموذجًا مختلفًا من Arduino، فقد تختلف دبابيس SDA وSCL (على سبيل المثال، على Arduino Mega، استخدمSDAعلى الدبوس رقم 20 وSCLعلى الدبوس 21). تأكد من التحقق من تعيينات الدبابيس المحددة للوحة الخاصة بك. للتكوينات المختلفة، راجع الفيديو عند (02:30).
أمثلة على الكود وشرح خطوة بخطوة
في دالة الإعداد (setup)، نقوم بتهيئة الاتصال التسلسلي ومستشعر APDS9960. تم إعداد دبوس المقاطعة للاستماع إلى أحداث الإيماءات. فيما يلي مقتطف من كود الإعداد:
void setup() {
pinMode(APDS9960_INT, INPUT);
Serial.begin(9600);
Serial.println(F("APDS-9960 initialization..."));
if (apds.init()) {
Serial.println(F("Initialization complete"));
} else {
Serial.println(F("Initialization failed"));
}
}يقوم هذا الكود بإعداد التكوينات اللازمة لضمان أن المستشعر جاهز للاستخدام ويوفر ملاحظات في المراقب التسلسلي.
بعد ذلك، نحدد كيفية التعامل مع الإيماءات التي يكتشفها المستشعر. الـhandleGestureتستخدم الدالة عبارة switch لتحديد اتجاه الإيماءة. فيما يلي مقتطف مُركّز:
void handleGesture() {
if (apds.isGestureAvailable()) {
switch (apds.readGesture()) {
case DIR_UP:
Serial.println("UP");
break;
case DIR_DOWN:
Serial.println("DOWN");
break;
// Additional cases for left, right, near, and far
}
}
}تتحقق هذه الدالة مما إذا كانت هناك إيماءة متاحة وتقرأ اتجاهها، ثم تطبع النتيجة على المراقب التسلسلي لتقديم تغذية راجعة. تأكد من الرجوع إلى الشيفرة الكاملة المرفوعة أسفل المقال للحصول على تفاصيل التنفيذ الكاملة.
عرض توضيحي / ما الذي تتوقعه
عند تشغيل البرنامج، يجب أن ترى الإيماءات المكتشفة مطبوعة على شاشة المراقبة التسلسلية أثناء تحريك يدك في اتجاهات مختلفة. على سبيل المثال، السحب لأعلى يجب أن يعرض UP، بينما السحب لأسفل يعرض DOWN. تأكد من إبقاء يدك ثابتة لمدة ثانية عند أداء إيماءات القرب والبعد (في الفيديو عند 10:00).
كن حذرًا من نظام استشعار القرب؛ إذا حركت يدك بسرعة كبيرة أو بعيدًا جدًا عن المستشعر فقد لا يسجل الإيماءة بدقة. هذه مشكلة شائعة قد تؤثر على الأداء.
الطوابع الزمنية للفيديو
- 00:00- مقدمة عن مستشعر APDS9960
- 02:30- تعليمات التوصيل الكهربائي
- 05:15- شرح الكود
- 10:00- عرض توضيحي للتعرّف على الإيماءات
الأشياء التي قد تحتاجها
-
أمازون
-
علي إكسبريسشراء مستشعر AM2302 أو DHT11 أو DHT22 من علي إكسبرسs.click.aliexpress.com
الموارد والمراجع
-
خارجيمكتبة Adafruit APDS9960 (من GitHub)github.com
ملفات📁
Fritzing File
-
استشعار RGB وحركة APDS 9960
apds_9960_rgb_and_gesture_sensor.fzpz0.01 MB
ملفات أخرى
-
مكتبة إيماءات APDS9960 من Robojaxتستخدم هذه المكتبة لاستشعار الحركة APDS9960 لاكتشاف حركة يدك واكتشاف اللون الحالي.
robojax-gesture-APDS9960-Library.zip