W tym projekcie zamierzamy wykryć kolory za pomocą modułu czujnika koloru TCS3200 z Raspberry Pi. Tutaj użyliśmy kodu Pythona dla Raspberry Pi, aby wykryć kolory za pomocą czujnika TCS3200. Aby zademonstrować wykrywanie koloru użyliśmy diody RGB LED, ta dioda RGB będzie świecić tym samym kolorem, którego obiekt jest prezentowany w pobliżu czujnika. Obecnie zaprogramowaliśmy Raspberry Pi do wykrywania tylko kolorów czerwonego, zielonego i niebieskiego. Ale możesz zaprogramować go tak, aby wykrywał dowolny kolor po uzyskaniu wartości RGB, ponieważ każdy kolor składa się z tych składników RGB. Sprawdź film demonstracyjny na końcu.
Wcześniej odczytaliśmy i wyświetliliśmy wartości RGB kolorów przy użyciu tego samego TCS3200 z Arduino. Zanim przejdziemy dalej, daj znać o czujniku koloru TCS3200.
Czujnik koloru TCS3200:
TCS3200 to czujnik koloru, który może wykryć dowolną liczbę kolorów przy odpowiednim zaprogramowaniu. TCS3200 zawiera macierze RGB (czerwony, zielony, niebieski). Jak pokazano na rysunku na poziomie mikroskopowym, można zobaczyć kwadratowe ramki wewnątrz oka na czujniku. Te kwadratowe pola to tablice macierzy RGB. Każde z tych pudełek zawiera trzy czujniki do wykrywania intensywności światła czerwonego, zielonego i niebieskiego.
Mamy więc tablice czerwony, niebieski i zielony na tej samej warstwie. Tak więc podczas wykrywania koloru nie możemy jednocześnie wykryć wszystkich trzech elementów. Każdy z tych zestawów czujników należy wybierać oddzielnie jeden po drugim, aby wykryć kolor. Moduł można zaprogramować tak, aby wykrywał określony kolor i pozostawiał pozostałe. Zawiera szpilki do tego celu wyboru, co zostało wyjaśnione później. Jest czwarty tryb, który nie jest trybem filtrowania; bez trybu filtra czujnik wykrywa białe światło.
Ten czujnik podłączymy do Raspberry Pi i zaprogramujemy Raspberry Pi tak, aby zapewnić odpowiednią odpowiedź w zależności od koloru.
Wymagane składniki:
Tutaj używamy Raspberry Pi 2 Model B z Raspbian Jessie OS. Wszystkie podstawowe wymagania sprzętowe i programowe zostały wcześniej omówione, możesz je sprawdzić we wprowadzeniu do Raspberry Pi i Miga dioda LED Raspberry PI, aby rozpocząć, poza tym, czego potrzebujemy:
- Raspberry Pi z preinstalowanym systemem operacyjnym
- Czujnik koloru TCS3200
- Chip zliczający CD4040
- LED RGB
- Rezystor 1KΩ (3 sztuki)
- Kondensator 1000uF
Schemat obwodu i połączenia:
Połączenia, które są wykonywane w celu połączenia czujnika koloru z Raspberry Pi są podane w poniższej tabeli:
Kołki czujnika |
Piny Raspberry Pi |
Vcc |
+ 3,3 V. |
GND |
ziemia |
S0 |
+ 3,3 V. |
S1 |
+ 3,3 V. |
S2 |
GPIO6 z PI |
S3 |
GPIO5 z PI |
OE |
GPIO22 z PI |
NA ZEWNĄTRZ |
CLK z CD4040 |
Połączenia licznika CD4040 z Raspberry Pi są podane w poniższej tabeli:
Piny CD4040 |
Piny Raspberry Pi |
Vcc16 |
+ 3,3 V. |
Gnd8 |
gnd |
Clk10 |
BRAK czujnika |
Reset 11 |
GPIO26 z PI |
Q0 |
GPIO21 z PI |
Q1 |
GPIO20 PI |
Q2 |
GPIO16 z PI |
Pytanie 3 |
GPIO12 z PI |
Q4 |
GPIO25 PI |
Pytanie 5 |
GPIO24 PI |
Pytanie 6 |
GPIO23 PI |
P7 |
GPIO18 PI |
Pytanie 8 |
Brak połączenia |
P9 |
Brak połączenia |
Pytanie 10 |
Brak połączenia |
P11 |
Brak połączenia |
Poniżej znajduje się pełny schemat połączeń czujnika koloru z Raspberry Pi:
Objaśnienie robocze:
Każdy kolor składa się z trzech kolorów: czerwonego, zielonego i niebieskiego (RGB). A jeśli znamy intensywność RGB w dowolnym kolorze, możemy wykryć ten kolor. Wcześniej czytaliśmy te wartości RGB za pomocą Arduino.
Używając czujnika koloru TCS3200, nie możemy jednocześnie wykryć czerwonego, zielonego i niebieskiego światła, dlatego musimy je sprawdzać pojedynczo. Kolor, który ma być wykrywany przez czujnik koloru, jest wybierany za pomocą dwóch pinów S2 i S3. Za pomocą tych dwóch pinów możemy wskazać czujnikowi, jakie natężenie światła ma być zmierzone.
Powiedzmy, że musimy wyczuć intensywność koloru czerwonego, to musimy ustawić oba piny na LOW. Po zmierzeniu CZERWONEGO światła ustawimy S2 NISKIE i S3 WYSOKIE, aby zmierzyć światło niebieskie. Poprzez sekwencyjną zmianę logiki S2 i S3 możemy zmierzyć intensywność światła czerwonego, niebieskiego i zielonego, zgodnie z poniższą tabelą:
S2 |
S3 |
Typ fotodiody |
Niska |
Niska |
Czerwony |
Niska |
Wysoki |
niebieski |
Wysoki |
Niska |
Bez filtra (biały) |
Wysoki |
Wysoki |
Zielony |
Gdy czujnik wykryje intensywność składowych RGB, wartość jest wysyłana do układu sterowania wewnątrz modułu, jak pokazano na poniższym rysunku. Natężenie światła mierzone przez matrycę jest wysyłane do przetwornika prądu na częstotliwość wewnątrz modułu. Przetwornica częstotliwości generuje falę prostokątną, której częstotliwość jest wprost proporcjonalna do wartości wysyłanej przez tablicę. Przy wyższej wartości z ARRAY, przetwornik prądu na częstotliwość generuje falę prostokątną o wyższej częstotliwości.
Częstotliwość sygnału wyjściowego przez moduł czujnika koloru można ustawić na czterech poziomach. Poziomy te są wybierane za pomocą S0 i S1 modułu czujnika, jak pokazano na poniższym rysunku.
S0 |
S1 |
Skalowanie częstotliwości wyjściowej (f0) |
L |
L |
Wyłączać |
L |
H. |
2% |
H. |
L |
20% |
H. |
H. |
100% |
Ta funkcja jest przydatna, gdy łączymy ten moduł z systemem z niskim zegarem. Z Raspberry Pi dobierzemy 100%. Pamiętaj, że w tym miejscu moduł czujnika koloru generuje prostokątny sygnał wyjściowy, którego maksymalna częstotliwość wynosi 2500 Hz (100% skalowanie) dla każdego koloru.
Chociaż moduł dostarcza wyjściową falę prostokątną, której częstotliwość jest wprost proporcjonalna do natężenia światła padającego na jego powierzchnię, nie ma łatwego sposobu obliczenia natężenia światła każdego koloru przez ten moduł. Jednak możemy stwierdzić, czy natężenie światła rośnie, czy maleje dla każdego koloru. Możemy również obliczyć i porównać wartości Red, Green, Blue w celu wykrycia koloru światła lub koloru obiektu ustawionego na powierzchni modułu. Jest to więc bardziej moduł czujnika koloru niż moduł czujnika natężenia światła.
Teraz podamy to wyjście fali prostokątnej do Raspberry Pi, ale nie możemy przekazać go bezpośrednio do PI, ponieważ Raspberry Pi nie ma żadnych wewnętrznych liczników. Więc najpierw przekażemy to wyjście do licznika binarnego CD4040 i zaprogramujemy Raspberry Pi tak, aby pobierał wartość częstotliwości z licznika w okresowych odstępach co 100 ms.
Więc PI odczytuje wartość 2500/10 = 250 max dla każdego koloru CZERWONEGO, ZIELONEGO i NIEBIESKIEGO. Zaprogramowaliśmy również Raspberry Pi do drukowania tych wartości reprezentujących intensywności światła na ekranie, jak pokazano poniżej. Wartości są odejmowane od wartości domyślnych, aby osiągnąć zero. Przydaje się to przy wyborze koloru.
Tutaj wartościami domyślnymi są wartości RGB, które przyjęto bez umieszczania żadnego przedmiotu przed czujnikiem. Zależy to od otaczających warunków oświetleniowych, a wartości te mogą się różnić w zależności od otoczenia. Zasadniczo kalibrujemy czujnik do standardowych odczytów. Więc najpierw uruchom program bez umieszczania żadnego obiektu i zanotuj odczyty. Wartości te nie będą bliskie zeru, ponieważ na czujnik zawsze będzie padać światło, bez względu na to, gdzie go umieścisz. Następnie odejmij te odczyty z odczytami, które uzyskamy po umieszczeniu obiektu do badania. W ten sposób możemy uzyskać standardowe odczyty.
Raspberry Pi jest również zaprogramowane do porównywania wartości R, G i B w celu określenia koloru obiektu umieszczonego w pobliżu czujnika. Taki wynik pokazuje świecąca dioda LED RGB podłączona do Raspberry Pi.
Krótko mówiąc,
1. Moduł wykrywa światło odbite od obiektu umieszczonego blisko powierzchni.
2. Moduł czujnika koloru dostarcza falę wyjściową dla R lub G lub B, wybieraną sekwencyjnie przez Raspberry Pi poprzez Piny S2 i S3.
3. Licznik CD4040 pobiera falę i mierzy wartość częstotliwości.
4. PI pobiera wartość częstotliwości z licznika dla każdego koloru co 100 ms. Po pobraniu wartości za każdym razem PI zeruje licznik w celu wykrycia kolejnej wartości.
5. Raspberry Pi drukuje te wartości na ekranie i porównuje je, aby wykryć kolor obiektu i ostatecznie zaświecić diodę RGB LED odpowiednim kolorem w zależności od koloru obiektu.
Postępowaliśmy zgodnie z powyższą sekwencją w naszym kodzie Pythona. Pełny program jest podany poniżej wraz z filmem demonstracyjnym.
Tutaj Raspberry Pi jest zaprogramowane do wykrywania tylko trzech kolorów, możesz odpowiednio dopasować wartości R, G i B, aby wykryć więcej kolorów według własnych upodobań.