Как сделать робота, избегающего препятствий, используя Arduino?

Мир быстро развивается, и вместе с ним развиваются технологии в области робототехники. Применение робототехники можно увидеть во всем мире. Концепция мобильных или автономных роботов, которые передвигаются без какой-либо внешней помощи, является наиболее интересной областью исследований. Существует так много типов мобильных роботов, например, интерпретаторы Self Localization and Mapping (SLAM), Line Follow, Sumo Bots и т. Д. Робот, избегающий препятствий, является одним из них. Он использует технику для изменения пути, если обнаруживает на своем пути какое-либо препятствие.



(Изображение предоставлено: дайджест схемы)

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



Как избежать препятствий с помощью ультразвукового датчика?

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



Шаг 1: Сбор компонентов

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



  • Шасси колеса автомобиля
  • Аккумулятор

Шаг 2: Изучение компонентов

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

Arduino nano - это макетная плата микроконтроллера, которая используется для управления или выполнения различных задач в цепи. Мы сжигаем Код C на Arduino Nano, чтобы сообщить плате микроконтроллера, как и какие операции выполнять. Arduino Nano имеет ту же функциональность, что и Arduino Uno, но при довольно небольшом размере. Микроконтроллер на плате Arduino Nano ATmega328p.

Ардуино Нано



L298N - это интегральная схема с высоким током и напряжением. Это двойной полный мост, предназначенный для работы со стандартной логикой TTL. Он имеет два входа включения, которые позволяют устройству работать независимо. Два двигателя могут быть подключены и работать одновременно. Скорость двигателей регулируется контактами PWM. Широтно-импульсная модуляция (ШИМ) - это метод, с помощью которого можно управлять потоком напряжения в любом электронном компоненте. Этот модуль имеет H-образный мост, который отвечает за управление направлением вращения в двигателях путем инвертирования направления тока. Контакт включения A и контакт включения B используются для изменения скорости обоих двигателей. Этот модуль может работать от 5 до 35 В и пикового тока до 2 А. Входной контакт1 и входной контакт2 и для первого двигателя, а также входной контакт3 и входной контакт4 предназначены для второго двигателя.

Драйвер двигателя L298N

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

Ультразвуковой датчик

Шаг 3: Сборка компонентов

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

  1. Возьмите колесную гусеницу автомобиля и приклейте на нее макет. Установите ультразвуковой датчик в передней части рамы и крышку батарейного отсека за рамами.
  2. Закрепите плату Arduino Nano на макете и прикрепите драйвер двигателя прямо за макетной платой, на рамах. Подключите контакты включения обоих двигателей к контактам 6 и 9 Arduino nano. Контакты In1, In2, In3 и In4 модуля драйвера двигателя подключены к контактам pin2, pin3, pin4 и pin5 Arduino nano соответственно.
  3. Выводы триггера и эха ультразвукового датчика подключены к контактам 11 и in10 Arduino nano соответственно. Vcc и заземляющий контакт ультразвукового датчика подключены к 5V и заземлению Arduino Nano.
  4. Модуль контроллера мотора питается от аккумулятора. Плата Arduino Nano получает питание от порта 5V модуля драйвера двигателя, а ультразвуковой датчик получает питание от платы Arduino nano. вес и энергия батарей могут стать определяющими факторами ее работы.
  5. Убедитесь, что ваши подключения такие же, как показано ниже на принципиальной схеме.

    Принципиальная электрическая схема

Шаг 4: Начало работы с Arduino

Если вы еще не знакомы с Arduino IDE, не волнуйтесь, потому что пошаговая процедура настройки и использования Arduino IDE с платой микроконтроллера описана ниже.

  1. Загрузите последнюю версию Arduino IDE из Ардуино.
  2. Подключите плату Arduino Nano к ноутбуку и откройте панель управления. в панели управления нажмите на Оборудование и звук . Теперь нажмите на Устройства и принтеры. Здесь найдите порт, к которому подключена ваша плата микроконтроллера. В моем случае это COM14 но на разных компьютерах по-разному.

    Поиск порта

  3. Щелкните меню инструментов. и установите доску на Ардуино Нано из раскрывающегося меню.

    Доска настроек

  4. В том же меню инструментов установите порт на номер порта, который вы наблюдали ранее в Устройства и принтеры .

    Настройка порта

  5. В том же меню инструментов установите для процессора значение ATmega328P (старый загрузчик).

    Процессор

  6. Загрузите приведенный ниже код и вставьте его в свою Arduino IDE. Нажми на загрузить кнопку, чтобы записать код на плату микроконтроллера.

    Загрузить

Чтобы скачать код, кликните сюда.

Шаг 5: понимание кода

Код хорошо прокомментирован и не требует пояснений. Но все же, это объясняется ниже

1. В начале кода инициализируются все контакты платы Arduino Nano, которые подключены к ультразвуковому датчику и модулю драйвера двигателя. Pin6 и Pin9 - это контакты PWM, которые могут изменять поток напряжения, чтобы изменять скорость робота. Две переменные, продолжительность, и расстояние инициализируются для хранения данных, которые позже будут использоваться для расчета расстояния от ультразвукового датчика до препятствия.

int enable1pin = 6; // Контакты для первого двигателя int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Контакты для второго двигателя int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Триггерный вывод ультразвукового датчика const int echoPin = 10; // Эхо-вывод ультразвукового датчика длительности; // переменные для вычисления расстояния float distance;

2. установка void () это функция, которая используется для установки всех используемых контактов, как ВВОД и ВЫВОД. В этой функции определяется скорость передачи данных. Baud Rate - это скорость обмена данными между платой микроконтроллера и интегрированными с ней датчиками.

void setup () {Serial.begin (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); pinMode (enable1pin, ВЫХОД); pinMode (enable2pin, ВЫХОД); pinMode (motor1pin1, ВЫХОД); pinMode (motor1pin2, ВЫХОД); pinMode (motor2pin1, ВЫХОД); pinMode (motor2pin2, ВЫХОД); }

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

void loop () {digitalWrite (trigPin, LOW); // Отправка и обнаружение ультразвукового сигнала delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); // Вычисление времени отражения ультразвуковой волны на расстояние = 0,034 * (duration / 2); // Расчет расстояния между роботом и препятствием в неделю. if (distance> 50) // Двигаться вперед, если расстояние больше 50 см {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } else if (расстояние<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

Приложения

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

  1. Система слежения.
  2. Цели измерения расстояния.
  3. Это можно использовать в автоматических роботах-пылесосах.
  4. Это может быть использовано в палках для слепых.