В този проект ще открием цветовете, използвайки TCS3200 Color Sensor Module с 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 с OS Raspbian Jessie. Всички основни хардуерни и софтуерни изисквания са обсъдени по-рано, можете да ги потърсите във въведението на Raspberry Pi и мигащият индикатор Raspberry PI за начало, освен това, от което се нуждаем:
- Raspberry Pi с предварително инсталирана ОС
- TCS3200 цветен сензор
- CD4040 брояч чип
- RGB LED
- 1KΩ резистор (3 броя)
- Кондензатор 1000uF
Електрическа схема и връзки:
Връзките, които се правят за свързване на сензора за цвят с Raspberry Pi, са дадени в таблицата по-долу:
Сензорни щифтове |
Raspberry Pi Pins |
Vcc |
+ 3.3v |
GND |
земя |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
GPIO6 на PI |
S3 |
GPIO5 на PI |
OE |
GPIO22 на PI |
ВЪН |
CLK на CD4040 |
Връзките за брояч CD4040 с Raspberry Pi са дадени в таблицата по-долу:
CD4040 щифтове |
Raspberry Pi Pins |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
ИЗВЪН сензора |
Нулиране 11 |
GPIO26 от PI |
Q0 |
GPIO21 на PI |
Q1 |
GPIO20 на PI |
Q2 |
GPIO16 на PI |
Q3 |
GPIO12 на PI |
Q4 |
GPIO25 на PI |
Q5 |
GPIO24 на PI |
Q6 |
GPIO23 на PI |
Q7 |
GPIO18 на PI |
Q8 |
Няма връзка |
В9 |
Няма връзка |
Q10 |
Няма връзка |
Q11 |
Няма връзка |
По-долу е представена пълната електрическа схема на Цветовия сензор за взаимодействие с Raspberry Pi:
Работно обяснение:
Всеки цвят се състои от три цвята: червен, зелен и син (RGB). И ако знаем интензитета на RGB във всеки цвят, тогава можем да открием този цвят. По-рано сме чели тези RGB стойности, използвайки Arduino.
Използвайки TCS3200 Color Sensor, не можем да открием едновременно червена, зелена и синя светлина, така че трябва да ги проверяваме един по един. Цветът, който трябва да се усети от сензора за цвят, се избира от два щифта S2 и S3. С тези два щифта можем да кажем на сензора кой интензитет на цветната светлина да се измерва.
Кажете, ако трябва да усетим интензивността на червения цвят, тогава трябва да настроим двата щифта на LOW. След като измерим ЧЕРВЕНАТА светлина, ще настроим S2 LOW и S3 HIGH за измерване на синята светлина. Чрез последователна промяна на логиката на S2 и S3 можем да измерим интензитета на червената, синята и зелената светлина, съгласно дадената по-долу таблица:
S2 |
S3 |
Фотодиоден тип |
Ниска |
Ниска |
червен |
Ниска |
Високо |
Син |
Високо |
Ниска |
Без филтър (бял) |
Високо |
Високо |
Зелено |
След като сензорът открие интензитета на RGB компонентите, стойността се изпраща към системата за управление вътре в модула, както е показано на фигурата по-долу. Интензитетът на светлината, измерен чрез масив, се изпраща към преобразувателя на ток към честота вътре в модула. Честотният преобразувател генерира квадратна вълна, чиято честота е право пропорционална на стойността, изпратена от масива. С по-висока стойност от ARRAY, преобразувателят на ток в честота генерира квадратна вълна с по-висока честота.
Честотата на изходния сигнал от модула на цветния сензор може да се регулира на четири нива. Тези нива се избират с помощта на S0 и S1 на сензорния модул, както е показано на фигурата по-долу.
S0 |
S1 |
Мащабиране на изходната честота (f0) |
L |
L |
Изключване |
L |
З. |
2% |
З. |
L |
20% |
З. |
З. |
100% |
Тази функция е полезна, когато свързваме този модул със системата с нисък часовник. С Raspberry Pi ще изберем 100%. Не забравяйте тук, под сянката Color Sensor Module генерира квадратна вълна, чиято максимална честота е 2500Hz (100% мащабиране) за всеки цвят.
Въпреки че модулът осигурява изходна квадратна вълна, чиято честота е право пропорционална на интензивността на светлината, падаща на повърхността му, няма лесен начин да се изчисли интензивността на светлината на всеки цвят от този модул. Въпреки това можем да разберем дали интензитетът на светлината се увеличава или намалява за всеки цвят. Също така можем да изчислим и сравним червените, зелените, сините стойности, за да открием цвета на светлината или цвета на обекта, предварително зададен на повърхността на модула. Така че това е по-скоро модул за сензор за цвят, а не модул за интензивност на светлината.
Сега ще подадем този изход с квадратна вълна на Raspberry Pi, но не можем да го дадем директно на PI, защото Raspberry Pi няма вътрешни броячи. Така че първо ще дадем този изход на двоичен брояч CD4040 и ще програмираме Raspberry Pi да взема честотната стойност от брояча на периодични интервали от 100msec.
Така че PI отчита стойност 2500/10 = 250 макс за всеки ЧЕРВЕН, ЗЕЛЕН и СИН цвят. Програмирали сме също Raspberry Pi да отпечатва тези стойности, представящи интензитета на светлината на екрана, както е показано по-долу. Стойностите се изваждат от стойностите по подразбиране, за да достигнат до нула. Това е полезно, докато решавате цвета.
Тук стойностите по подразбиране са стойностите на RGB, които са взети, без да се поставя обект пред сензора. Това зависи от околните условия на светлина и тези стойности могат да се различават в зависимост от обкръжението. По принцип ние калибрираме сензора за стандартни показания. Така че първо стартирайте програмата, без да поставяте обект и отбележете показанията. Тези стойности няма да са близо до нулата, тъй като винаги ще има някаква светлина, падаща върху сензора, независимо къде го поставите. След това извадете тези показания с показанията, които ще получим след поставяне на обект за тестване. По този начин можем да получим стандартни показания.
Raspberry Pi също е програмиран да сравнява стойностите R, G и B, за да определи цвета на обекта, поставен близо до сензора. Този резултат се показва чрез светещ RGB светодиод, свързан към Raspberry Pi.
Така накратко,
1. Модулът открива светлината, отразена от обекта, разположен близо до повърхността.
2. Модулът за цветен сензор осигурява изходна вълна за R или G или B, избрана последователно от Raspberry Pi чрез щифтовете S2 и S3.
3. Броячът на CD4040 взема вълната и измерва стойността на честотата.
4. PI взема стойността на честотата от брояча за всеки цвят за всеки 100ms. След вземане на стойността всеки път PI нулира брояча, за да открие следващата стойност.
5. Raspberry Pi отпечатва тези стойности на екрана и сравнява тези стойности, за да открие цвета на обекта и накрая свети RGB LED в подходящ цвят в зависимост от цвета на обекта.
Следвахме горната последователност в нашия Python Code. Пълната програма е дадена по-долу с демонстрационно видео.
Тук Raspberry Pi е програмиран да открива само три цвята, можете да съответствате на стойностите R, G и B съответно, за да откриете повече цветове по ваш вкус.