Главная » Проекты » Ведроид-мобиль

Ведроид-мобиль

Описание

Проектов робомобилей на Arduino существует довольно много. В основном, все они реализуют какой-то один алгоритм. Я принципиально не хотел никого копировать, поэтому решил создать машинку, которая будет включать в себя максимальный функционал, который можно выжать из имеющегося в наличии железа.
В результате удалось реализовать такие возможности:
— управление роботом через Bluetooth со смартфона на Android
— автономное движение робота с объездом препятствий
…..
В процессе реализации задуманного приходилось сталкиваться с различными косяками и решать незапланированные проблемы. Вот например при тестах робо-сумо возникла проблема. Первоначально, в качестве противника был выбран кот, а в качестве приманки — мясо. После первого раунда кот залез под диван и безболезненно выковырять его оттуда не представлялось никакой возможности. Даже смена приманки на валерьянку не помола. В результате пришлось заменить кота на бездушную табуретку, засчитать техническое поражение и обозвать трусом.
А теперь обо всем по порядку.

Демонстрация

Используемые детали:

  • Arduino Mega 2560 – 1 шт.
  • Motor Shield – 1 шт.
  • Bluetooth модуль JY-MCU – 1 шт.
  • Мотоплатформа четырёхколесная– 1 шт.
  • Светодиоды – 7 шт.
  • Кнопки – 3 шт.
  • Сервопривод MG995 – 1 шт.
  • Провода
  • Тумблер –1 шт.
  • Аккумулятор 9-12В – 1 шт.
  • Proto Shield – 1 шт.
  • Беспаечная макетная плата на 170 контактов
  • Резисторы на 220 Ом — 6 штук
  • Резисторы на 10 кОм — 2 штуки
  • Ультразвуковой дальномера HC-SR04 - 1 штука

Пошаговая инструкция по сборке:

Добавьте в закладки постоянную ссылку.

12 комментариев: Ведроид-мобиль

  1. Дмитрий говорит:

    С интересом изучил Вашу работу по созданию ведроид мобиля.
    Решил повторить. Использую Motorshield, купленный в Амперке.ru
    Вопрос - никак не пойму - библиотек AFMotor только для Вашего Motor Shield подходиn или мне что то нужно в ней модифицировать для адаптации под мой Motorshield. Использую двухколесную ходовую тележку.
    Что нужно исправить в Вашем скетче под мои потребности ?
    Ведь мой Motorshield использует только 4 PIN с Arduino MEGA 2560
    Заранее благодарю.

  2. source говорит:

    все должно работать и с вашим шилдом
    правки будут минимальны - в коде, где я использую motor1(1), motor1(2), motor1(3), motor1(4), вы оставьте только motor1(1) и motor1(2).

    • Дмитрий говорит:

      Благодарю, попробую следуя Вашему совету. Появился еще вопрос - я использую раздельное питание - для ходовых моторов через моторшилд с батарейного отсека где установил 6 акк 1,2 в. А на Ардуино подаю питание с аналогичного батарейного отсека, но почему то возникает глюк с сервой. Такое впечатление что ей питания не хватает. как можно решить проблему - может серву вообще отдельно запитать а на ардуино кинуть только управляющий ее контакт, ну и соответственно землю везде посоединять ? Или установить один большой аккумулятор 6 В 1,2А для всей конструкции?

      • source говорит:

        У меня был аналогичный глюк. Он связан с нехваткой тока для сервы от внутреннего стабилизатора Aduino.
        Я просто + сервы отключил от Arduino и повесил на контакт питания Motor Shield

    • Дмитрий говорит:

      Странно, колеса крутятся в разную сторону. Я делал подключение по образу и подобию схемы на Амперке.ru Там сказано, что один из моторов следует подключить обратной полярностью к моторшилд. Я его так как показано и подключил, наверное все таки нужно подключить без изменения полярности - как сделано у Вас.
      Хотя что интересно, попробовал опять же реализовать с Амперки идею с датчиками Линии - все работает как часы следуя схеме сборки показанной на сайте. Непонятно в чем проблема ?

  3. Дмитрий говорит:

    Заинтересовался можно ли сделать несложную систему с удаленным в пределах 30-50 метров доступом (в прямой видимости) ?

    Цель- зная координаты точки Б и текущую геопозицию роботележки (точка А) ввести в какую нибудь програмку на компе или на Android устройстве координаты точки Б. Далее передать с компа или Android устройства по WiFI данные в контроллер роботележки, чтобы он, вычислив свои текущие координаты и приняв полученные отправился в точку Б . После переезда в точку Б роботележка должна вернуться в точку А.
    Как я понимаю GPS модули в помещениях не работают. Читал что можно каким то образом сделать карту помещения и посредством ИК меток вести робота. А по другому интересно можно без ИК меток

    • source™ говорит:

      Роботы пылесосы строят карту помещений без ИК меток. Как? Хз.. Пока не разбирался.
      Самое простое — повесить датчик линии и направить тележку по полоске на полу, но мне такой вариант не нравится.
      Еще можно ориентироваться на источники света или магнитные поля.
      Если под тележкой подразумевается кухонный столик на колесиках, то для прокладки маршрута из кухни в зал хватит дальномера. Развернули по направлению к двери, а дальше уже в прошивке считаем повороты и примерное время.
      Последний вариант — компас. На мой взгляд, в сочетании с дальномером это будет самое толковое решение.
      Насчет указания координат второй точки — мало данных предоставили. Если это этаж здания, то определить текущее положение можно, например, по размерам комнат.
      Забив все значения в прошивку, мы сможем направлять тележку в нужном направлении, предварительно прописав движение по маршрутам из разных точек (комнат).

  4. Дмитрий говорит:

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

  5. Дмитрий говорит:

    С подключением сервы вопрос решен навсегда по вашему совету. Кинул плюс на питание моторшилда и ок.
    А вот со скетчем что только не вытворял. сначала убрал 3 и 4 моторы. Не едет вообще. убрал 1 и 2 моторы. Колеса крутятся без остановки вперед. И все.
    Буду думать как поставить мой моторшилд "на службу Родине". Вроде все банально до безобразия, а тут какая то досадная засада понимаете ли.

    • source™ говорит:

      По логике 1 и 2 у вас должны использоваться.
      Попробуйте использовать простые примеры управления двигателями. Хоть узнаем, подходил ли библиотека AFMotor для вашего шилда.
      Или свяжитесь со мной через страничку Контакты - что-нибудь да придумаем.

  6. source™ говорит:

    Попробуйте залить этот код:
    #include <AFMotor.h>

    //Создаем объекты для двигателей
    AF_DCMotor motor1(1);
    AF_DCMotor motor2(2);

    void setup() {
    motor1.setSpeed(255);
    motor2.setSpeed(255);
    }

    void loop() {
    motor1.run(FORWARD);
    motor2.run(FORWARD);
    delay(3000);

    motor1.run(FORWARD);
    motor2.run(BACKWARD);
    delay(3000);

    motor1.run(BACKWARD);
    motor2.run(BACKWARD);
    delay(3000);

    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    delay(3000);

    motor1.run(RELEASE);
    motor2.run(RELEASE);
    delay(3000);
    }

    Поедет вперед, повернется, поедет назад, повернется, остановится и все начнется сначала.

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

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