Многофункциональный датчик APDS-9960 позволяет определять цвет поверхности (как этот детектор), оценивать расстояние до препятствия и распознавать простые жесты. Датчик был приобретен на Али за 3 доллара (200 рублей). Датчик традиционно для Китая поставляется в антистатическом пакете.
Габаритные размеры устройства 25 х 17 мм, на плате имеются два крепежных отверстия диаметром по 3 мм, расстояние между центрами отверстий 11 мм. Масса датчика 1,4 г. На плате модуля имеется инфракрасный светодиод, тусклое свечение которого вполне можно заметить невооруженным глазом, даже в условиях не слишком яркого дневного освещения, для лучшей заметности следует использовать сильную лупу. Излучение светодиода отражается от исследуемой поверхности и попадает на группу фотодиодов. С другими устройствами взаимодействие происходит по интерфейсу I2C.
Подключение многофункционального датчика
Плата устройства имеет 5 контактов:
- VCC – питание 3,3 В,
- GND , общий провод,
- INT , вывод для сигнала прерывания,
- SDA и SCL , контакты интерфейса I2C [1-4].
В простейшем случае использовать датчик можно с неподключенным контактом INT.
Модуль потребляет ток 160-140 мкА при напряжении 3,3 В.
Для работы с данным устройством написана специальная библиотека SparkFun_APDS-9960_Sensor_Arduino_Library-master [5-6]. К ней прилагается ряд примеров, иллюстрирующих работу устройства в разных режимах. Программа ColorSensor позволяет отличать цвет поверхности. В качестве подопытных поверхностей были использованы папки трех цветов.
Экспериментально установлено, что для надежного распознавания цветов расстояние между поверхностью и датчиком должно составлять 1,5-2 см.
Красная папка
Зеленая папка
Синяя папка
Во всех случаях цвет определяется правильно, хотя красная поверхность отличается от зеленой сильнее, чем отличаются друг от друга синяя и зеленые поверхности. Возможно, это связано с тем, что во время опытов поверхность папок дополнительно освещалась белой холодной светодиодной лампой. Во всяком случае, датчик в данных условиях и белую писчую бумагу объявляет красной, хотя в этом случае разница сигналов по разным каналам не велика.
Погрешность измерения температуры термопарой
Аналогичный результат дает и черная шероховатая поверхность бокса CD-диска, разумеется в этом случае общая яркость отраженного сигнала гораздо меньше.
Особенно приятно удивило то, что надежно опознается цвет не только поверхностей большой площади, но и цвет сравнительно небольших предметов.
Красная рукоятка отвертки
Синяя рукоятка отвертки
Зеленый кистевой эспандер
Хотя для случая локальных предметов разница в сигнале по разным цветовым каналам меньше, тем не менее, во всех случая цвет с расстояния в 1,5 – 2 см распознается уверенно. Программа AmbientLightInterrupt также замеряет общую освещенность и освещенность по трем цветовым каналам, но с использованием прерывания.
Программа ProximitySensor позволяет измерять расстояние до препятствия в диапазоне от 5 до 40 см, результат измерения представляется числом от 0 до 255.
Программа ProximityInterrupt реагирует на приближение препятствия, на расстояние 20 см и меньше, программа использует прерывание.
Программа GestureTest позволяет распознавать простые жесты. При этом данная программа наиболее надежно распознает жесты LEFT и RIGHT. При использовании датчика для распознавания жестов следует двигать рукой плавно, без резких движений.
В целом отличный датчик, не нуждающийся, в какой-либо сложной настройке, при правильном включении начинает работать сразу и надежно выполняет заявленные функции.
Полезные ссылки
- www.theorycircuit.com/arduino-gesture-sensor-apds-9960/
- www.youtube.com/watch?v=0iagZdvaxV8
- de-news.net/online/датчик-жестов-apds-9960-подключение-к-arduino-0iagZdvaxV8.html
- elekt.tech/arduino/sensors/datchik-zhestov-osveshhennosti-tsveta-i-priblizheniya-apds-9960-dlya-arduino.html
- github.com/sparkfun/SparkFun_APDS-9960_Sensor_Arduino_Library
- iarduino.ru/file/308.html
Файлы управления модуля тут. Автор обзора датчика , Denev.