Датчик жестов APDS-9960 Ардуино

Модуль APDS-9960 Arduino — это небольшая плата со встроенным датчиком, который обеспечивает измерение освещенности и цвета, обнаружение приближения предметов и бесконтактное распознавание жестов. С помощью этого модуля можно управлять роботами, освещением и еще многим другим простым взмахом руки. Рассмотрим подключение датчика распознавания жестов SparkFun APDS 9960 к плате Ардуино.

Датчик жестов APDS-9960 характеристики

APDS-9960 имеет встроенный датчик освещенности (ALS), ультрафиолетовый и инфракрасный фильтр, четыре отдельных фотодиода (приемники которые обнаруживают ИК-излучение) и одного ИК светодиода (излучателя). Когда мы выполняем жест рукой, датчик получает отраженное инфракрасное излучение, а микроконтроллер производит расчет направления перемещения руки.

Датчик APDS-9960 Ардуино распиновка, характеристики
Датчик жестов APDS-9960 Ардуино распиновка, характеристики

Характеристики APDS-9960

  • Рабочее напряжение: 2,8 — 3,8 Вольт
  • Работает в условиях низкой освещенности при 0,01 люкс
  • Откалиброванное обнаружение на расстоянии 100 мм
  • Диапазон чувствительности распознавания жестов 100 — 200 мм
  • Потребляемая мощность в режиме ожидания — 2,2 мкА
  • Программируемый таймер ожидания

На передней стороне платы сенсора находятся 2 перемычки PS и I2C PU:

PS — эта перемычка соединяет питание модуля и ИК-светодиода. Когда перемычка замкнута питание следует подавать только на контакт VCC модуля. Если перемычка разомкнута, то для включения ИК-светодиода сенсора SparkFun на контакт VL необходимо подать отдельное питание. По умолчанию эта перемычка замкнута.

I2C PU — эта перемычка используется для подключения подтягивающих резисторов на линии SDA и SCL. Если подтягивающие резисторы не нужны — откройте перемычку.

Как подключить датчик жестов APDS-9960 Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • датчика жестов GY-9960 / APDS-9960;
  • макетная плата;
  • провода «папа-мама».
Подключение датчика жестов APDS-9960 к Ардуино
Подключение датчика распознавания жестов APDS-9960 к Ардуино

Сенсор способен определить общий уровень освещенности в Lux или освещенность по трем каналам спектра — красный, зелёный, синий (RGB). Приближение и удаление объекта (препятствия) от сенсора, простые жесты (движение влево, вправо, вверх, вниз). Необходимо также установить библиотеку APDS9960.h для работы с модулем, после сборки схемы, представленной выше, загрузите программу в Arduino Uno.

Скетч распознавание жестов с помощью APDS-9960

#include "Wire.h"
#include "SparkFun_APDS9960.h"
 
#define APDS9960_INT 2 // порт прерывания
SparkFun_APDS9960 apds = SparkFun_APDS9960(); // создаем объект apds
 
int isr_flag;
 
void setup() {
  Serial.begin(9600);                        
  // инициализируем прерывание на спад
  attachInterrupt(0, interruptRoutine, FALLING);
 
  // инициализируем APDS-9960
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
 
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
}
 
void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}
 
void interruptRoutine() {
  isr_flag = 1;
}
 
void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
}

Пояснения к коду:

  1. проведите рукой перед датчиком GY-9960-LLC — на мониторе порта Arduino IDE вы увидите информацию, о том какой жест был распознан;
  2. если жест не определен, то на мониторе порта появится надпись NONE.



Заключение. Сенсор GY 9960 LLC может легко определить приближение объекта, простые жесты, освещенность и цвета (яркость значений RGB-цветов). В библиотеке SparkFun_APDS9960.h есть другие примеры демонстрирующие возможности датчика. Например, AmbientLightInterrupt позволяет измерять освещенность в помещении, а пример ColorSensor считывает значения красного, зеленого и синего света.



Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.