- Датчик цвета TCS3200:
- Необходимые компоненты:
- Принципиальная схема и подключения:
- Рабочее объяснение:
В этом проекте мы собираемся определять цвета с помощью модуля датчика цвета TCS3200 с Raspberry Pi. Здесь мы использовали код Python для Raspberry Pi для определения цветов с помощью датчика TCS3200. Чтобы продемонстрировать определение цвета, мы использовали светодиод RGB, этот светодиод будет светиться тем же цветом, что и объект рядом с датчиком. В настоящее время мы запрограммировали Raspberry Pi на обнаружение только красного, зеленого и синего цветов. Но вы можете запрограммировать его на обнаружение любого цвета после получения значений RGB, поскольку каждый цвет состоит из этих компонентов RGB. Посмотрите демонстрационное видео в конце.
Ранее мы считывали и отображали значения RGB цветов, используя тот же TCS3200 с Arduino. Прежде чем идти дальше, расскажем о датчике цвета TCS3200.
Датчик цвета TCS3200:
TCS3200 - это датчик цвета, который при правильном программировании может определять любое количество цветов. TCS3200 содержит массивы RGB (красный, зеленый, синий). Как показано на рисунке на микроскопическом уровне, внутри глазного сенсора можно увидеть квадратные прямоугольники. Эти квадратные прямоугольники представляют собой массивы матрицы RGB. Каждый из этих блоков содержит три датчика для определения интенсивности красного, зеленого и синего света.
Итак, у нас есть красный, синий и зеленый массивы на одном слое. Таким образом, при обнаружении цвета мы не можем обнаружить все три элемента одновременно. Каждый из этих наборов датчиков следует выбирать отдельно один за другим для определения цвета. Модуль можно запрограммировать на распознавание одного цвета и на отключение других. Он содержит булавки для этой цели выбора, которая будет объяснена позже. Есть четвертый режим, который не является режимом фильтрации; без фильтра датчик обнаруживает белый свет.
Мы подключим этот датчик к Raspberry Pi и запрограммируем Raspberry Pi для обеспечения соответствующего отклика в зависимости от цвета.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi и мигании светодиода Raspberry PI, чтобы начать работу, кроме того, что нам нужно:
- Raspberry Pi с предустановленной ОС
- Датчик цвета TCS3200
- Чип счетчика CD4040
- RGB светодиод
- Резистор 1КОм (3 шт.)
- Конденсатор 1000 мкФ
Принципиальная схема и подключения:
Подключения, которые выполняются для подключения датчика цвета к Raspberry Pi, приведены в таблице ниже:
Штыри датчика |
Контакты Raspberry Pi |
Vcc |
+ 3,3 В |
GND |
земля |
S0 |
+ 3,3 В |
S1 |
+ 3,3 В |
S2 |
GPIO6 PI |
S3 |
GPIO5 PI |
OE |
GPIO22 PI |
ИЗ |
CLK из CD4040 |
Соединения для счетчика CD4040 с Raspberry Pi приведены в таблице ниже:
CD4040 контакты |
Контакты Raspberry Pi |
Vcc16 |
+ 3,3 В |
Gnd8 |
земля |
Clk10 |
ВНЕ датчика |
Сброс 11 |
GPIO26 PI |
Q0 |
GPIO21 PI |
Q1 |
GPIO20 PI |
2 квартал |
GPIO16 PI |
3 квартал |
GPIO12 PI |
4 квартал |
GPIO25 PI |
Q5 |
GPIO24 ИП |
Q6 |
GPIO23 PI |
Q7 |
GPIO18 PI |
Q8 |
Нет соединения |
Q9 |
Нет соединения |
Q10 |
Нет соединения |
Q11 |
Нет соединения |
Ниже приведена полная принципиальная схема взаимодействия датчика цвета с Raspberry Pi:
Рабочее объяснение:
Каждый цвет состоит из трех цветов: красного, зеленого и синего (RGB). И если мы знаем интенсивность RGB в любом цвете, мы можем определить этот цвет. Ранее мы считывали эти значения RGB с помощью Arduino.
Используя датчик цвета TCS3200, мы не можем обнаруживать красный, зеленый и синий свет одновременно, поэтому нам нужно проверять их один за другим. Цвет, который должен распознаваться датчиком цвета, выбирается двумя контактами S2 и S3. С помощью этих двух контактов мы можем сообщить датчику, интенсивность цветного света которой необходимо измерить.
Скажем, если нам нужно почувствовать интенсивность красного цвета, нам нужно установить оба контакта на НИЗКИЙ. После измерения КРАСНОГО света, мы установим 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%. Помните, что под тенью модуль датчика цвета генерирует прямоугольный сигнал с максимальной частотой 2500 Гц (100% масштабирование) для каждого цвета.
Хотя модуль обеспечивает выходной сигнал прямоугольной формы, частота которого прямо пропорциональна интенсивности света, падающего на его поверхность, этот модуль не может легко рассчитать интенсивность света каждого цвета. Однако мы можем сказать, увеличивается или уменьшается интенсивность света для каждого цвета. Также мы можем рассчитать и сравнить значения красного, зеленого, синего, чтобы определить цвет света или цвет объекта, заданного на поверхности модуля. Так что это скорее модуль датчика цвета, чем модуль датчика интенсивности света.
Теперь мы подадим этот прямоугольный сигнал на Raspberry Pi, но мы не можем передать его напрямую PI, потому что Raspberry Pi не имеет внутренних счетчиков. Итак, сначала мы передадим этот вывод двоичному счетчику CD4040 и запрограммируем Raspberry Pi на получение значения частоты из счетчика с периодическими интервалами в 100 мсек.
Таким образом, 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 берет значение частоты со счетчика для каждого цвета каждые 100 мс. После получения значения каждый раз, когда PI сбрасывает счетчик, чтобы определить следующее значение.
5. Raspberry Pi печатает эти значения на экране и сравнивает эти значения, чтобы определить цвет объекта и, наконец, засветить светодиод RGB соответствующим цветом в зависимости от цвета объекта.
Мы следовали вышеуказанной последовательности в нашем коде Python. Полная программа представлена ниже с демонстрационным видео.
Здесь Raspberry Pi запрограммирован на обнаружение только трех цветов, вы можете сопоставить значения R, G и B соответственно, чтобы обнаружить больше цветов по вашему вкусу.