בפרויקט זה אנו הולכים לזהות את הצבעים באמצעות מודול חיישן הצבע TCS3200 עם פטל פטל. כאן השתמשנו בקוד פייתון עבור Raspberry Pi כדי לזהות את הצבעים באמצעות חיישן TCS3200. כדי להדגים את זיהוי הצבע שהשתמשנו בנורת RGB, נורית ה- RGB הזו תבריק באותו צבע, שהאובייקט מוצג ליד החיישן. נכון לעכשיו, תכנתנו את Raspberry Pi לזהות רק צבעים אדומים, ירוקים וכחולים. אבל אתה יכול לתכנת אותו לזהות כל צבע לאחר קבלת ערכי RGB, שכן כל צבע מורכב מרכיבי RGB אלה. בדקו את סרטון ההדגמה בסוף.
בעבר קראנו והצגנו את ערכי ה- RGB של הצבעים תוך שימוש באותו TCS3200 עם Arduino. לפני שתמשיך הלאה, יידע על חיישן הצבע TCS3200.
חיישן צבע TCS3200:
TCS3200 הוא חיישן צבע שיכול לזהות כל מספר צבעים באמצעות תכנות נכון. TCS3200 מכיל מערכי RGB (אדום ירוק כחול). כפי שמוצג באיור ברמה המיקרוסקופית, ניתן לראות את התיבות המרובעות בתוך העין על החיישן. תיבות מרובעות אלה הן מערכים של מטריצת RGB. כל אחת מהקופסאות הללו מכילה שלושה חיישנים לחישה של עוצמת אור אדום, ירוק וכחול.
אז יש לנו מערכים אדומים, כחולים וירוקים באותה שכבה. לכן תוך כדי גילוי צבע איננו יכולים לזהות את כל שלושת האלמנטים בו זמנית. כל אחד ממערכי החיישנים הללו יש לבחור בנפרד בזה אחר זה כדי לזהות את הצבע. ניתן לתכנת את המודול לחוש את הצבע המסוים ולעזוב את האחרים. הוא מכיל סיכות למטרת בחירה זו, שהוסבר בהמשך. יש מצב קדימה שאינו מצב סינון; ללא מצב סינון החיישן מזהה אור לבן.
אנו נחבר חיישן זה ל- Raspberry Pi ונתכנת את ה- Raspberry Pi כדי לספק מענה הולם בהתאם לצבע.
רכיבים נדרשים:
כאן אנו משתמשים ב- Raspberry Pi 2 דגם B עם Raspbian Jessie OS. כל דרישות החומרה והתוכנה הבסיסיות נדונו בעבר, אתה יכול לחפש את זה במבוא Raspberry Pi ו- Raspberry PI LED מהבהב להתחלה, מלבד זה שאנחנו צריכים:
- Raspberry Pi עם מערכת הפעלה מותקנת מראש
- חיישן צבע TCS3200
- שבב נגדי CD4040
- נורית RGB
- נגד 1KΩ (3 חתיכות)
- קבל 1000uF
תרשים מעגלים וחיבורים:
החיבורים שנעשים לחיבור חיישן הצבע עם Raspberry Pi ניתנים בטבלה הבאה:
סיכות חיישן |
פינים של פטל |
Vcc |
+ 3.3 וולט |
GND |
קרקע, אדמה |
S0 |
+ 3.3 וולט |
S1 |
+ 3.3 וולט |
S2 |
GPIO6 של PI |
S3 |
GPIO5 של PI |
OE |
GPIO22 של PI |
הַחוּצָה |
CLK של CD4040 |
החיבורים לדלפק CD4040 עם פטל פי מוצגים בטבלה הבאה:
סיכות CD4040 |
פינים של פטל |
Vcc16 |
+ 3.3 וולט |
Gnd8 |
gnd |
Clk10 |
מחוץ לחיישן |
11. איפוס |
GPIO26 של PI |
Q0 |
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 |
אין חיבור |
להלן תרשים המעגל המלא של חיישן צבע ממשק עם פטל פטל:
הסבר עבודה:
כל צבע מורכב משלושה צבעים: אדום, ירוק וכחול (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 ונתכנת את Raspberry Pi לקחת את ערך התדר מהדלפק במרווחים תקופתיים של 100msec.
אז ה- PI קורא ערך של 2500/10 = מקסימום 250 לכל צבע אדום, ירוק וכחול. תכננו גם את Raspberry Pi להדפיס ערכים אלה המייצגים את עוצמות האור על המסך כמוצג להלן. הערכים מופחתים מערכי ברירת המחדל כדי להגיע לאפס. זה שימושי בעת החלטת הצבע.
כאן ערכי ברירת המחדל הם ערכי ה- RGB, שנלקחו מבלי להציב שום אובייקט מול החיישן. זה תלוי בתנאי האור שמסביב וערכים אלה יכולים להשתנות בהתאם לסביבה. בעיקרון אנו מכיילים את החיישן לקריאות רגילות. אז ראשית הפעילו את התוכנית מבלי להציב שום אובייקט ושימו לב לקריאות. ערכים אלה לא יהיו קרובים לאפס מכיוון שתמיד ייפול אור על החיישן ולא משנה היכן אתה מציב אותו. ואז הפחת את הקריאות האלה עם הקריאות שנקבל לאחר הצבת אובייקט לבדיקה. בדרך זו אנו יכולים לקבל קריאות סטנדרטיות.
Raspberry Pi מתוכנת גם להשוות בין ערכי R, G ו- B כדי לקבוע את צבע האובייקט שממוקם ליד החיישן. תוצאה זו מוצגת על ידי נורית RGB זוהרת המחוברת לפטל פטל.
אז בקליפת אגוז,
1. המודול מזהה את האור המוחזר על ידי האובייקט המונח בסמוך לפני השטח.
2. מודול חיישן הצבע מספק גל פלט עבור R או G או B, שנבחר ברצף על ידי Raspberry Pi דרך הפינים S2 ו- S3.
3. מונה CD4040 לוקח את הגל ומודד את ערך התדר.
4. PI לוקח את ערך התדר מהדלפק עבור כל צבע לכל 100ms. לאחר לקיחת הערך בכל פעם PI מאפס את המונה כדי לזהות את הערך הבא.
5. Raspberry Pi מדפיס את הערכים הללו על המסך ומשווה ערכים אלה כדי לזהות את צבע האובייקט ולבסוף מדליק את נורית ה- RGB בצבע המתאים בהתאם לצבע האובייקט.
עקבנו אחר הרצף שלמעלה בקוד הפיתון שלנו. התוכנית המלאה מובאת להלן עם סרטון הדגמה.
כאן Raspberry Pi מתוכנת לזהות רק שלושה צבעים, אתה יכול להתאים את ערכי R, G ו- B בהתאם כדי לזהות צבעים נוספים לטעמך.