У цьому проекті ми збираємося виявити кольори за допомогою модуля датчика кольору TCS3200 з Raspberry Pi. Тут ми використовували код Python для Raspberry Pi для виявлення кольорів за допомогою датчика TCS3200. Для демонстрації кольорового виявлення ми використали світлодіод RGB, цей світлодіод 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. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi та Світлодіодний індикатор Raspberry PI для початку, крім того, що нам потрібно:
- Raspberry Pi з попередньо встановленою ОС
- Кольоровий датчик TCS3200
- Лічильник CD4040
- Світлодіод RGB
- Резистор 1 кОм (3 штуки)
- Конденсатор 1000 мкФ
Схема та з'єднання:
Підключення, які виконуються для підключення датчика кольору з Raspberry Pi, наведені в таблиці нижче:
Висновки датчиків |
Raspberry Pi Pin |
Vcc |
+ 3,3 в |
GND |
земля |
S0 |
+ 3,3 в |
S1 |
+ 3,3 в |
S2 |
GPIO6 PI |
S3 |
GPIO5 PI |
ОЕ |
GPIO22 PI |
ВИХІД |
CLK CD4040 |
Підключення лічильника CD4040 до Raspberry Pi наведено в таблиці нижче:
CD4040 Шпильки |
Raspberry Pi Pin |
Vcc16 |
+ 3,3 в |
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 |
Немає з'єднання |
Q9 |
Немає з'єднання |
Q10 |
Немає з'єднання |
Q11 |
Немає з'єднання |
Нижче наведена повна електрична схема інтерфейсу кольорового датчика з Raspberry Pi:
Робоче пояснення:
Кожен колір складається з трьох кольорів: червоного, зеленого та синього (RGB). І якщо ми знаємо інтенсивність RGB у будь-якому кольорі, тоді ми можемо виявити цей колір. Ми вже зчитували ці значення RGB за допомогою Arduino.
Використовуючи датчик кольору TCS3200, ми не можемо одночасно виявляти червоне, зелене та синє світло, тому нам потрібно перевіряти їх по черзі. Колір, який повинен відчути датчик кольору, обирається двома штифтами S2 і S3. За допомогою цих двох контактів ми можемо сказати датчику, який кольоровий рівень інтенсивності світла слід виміряти.
Скажімо, якщо нам потрібно відчути інтенсивність червоного кольору, тоді нам потрібно встановити обидва штифти на LOW. Після вимірювання ЧЕРВОНОГО світла ми встановимо S2 LOW і S3 HIGH для вимірювання синього світла. Послідовно змінюючи логіку S2 та S3, ми можемо вимірювати інтенсивність червоного, синього та зеленого світла відповідно до поданої нижче таблиці:
S2 |
S3 |
Фотодіодний тип |
Низький |
Низький |
Червоний |
Низький |
Високий |
Синій |
Високий |
Низький |
Без фільтра (білий) |
Високий |
Високий |
Зелений |
Як тільки датчик виявляє інтенсивність компонентів RGB, значення надсилається в систему управління всередині модуля, як показано на малюнку нижче. Інтенсивність світла, виміряна масивом, надходить на перетворювач струму в частоту всередині модуля. Перетворювач частоти генерує квадратну хвилю, частота якої прямо пропорційна величині, що надсилається масивом. З більшим значенням від ARRAY, перетворювач струму в частоту генерує квадратну хвилю більш високої частоти.
Частоту вихідного сигналу модулем кольорового датчика можна регулювати до чотирьох рівнів. Ці рівні вибираються за допомогою S0 і S1 модуля датчика, як показано на малюнку нижче.
S0 |
S1 |
Масштабування вихідної частоти (f0) |
L |
L |
Вимкнення живлення |
L |
H |
2% |
H |
L |
20% |
H |
H |
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, щоб виявити більше кольорів на ваш смак.