Проект 9: Робот, следящий за движением руки

В этом проекте мы будем тестировать робота, который будет следить за движением руки с помощью ультразвукового датчика. Используя библиотеки AlashUltrasonic и AlashMotorControl, мы упростим управление датчиком и моторами для выполнения этой задачи. Робот сможет обнаруживать препятствия и двигаться в зависимости от их расположения, что позволяет проверить правильность сборки и работоспособность датчиков.

Принцип работы

Ультразвуковой датчик измеряет расстояние до ближайшего объекта путем отправки ультразвукового сигнала и измерения времени, необходимого для возвращения отраженного сигнала. Датчик подключен к Arduino, который обрабатывает данные и управляет моторами через модуль L298N, чтобы робот мог двигаться вперед, назад или останавливаться в зависимости от расстояния до объекта.

Необходимые компоненты

  • Arduino Uno

  • Ультразвуковой датчик HC-SR04

  • Модуль драйвера двигателя L298N

  • 2 DC мотора

  • Источник питания

  • Шасси робота с колесами

Подключение компонентов

Подключение ультразвукового датчика: - VCC → 5V Arduino - GND → GND Arduino - TRIG → пин A1 - ECHO → пин A0

Подключение модуля L298N: - ENA → пин 10 (управление скоростью левого мотора) - IN1 → пин 9 (направление левого мотора) - IN2 → пин 8 (направление левого мотора) - IN3 → пин 7 (направление правого мотора) - IN4 → пин 6 (направление правого мотора) - ENB → пин 5 (управление скоростью правого мотора) - VCC → 5V Arduino - GND → GND Arduino - VM → внешний источник питания

Установка библиотек

Чтобы подключить библиотеки для Arduino, выполните следующие шаги:

  1. Скачайте библиотеки с официального сайта или из репозитория GitHub: - AlashUltrasonic - AlashMotorControl

  2. Откройте программу Arduino IDE и перейдите в меню «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку…».

  3. В открывшемся окне выберите скачанный .zip файл и нажмите «Открыть».

  4. Внизу Arduino IDE появится сообщение «Библиотека добавлена. Проверьте меню «Подключить библиотеку»».

  5. Теперь библиотека будет доступна для использования в ваших проектах.

Пример кода

#include <AlashUltrasonic.h>
#include <AlashMotorControlX2.h>

// Определение пинов для ультразвукового датчика
const uint8_t TRIGGER_PIN = A1;
const uint8_t ECHO_PIN = A0;
AlashUltrasonic sensor(TRIGGER_PIN, ECHO_PIN);

// Определение пинов для моторов
const unsigned int PIN_FORWARD_LEFT = 9;
const unsigned int PIN_BACKWARD_LEFT = 8;
const unsigned int PIN_ENABLE_LEFT = 10;
const unsigned int PIN_FORWARD_RIGHT = 7;
const unsigned int PIN_BACKWARD_RIGHT = 6;
const unsigned int PIN_ENABLE_RIGHT = 5;

// Инициализация двух моторов
AlashMotorControlX2 motors(PIN_FORWARD_LEFT, PIN_BACKWARD_LEFT, PIN_ENABLE_LEFT,
                          PIN_FORWARD_RIGHT, PIN_BACKWARD_RIGHT, PIN_ENABLE_RIGHT);

void setup() {
  Serial.begin(9600);  // Инициализация последовательного порта для отображения информации
  sensor.begin();
  motors.setSpeed(80);  // Установка начальной скорости для обоих моторов
}

void loop() {
  float distanceCenter = sensor.getDistance();
  Serial.print("DistanceCenter: ");
  Serial.print(distanceCenter);
  Serial.println(" cm");

  if (distanceCenter < 25) {
    motors.setSpeed(100);
    motors.backward();
  }
  else if (distanceCenter >= 25 && distanceCenter < 50) {
    motors.setSpeed(100);
    motors.forward();
  }
  else {
    motors.stop();
  }
  delay(25);
}

Описание кода

Инициализация датчика и моторов:

  • Создаем объект sensor для управления ультразвуковым датчиком.

  • Создаем объект motors для управления двумя моторами.

  • В функции setup инициализируем последовательный порт, датчик и устанавливаем начальную скорость для моторов.

Основной цикл (loop):

  • Получаем расстояние до объекта с помощью датчика.

  • Если расстояние меньше 25 см, робот движется назад.

  • Если расстояние между 25 и 50 см, робот движется вперед.

  • Если объектов поблизости нет (более 50 см), робот останавливается.

  • Информация о расстоянии выводится в последовательный монитор.

Алгоритм работы

Робот работает по следующему алгоритму:

  1. Измерение расстояния - ультразвуковой датчик определяет расстояние до объекта

  2. Анализ расстояния: - < 25 см → движение назад (избегание препятствия) - 25-50 см → движение вперед (следование за объектом) - > 50 см → остановка (нет объекта для следования)

  3. Повторение - цикл повторяется каждые 25 мс

Результат работы

После загрузки кода робот будет:

  • Двигаться вперед, когда рука находится на расстоянии 25-50 см

  • Двигаться назад, когда рука приближается ближе 25 см

  • Останавливаться, когда рука удаляется дальше 50 см

  • Выводить информацию о расстоянии в монитор последовательного порта

Полезная информация

Ультразвуковые датчики: Ультразвуковые датчики, такие как HC-SR04, позволяют точно измерять расстояние до объектов и избегать препятствий. Они отправляют ультразвуковые волны и измеряют время их отражения, что позволяет определять расстояние до объекта с высокой точностью.

Библиотека AlashUltrasonic: Эта библиотека упрощает работу с ультразвуковыми датчиками, предоставляя удобные функции для получения расстояния. Она абстрагирует детали работы с датчиком, позволяя разработчикам сосредоточиться на логике приложения.

Библиотека AlashMotorControl: Эта библиотека упрощает управление моторами, предоставляя функции для управления скоростью и направлением вращения моторов. Она поддерживает различные режимы управления и позволяет легко интегрировать управление моторами в проекты на базе Arduino.

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

Настройка параметров

Для оптимизации работы робота можно изменить следующие параметры:

  • Пороговые расстояния: Измените значения 25 и 50 см для настройки зон реакции

  • Скорость движения: Измените setSpeed() для регулировки скорости робота

  • Частота измерений: Измените delay(25) для изменения частоты обновления данных

  • Логика движения: Модифицируйте условия в if-else для изменения поведения робота

Заключение

Этот проект позволяет протестировать робота, собранного из набора 4WD Smart Car Kit v1.0, который следит за движением руки или других объектов, используя ультразвуковой датчик и две библиотеки для управления сенсорами и моторами. Это отличная возможность для изучения основ робототехники, работы с датчиками и управления моторами на базе Arduino.

Вы можете продолжить улучшать и модифицировать этот проект, добавляя новые функции и возможности, такие как более сложные алгоритмы избегания препятствий или использование дополнительных датчиков для повышения точности и функциональности робота.

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