2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Робот из LEGO и 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 обеспечивает на своем выходе сигнал, пропорциональный дистанции до препятствия. Датчик генерирует звуковые колебания в ультразвуковом диапазоне (после получения управляющего импульса) и после этого ждет когда они вернутся к нему (эхо), отразившись от какого-нибудь препятствия. Затем, основываясь на скорости звука (340 м/с) и времени, необходимом для того чтобы эхо достигло источника (нашего датчика), датчик обеспечивает на своем выходе сигнал, пропорциональный расстоянию до препятствия.

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

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

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

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

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

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

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

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

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

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

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

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

Перевод Робот из LEGO и Arduino, обходящий препятствия

Мы обожаем LEGO и Crazy Circuits [LEGO-совместимая электроника / прим. перев.], поэтому решили скомбинировать их в простого и интересного робота, умеющего обходить препятствия. Мы покажем, как собрать такого робота и подробно опишем этот процесс. Ваша версия робота может не полностью совпадать с нашей.

Приводим список необходимой электроники и деталек LEGO. Не бойтесь экспериментировать с ними.

Комплектующие

Электроника

  • 1 x плата Robotics Board от Crazy Circuits
  • 2 x совместимый с LEGO сервомотор полного вращения
  • 1 x ультразвуковой датчик расстояния HC-SR04
  • 4 x джампер-кабеля мама-мама
  • 1 x внешний источник питания с USB

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

Мы использовали различные детальки, а вам рекомендуем сделать так, как вы считаете нужным, и из того, что есть у вас на руках. Важно, чтобы у вас был способ приделать сервомоторы снизу, ультразвуковой датчик так, чтобы он смотрел вперёд, и каким-то образом закрепить плату и источник питания. Для этого можно использовать двусторонний скотч, резинки, липучку. Приводим ссылки на наши детальки в магазине BrickOwl, однако вы можете купить их где угодно, где продаётся LEGO и совместимые наборы.

Шаг 1: строим шасси из LEGO

Мы начали с пластинки LEGO 612, это был минимальный размер, который нас устроил. Можно использовать более крупную, однако мельче уже будет сложнее.

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

Шасси должно быть достаточно высоким, чтобы на нём разместилась и батарея, и плата сверху.

Шаг 2: добавляем колёса

Каждый сервомотор нужно разместить снизу шасси. В итоге нам понадобились следующие комплектующие:

  • Ось 4 LEGO со стопором (87083)
  • Втулка LEGO (32123 / 42136)
  • Круглый кирпичик LEGO 2 x 2 (3941 / 6143)

Для закрепления двух моторов нужно по 4 штуки каждой из комплектующих. После их закрепления добавляем колесо: LEGO Wedge Belt Wheel (4185 / 49750).

Как и с другими модельками LEGO, вариантов тут масса! У нас получилось с теми комплектующими, что мы перечислили, а вы можете попробовать что-нибудь другое.

Шаг 3: добавляем ролик

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

Для его закрепления потребовались следующие детали:

  • LEGO EV3 Technic Ball Pivots Set 5003245
  • LEGO Technic Cross Block Beam 3 with Four Pins (48989 / 65489)
  • LEGO Technic Brick 1 x 6 with Holes (3894)

В предыдущей версии мы использовали просто круглые детали LEGO в качестве ноги, и на гладкой поверхности это работало нормально. Но не работало на ковре или не гладком полу. Если у вас нет ролика, рассмотрите вариант с такой ногой.

Шаг 4: добавляем датчик расстояния

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

Для датчика мы распечатали совместимый с LEGO корпус на 3D-принтере. Модель выложена на сайте Thingiverse: www.thingiverse.com/thing:3171004

Если 3D-принтера у вас нет, придумайте, как удержать датчик при помощи деталек LEGO, клейкой ленты, резинок, хомутов и т.п. Важно, чтобы он смотрел прямо туда, куда едет робот, когда движется вперёд.

Шаг 5: добавляем плату

Плата мозг всей операции. Она размещается наверху кубиков LEGO, поэтому её крепить легко.

Обычно плата Robotics Board используется совместно с проводящей плёнкой, позволяющей мастерить электрические цепи прямо поверх LEGO, но поскольку у нас тут всего лишь два мотора и датчик расстояния, их можно подключить напрямую к штырькам на плате.

Плату размещаем так, чтобы USB-кабель питания было легко воткнуть. Нам повезло найти в коробке с кабелями очень короткий USB-кабель.

Теперь можно подключать датчик и моторы!

По датчику: разъём echo нужно подключить к контакту 3 на плате, разъём trigger к контакту 5, VCC к 5 В, Gnd к GND. Таким образом датчик будет получать питание и общаться с платой.

Читать еще:  Электрический гравёр: выбираем дремель или бормашину

Затем нужно подключить каждый из моторов. Это сделать легко коричневые провода на GND, красные на 5 В, оранжевые к контакту D6 для левого мотора и D9 для правого.

Шаг 6: программируем Robotics Board

Перед тем, как робот сможет работать, нужно загрузить код в микроконтроллер. Перед этим убедитесь, что у вас на компьютере установлена последняя версия Arduino IDE.

Свой код мы выложили в репозиторий на GitHub:

Код простой, в нём много комментариев, чтобы было понятно, что за что отвечает.

Вам также потребуется библиотека NewPing

Шаг 7: пускаем робота погулять

Построив робота и загрузив в него код, можно переходить к испытаниям!

Проще всего подключить внешний источник питания и дать роботу возможность ехать вперёд. Если выставить перед ним руку, он должен отодвинуться назад, повернуться и снова поехать вперёд (смотрите, чтобы он не съехал со стола!)

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

Шаг 8: дальнейшее развитие

Если вам интересно развивать этот проект, вот вам вопросы:

что вы узнали, собирая робота?
что повлияло на ваш выбор деталей?
поедет ли робот быстрее, если увеличить ему колёса?

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

Ардуино вместо Lego mlnstorms

  • Форумы
  • Жизнь сообщества
  • Предложение идей проектов

gespenst79

Arhat109

Эдуард Анисимов

Arhat109

gespenst79

Arhat109

gespenst79

Arhat109

С экраном будут проблемы. Вы же хотите не хуже чем у майндшторм. Соответственно и памяти надо больше. Это именно то, из-за чего я и делал версию платы с ОЗУ на 520 килобайт (8 своих Меги + 512 страничного доступа в имеющемся окне в 64кб). Там с экраном .. никаких проблем нет. А при наличии карт-ридера и карточек по 4 гектара .. вообще, можно сервер сваять и на стенку повесить .. с мускулем

Не заморачивайтесь. Купите ребенку майндшторм, это будет и дешевле и проще и быстрее. А главное будет совместимо с разного рода «школьными соревнованиями», где дите сможет получать свои регалии и плюшки, а не постоянные тычки со стороны организаторов. Не надо ссать против ветра. У меня — не получилось.

Ну и для описанных задач (мы их прошли все) указанного кол-ва входов-выходов, достаточно только для «минималистического» (сильно упрощенного) варианта. Как только захотите расширить функционал, к примеру, робот с объездом препятствий и по линии или объезд препятствий и рука для перевозки с кузовом для выгрузки .. труба. Запаса — ноль. А он должен быть.

P.S. Ну и конечно же, ничего даром не бывает. Самоделки ВСЕГДА дороже любого пром. изготовления. Их единственное достоинство только одно: удовольствие «я это сделал сам». Как только я понял, что дитенок его потерял .. мы «всё забросили». А потерял, потому что уровень сложности часто превышал силу его терпежа в силу возраста. Перегорел. Это ещё одна причина, по которой стоит брать Майндшторм и не париться. Рано им «сам сделал», не тот уровень сложности даже со взрослой помощью от профи, который всю свою жизнь (лет с 11) все делает сам .. от одежды, мебели до ПО для Ардуино .. не помогло.

MadGrizly

Arhat109

Почитал про это чудо .. для стоимости $10 можно найти решения интересней, чем это или амперковскую Искру с программированием на JS ..

Ещё раз: не надо ссать против ветра.

Ни на какое соревнование, с этим толком попасть нельзя, разве что его не примут и в наших школах (если Бибиси начнет «это» и тут раздавать бесплатно) .. смотрите что есть в школах. Там не только Лего, уже очень много чего. вот это и надо «брать». Тогда дитенок не будет учить «в унитаз», а потом в школе переучиваться заново.

Это — была моя главная ошибка, от которой стараюсь оградить всех желающих к «домашнему освоению с дитенками». Не ведитесь на «дешево» и пр. маркетинговые плюшки. Продаванам надо продать, а остальное их не касается. Но .. это ВАШИ ДЕТИ, а не «чьи-то».

Эдуард Анисимов

MadGrizly

Arhat109

@MadGrizly, таже Ардуино НАНО стоит дешевле, возможностей явно больше, полезности выше, т.к. кое-где, но все-таки применяется в школах в т.ч. И гарантировано есть в ВУЗах по специальности.

P.S. Давайте поясню.
Применений Ардуино несколько ИНОЕ, чем Лего Майндшторм в образовании, в т.ч. детишек. Не надо из него делать «как Лего»! (ссать против ветра). Все обучение тут (Ардуино — исключительно УЧЕБНАЯ платформа, ни для каких «промподелок оно НЕ предназначено!) — это «проводочный-соединетильный» шилд (монтажная плата) и сборка-разборка схем, в т.ч. с втыканием туда мелкосхем в дип-корпусах напрямую .. под каждый конкретный урок. Можно взять «шилд» (датчик цвета, звука и т.д.), собрать схему на монтажке, провести урок, в который ВХОДИТ и схемотехника как часть, взять пример кода, залить, поиграться, изменить его так или этак, поиграться2раза и .. РАЗОБРАТЬ.

Это иной подход чем Лего Майндшторм. Совсем. Тут нет «готовых устройств», кроме готовых «тележек» (и то косых) .. и нет «сборки из готовых кубиков» как в Лего. Это — ИНОЕ обучение. Тот мой проект, что я приводил по ссылке умер как раз из-за несоответствия «Ардуино в целом» технологиям, заложенным в Майндшторм. Я не смог его «пробить» ни в одной школе, т.к. везде натыкался на «А зачем, есть же Майндшторм?» .. а теперь там далеко не только он.

gespenst79

Arhat109

@gespenst79, не,не,не .. Вы неверно меня поняли. Я НИ В КОЕМ случае НЕ ОТГОВАРИВАЮ кого-бы то ни было от собственных экспериментов, поделок, Ардуино или чего ещё! Это исключительно Ваше (и всех остальных) ВИДЕНИЕ полезности для ваших же детей!

Я только хотел обратить Ваше (и остальных) внимание на то, что явно НИГДЕ не освещается, а именно:

1. Занятия Робототехникой с детьми — входят в школьные программы как разновидность старых «уроков труда». И там есть своя программа и обучение. Как только Вы с дитенком выпадаете из нее — Вы попадаете «мимо кассы», т.к. он гарантировано будет выделяться из толпы школьников.
1а) Результат «для него» может стать неожиданным. Например, дабы дите не страдало от буллинга, нам пришлось сменить 2 школы из его 4-х. Две смены произошли по иным причинам ..Вам оно надо? Задумайтесь.
1б) Учитель получает плюшки за участие детей в соревнованиях. У него не высокая зарплата и сильно. Понятно, что он туда, в первую очередь, будет «толкать» не только своего дитенка (80% всех участников, статистика — моя), но и всех «выделяющихся» из общего потока. Отказ — равнозначен «урезанию его ЗП» .. следствие? см. п.1а. (проходили и это: «Я с этим Игорьком в одной команде участвовать не буду, он — дурак», прямо вот так вот при его бабушке, что мы узнали позже — классной руководительнице и по совместительству замдира по инновациям — снабжению школы всем новым.. он и правда дурак, но это уже не по теме..).
1в) Участие в соревнованиях идет в его «школьный портфолио», который формируется сейчас уже начиная с 4-х классов. Играет одну из ключевых ролей при дальнейшем поступлении в ВУЗы. Мелочь, но потом, «задним числом» исправить уже нельзя. Рекомендую положить на «чашу весов» и этот пунктик.

2. То, что Вы не поняли написанного и назвали «тарабарщиной», показывает Ваш собственный уровень в задаче. Не, я конечно же понимаю, у Вас иная специализация и профскиллы. Не в обиду, а просто как следствие пп.1х — А зачем Вы тогда тянете дитенка туда, где не сможете ему помочь? Правильней и проще в таком разе, запихать его в «кружок робототехники», если у него есть интерес к этому. И .. ничего «домой» покупать не придется, там есть всё. Честно-честно. Двухстрочный дисплей у нас было первое .. думаете зазря появились тут темы со всей этой «тарабарщиной», вот просто так «захотелось»? Пройдено это все.

3. Ну и главное. Если Вы «не готовы» выложить такую сумму — не тащите дитенка в Робототехнику, от слова совсем. Это ОЧЕНЬ ДОРОГОЕ увлечение. Гораздо дороже чем «майндшторм» .. последний по сути «замануха», даже в чистом лего. Для справки у нас:
3а) Лего: суммарно около 12000 деталек (2 ведра) и их не хватало для ряда изделий. Даже с учетом «китайских заменителей» потраченная совокупно сумма — около 60 000 рублей. с учетом моторов, датчиков и т.д.. В конце нашего периода уже рассматривал приобретение ДВУХ(!) майндшторм, т.к. «одного — мало».
3б) Ардуино: суммарно потрачено около 130000 рублей. При этом погорельцев можно пересчитать по пальцам. Затраты на «свой проект платы» написаны в теме, не так уж и много в сравнении с остальным.
Да, это все «за 4 года» .. примерно 5-6 тысяч ЕЖЕМЕСЯЧНО. Если Вы не готовы выкладывать такие деньги и для Вас это ДОРОГО — задумайтесь. Мои затраты невелики, т.к. многое я могу делать руками и экономить. Все те, кого я встречал на соревнованиях, называли в 2-3 раза БОЛЬШИЕ цифры.

Читать еще:  Какую шлифовальную машину по дереву выбрать: для работы, для дома

» -А Вы где покупали такие моторы? — Сами мотали .. -Круто! А у нас Полулу по 2.5тысячи каждый, брали 4шт в т.ч. на замену и линейка датчиков от Полулу за 5тысяч, ну и там, по мелочи .. эта машинка, которую он тут сломал обошлась в около 20 тысяч суммарно .. — А мы решили прикрутить камеру к нашей тележке. Взяли уже тенси и хорошую камеру за 15 тысяч, щас я ему пишу библиотеку по работе с ней, на следующий год мы Вас тут всех порвем!»
РАЗОВЫЕ расходы не считая билетов, проживания и т.д. .. ТИПОВОЙ. Среди всех «самопальщиков» (кто не от школ) мы выглядели .. самыми бедными, с отставанием в 3-4 раза.

Просто на задуматься..

P.S. Ещё раз, я никого ни от чего НЕ ОТГОВАРИВАЮ. Просто предлагаю задуматься над тем, что Вы собираетесь «сэкономить» .. бесплатный сыр — исключительно в мышеловках. Очень наивно считать что «я такой умный, ща сэкономлю» .. не получится. Пройдено.

P.P.S. И таки да, это всё теперь лежит «на чердаке» мертвым грузом. Моя попытка запихать это в школу, и тем самым отбить хоть что-то .. натолкнулась на «жесткий финконтроль» с просто морем интересного в этой части не менее «скрытой школьной деятельности», но .. это уже иная тема. Да .. МЕРТВЫМ ГРУЗОМ, ровно то, что Вы считаете «расточительно». Все это «цена портфолио», в котором 13 соревнований из которых 5 золотых, 3 серебра и 3 бронзы.

Ну и отвечу на Ваш вопрос «почему выбор пал ..»
.. А точно также, полистал свои посты на других ресурсах за 2015-й год .. «Ваше лего — слишком расточительно. Вот Ардуино имеет куда как больше возможностей и плата стоит 130руб .. всего. Моторы, драйвера, датчики .. все это на порядок дешевле! Зачем Вы впихиваете и пиарите свое Лего, цена которого задрана до бесчувствия! Вам Лего доплачивает за пиар?»
.. поржал.

Ну и под занавес. Это — КАПИТАЛИЗМ. Любое развитие своего ребенка стоит денег. Хоть спорт (обмундирование, бутсы, коньки, кимоно, гантельки и т.д.), хоть рисование (сколько сейчас стоят правильные краски, Вам подсказать? А бумага, холсты, кисти..), музыка (стоимость нормального инструмента вообще «за гранью») и т.д. Любое направление. Поездки, Соревнования, выступления .. если Вы не можете выкладывать в месяц по 5-10 тыс. на развитие и увлечения своего ребенка ..
Если бы не эти затраты, я бы свою ипотеку закрыл года на 2-3 раньше, а так .. только в следующем году.. если получится. (-пап, я тут в НТИ вышел в финал со своей программой .. ноут уже плохо тянет, и места мало .. надо бы новый покруче .. -чО, опять. )

ROBOTяга ARDUINO — 1.Сборка

Машины бывают разные…

Решив приобщить сына к высоким технологиям, подарил ему набор для сборки робота на основе контроллера ARDUINO. Про ARDUINO информации полно в интернете…

Я хочу рассказать про робота и те «особенности», которые мы встретили при его постройке.
Выбор пал на четырехколесный робот. Заказывал на Алиэкспресс в «максимальной» комплектации, с бесплатной доставкой – вышло около 3000 руб.
ru.aliexpress.com/item/Fr…1112132&shopNumber=110055
Судя по описанию из этого набора частей, должно получиться «чудо» способное слушать команды от пульта дистанционного управления, от телефона по блютуз, уметь ездить по полосе и само определять препятствия – с помощью сонара.

Ждал не долго – около 20 дней, но вот пришло не все…

В посылке не хватало двух моторов-редукторов, вместо них был колесо от «тумбочки». Написали поставщику – недостающие детали обещали дослать.
Но это не основание ждать! Руки чешутся!
И так в наличии:
1. Arduino UNO R3.
2. Плата («драйвер») для управления 2-мя DC моторами — L298N Dual H-Bridge Stepper Motor Driver Controller (WB291111).
3. Плата расширения для подключения датчиков и «потребителей» — Arduino sensor shield v5.
4. Ультразвуковой измеритель расстояния HC-SR04 Ultrasonic Module Distance Measuring Sensor.
5. Модуль слежения за полосой с датчикам — 4 x Line inductive module.
6. ИК датчик с пультом — HX1838 Infrared Remote Control Module.
7. Модуль Блютуз — HC-06 wireless Bluetooth.
8. Моторы постоянного тока (DC) с редукторами с вращением в обе стороны –2 шт.
9. Колеса – 2 шт.
10. Сервопривод SG-90 TOWER.
11. Кронштейн для камеры с функцией поворота / наклона платформы.
12. Заготовки для четырехколесной платформы — 4 Wheel Drive Mobile Robot Platform – 2 шт.
13. Пластиковый бокс держатель для 4 батареек типа АА.
14. Пластиковый бокс держатель для батареек типа «Крона».
15. Макетная плата.
16. Тумблер – выключатель питания.
17. Провода для соединения модулей.
18. Крепеж.

Что бы было веселее – в коробке была инструкция по сборке трех колесного шасси – два колеса ведущих и одно подруливающее от «тумбочки». А вот инструкции по установке плат и датчиков, схемы соединения и «скетчей» не было.
Не беда, подумал я. В наш век — Google мне в помощь! А вот тут оказалось все еще «веселее» – несмотря на то, что наборы «выпускаются» не первый год, готового решения нет! С трудом через англоязычный сайт нашел в объявлении о продаже подобного набора со ссылкой на инструкцию – вольный перевод с китайского.
www.dx.com/ru/p/arduino-c…-kits-146418#.VldPetLhCt8
Нашлись и неплохие описания с российских просторов:
tim4dev.com/arduino-instruction-project-robocar4w/
Но полных и «универсальных» ответов, типа «вставь А в Б», «подключи В к Г», «загрузи Д в Е» нет.
Тем более интересней разобраться самому.
Те, кто со мной согласен, дальше не читайте! У вас свой путь «открытий» 🙂
Для всех остальных – начнем с шасси…

Сборка шасси.
Для сборки нам понадобится:
Из набора.
1. Arduino UNO R3.
2. «Драйвер» для управления моторами.
3. Моторы постоянного тока (DC) с редукторами –2 шт.
4. Колеса – 2 шт.
5. Платформа из оргстекла.
6. Пластиковый бокс держатель для 4 батареек типа АА.
7. Пластиковый бокс держатель для батареек типа «Крона».
8. Провода для соединения модулей.
9. Крепеж.
Дополнительно.
1. Выключатель двух полюсной.
2. Изолента и/или термоусадка (для изоляции проводов).
3. Скотч двухсторонний.
4. Винты и гайки 3 мм (в наборе их мало и они короткие).
Инструмент.
1. Дрель.
2. Набор сверл (3 мм, 5 мм).
3. Пассатижи.
4. Отвертка.
5. Ножницы.
6. Паяльник.
7. Олово, канифоль, паяльная кислота.

Изначально шасси должно было быть четырехколесным и полноприводным. Шасси должно состоять из двух пластин из оргстекла, между которыми размещены 4 мотора редуктора и плата «драйвера» управления двигателями.
В моем случае пришлось делать трех колесное шасси – два колеса ведущих и одно подруливающее в «хвосте». Использовал одну пластину шасси.
Учитывая, что отверстия на пластинах шасси для крепления платы ARDUINO и других блоков не предусмотрены — компоновка размещения свободная, поэтому:
1. Размещаем блок ARDUINO так, что к нему мог быть доступ. Особенно важно, чтобы доступ был к разъему USB. Крепление сделал с помощью винтов диаметром 3 мм прикрученных к пластине шасси.

2. Размещаем «драйвер» моторов – его в принципе можно разместить и снизу пластины шасси – как я сделал первоначально (Вариант 1), но из-за особенности работы подруливающего колеса (об этом позже), решил поставить «драйвер» вверху. Крепление так же с помощью винтов прикрученных к пластине шасси.
3. Размещаем элементы/блоки питания. Все зависит от выбранной схемы питания, об этом я напишу ниже. У меня в процессе «эволюции» размещение элементов питании менялось несколько раз (Вариант 1, 2, 3). Для крепления блоков я использовал двухсторонний скотч. За время испытаний такое «крепление» не подвело.
4. Размещаем выключатель питания. Он должен быть в легкодоступном месте. Я поставил сверху – что бы не переворачивать постоянно «роботягу». Если вы как я и будете строить раздельное электропитание — для ARDUINO и электродвигателей, то стандартный выключатель вам не подходит – нужен двухполюсной – что бы одним движением обесточивать обе схемы. Хотя можно и однополюсным – отключать «минус» от обоих схем.

Читать еще:  Основные разновидности гибочных машин Gelber Bieger

5. Подготавливаем моторы – провода моторов идут в комплекте, но они не припаяны – нужно припаять. Но будьте осторожны! Если контакты моторов перегреть, они расплавят пластмассу – щетки сдвинутся – мотор можно выбросить. Я что бы этого избежать использовал паяльную кислоту. Провода двигателей в наборе очень жесткие, поэтому что бы избежать их обрыва, я примотал их к двигателям изолентой.

Отдельный вопрос – размещение третьего колеса. Не смотря на простоту конструкции и очевидность решения, не все так просто! Собрав Вариант 1 и начав испытания, я не мог заставить робота ехать прямо!

Посчитав, что причина не правильная развесовка – батарейный блок сильно «прижимает» подруливающее колесо, я переместил его на переднюю ось, а так же собрал колесо из «Лего» сына (Вариант 2), что бы уменьшить вес.

Но проблемы это не решило. Проблема в том, чтобы колесу самориентироваться, нужно проехать какое-то расстояние, но и тут гарантии нет. Не хочет оно самориентироваться. Самым простым и надежным решением, оказалось просто зафиксировать подруливающее колесо! Оно теперь не «самориентирующеся», а ориентированное. Теперь робот хорошо едет прямо, и очень «оригинально» поворачивает – с дрифтом заднего колеса 🙂

Определившись с компоновкой и разместив необходимые точки крепления нужно сверлить – но аккуратно, так как оргстекло материал хрупкий. Желательно сверлить диаметром чуть больше чем крепеж – за счет «люфта» можно решить проблемы с установкой, если при сверлении немного промахнетесь.
Устанавливаем двигатели согласно схеме из коробки и устанавливаем все, что наметили.

28 lego projects

A Lego arachnid controlled by your smartphone.

Spideruino

Project showcase by JulienChateau

  • 51,853 views
  • 24 comments
  • 96 respects

My first project combines everyone’s favorite robot with everyone’s favorite tinkering platform. Hope you like it!

LEGO Wall-E with Arduino

Project tutorial by monsterbacke

  • 34,297 views
  • 20 comments
  • 123 respects

Build a 4-button arcade game out of LEGO.

Arduino Arcade LEGO Games Box

Project tutorial by LenkaDesign

  • 12,587 views
  • 12 comments
  • 47 respects

Learn how to control Lego motors and servos with your Arduino and build your own Android app to remote control your model.

Take Control Over Lego Power Functions

Project tutorial by Patrick Müller

  • 91,598 views
  • 6 comments
  • 90 respects

Project that uses lego NXT motors and a sensor to avoid objects.

Autobot Using Lego NXT Motors and Sensor

Project tutorial by Mark Tashiro

  • 28,212 views
  • 6 comments
  • 33 respects

This project details two Arduino powered animatronic Lego Minifigs that talk and move based off that Monster Hunters line.

Giant Animatronics Lego Minfig Operation Game

Project tutorial by Matthew Harrell

  • 9,111 views
  • 6 comments
  • 66 respects

This lesson aims to show how to make a very simple Lego Power Function Receiver.

Simple Arduino Based Lego Power Function Receiver

Project tutorial by Arduino_Scuola

  • 10,873 views
  • 4 comments
  • 15 respects

Make your own quadruped robot with Arduino, 3D-printed, and Lego-compatible parts.

Quadruped Robot

Project tutorial by Tart Robotics

  • 8,666 views
  • 3 comments
  • 29 respects

Arduino + LCD + DHT11 sensor + Lego = Awesome temp/humidity display

Temp/Humidity LCD Box

Project tutorial by YENFU CHEN

  • 6,416 views
  • 3 comments
  • 10 respects

Make your own walking humanoid robot out of Lego and 3D printed parts powered by Arduino Nano, off-the-shelf DC gear-motor and NeoPixel LED.

A DIY Biped Robot with Arduino, Lego, and 3D Printed Parts

Project tutorial by Tart Robotics

  • 5,357 views
  • 3 comments
  • 12 respects

The VL53l01x distance sensor as EV3 sensor.

Mindstorms EV3 and the VL53l01x laser distance sensor

Project in progress by Tom Eilers

  • 2,925 views
  • 3 comments
  • 5 respects

Play around with Lego, Arduino, stepper motors, IR, and piezo beepers! Blip, blop!

Lego Stepperbot

  • 7,739 views
  • 2 comments
  • 12 respects

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

В этой статье я покажу, как собрать простого робота объезжающего препятствия, используя Arduino.

Для этого нам понадобится следующие компоненты:

  • Плата Arduino UNO
  • Motor Drive Shield dual L239D
  • Сервопривод SG90
  • Ультразвуковой дальномер Ultrasonic Module HC-SR04
  • Платформа smart car на 4 колесах + 4 указателя скорости
  • Держатель для 6 батареек AA

Все компоненты можно приобрести на этом сайте

Как вы уже догадались, в качестве “глаз” мы будем использовать ультразвуковой дальномер. Он имеет угол обзора примерно 15 градусов. К сожалению, этого не достаточно для обеспечения наших задач. Сервопривод позволит нам обойти это ограничение и выступит в роли “шеи”. Все двигатели, сервопривод и дальномер подключать будем к шилду (Motor Drive Shield dual L239D). Возможности шилда позволяют нам подключить 2 сервопривода + на выбор:

  • 4 мотора постоянного тока с потреблением не больше 600mA, 4.5 – 36В
  • 2 мотора постоянного тока и один шаговый двигатель
  • 2 шаговых двигателя

На борту данного шилда имеется две микросхемы L293D (1). L-ка позволяет управлять слаботочными двигателями с током потребления до 600 мА на канал. Моторы подключаются к разъемам M1, M2, M3, M4 на шилде (2). Центральные выводы на пятипиновых клеммниках соединены с землей и служат для удобства при подключении пятипроводных шаговых двигателей. Для управления на прямую выводами L-ки (IN1, IN2, IN3, IN4), отвечающимими за выбор направления вращения, необходимо 4 вывода, а для двух микросхем целых 8. Для уменьшения количества управляющих выводов в игру вступает сдвиговый регистр 74НС595 (3). Благодаря регистру, управление сводится с 8-ми пинов к 4-ем.

Также, на плату выведены 2 разъема для подключения сервоприводов (4). Управление сервоприводами стандартное с помощью библиотеки Servo.h и никак не связано с библиотекой которую мы будем рассматривать далее.

Питание силовой части производится либо от внешнего клеммника (5) либо замыканием джампера (6).

К явным минусам данного шилда можно отнести то, что он задействует практически все цифровые пины:

Выводы отвечающие за скорость вращения двигателей:

  • Цифровой вывод 11 – DC Мотор №1 / Шаговый №1
  • Цифровой вывод 3 – DC Мотор №2 / Шаговый №1
  • Цифровой вывод 5 – DC Мотор №3 / Шаговый №2
  • Цифровой вывод 6 – DC Мотор №4 / Шаговый №2

Выводы отвечающие за выбор направления вращения двигателей (подключены к микросхеме 74HC595): Цифровые выводы 4, 7, 8 и 12.

Выводы для управления сервоприводами (выведены на штырьки на краю платы):

  • Цифровой вывод 9 – Сервопривод №1
  • Цифровой вывод 10 – Сервопривод №2

В итоге незадействованными цифровыми выводами остаются только пины 2 и 13. Однако есть выход из данной ситуации. У нас остались незадействованные аналоговые входы A0-A5, их можно использовать как цифровые. К ним мы и будем подключить наш ультразвуковой дальномер. В коде они будут записываться как цифровые с 14 по 19.

Следующая проблема, которую необходимо решить – определиться с источником питания для робота. Варианты такие:

  • Питаем Arduino и моторы от одного источника постоянного тока: подключаем этот источник к DC-входу Arduino или EXT_PWR на шилде, замыкаем джампер JP1. Вообще, питать моторы и Arduino от одного источника питания – плохая идея, Arduino может постоянно сбрасываться и вообще нестабильно работать.
  • Питаем Arduino от USB, а моторы – от отдельного источника постоянного тока. Удаляем джампер JP1 на шилде, подключаем USB к Arduino, а питание моторов – на шилд в EXT_PWR.
  • Питаем Arduino и моторы от двух независимых источников постоянного тока. Удаляем джампер JP1 на шилде, подключаем первый источник через DC-вход к Arduino, а второй – в EXT_PWR на шилде.

Внимание: соблюдайте полярность на EXT_PWR: оно подается после высоковольтного защитного диода D1 на Arduino. Если вы все правильно подключили – светодиод должен загореться!

Я решил остановиться на последнем варианте и использовать крону для питания платы Arduino и 6 батареек типа AA для питания моторов.

Настало время собрать все воедино:

  • втыкаем шилд в плату Arduino
  • подключаем моторы к шилду (разъемы M1, M2, M3, M4)
  • подключаем сервопривод к шилду (смотрим на маркировку на плате, чтобы не ошибиться пинами)
  • подключаем дальномер к шилду (Vcc – 5В, Gnd – земля, Trig – к пину A0, Echo – к пину A1)
  • подключаем питание

И последний штрих – запускаем тестовую программу, которая будет управлять моторами: (для запуска потребуется библиотека AFMotor ).

Источники:

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

http://personeltest.ru/article-1475-perevod-robot-iz-lego-i-arduino-obhodyashchiy-prepyatstviya.html

http://community.alexgyver.ru/threads/arduino-vmesto-lego-mlnstorms.3860/

http://www.drive2.ru/b/2534980/

http://create.arduino.cc/projecthub/projects/tags/lego

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

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector