Проект 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, выполните следующие шаги:
Скачайте библиотеки с официального сайта или из репозитория GitHub: - AlashUltrasonic - AlashMotorControl
Откройте программу Arduino IDE и перейдите в меню «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку…».
В открывшемся окне выберите скачанный .zip файл и нажмите «Открыть».
Внизу Arduino IDE появится сообщение «Библиотека добавлена. Проверьте меню «Подключить библиотеку»».
Теперь библиотека будет доступна для использования в ваших проектах.
Пример кода
#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 см), робот останавливается.
Информация о расстоянии выводится в последовательный монитор.
Алгоритм работы
Робот работает по следующему алгоритму:
Измерение расстояния - ультразвуковой датчик определяет расстояние до объекта
Анализ расстояния: - < 25 см → движение назад (избегание препятствия) - 25-50 см → движение вперед (следование за объектом) - > 50 см → остановка (нет объекта для следования)
Повторение - цикл повторяется каждые 25 мс
Результат работы
После загрузки кода робот будет:
Двигаться вперед, когда рука находится на расстоянии 25-50 см
Двигаться назад, когда рука приближается ближе 25 см
Останавливаться, когда рука удаляется дальше 50 см
Выводить информацию о расстоянии в монитор последовательного порта
Полезная информация
Ультразвуковые датчики: Ультразвуковые датчики, такие как HC-SR04, позволяют точно измерять расстояние до объектов и избегать препятствий. Они отправляют ультразвуковые волны и измеряют время их отражения, что позволяет определять расстояние до объекта с высокой точностью.
Библиотека AlashUltrasonic: Эта библиотека упрощает работу с ультразвуковыми датчиками, предоставляя удобные функции для получения расстояния. Она абстрагирует детали работы с датчиком, позволяя разработчикам сосредоточиться на логике приложения.
Библиотека AlashMotorControl: Эта библиотека упрощает управление моторами, предоставляя функции для управления скоростью и направлением вращения моторов. Она поддерживает различные режимы управления и позволяет легко интегрировать управление моторами в проекты на базе Arduino.
Оптимизация работы: Вы можете экспериментировать с настройками скорости и расстояния, чтобы оптимизировать работу робота для конкретных задач и условий. Например, вы можете настроить пороговые значения расстояний для более точного управления движением робота.
Настройка параметров
Для оптимизации работы робота можно изменить следующие параметры:
Пороговые расстояния: Измените значения 25 и 50 см для настройки зон реакции
Скорость движения: Измените setSpeed() для регулировки скорости робота
Частота измерений: Измените delay(25) для изменения частоты обновления данных
Логика движения: Модифицируйте условия в if-else для изменения поведения робота
Заключение
Этот проект позволяет протестировать робота, собранного из набора 4WD Smart Car Kit v1.0, который следит за движением руки или других объектов, используя ультразвуковой датчик и две библиотеки для управления сенсорами и моторами. Это отличная возможность для изучения основ робототехники, работы с датчиками и управления моторами на базе Arduino.
Вы можете продолжить улучшать и модифицировать этот проект, добавляя новые функции и возможности, такие как более сложные алгоритмы избегания препятствий или использование дополнительных датчиков для повышения точности и функциональности робота.
Экспериментируйте с различными настройками и компонентами, чтобы протестировать робота и убедиться, что он работает корректно. Этот проект предоставляет прочную основу для дальнейшего развития и исследований в области робототехники.