Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Определение цвета Arduino

Компоненты и расходные материалы

Arduino Nano R3
× 1
Распознавание цвета модуля датчика цвета
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Макет (общий)
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Проект

Это простое руководство, в котором мы исследуем, как считывать цвета с помощью Arduino и датчиков, таких как TCS 3200. Идея состоит в том, чтобы определять цвет объекта и отображать его на ЖК-дисплее. Этот проект является компонентом более крупного проекта, которым будет рука робота, которая выбирает правильное действие в зависимости от цвета объекта. На приведенной выше блок-схеме показаны основные компоненты.

На видео ниже показана работа над финальным проектом:

Шаг 1:BoM

Приведенные ниже ссылки и цена приведены только для справки.

  • Arduino Nano (8 долларов США)
  • Модуль датчика цвета TCS3200 (9 долларов США).
  • Последовательный ЖК-модуль с синей подсветкой IIC / I2C / TWI 1602 (8 долларов США)
  • Макетная плата (2 доллара США)
  • Кабели

Шаг 2. Датчик цвета TSC 3200

Как описано в его техническом описании, TCS3200 представляет собой программируемый преобразователь цветного света в частоту, который объединяет конфигурируемые кремниевые фотодиоды и преобразователь тока в частоту на единой монолитной интегральной схеме КМОП.

На выходе получается прямоугольная волна (рабочий цикл 50%) с частотой, прямо пропорциональной интенсивности света (освещенности). Полная выходная частота может быть масштабирована одним из трех предустановленных значений через два управляющих входных контакта (S0 и S1). Цифровые входы и цифровой выход позволяют напрямую подключаться к микроконтроллеру или другой логической схеме.

Разрешение выхода (OE) переводит выход в состояние высокого импеданса для совместного использования нескольких блоков входной линии микроконтроллера. В TCS3200 преобразователь света в частоту считывает матрицу 8 x 8 фотодиодов.

  • Шестнадцать фотодиодов имеют синие фильтры.
  • 16 фотодиодов с зелеными фильтрами.
  • 16 фотодиодов имеют красные светофильтры.
  • 16 фотодиодов чистые без фильтров.

Контакты S2 и S3 используются для выбора активной группы фотодиодов (красный, зеленый, синий, прозрачный). Фотодиоды имеют размер 110 x 110 мкм и центр 134 мкм.

OE (Enable) должен быть подключен к GND (LOW).

Датчик герметизирован и должен иметь напряжение от 2,7 до 5,5 В постоянного тока. Мы будем использовать выход 5V Arduino для питания датчика. Для правильного использования датчика мы установим небольшое резиновое кольцо, чтобы изолировать датчик от бокового света. Я исправил это горячим клеем.

Шаг 3. Подключение аппаратного обеспечения

Подключите датчик TSC3200, как показано ниже:

  • S0 ==> Нано-контакт D4
  • S1 ==> Нано-контакт D5
  • S2 ==> Нано-контакт D6
  • S3 ==> Нано-контакт D7
  • OUT ==> Nano Pin D8
  • EN ==> GND
  • VCC ==> + 5 В
  • GND ==> GND

Подключите последовательный ЖК-дисплей I2C 2/16:

  • SDA ==> Nano Pin A4
  • SCL ==> Nano Pin A5

Установите Arduino Nano на доску для хлеба. Подключите выход Nano 5V и GND к обеим шинам питания.

Шаг 4. Код Arduino

Первое, что нужно определить, - это масштабирование частоты, как это определено в приведенной выше таблице. Для этого используются контакты S0 и S1. Масштабирование выходной частоты полезно для оптимизации показаний датчика для различных частотомеров или микроконтроллеров. Мы установим S0 и S1, оба в HIGH (100%):

  digitalWrite (s0, HIGH); digitalWrite (s1, HIGH);  

Следующее, что нужно сделать, это выбрать цвет, который будет считываться фотодиодом (красный, зеленый или синий), для этого мы используем управляющие контакты S2 и S3. Поскольку фотодиоды подключены параллельно, установка для S2 и S3 НИЗКОГО и ВЫСОКОГО значений в различных комбинациях позволяет вам выбирать разные фотодиоды, как показано в таблице выше.

  digitalWrite (s2, LOW); digitalWrite (s3, LOW); красный =pulseIn (outPin, LOW); // Чтение КРАСНОЙ составляющей цвета digitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Чтение ЗЕЛЕНОГО компонента цвета digitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // Считываем СИНИЙ компонент цвета  

В окончательном коде мы прочитаем несколько раз каждый из компонентов RGB и возьмем среднее значение, так что мы можем уменьшить ошибку, если одно из показаний будет плохим.

Когда у нас есть 3 компонента (RGB), мы должны определить, что это за цвет. Способ сделать это предварительно откалибровать проект. Вы можете использовать тестовую бумагу или предмет известного цвета и прочитать 3 сгенерированных компонента.

Вы можете начать с моего, изменив параметры под свой уровень освещенности:

  void getColor () {readRGB (); if (красный> 8 &&красный <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="БЕЛЫЙ"; иначе if (красный> 80 &&красный <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="BLACK"; иначе if (красный> 12 &&красный <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; иначе if (красный> 50 &&красный <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; иначе if (красный> 10 &&красный <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="ЖЕЛТЫЙ"; иначе, если (красный> 65 &&красный <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="СИНИЙ"; else color ="NO_COLOR";}  

Как вы можете видеть выше, я заранее определил 6 цветов:белый, черный, красный, зеленый, желтый и синий. По мере уменьшения окружающего освещения параметры имеют тенденцию повышаться.

Внутри цикла () я определяю показания дисплея на ЖК-дисплее каждую 1 секунду.

Полный код можно найти на моем GitHub.

Шаг 5. Заключение

Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающем мире электроники, робототехники и Интернета вещей!

Посетите мой GitHub, чтобы найти обновленные файлы:Color Detector

Чтобы узнать больше о проектах, посетите мой блог:MJRoBot.org

Салудо с юга мира!

Увидимся на моем следующем уроке!

Спасибо,

Марсело

Код

  • Фрагмент кода №2
  • Фрагмент кода №3
Фрагмент кода 2 Обычный текст
 digitalWrite (s2, LOW); digitalWrite (s3, LOW); красный =pulseIn (outPin, LOW); // Чтение КРАСНОЙ составляющей цвета digitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Чтение ЗЕЛЕНОГО компонента цвета digitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // Считываем СИНИЙ компонент цвета 
Фрагмент кода № 3 Обычный текст
 void getColor () {readRGB (); if (красный> 8 &&красный <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="БЕЛЫЙ"; иначе if (красный> 80 &&красный <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="BLACK"; иначе if (красный> 12 &&красный <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; иначе if (красный> 50 &&красный <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GREEN"; иначе if (красный> 10 &&красный <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="ЖЕЛТЫЙ"; иначе, если (красный> 65 &&красный <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="СИНИЙ"; else color ="NO_COLOR";} 
Github
https://github.com/Mjrovai/Color-Detectorhttps://github.com/Mjrovai/Color-Detector

Схема

Hw
https://github.com/Mjrovai/Color-Detector/blob/master/Color%20Detector.fzz

Производственный процесс

  1. Создание монитора Ambilight с помощью Arduino
  2. Игра Arduino Pong - OLED-дисплей
  3. Детектор звуковой частоты
  4. Клон Arduino Tamagotchi - цифровой питомец
  5. Манипулятор беспроводного переключателя света
  6. Tech-TicTacToe
  7. Водяной пистолет с датчиком движения
  8. Таймер обратного отсчета Arduino
  9. Цветовой микшер Arduino RGB
  10. Arduino Sunflower:электронный танцор солнца