Управление положением сервопривода с помощью жестов рук для Arduino

Управление положением сервопривода с помощью жестов рук для Arduino

В этом уроке мы научимся управлять сервомотором с помощью жестов рук. Двигая рукой влево или вправо, вы можете заставить сервомотор реагировать соответствующим образом. Этот проект использует датчик жестов APDS-9960 для обнаружения движений рук и их преобразования в позиции сервомотора. Для подробного визуального объяснения обязательно посмотрите видео (в видео на 00:30).

APDS-9960 gesture sensor module -1

Основные компоненты, которые мы будем использовать, включают сервомотор и датчик жестов APDS-9960. Сервомотор будет вращаться под определенными углами в зависимости от обнаруженных жестов, в то время как датчик APDS-9960 будет интерпретировать движения рук. Эта конфигурация позволяет интуитивно управлять сервомотором без физического контакта.

Объяснение аппаратного обеспечения

Сервомотор — это небольшое устройство, которое может вращаться на определенные углы, что делает его идеальным для приложений, требующих точного позиционирования. Обычно у него три провода: питание (красный), земля (черный) и сигнал (оранжевый). Сигнальный провод получает команды на перемещение сервомотора в заданный угол.

APDS-9960 — это универсальный датчик, который может обнаруживать жесты, окружающий свет и цвет. Он общается с Arduino через I2C и требует несколько контактов для питания и передачи данных. Датчик может обнаруживать движения, такие как вверх, вниз, влево и вправо, которые мы будем использовать для управления сервоприводом.

Технические характеристики

ПроизводительБродком
Номер деталиAPDS-9960
Логическое/входное напряжение2.4 - 3.6 В
Напряжение питания2.4 - 3.6 В
Выходной ток (на канал)20 мА макс
Руководство по частоте ШИМНе применимо
Входные логические пороги0.3 В (низкое), 0.7 В (высокое)
Падение напряжения / RДС(включено)/ насыщениеНе применимо
Термические пределы-40 до 85 °C
Пакет6,0 x 3,0 мм
Заметки / вариантыДатчик жестов, датчик RGB света
  • Убедитесь, что сервопривод питается от достаточного напряжения (обычно 5В).
  • Подключите APDS-9960 к Arduino с использованием I2C-связи.
  • Обратите внимание на вывод прерывания для сенсора жестов.
  • Используйте подтягивающие резисторы, если это необходимо для стабильного обнаружения сигнала.
  • Убедитесь, что вы откалибровали сенсор в различных условиях освещения для большей точности.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

Чтобы подключить компоненты, начните с сервомотора. Подключите красный провод к 5V пину Arduino, черный провод к земле (GND), а оранжевый сигнальный провод к пину.9Это позволит Arduino управлять положением сервопривода.

Далее подключите датчик жестов APDS-9960. ПодключитеV_Nподключите к 3.3V Arduino, иGNDприжмите к земле. ЭтотINTпин должен быть подключен к пину2на Arduino, в то время какSDAиSCLштифты идут к штифтамA4иA5, соответственно. Эта конфигурация позволяет датчику эффективно взаимодействовать с Arduino.

Примеры кода и пошаговое руководство

В функции настройки мы инициализируем сервопривод и сенсор жестов. Строкаmyservo.attach(9);привязывает сервопривод к пину 9, который мы ранее подключили. Это позволяет сервоприводу получать команды от Arduino.

APDS-9960 gesture sensor -3
void setup() {
 myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 // Set interrupt pin as input
 pinMode(APDS9960_INT, INPUT);
 // Initialize Serial port
 Serial.begin(9600);
}

Далее мы определяем, как система обрабатывает жесты в функции цикла. МетодhandleGesture();проверяет доступные жесты и выполняет соответствующие действия. Например, если обнаруженный жест - это влево, сервопривод переместится на 180 градусов.

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_LEFT:
        myservo.write(180);  // added by RoboJax
        break;
      case DIR_RIGHT:
        myservo.write(0);   // added by RoboJax
        break;
    }
  }
}

Наконец, цикл постоянно проверяет жесты и обновляет положение сервопривода в зависимости от обнаруженного жеста. Убедитесь, что вы протестировали установку в различных условиях освещения, чтобы получить точное распознавание жестов.

Демонстрация / Что ожидать

Как только все будет подключено и код загружен, вы сможете управлять сервоприводом, двигая рукой влево или вправо. Сервопривод повернется на 180 градусов для жеста влево и вернется в 0 градусов для жеста вправо. Если жесты не распознаются, проверьте положение датчика и условия освещения вокруг (в видео на 05:30).

Главы

  • Введение - 00:00
  • Обзор оборудования - 01:30
  • Инструкции по проводке - 03:00
  • Объяснение кода - 04:30
  • Демонстрация - 06:00

Изображения

APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -1
APDS-9960 gesture sensor module -1
Arduino wiring of APDS9960 to control Servo motor using hand gesture
Arduino wiring of APDS9960 to control Servo motor using hand gesture
APDS-9960 gesture sensor -3
APDS-9960 gesture sensor -3
12-Source code for controlling a servo with your hand
Язык: C++
Скопировано!

Ресурсы и ссылки

Ресурсов пока нет.

Файлы📁

Нет доступных файлов.