Объезжающий препятствия робот на Arduino

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

Внешний вид объезжающего препятствия робота на основе платы Arduino

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

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

  1. Плата Arduino Uno (купить на AliExpress) или Nano (купить на AliExpress).
  2. Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  3. Модуль драйвера двигателя LM298N (купить на AliExpress).
  4. Электродвигатели постоянного тока, работающие от напряжения 5V.
  5. Литий-ионная батарея 7.4V (купить на AliExpress).
  6. Колеса.
  7. Шасси робота.
  8. Соединительные провода.

Принцип работы ультразвукового датчика HC-SR04

Ультразвуковой датчик HC-SR04 используется для измерения расстояний в диапазоне 2-400 см с точностью 3 мм. Датчик состоит из ультразвукового передатчика, ультразвукового приемника и схемы управления.

Внешний вид ультразвукового датчика HC-SR04

Ультразвуковой датчик HC-SR04 обеспечивает на своем выходе сигнал, пропорциональный дистанции до препятствия. Датчик генерирует звуковые колебания в ультразвуковом диапазоне (после получения управляющего импульса) и после этого ждет когда они вернутся к нему (эхо), отразившись от какого-нибудь препятствия. Затем, основываясь на скорости звука (340 м/с) и времени, необходимом для того чтобы эхо достигло источника (нашего датчика), датчик обеспечивает на своем выходе сигнал, пропорциональный расстоянию до препятствия.

Временные диаграммы работы ультразвукового датчика HC-SR04

Как показано на рисунке сначала нам нужно инициировать датчик для измерения расстояний, для этого на его триггерный контакт (trigger pin) необходимо подать логический сигнал высокого уровня длительностью не менее 10 мкс, после этого датчик генерирует серию звуковых колебаний и после получения отраженного сигнала (эхо) датчик обеспечивает на своем выходе сигнал, пропорциональный расстоянию между ним и препятствием.

Ультразвуковой сигнал отражается от поверхности, возвращается обратно и улавливается приемником ультразвукового сигнала датчика. После этого на контакте Echo датчика устанавливается напряжение высокого уровня (high) на время, пропорциональное расстоянию до препятствия.

Принцип определения расстояния с помощью ультразвукового датчика HC-SR04

После этого расстояние до препятствия можно рассчитать по следующей формуле:

Distance= (Time x Speed of Sound in Air (343 m/s))/2

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

Для изготовления робота в этом проекте были использованы компоненты, которые достаточно легко приобрести. Для изготовления шасси робота можно использовать детскую игрушку или можно купить уже готовые шасси робота на AliExpress.

Схема проекта

Схема робота на Arduino, объезжающего препятствия, представлена на следующем рисунке. Как видите, в схеме мы использовали плату Arduino Nano, но эту же схему без изменений можно использовать и в случае использования платы Arduino Uno. Код программы в этом случае также останется без изменений.

Схема робота на Arduino, объезжающего препятствияПосле сборки у нас получилась конструкция робота, показанная на следующем рисунке.

Внешний вид собранной конструкции робота

Объяснение программы для Arduino

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

Первым делом в программе необходимо инициализировать контакты, через которые происходит взаимодействие с ультразвуковым датчиком: trig pin датчика подключен к контакту 9 платы Arduino, а echo pin - к контакту 10 платы Arduino.

Далее инициализируем контакты для взаимодействия с модулем драйвера двигателей LM298N – 4 контакта.

Внешний вид модуля драйвера двигателей LM298N

Затем в функции setup() зададим режимы работы контактов. 4 контакта управления двигателями и Trig pin датчика – на вывод данных (OUTPUT), Echo Pin датчика – на ввод данных (Input).

Далее в функции loop() мы будем измерять расстояние до препятствий с помощью датчика HC-SR04 и на основании этого управлять вращением двигателей. Расстояние до препятствия будет определяться впереди робота. Для определения расстояния сначала будет передаваться серия ультразвуковых импульсов длительностью 10 мкс, а затем спустя 10 мкс мы будем принимать отраженный сигнал. Более подробно об измерении расстояний с помощью ультразвукового датчика и платы Arduino можно прочитать в данной статье.

Если расстояние до препятствия больше заранее определенного значения, то это значит, что на пути робота нет препятствия и он может продолжить движение прямо.

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

Таким образом, робот получает возможность объезжать препятствия, встречающиеся у него на пути.

Исходный код программы (скетча)

Видео, демонстрирующее работу робота

Нашел на youtube еще один ролик (один из самых популярных в этой тематике), в котором рассматривается создание робота, объезжающего препятствия. Он более совершенен чем рассмотренный в данной статье благодаря вращающемуся с помощью сервомотора ультразвуковому датчику. К нему есть также исходный код программы (доступен по ссылке из описания ролика), но без объяснения. Но, надеюсь, объяснение программы рассмотренного в данной статье робота поможет вам понять код программы этого более "продвинутого" робота.

(2 голосов, оценка: 3,50 из 5)
Загрузка...
3 789 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *