Gdy robot ma odróżnić czerwony klocek od niebieskiego albo automatycznie sortować elementy, samo „widzenie” światła nie wystarczy. Czujnik koloru pozwala zmierzyć składowe RGB, ocenić jasność i przekazać wynik mikrokontrolerowi, ale jego skuteczność zależy od oświetlenia, odległości oraz kalibracji. Poniżej pokazuję, jak działa taki układ, który moduł wybrać, jak połączyć go z Arduino lub ESP32 i dlaczego poprawne ustawienie pomiaru ma większe znaczenie niż sama nazwa komponentu.
Najważniejsze decyzje przed wyborem modułu
- Pomiar RGBC pozwala określić udział czerwieni, zieleni, niebieskiego oraz całkowitej ilości światła.
- TCS34725 jest wygodnym wyborem do projektów z Arduino, ESP32 i Raspberry Pi dzięki komunikacji I2C.
- Kalibracja i stałe oświetlenie często wpływają na wynik bardziej niż rozdzielczość samego układu.
- Odblaski, cień i faktura powierzchni mogą sprawić, że ten sam przedmiot zostanie rozpoznany jako inny kolor.
- Moduł za kilka lub kilkanaście złotych wystarczy do nauki i prostych robotów, ale nie zastąpi przemysłowego systemu kontroli jakości.

Jak działa czujnik koloru i co naprawdę mierzy
Najprostsze wyjaśnienie jest takie, że układ oświetla badaną powierzchnię, odbiera światło i rozdziela je na kilka kanałów. W popularnych modułach TCS34725 są to kanały R, G, B oraz Clear, czyli odpowiednio czerwień, zieleń, niebieski i ogólna intensywność światła.
Fotodiody nie rozpoznają nazwy koloru tak jak człowiek. Dostarczają wartości liczbowe, a program porównuje proporcje między kanałami. Jeżeli sygnał czerwony jest wyraźnie większy od zielonego i niebieskiego, algorytm może zaklasyfikować powierzchnię jako czerwoną, ale dokładny odcień zależy już od materiału, światła i ustawionych progów.
Wersje z filtrem podczerwieni ograniczają wpływ promieniowania IR, które może zaburzać odczyt. Przydatna jest także wbudowana biała dioda LED, ponieważ zapewnia bardziej powtarzalne warunki. W praktyce zamknięta komora pomiarowa z własnym oświetleniem daje stabilniejsze wyniki niż sensor wystawiony na światło z pokoju.
Układ nie „widzi” przedmiotu w pełnym znaczeniu tego słowa. Nie rozpozna kształtu, napisu ani wzoru, a jedynie światło docierające do fotodiod. Dlatego czerwony przedmiot w cieniu, czerwony przedmiot pod zimną lampą LED i czerwony przedmiot o połyskującej powierzchni mogą wygenerować zupełnie różne wartości.
Jakie rozwiązanie wybrać do konkretnego projektu
Do prostego robota lub stanowiska edukacyjnego nie trzeba od razu kupować przemysłowego systemu wizyjnego. Najpierw określam, czy potrzebuję rozpoznawać kilka ustalonych kolorów, mierzyć względną jasność, czy kontrolować jakość produktu z dużą powtarzalnością.
| Rozwiązanie | Najlepsze zastosowanie | Zalety | Ograniczenia |
|---|---|---|---|
| TCS34725 | Arduino, ESP32, projekty DIY | RGB i Clear, filtr IR, interfejs I2C, regulowane wzmocnienie | Wymaga kalibracji i stabilnego oświetlenia |
| TCS3200 lub TCS230 | Proste układy z odczytem częstotliwości | Nieskomplikowana zasada działania, popularny w starszych projektach | Mniejsza wygoda programowania i większa wrażliwość na warunki pomiaru |
| Sensor refleksyjny | Linie robotów, wykrywanie czerni i bieli | Niski koszt, szybka reakcja, proste progi logiczne | Zwykle nie rozróżnia wielu odcieni |
| Kamera lub system wizyjny | Kontrola kształtu, wzoru i koloru | Dużo szersza analiza obrazu | Wyższy koszt, większa złożoność i wymagania obliczeniowe |
Do pierwszych eksperymentów wybrałbym TCS34725. Odczyt przez I2C jest wygodny, adres układu to zwykle 0x29, a biblioteki dla Arduino zdejmują z początku projektu sporą część pracy. Jeżeli jednak robot ma tylko jechać po czarnej linii, pełny pomiar RGB będzie przerostem formy nad treścią. W takim przypadku prosty sensor odbiciowy z komparatorem zadziała szybciej i taniej.
Trzeba też uważać na opisy tanich modułów. Sam fakt obecności układu RGB nie oznacza automatycznie, że pomiar będzie dokładny. Znaczenie mają geometria płytki, jakość diody LED, ekranowanie przed światłem bocznym oraz sposób zamocowania elementu nad badaną powierzchnią.
Podłączenie i odczyt z Arduino lub ESP32
Moduł I2C potrzebuje zwykle czterech połączeń: VCC, GND, SDA i SCL. W Arduino Uno linie danych znajdują się na pinach A4 i A5, natomiast w ESP32 można je skonfigurować programowo, choć często wykorzystuje się GPIO 21 dla SDA i GPIO 22 dla SCL.
| Pin modułu | Arduino Uno | Znaczenie |
|---|---|---|
| VCC | 5 V lub 3,3 V zależnie od modułu | Zasilanie |
| GND | GND | Masa układu |
| SDA | A4 | Dane magistrali I2C |
| SCL | A5 | Zegar magistrali I2C |
Przed podłączeniem sprawdzam dokumentację konkretnej płytki, bo gotowy moduł może mieć stabilizator napięcia i konwerter poziomów, ale sam układ scalony nie musi tolerować 5 V na każdej linii. Nie zakładam w ciemno, że opis „kompatybilny z Arduino” oznacza bezpieczne zasilanie dowolnym napięciem.
W programie odczytuję surowe wartości kanałów, a potem normalizuję je względem kanału Clear. Schemat obliczeń może wyglądać tak:
float r_norm = (float)red / clear;
float g_norm = (float)green / clear;
float b_norm = (float)blue / clear;
if (r_norm > g_norm * 1.25 && r_norm > b_norm * 1.25) {
// przewaga czerwieni
}
Takie proste porównanie wystarczy do sortowania wyraźnie różniących się elementów. Nie traktuję go jednak jako uniwersalnego rozpoznawania barw. Dla podobnych odcieni lepsze będzie przejście do przestrzeni HSV, gdzie osobno analizuje się odcień, nasycenie i jasność, albo zastosowanie progów wyznaczonych podczas kalibracji.
Kalibracja decyduje o jakości pomiaru
Najczęstszy błąd polega na oczekiwaniu, że po podłączeniu modułu program od razu poprawnie rozpozna każdy kolor. Ja zaczynam od ustalenia warunków mechanicznych, czyli stałej odległości, kąta i powierzchni pomiarowej. Sensor ustawiony raz 5 mm nad próbką, a innym razem 2 cm nad nią będzie pracował w zupełnie innych warunkach.
- Umieszczam przed czujnikiem białą próbkę referencyjną i zapisuję wartości kanałów.
- Sprawdzam czarną próbkę, aby określić poziom minimalny oraz wpływ światła rozproszonego.
- Mierzę wzorce czerwone, zielone, niebieskie i kilka kolorów docelowych.
- Ustalam progi z zapasem, zamiast klasyfikować wynik na podstawie jednej granicznej wartości.
- Powtarzam pomiar kilka razy i sprawdzam, czy odczyt nie zmienia się nadmiernie.
Biała kalibracja nie oznacza, że urządzenie będzie wskazywało idealne wartości 255, 255, 255. Jej rolą jest kompensacja różnic między kanałami i oświetleniem. W prostym projekcie wystarczy współczynnik korekcyjny, natomiast w dokładniejszych zastosowaniach stosuje się profile referencyjne i macierze korekcji.
Duże znaczenie ma również czas integracji. To czas, przez który układ zbiera światło. Dłuższa integracja zwiększa czułość przy słabym oświetleniu, ale spowalnia reakcję. Wyższe wzmocnienie pomaga w ciemności, jednak może doprowadzić do nasycenia kanału przy jasnej powierzchni.
Jeżeli wartości często dochodzą do maksimum, zmniejszam wzmocnienie albo czas pomiaru. Jeżeli wszystkie kanały są bardzo niskie, poprawiam oświetlenie lub zwiększam czułość. Najlepszy wynik daje środek zakresu, a nie odczyt „na granicy” możliwości przetwornika.
Gdzie pomiar barwy sprawdza się najlepiej
Najłatwiejsze zadania to te, w których kolory są wyraźnie różne, a przedmiot porusza się zawsze tą samą trasą. Dlatego moduły tego typu dobrze pasują do sortowników klocków, robotów edukacyjnych i dozowników rozpoznających oznaczenia kolorystyczne.
Sortowanie elementów
Przedmiot przejeżdża pod sensorem, dioda LED zapewnia stałe światło, a mikrokontroler kieruje go do odpowiedniego pojemnika. W takim układzie ważniejsza od szerokiej palety rozpoznawanych odcieni jest powtarzalna geometria i odpowiedni czas na wykonanie pomiaru.
Automatyczna regulacja oświetlenia
Układy RGBC mogą służyć do oceny światła otoczenia i sterowania jasnością podświetlenia. W tym zastosowaniu nie chodzi o nazwanie koloru przedmiotu, lecz o pomiar natężenia i temperatury barwowej. To mechanizm spotykany między innymi w urządzeniach z ekranami.
Przeczytaj również: Czujnik TPMS - Jak działa i co robić, gdy świeci kontrolka?
Kontrola obecności oznaczenia
Sensor może sprawdzać, czy na taśmie produkcyjnej pojawiła się etykieta w określonym kolorze. Taki test jest prostszy niż pełna analiza obrazu, ale działa tylko wtedy, gdy powierzchnia, odległość i oświetlenie pozostają stabilne.
Nie używałbym taniego modułu RGB jako jedynego zabezpieczenia w procesie, w którym błąd oznacza odrzucenie drogiego produktu. Przy połysku, transparentnych materiałach i bardzo podobnych odcieniach potrzebny może być sensor przemysłowy z własną optyką albo kamera z kontrolowanym oświetleniem.
Co najczęściej psuje wynik i jak temu zapobiec
Największym przeciwnikiem jest światło zewnętrzne. Promienie wpadające z boku, zmiana nasłonecznienia albo migotanie taniej lampy LED mogą zmieniać proporcje kanałów nawet wtedy, gdy badany przedmiot się nie porusza.
- Zamknij tor optyczny w krótkiej osłonie, najlepiej w matowej, ciemnej obudowie.
- Oddziel diodę od fotodiod, aby ograniczyć bezpośrednie prześwietlenie sensora.
- Ustal stałą odległość i nie mierz powierzchni pod różnymi kątami.
- Uśredniaj kilka odczytów, gdy szybkość nie jest najważniejsza.
- Odrzucaj zbyt ciemne i nasycone pomiary, zamiast przypisywać im konkretny kolor.
Problematyczne bywają także materiały błyszczące. Odbicie punktowe może chwilowo podnieść jeden kanał i całkowicie zmienić klasyfikację. W takich przypadkach pomaga lekko rozproszone oświetlenie, większa próbka pomiarowa albo kilka odczytów z różnych punktów.
Nie próbuję też rozpoznawać koloru na podstawie samej największej wartości RGB. Żółty przedmiot może mieć wysokie składowe czerwone i zielone, a biały będzie miał wysokie wartości we wszystkich kanałach. Liczą się proporcje oraz jasność, dlatego program powinien uwzględniać minimalny poziom światła i margines różnicy między kanałami.
Najlepszy pierwszy eksperyment z pomiarem barw
Najrozsądniejszy projekt startowy to mała komora z modułem TCS34725, białą diodą LED i zestawem sześciu lub ośmiu kolorowych próbek. Każdą próbkę mierzę po kilka razy, zapisuję surowe dane i dopiero potem dobieram progi w programie.
Taki test szybko pokaże, czy problem leży w kodzie, oświetleniu czy mechanice. Jeśli odczyty są stabilne, można przejść do sortownika albo robota. Jeśli skaczą, dalsze poprawianie algorytmu niewiele da, dopóki nie zostanie uporządkowany tor optyczny.
W elektronice pomiarowej najbardziej przekonuje mnie prosta zasada: powtarzalne warunki są ważniejsze niż efektowne parametry katalogowe. Dobrze zamocowany, skalibrowany moduł za niewielką kwotę poradzi sobie z konkretnym zadaniem lepiej niż znacznie droższy sensor użyty bez kontroli światła.