في هذا المشروع سنقوم باكتشاف الألوان باستخدام وحدة مستشعر الألوان TCS3200 مع Raspberry Pi. استخدمنا هنا كود Python لـ Raspberry Pi لاكتشاف الألوان باستخدام مستشعر TCS3200. لإثبات اكتشاف اللون الذي استخدمناه RGB LED ، سوف يتوهج RGB LED هذا بنفس اللون الذي يظهر الكائن بالقرب من المستشعر. قمنا حاليًا ببرمجة Raspberry Pi لاكتشاف الألوان الحمراء والخضراء والزرقاء فقط. لكن يمكنك برمجته لاكتشاف أي لون بعد الحصول على قيم RGB ، حيث يتكون كل لون من مكونات RGB هذه. تحقق من الفيديو التوضيحي في النهاية.
لقد قرأنا سابقًا وعرضنا قيم RGB للألوان باستخدام نفس TCS3200 مع Arduino. قبل المضي قدمًا ، دعنا نتعرف على مستشعر الألوان TCS3200.
مستشعر اللون TCS3200:
TCS3200 عبارة عن مستشعر ألوان يمكنه اكتشاف أي عدد من الألوان بالبرمجة الصحيحة. يحتوي TCS3200 على صفيفات RGB (أحمر أخضر أزرق). كما هو مبين في الشكل على المستوى المجهري ، يمكن للمرء أن يرى المربعات المربعة داخل العين على المستشعر. هذه الصناديق المربعة عبارة عن صفائف من مصفوفة RGB. يحتوي كل صندوق من هذه الصناديق على ثلاثة مستشعرات لاستشعار شدة الضوء الأحمر والأخضر والأزرق.
لذلك لدينا مصفوفات حمراء وزرقاء وخضراء على نفس الطبقة. لذلك أثناء اكتشاف اللون ، لا يمكننا اكتشاف العناصر الثلاثة في وقت واحد. يتم تحديد كل صفيف من مجموعات أجهزة الاستشعار هذه على حدة واحدة تلو الأخرى لاكتشاف اللون. يمكن برمجة الوحدة لاستشعار لون معين وترك البقية. يحتوي على دبابيس لغرض التحديد هذا ، والذي تم شرحه لاحقًا. هناك وضع رابع لا يوجد وضع تصفية ؛ في حالة عدم وجود وضع مرشح ، يكتشف المستشعر الضوء الأبيض.
سنقوم بتوصيل هذا المستشعر بـ Raspberry Pi وسنبرمج Raspberry Pi لتقديم استجابة مناسبة حسب اللون.
المكونات المطلوبة:
نحن هنا نستخدم Raspberry Pi 2 Model B مع نظام التشغيل Raspbian Jessie OS. تمت مناقشة جميع متطلبات الأجهزة والبرامج الأساسية مسبقًا ، يمكنك البحث عنها في مقدمة Raspberry Pi و Raspberry PI LED Blinking للبدء ، بخلاف ما نحتاج إليه:
- Raspberry Pi مع نظام تشغيل مثبت مسبقًا
- مستشعر الألوان TCS3200
- رقاقة عداد CD4040
- RGB LED
- 1KΩ المقاوم (3 قطع)
- مكثف 1000 فائق التوهج
مخطط الدائرة والتوصيلات:
الوصلات التي تم إجراؤها لتوصيل مستشعر اللون بـ Raspberry Pi مذكورة في الجدول أدناه:
دبابيس الاستشعار |
دبابيس Raspberry Pi |
Vcc |
+ 3.3 فولت |
GND |
أرض |
S0 |
+ 3.3 فولت |
S1 |
+ 3.3 فولت |
S2 |
GPIO6 من PI |
S3 |
GPIO5 من PI |
عمر الفاروق |
GPIO22 من PI |
خارج |
CLK من CD4040 |
ترد اتصالات عداد CD4040 مع Raspberry Pi في الجدول أدناه:
CD4040 دبابيس |
دبابيس Raspberry Pi |
Vcc16 |
+ 3.3 فولت |
Gnd8 |
gnd |
Clk10 |
نفاد المستشعر |
إعادة تعيين 11 |
GPIO26 من PI |
س 0 |
GPIO21 من PI |
س 1 |
GPIO20 من PI |
س 2 |
GPIO16 من PI |
س 3 |
GPIO12 من PI |
س 4 |
GPIO25 من PI |
س 5 |
GPIO24 من PI |
س 6 |
GPIO23 من PI |
س 7 |
GPIO18 من PI |
س 8 |
لا يوجد اتصال |
س 9 |
لا يوجد اتصال |
س 10 |
لا يوجد اتصال |
س 11 |
لا يوجد اتصال |
يوجد أدناه مخطط الدائرة الكاملة لواجهة مستشعر الألوان مع Raspberry Pi:
شرح العمل:
يتكون كل لون من ثلاثة ألوان: الأحمر والأخضر والأزرق (RGB). وإذا عرفنا شدة RGB بأي لون ، فيمكننا اكتشاف هذا اللون. لقد قرأنا سابقًا قيم RGB هذه باستخدام Arduino.
باستخدام مستشعر الألوان TCS3200 ، لا يمكننا اكتشاف الضوء الأحمر والأخضر والأزرق في نفس الوقت ، لذا نحتاج إلى التحقق منها واحدة تلو الأخرى. يتم تحديد اللون الذي يحتاج إلى استشعاره بواسطة دبابيس S2 و S3. باستخدام هذين الدبابيس ، يمكننا إخبار المستشعر عن شدة ضوء اللون المراد قياسها.
قل ما إذا كنا بحاجة إلى الشعور بكثافة اللون الأحمر ، فنحن بحاجة إلى ضبط كلا الدبابيس على LOW. بعد قياس الضوء الأحمر ، سنقوم بتعيين S2 LOW و S3 HIGH لقياس الضوء الأزرق. من خلال تغيير منطق S2 و S3 بالتتابع يمكننا قياس شدة الضوء الأحمر والأزرق والأخضر ، وفقًا للجدول أدناه:
S2 |
S3 |
نوع الثنائي الضوئي |
منخفض |
منخفض |
أحمر |
منخفض |
عالي |
أزرق |
عالي |
منخفض |
بدون مرشح (أبيض) |
عالي |
عالي |
أخضر |
بمجرد أن يكتشف المستشعر شدة مكونات RGB ، يتم إرسال القيمة إلى نظام التحكم داخل الوحدة النمطية كما هو موضح في الشكل أدناه. يتم إرسال شدة الضوء المقاسة بواسطة المصفوفة إلى محول التيار إلى التردد داخل الوحدة. يولد محول التردد موجة مربعة يتناسب ترددها طرديًا مع القيمة التي ترسلها المصفوفة. مع قيمة أعلى من ARRAY ، يولد محول التيار إلى التردد الموجة المربعة ذات التردد العالي.
يمكن ضبط تردد إشارة الخرج بواسطة وحدة استشعار اللون إلى أربعة مستويات. يتم تحديد هذه المستويات باستخدام S0 و S1 لوحدة المستشعر كما هو موضح في الشكل أدناه.
S0 |
S1 |
تحجيم تردد الإخراج (f0) |
إل |
إل |
الطاقة انخفضت |
إل |
ح |
2٪ |
ح |
إل |
20٪ |
ح |
ح |
100٪ |
تكون هذه الميزة مفيدة عندما نقوم بتوصيل هذه الوحدة بالنظام بساعة منخفضة. مع Raspberry Pi سنختار 100٪. تذكر هنا ، تحت الظل ، تولد وحدة مستشعر اللون ناتج موجة مربعة يبلغ الحد الأقصى لترددها 2500 هرتز (قياس 100٪) لكل لون.
على الرغم من أن الوحدة توفر موجة مربعة ناتجة يتناسب ترددها بشكل مباشر مع شدة الضوء الساقط على سطحها ، فلا توجد طريقة سهلة لحساب كثافة الضوء لكل لون بواسطة هذه الوحدة. ومع ذلك ، يمكننا معرفة ما إذا كانت شدة الضوء تتزايد أم تتناقص لكل لون. كما يمكننا حساب ومقارنة قيم الأحمر والأخضر والأزرق لاكتشاف لون الضوء أو لون الكائن المحدد مسبقًا على سطح الوحدة. هذا هو أكثر من وحدة مستشعر اللون بدلاً من وحدة مستشعر شدة الضوء.
سنقوم الآن بتغذية خرج الموجة المربعة إلى Raspberry Pi ولكن لا يمكننا إعطائها مباشرة إلى PI ، لأن Raspberry Pi لا يحتوي على أي عدادات داخلية. لذلك سنقدم هذا الإخراج أولاً إلى CD4040 Binary Counter وسنبرمج Raspberry Pi لأخذ قيمة التردد من العداد على فترات دورية تبلغ 100 مللي ثانية.
لذلك يقرأ PI قيمة 2500/10 = 250 كحد أقصى لكل لون أحمر وأخضر وأزرق. لقد قمنا أيضًا ببرمجة Raspberry Pi لطباعة هذه القيم التي تمثل شدة الضوء على الشاشة كما هو موضح أدناه. يتم طرح القيم من القيم الافتراضية للوصول إلى الصفر. يكون هذا مفيدًا أثناء تحديد اللون.
هنا القيم الافتراضية هي قيم RGB ، التي تم التقاطها دون وضع أي كائن أمام المستشعر. يعتمد ذلك على ظروف الإضاءة المحيطة ويمكن أن تختلف هذه القيم وفقًا للبيئة المحيطة. نحن في الأساس نقوم بمعايرة المستشعر للقراءات القياسية. لذلك قم أولاً بتشغيل البرنامج دون وضع أي شيء ولاحظ القراءات. لن تكون هذه القيم قريبة من الصفر حيث سيكون هناك دائمًا بعض الضوء يسقط على المستشعر بغض النظر عن المكان الذي تضعه فيه. ثم اطرح تلك القراءات مع القراءات التي سنحصل عليها بعد وضع الجسم للاختبار. بهذه الطريقة يمكننا الحصول على قراءات قياسية.
تمت برمجة Raspberry Pi أيضًا لمقارنة قيم R و G و B لتحديد لون الكائن الموضوع بالقرب من المستشعر. تظهر هذه النتيجة من خلال إضاءة RGB LED المتصلة بـ Raspberry Pi.
باختصار ،
1. تكتشف الوحدة الضوء المنعكس بواسطة الكائن الموضوع بالقرب من السطح.
2. توفر وحدة مستشعر الألوان موجة إخراج لـ R أو G أو B ، يتم اختيارها بالتتابع بواسطة Raspberry Pi من خلال الدبابيس S2 و S3.
3. CD4040 عداد يأخذ الموجة ويقيس قيمة التردد.
4. يأخذ PI قيمة التردد من العداد لكل لون لكل 100 مللي ثانية. بعد أخذ القيمة في كل مرة يقوم PI بإعادة تعيين العداد لاكتشاف القيمة التالية.
5. يطبع Raspberry Pi هذه القيم على الشاشة ويقارن هذه القيم لاكتشاف لون الكائن وأخيراً يتوهج RGB LED باللون المناسب اعتمادًا على لون الكائن.
لقد اتبعنا التسلسل أعلاه في كود Python الخاص بنا. البرنامج الكامل معطى أدناه مع فيديو توضيحي.
هنا يتم برمجة Raspberry Pi لاكتشاف ثلاثة ألوان فقط ، يمكنك مطابقة قيم R و G و B وفقًا لذلك لاكتشاف المزيد من الألوان التي ترضيك.