
TCS34725
ams / TAOS; плата Adafruit · TCS34725; Adafruit PID 1334
Четырёхканальный RGBC-сенсор с ИК-фильтром. Пример для Adafruit PID 1334 и Arduino UNO R3.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает TCS34725; Adafruit PID 1334
TCS34725 измеряет интенсивность красного, зелёного, синего и широкополосного clear-канала. Встроенный ИК-фильтр уменьшает влияние инфракрасного излучения. Сенсор подходит для учебной сортировки цветных меток и сравнения материалов при одинаковых условиях.
Документированный модуль — Adafruit PID 1334 с белой подсветкой, регулятором и согласованием уровней. Другие платы на TCS34725 могут иначе управлять LED и не иметь этих цепей. Белая подсветка в данном примере оставлена включённой.
Отсчёты RGBC не являются непосредственно sRGB экрана, координатами цвета или гарантированными люксами. На них влияют источник света, расстояние, угол, блики, окно корпуса и выбранное усиление. Сначала зафиксируйте геометрию и получите эталоны белого, чёрного и нужных цветов. При насыщении уменьшайте усиление или время интегрирования.
На фото прямоугольный модуль Adafruit PID 1334 с подсветкой; круглый вариант FLORA в изображение не включён. TCS34725. Фото: Bill Earl / Adafruit. Оригинал: https://learn.adafruit.com/assets/8645 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Выделен только прямоугольный модуль Adafruit PID1334 слева; круглый FLORA1356 из сравнительной фотографии исключён. Удалены исходный фон и фон внутри двух монтажных и семи сигнальных отверстий. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, цвет, маркировка и видимые детали не перерисовывались. Адаптация фотографии распространяется по той же лицензии.
Схема распиновки
Авторская распиновка SLDV LAB для прямоугольного Adafruit PID 1334, показанного на фото. Круглая FLORA PID 1356 имеет другие питание и контакты; её нет на обложке.
Источники: 1, 2, 3, 4, 5. Схема создана SLDV LAB по фактам из документации; фото и исходная графика документации не копировались в схему.
Характеристики
- Каналы
- R, G, B, Clear
- Разрядность регистров каналов
- 16 бит
- Адрес I²C
- 0x29
- Доступное усиление
- 1× / 4× / 16× / 60×
- Интегрирование в примере
- 153.6 мс
- Усиление в примере
- 4 ×
- Встроенный ИК-фильтр
- Да
- Интерфейс
- I²C
- Питание модуля
- Adafruit PID 1334: VIN 3–5 В, встроенный регулятор и согласование I²C; в примере UNO R3 — VIN 5 В. Голая TCS34725: VDD 2,7–3,6 В; не подключать её непосредственно к 5 В. Выход 3V3 платы не соединять с 5 В.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VIN | 5V | UNO R3; только Adafruit PID 1334 с регулятором/level shifting. |
| GND | GND | Общая земля. |
| SDA | A4 / SDA | I²C UNO R3. |
| SCL | A5 / SCL | I²C UNO R3. |
| LED | Не подключать | Белая подсветка включена; соединение LED с GND её выключает. |
| INT, 3V3 | Не подключать | Пример использует опрос, не прерывания. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать TCS34725. Уточни плату сенсора, контроллер, подсветку, расстояние до объекта и задачу. Основа: Adafruit PID 1334, UNO R3 A4/A5, VIN 5 В, I²C 0x29, Adafruit TCS34725 1.4.4, 153,6 мс и 4×. Дай полный пример с проверкой инициализации, готовности и длины чтения, защитой от насыщения. Объясни, как сравнивать RGBC при постоянной геометрии, почему RGBC не равен sRGB и как откалибровать пороги по собственным образцам.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Библиотека
Adafruit TCS34725 1.4.4Зависимость Adafruit BusIO.
- Адрес I²C
0x29Фиксированный адрес TCS34725.
- Время интегрирования
TCS34725_INTEGRATIONTIME_154MSФактически номинально 153,6 мс, ATIME=0xC0.
- Усиление
TCS34725_GAIN_4XЕсли каналы насыщаются, уменьшить усиление или время.
Arduino UNO R3 · полный скетч
cpp#include <Wire.h>
#include <Adafruit_TCS34725.h>
Adafruit_TCS34725 tcs(TCS34725_INTEGRATIONTIME_154MS, TCS34725_GAIN_4X);
bool readBytes(uint8_t command, uint8_t *data, uint8_t count) {
Wire.beginTransmission(0x29);
Wire.write(command);
if (Wire.endTransmission(false) != 0) return false;
if (Wire.requestFrom(uint8_t(0x29), count) != count) {
while (Wire.available()) Wire.read();
return false;
}
for (uint8_t i = 0; i < count; ++i) data[i] = Wire.read();
return true;
}
uint16_t little16(const uint8_t *p) {
return uint16_t(p[0]) | (uint16_t(p[1]) << 8);
}
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setWireTimeout(25000, true);
if (!tcs.begin(0x29, &Wire)) {
Serial.println(F("TCS34725 initialization failed"));
while (true) delay(1000);
}
}
void loop() {
delay(200);
uint8_t status = 0;
if (!readBytes(0x93, &status, 1)) {
Serial.println(F("I2C status read failed"));
return;
}
if (!(status & 0x01)) {
Serial.println(F("RGBC data not yet valid"));
return;
}
uint8_t data[8];
if (!readBytes(0xB4, data, sizeof(data))) {
Serial.println(F("Incomplete RGBC read"));
return;
}
const uint16_t c = little16(data);
const uint16_t r = little16(data + 2);
const uint16_t g = little16(data + 4);
const uint16_t b = little16(data + 6);
if (c == 65535 || r == 65535 || g == 65535 || b == 65535) {
Serial.println(F("RGBC saturation; reduce gain or integration time"));
return;
}
Serial.print(F("R=")); Serial.print(r);
Serial.print(F(" G=")); Serial.print(g);
Serial.print(F(" B=")); Serial.print(b);
Serial.print(F(" Clear=")); Serial.println(c);
}
Полный скетч Arduino UNO R3, Arduino AVR Boards 1.8.6, Adafruit TCS34725 1.4.4. Инициализация использует библиотеку. Для ошибок чтения добавлен собственный helper Wire: 0x93 — чтение STATUS, 0xB4 — команда auto-increment с начального регистра CDATAL 0x14; затем идут C/R/G/B по два байта, младший первым. API и протокол сверены с исходниками и datasheet; компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. Сравните белую, чёрную и цветную поверхность на фиксированном расстоянии при одной подсветке. В темноте все каналы могут быть нулевыми; деления на Clear в коде нет. Предел 65535 относится к выбранным 153,6 мс: при сокращении времени интегрирования предел насыщения нужно пересчитать.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.
