Проект 10: Робот, который объезжает препятствия

Этот проект предназначен для тестирования робота, который следит за движением руки с помощью ультразвукового датчика. Используя библиотеки AlashUltrasonic и AlashMotorControl, робот обнаруживает препятствия и реагирует на них, двигаясь вперед, назад или останавливаясь в зависимости от расстояния до объекта. Проект позволяет проверить правильность сборки робота и работоспособность датчиков, обеспечивая базу для дальнейшего развития и улучшения функциональности робота.

Робот, объезжающий препятствия

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

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

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

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

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

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

  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);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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