מדריך חיבור חיישן צבע TCS230/3200 ל-Arduino ו-ESP32:
במדריך זה נלמד כיצד לחבר חיישן צבע TCS230/3200 לבקר Arduino UNO ולבקר ESP32.
נראה איך החיישן מודד צבעים בעזרת אור אדום, ירוק וכחול, איך לקרוא את תדר היציאה,
ואיך להציג ערכי צבע בסיסיים ב-Serial Monitor.
מהו חיישן TCS230/3200?
TCS230/3200 הוא חיישן צבע שממיר עוצמת אור לתדר.
במקום להוציא ערך אנלוגי רגיל, החיישן מוציא בפין OUT אות דיגיטלי בתדר משתנה.
התדר משתנה לפי עוצמת האור שנקלטת דרך מסנני הצבע של החיישן.
החיישן מתאים לפרויקטים של זיהוי צבע, מיון עצמים לפי צבע, רובוטיקה,
ניסויי אופטיקה, בדיקת צבעים ומערכות לימודיות עם Arduino ו-ESP32.
איך החיישן עובד?
בתוך החיישן יש מערך פוטודיודות עם מסנני צבע שונים:
חלק מהפוטודיודות רגישות לאדום, חלק לירוק, חלק לכחול וחלק ללא מסנן צבע.
בעזרת הפינים S2 ו-S3 בוחרים איזה צבע למדוד.
לאחר מכן החיישן מוציא בפין OUT תדר שמתאים לעוצמת האור שנקלטה באותו צבע.
- S0 ו-S1 — קובעים את קנה המידה של תדר היציאה.
- S2 ו-S3 — בוחרים את סוג הפילטר: Red, Green, Blue או Clear.
- OUT — יציאת תדר שאותה קורא הבקר.
- OE — הפעלת יציאה, בדרך כלל מחברים ל-GND או משאירים לפי מבנה המודול.
כדי לזהות צבע בצורה יציבה, מודדים בנפרד את ערכי Red, Green ו-Blue,
ולאחר מכן משווים ביניהם. חשוב לבצע כיול לפי התאורה, המרחק מהאובייקט והצבעים שרוצים לזהות.
פינים במודול TCS230/3200
| פין | תפקיד |
|---|---|
| VCC | מתח הזנה למודול |
| GND | אדמה |
| S0 | בחירת קנה מידה לתדר |
| S1 | בחירת קנה מידה לתדר |
| S2 | בחירת פילטר צבע |
| S3 | בחירת פילטר צבע |
| OUT | יציאת תדר לקריאה על ידי הבקר |
| OE | Output Enable, אופציונלי במודולים רבים |
רכיבים נדרשים
- חיישן צבע TCS230/3200
- Arduino UNO או ESP32
- Breadboard
- חוטי Dupont
- כבל USB
- אובייקטים בצבעים שונים לבדיקה
חיבור TCS230/3200 ל-Arduino UNO

| TCS230/3200 | Arduino UNO |
| VCC | 5V |
| GND | GND |
| S0 | D4 |
| S1 | D5 |
| S2 | D6 |
| S3 | D7 |
| OUT | D8 |
| OE | GND או לא מחובר, לפי המודול |
הסבר חיבור
ב-Arduino UNO מחברים את פיני הבקרה S0-S3 לפינים דיגיטליים,
ואת פין OUT לפין דיגיטלי שמסוגל למדוד את משך הפולס.
בדוגמה זו נשתמש ב-S0 ו-S1 כדי להגדיר קנה מידה של 20% לתדר,
וב-S2 ו-S3 כדי לבחור בכל פעם פילטר צבע אחר.
קוד Arduino בסיסי לקריאת החיישן
const int s0Pin = 4;
const int s1Pin = 5;
const int s2Pin = 6;
const int s3Pin = 7;
const int outPin = 8;
unsigned long readColorPulse(bool s2State, bool s3State) {
digitalWrite(s2Pin, s2State);
digitalWrite(s3Pin, s3State);
delay(50);
unsigned long pulseWidth = pulseIn(outPin, LOW, 100000);
return pulseWidth;
}
void setup() {
Serial.begin(9600);
pinMode(s0Pin, OUTPUT);
pinMode(s1Pin, OUTPUT);
pinMode(s2Pin, OUTPUT);
pinMode(s3Pin, OUTPUT);
pinMode(outPin, INPUT);
// Frequency scaling: 20%
digitalWrite(s0Pin, HIGH);
digitalWrite(s1Pin, LOW);
}
void loop() {
unsigned long redValue = readColorPulse(LOW, LOW);
unsigned long blueValue = readColorPulse(LOW, HIGH);
unsigned long greenValue = readColorPulse(HIGH, HIGH);
Serial.print("Red: ");
Serial.print(redValue);
Serial.print(" | Green: ");
Serial.print(greenValue);
Serial.print(" | Blue: ");
Serial.println(blueValue);
delay(500);
}הסבר הקוד
הקוד בוחר בכל פעם פילטר צבע אחר בעזרת S2 ו-S3,
ואז קורא את משך הפולס שמתקבל בפין OUT.
הערכים שמתקבלים הם ערכים יחסיים. בדרך כלל ערך קטן יותר של pulse width יכול להצביע על תדר גבוה יותר,
ולכן על עוצמת אור גבוהה יותר באותו ערוץ צבע. כדי לזהות צבעים בפועל יש לבצע כיול עם צבעי ייחוס.
חיבור TCS230/3200 ל-ESP32

הערה חשובה לפני החיבור
ESP32 עובד ברמת לוגיקה של 3.3V. לכן בחיבור ל-ESP32 מומלץ להזין את מודול TCS230/3200 מ-3V3,
כדי שגם פיני הבקרה ויציאת OUT יעבדו ברמת מתח שמתאימה לבקר.
אם מזינים את המודול מ-5V, אין לחבר את OUT ישירות ל-ESP32 ללא התאמת רמות מתח.
| TCS230/3200 | ESP32 |
| VCC | 3V3 |
| GND | GND |
| S0 | GPIO26 |
| S1 | GPIO25 |
| S2 | GPIO33 |
| S3 | GPIO32 |
| OUT | GPIO27 |
| OE | GND או לא מחובר, לפי המודול |
הסבר חיבור
ב-ESP32 מחברים את פיני הבקרה לפיני GPIO רגילים,
ואת OUT לפין דיגיטלי לקריאת פולסים.
החיבור המומלץ הוא להזין את המודול מ-3V3.
כך מפחיתים סיכון לפגיעה בכניסת ESP32 ומקבלים רמות לוגיקה מתאימות יותר.
קוד ESP32 בסיסי לקריאת החיישן
const int s0Pin = 26;
const int s1Pin = 25;
const int s2Pin = 33;
const int s3Pin = 32;
const int outPin = 27;
unsigned long readColorPulse(bool s2State, bool s3State) {
digitalWrite(s2Pin, s2State);
digitalWrite(s3Pin, s3State);
delay(50);
unsigned long pulseWidth = pulseIn(outPin, LOW, 100000);
return pulseWidth;
}
void setup() {
Serial.begin(115200);
pinMode(s0Pin, OUTPUT);
pinMode(s1Pin, OUTPUT);
pinMode(s2Pin, OUTPUT);
pinMode(s3Pin, OUTPUT);
pinMode(outPin, INPUT);
// Frequency scaling: 20%
digitalWrite(s0Pin, HIGH);
digitalWrite(s1Pin, LOW);
}
void loop() {
unsigned long redValue = readColorPulse(LOW, LOW);
unsigned long blueValue = readColorPulse(LOW, HIGH);
unsigned long greenValue = readColorPulse(HIGH, HIGH);
Serial.print("Red: ");
Serial.print(redValue);
Serial.print(" | Green: ");
Serial.print(greenValue);
Serial.print(" | Blue: ");
Serial.println(blueValue);
delay(500);
}הסבר הקוד
הקוד עבור ESP32 דומה לקוד Arduino, אך משתמש בפיני GPIO של ESP32 ובמהירות Serial של 115200.
בכל מחזור הקוד קורא את שלושת ערוצי הצבע ומציג את הערכים ב-Serial Monitor.
הערכים אינם צבעים מוכנים כמו “אדום” או “כחול”.
כדי לזהות צבע בפועל יש לבצע כיול: למדוד אובייקטים בצבעים ידועים, לרשום את הערכים,
ואז להגדיר תנאים בקוד לפי הערכים שהתקבלו.
טיפים לעבודה נכונה
- שמרו על מרחק קבוע בין החיישן לבין האובייקט.
- בדקו צבעים באותה תאורה שבה הפרויקט יעבוד בפועל.
- הימנעו מאור שמש ישיר או תאורה משתנה בזמן המדידה.
- בצעו כיול לכל צבע שרוצים לזהות.
- אם הקריאות קופצות, נסו לבצע כמה מדידות ולחשב ממוצע.
פרויקט לדוגמה
מכונת מיון צבעים עם TCS3200 ושני Servo Motors

בפרויקט זה משתמשים בחיישן TCS3200 יחד עם Arduino ושני Servo Motors כדי לבנות מכונת מיון צבעים.
החיישן מזהה את צבע האובייקט, והמערכת משתמשת במנועי סרוו כדי להעביר את האובייקט למסלול המתאים.
זהו פרויקט מתאים ללמידה על זיהוי צבע, כיול חיישנים, בקרה מכנית ומיון אוטומטי.
סיכום
חיישן TCS230/3200 הוא מודול שימושי לזיהוי צבעים בפרויקטים עם Arduino ו-ESP32.
החיישן מאפשר למדוד בנפרד את רכיבי Red, Green ו-Blue,
ולהשתמש בהם לזיהוי צבעים, מיון עצמים ורובוטיקה.
כדי לקבל תוצאות יציבות חשוב לבצע כיול, לשמור על תאורה קבועה,
ולבדוק את הערכים בפועל עם הצבעים שבהם משתמשים בפרויקט.