Датчик жестов, освещенности, цвета и приближения APDS-9960 для Arduino

Описание: Датчик жестов, освещенности, цвета и приближения APDS-9960

Датчик APDS9960 — способен определять уровень освещённости в Lux (как общий, так и по трём каналам спектра — красный, зелёный, синий), приближение объектов (препятствий) и жесты (движение объектов влево, вправо, вверх, вниз, к датчику и от него). У более ранней модели APDS9930 имеются только функции определения приближения и уровня общей освещённости.

APDS-9960

Общие сведения:

Модуль построен на базе одноимённого датчика APDS9960, в состав которого входят: ИК-светодиод с программируемым драйвером, 4 фотодиода для обнаружения жестов, 3 фотодиода реагирующих на разные спектры для определения цвета, 1 фотодиод общей освещённости, Уф и ИК-фильтры, усилители с программируемым коэффициентом усиления, МК, АЛУ, АЦП, ОЗУ, контроллер шины I2C с адресом ведомого 0x39 и множество дополнительных блоков. Результаты освещённости в Lux выводятся с использованием эмпирической формулы для аппроксимации реакции человеческого глаза.

Жесты:

    Датчик APDS9960 способен реагировать на следующие жесты:

  • UP — Движение руки перед датчиком ВПЕРЁД или ВВЕРХ (зависит от положения датчика в пространстве).
  • DOWN — Движение руки перед датчиком НАЗАД или ВНИЗ (зависит от положения датчика в пространстве).
  • LEFT — Движение руки перед датчиком ВЛЕВО.
  • RIGHT — Движение руки перед датчиком ВПРАВО.
  • NEAR — Приближение руки К датчику.
    Плавно приблизьте руку к датчику сверху на расстояние ≈ 1-5 см., задержите её не менее чем на 1 секунду и быстро уберите в любую сторону.
  • FAR Удаление руки ОТ датчика.
    Быстро приблизьте руку к датчику с любой стороны, на расстояние ≈ 1-5 см., задержите её не менее чем на 1 секунду и плавно уберите от датчика вверх.
  • NONE Датчик зафиксировал движение, но не смог его распознать.

Подключение:

У датчика APDS-9960 логика и питание только 3,3 В!

Выводы SDA и SCL модуля подключаются к аппаратной шине I2C Arduino. Если Ваша Arduino имеет 5 В логику, то выводы SDA и SCL подключаются через двунаправленный преобразователь уровней 3.3 — 5 В.

Выводы GND, VCC и VL являются выводами питания (вывод VCC — питание модуля +3.3 В, а вывод VL — питание встроенного ИК-светодиода +3.0 … +4.5 В). В модуле вывод VL соединён с VCC через перемычку PS, следовательно, напряжение питания +3.3 В, подаётся только на вывод VCC. Если Вам потребуется запитать ИК-светодиод от вывода VL а не от питания модуля VCC, то уберите припой с перемычки PS модуля.

Вывод INT модуля является выходом прерывания (активный уровень — логический «0») который в зависимости от выбранного режима работы может реагировать на яркость, обнаружение объектов, действия и т.д. Данный вывод можно не использовать (постоянно опрашивая модуль), можно использовать по прямому назначению (подключить к выводу Arduino поддерживающему внешнее прерывание) и опрашивать модуль только по внешнему прерыванию, а можно подключить к нему обычный светодиод который будет сигнализировать о том, что модуль отреагировал на какое то действие или событие.

Ниже представлены 2 варианта работы с датчиком APDS9960, с использованием вывода INT (с прерываниями) и без использования вывода INT (без прерываний).

1) Подключение без использования прерывания:

    Таблица подключения выводов датчика:

  • SDA — линия данных шины I2C. Подключается к выводу A4 Arduino UNO через двунаправленный преобразователь.
  • SCL — линия тактирования шины I2C. Подключается к выводу A5 Arduino UNO через двунаправленный преобразователь.
  • GND — общий вывод питания. Подключается к выводу GND Arduino UNO.
  • VCC — вывод питания модуля. Подключается к выводу 3.3V Arduino UNO.
  • VL — вывод питания драйвера ИК-светодиода. Не используется.
  • INT — выход прерывания модуля. Не используется.

К выводу INT датчика можно подключить светодиод (катод к выводу INT, а анод к выводу 3.3V). Если Вы будите его использовать, то функции: enableLightSensor()enableGestureSensor() или enableProximitySensor() скетчей требуется вызывать с параметром true, а не false, как это указано в скетчах. Светодиод будет фиксировать прерывания (указывать на то, что модуль отреагировал на какое то действие или событие), но сами прерывания не будут участвовать в алгоритме обработки данных, так как вывод INT датчика не подключён к Arduino.

Определение жестов (без прерываний):

 

Определение освещённости и цвета (без прерываний):

Определение приближения (без прерываний):

2) Подключение с использованием прерывания:

    Таблица подключения выводов датчика:

  • SDA — линия данных шины I2C. Подключается к выводу A4 Arduino UNO через двунаправленный преобразователь.
  • SCL — линия тактирования шины I2C. Подключается к выводу A5 Arduino UNO через двунаправленный преобразователь.
  • GND — общий вывод питания. Подключается к выводу GND Arduino UNO.
  • VCC — вывод питания модуля. Подключается к выводу 3.3V Arduino UNO.
  • VL — вывод питания драйвера ИК-светодиода. Не используется.
  • INT — выход прерывания модуля. Подключается к тем выводам Arduino, которые могут обрабатывать внешние прерывания, у Arduino UNO это выводы D2 и D3. В приведённых ниже скетчах используется вывод D2, если Вы захотите использовать вывод D3 — укажите это в скетче (см. комментарии).

В схеме с использованием прерываний, так же можно подключить светодиод к выводу INT (катод к выводу INT, а анод к выводу 3.3V), без внесения изменений в скетчи.

Определение жестов (по прерыванию):

Определение освещённости и цвета (по прерыванию):

Определение приближения (по прерыванию):

Питание:

Напряжение питания модуля от 2,4 до 3,6 В (номинально 3,3 В) постоянного тока, подаётся на выводы «VCC» и «GND» модуля.

Вывод VL предназначенный для питания драйвера ИК-светодиода от 3,0 до 4,5 В постоянного тока не используется, так как он электрически соединён с выводом VCC через перемычку PS на плате модуля.

Спецификация:

  • Входное напряжение питания (VCC): 2,4 … 3,6 В постоянного тока (номинально 3,3 В).
  • Ток потребляемый ИК-светодиодом через драйвер: 100 / 50 / 25 / 12.5 мА (устанавливается программно).
  • Ток потребляемый модулем без учёта ИК-светодиода:
    • В режиме измерений уровня освещённости: до 250 мкА.
    • В режиме определения приближений: до 790 мкА.
    • В режиме обнаружения жестов: до 790 мкА.
    • В режиме ожидания: до 38 мкА.
    • В спящем режима: до 10 мкА.
  • Частота тактирования шины I2C: до 400 кГц.
  • Адрес модуля на шине I2C: 0x39.
  • Рабочая температура: -30 … +85 °С.
  • Температура хранения: -40 … +85 °С.
  • Габариты: 15х20 мм
  • Вес: 3 гр.

5 thoughts on “Датчик жестов, освещенности, цвета и приближения APDS-9960 для Arduino”

  1. Спасибо за полезную статью!

    Подскажите пожалуйста, где можно скачать файл ???

  2. Спасибо большое за материал, давно искал по этому датчику APDS-9960 для Arduino инструкции.

Добавить комментарий для Жанна Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *