Управлять роботом с пульта своими руками

Робот на Ардуино и машинка на Bluetooth своими руками

Робот – машинка на Ардуино становятся одним из самым популярных инженерных проектов в школьной робототехнике. Именно с таких устройств, автономных или управляемых со смартфона и bluetooth, начинается путь в робототехнику “после Lego”. К счастью, сегодня можно без труда купить все необходимые компоненты и достаточно быстро создать своего первого робота для езды по линии или объезда препятствий. В этой статье вы найдете подробную видео инструкцию как сделать продвинутый автомобиль Arduino Car своими руками, с питанием, датчиками линии, расстояния и управлении через bluetooth.

Робот на ардуино своими руками

В отличие от других проектов, создание робота – автомобиля (Arduino Car) требует понимания и навыков работы сразу с несколькими важными компонентами, поэтому не стоит приступать к созданию машинок без получения базовых навыков работы с платформой Arduino. В любом случае, вам нужно будет но только подключить готовые модули, но и собрать конструкцию, шасси с двигателями, обеспечить правильное питание и управление. Все это потребует определенного терпения.

Робот машина на Ардуино

Вот список ключевых компонентов, которые обязательно встретятся в проекте.

Контроллер Ардуино

Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.

Читайте также:  Ремонт пылесоса милле своими руками

Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.

Конструкция, шасси и двигатели робота на Ардуино

Для того, чтобы что-то поехало или стало перемещаться, надо снабдить “это” колесами, гусеницами или манипуляторами-ногами. Вот тут выбор совершенно не ограничен, можно использовать совершенно любые комбинации и сочетания платформ. Как правило, в качестве начального варианта берутся уже готовые наборы платформ с Алиэкспресс.

Двигатель, шасси и колеса машинки на ардуино

Если работать со стандартными наборами вам не интересно, можно создать платформу своими руками. Например, разобрать игрушечные радиоуправляемые машинки или любые двигатели на 5-12 вольт, с редукторами или без. Колеса можно создать и самим, что тоже является интересной задачей.

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

Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки. Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста. Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.

Красивый корпус

Как правило, вся конструкция автомобиля строится вокруг его шасси. Если посмотреть примеры готовых проектов, то они часто выглядят как “провода на колесиках” – внешний вид их изобилует пучками соединительных проводов, ведущих от восседающего на троне контроллера Ардуино к драйверам, моторам и датчикам. Между тем, красивый и функциональный корпус не только вызывает правильные эстетические чувства и помогает выделить вашу модель от остальных. Хороший корпус может превратить игрушку в реальное устройство, помогает привить навыки конструирования и промышленного дизайна, что важно для инженеров любого возраста.

Питание робота

Обеспечение правильной схемы питания – это то, что очень часто оказывается на последнем месте в списке приоритетов начинающих ардуинщиков. Между тем, именно ошибки в схеме электропитания становятся основными причинами проблем, возникающих в процессе работы умных устройств на Ардуино. Создавая ардуино-машинку нужно предусмотреть питание контроллера, двигателей, драйвера и датчиков. У всех них есть свои ограничения и особенности работы, требуется создать оптимальное по весу и сложности решение, позволяющее учесть все эти ограничения.

Питание робота на Ардуино

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

  • Обычные батарейки AA. Тут нужно понимать, что платы Arduino Uno, Nano и большинство двигателей, используемых в Ардуино-робототехнике, требуют напряжения в диапазоне 6-9 вольт. Поэтому придется собрать вместе последовательно не менее 4 батареек на 1,5 В, причем сами батарейки должны быть хорошего качества и обеспечивать работу с достаточно большим током. Например, большинство солевых батареек этим критериям не удовлетворяют. Батарейки AAA при создании ардуино-машинок практически не используются из-за своей пониженной емкости (хотя могут использоваться в миниатюрных моделях, где размер имеет первостепенное значение).
  • Аккумулятор AA. Здесь возникает еще большее ограничение по напряжению и току. Большинство аккумуляторов выдают напряжение 1,2 вольт, поэтому их требуется больше для “собирания” нужных нам 6-9 вольт. Несомненным плюсом является возможность перезарядки.
  • Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, позволяющая получить большое время автономной работы, возможность подзарядки и приемлемые характеристики по току и напряжению. Рабочее напряжение для таких элементов питания – 3,7 В, что позволяет собирать готовую схему питания всего из двух элементов.
  • Другие источники питания. Сюда можно включить как более мощные и габаритные никель-металлгидридные, кадмиевые аккумуляторы, так и многочисленные литий-ионные “плоские” варианты, используемые в дронах, смартфонах или другой портативной цифровой технике.

Каким бы ни был источник питания, нужно обеспечить его надежное крепление, удобное расположение, защиту от воздействия недружелюбной окружающей среды. Если вы подключаете к одному источнику и контролер, и двигатели, и датчики, то нужно позаботиться о правильной схеме, включающей, например, надежную связь “по земле” всех устройств.

Где купить платформу и запчасти

Все, о чем говорится в этой статье, можно без проблем купить на всем известном сайте. К сожалению, подавляющее большинство предложений основываются на стандартной платформе 4WD автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.

Источник

Робот-автопилот с управлением и программированием с ИК пульта

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

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

От него я оставляю только корпус, а всю внутренность и механику ему придется заменить. Соответственно, разбираем полностью.

Электронной платформой для самоделки будет всем известная Arduino nano, точнее, её недорогой китайский аналог. Так же мне понадобились:
1. Arduino Nano
2. Мотор-редуктор с колесами для Ардуино 2шт. (ссылка на Алиэкспресс)
3. Драйвер мотора MX1508 1шт. (ссылка на Алиэкспресс)
4. Ультразвуковой датчик для измерения расстояния HC-SR04 1шт. (ссылка на Алиэкспресс)
5. Зарядный модуль для литий-ионных аккумуляторов TP4056 1шт. (ссылка на Алиэкспресс)
6. Повышающий преобразователь напряжения MT3608 1шт. (ссылка на Алиэкспресс)
7. Модуль инфракрасного приемника 1шт. (ссылка на Алиэкспресс)
8. Фоторезистор GL5528 (20кOм) 1шт. (ссылка на Алиэкспресс)
9. Светодиоды 2шт.
10. Пьезоизлучатель, зуммер 1шт. (ссылка на Алиэкспресс)
11. Выключатель 1шт.
12. Аккумулятор литий-ионный 18650 1шт. (ссылка на Алиэкспресс)
13. Провода.
14. Еще одно маленькое колесо.
15. ИК пульт дистанционного управления.

1. Паяльник.
2. Отвертка.
3. Нож.
4. Кусачки.
5. Пилка.
6. Клеевой пистолет.

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

Например, сам контроллер я решил установить под сиденьем

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

Пьезоизлучатель будет находиться на том же месте, где стоял родной динамик машинки

Преобразователь напряжения и контроллер аккумулятора установятся внутри корпуса

Светодиоды, имитирующие фары — в передней части

Там же будет установлен фоторезистор

И сверху расположатся датчик расстояния и инфракрасный приемник

Собирать будем по следующей схеме:

Здесь АКБ Li-ion 18650 – это аккумуляторная батарея питающая устройство. Для заряда батареи и защиты от переразряда, она подключается к схеме, через контроллер TP4056 на выводы B+ и B-. Далее с выходов контроллера TP4056 напряжение подается на повышающий преобразователь MT3608, где поднимется с 4.2 до 5 В, а также на драйвер моторов MX1508. И уже с выходов MT3608, питание подается на контроллер Ардуино nano и на подключенные к его пинам датчики.

Собственно, из датчиков мы имеем на борту только три: это ультразвуковой датчик расстояния, датчик освещенности в виде фоторезистора и инфракрасный приемник для управления роботом с ИК пульта. Фоторезистор подключен к аналоговому пину А6 на Ардуино, с подтягивающим резистором 10 кОм на массу. А датчик расстояния к цифровым пинам D10 и D12, на контакты trig и echo, соответственно. Инфракрасный датчик подсоединен к цифровому пину D8.

Помимо датчиков к Ардуино подключены также входящие контакты драйвера моторов IN1, IN2, IN3, IN4, на пины: D5, D4, D6, D7, соответственно. Пьезо пищалка для звукового сопровождения — пин D11. И два красных индикационных светодиода, для подсветки робота в темноте. Светодиоды подключаются анодами к цифровым пинам D2 и D3, и катодом к GND c ограничивающим резистором на 160 Ом.

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

Чтобы паять контакты прямо к Ардуино, и тем самым сэкономить пространство и обеспечить компактность расположения элементов внутри робота, мне пришлось удалить все ножки с контроллера.

После чего я приступил к распайке .





И настройке повышающего преобразователя MT3608 с помощью подстроечного резистора так, чтобы на out контактах было 5V.


Соединив все модули согласны схеме,

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


Аккумулятор будет располагаться сзади, над моторами. Я подпаял провода прямо к батарее, хоть это делать и нежелательно, но так всё будет немного компактнее.



В задней части сиденья я проделал отверстие для подключения mini USB кабеля к разъему на Ардуино, чтобы иметь возможность программировать контроллер ничего не раскручивая.


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

Пока аккумулятор заряжается, индикатор на модуле светится красным. Как только зарядится, загорится синий.

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


Получился вот такой робот, и он уже почти готов к работе.

Осталось составить скетч в Arduino IDE и залить его в контроллер.

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

(Более подробно об этом сказано в самом скетче)
И еще по поводу ИК управления. Поскольку ваш пульт ДУ почти наверняка будет отличаться от моего,

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

Находящуюся внутри функции и открыв «монитор порта».
При нажатии кнопок на ИК пульте в мониторе появятся соответствующие цифры. Их нужно будет вставить после команд:

на место «********», которые ответственны за обработку сигналов от нужных кнопок. Будьте внимательны, операторы в программе встречаются аж целых 4 раза.
Скачать скетч можно здесь.

Первые испытания показали, что сдвоенные передние колеса сильно снижают манёвренность.

Поэтому я заменил их на одинарное.

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

Вкратце программа работает следующим образом:

Сразу после включения, робот попадает в режим ожидания, после чего игрок должен выбрать режим дальнейшей работы. Всего же предусмотрено 6 режимов. 4 из них предназначены для различных способов управления и 2 для программирования:

1.Ручное управление. Полный контроль передвижений робота пультом. Куда жмем, туда и едет.

2.Простой автопилот. В этом режиме робот сам определяет направление своего движения, избегая при этом столкновений с близкими препятствиями с помощью метода «отъезд назад, разворот» и т.д..

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

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

И еще 2 режима для программирования действий в режимах 3 и 4.

И функция ожидания.

Чтобы выйти из «сна» и начать управлять роботом, на моем пульте надо нажать одну из цветных кнопок:
Например, нажатие на красную кнопку позволяет манипулировать роботом, просто, как радиоуправляемой игрушкой.

Из доступных действий в него заложены:

1.Движение вперед.
2.Назад.
3.Вперед и направо, налево.
4.Развороты на месте.
5.Движение назад с поворотом направо или налево.
6.Остановка.

Выполнение роботом команд задаваемых с ИК пульта:

Управление роботом с пульта:

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

Робот на автопилоте:

Желтая кнопка — включает автопилот в котором изначально отсутствуют заданные действия, кроме движения веред. Их нужно прописывать вручную с помощью пульта. Делается это в специальном режиме, войдя в который нужно установить робота на определенном расстоянии до препятствия и последовательно нажимая на нужные кнопки, прописать в память те действия, которые робот должен выполнить наткнувшись на стены впереди. Причем, если прописать несколько вариантов действий (до 20 вариантов от 1 до 20 действий в каждом), то выбран будет тот, в котором записана наиболее подходящая дистанция до преграды.

Программирование с пульта:

Робот катается сам, реагируя на препятствия серией из 20 команд, введенных с ИК пульта:

Синяя кнопка запускает серию действий (до 100 шагов) записанных в память, при этом препятствия игнорируются. Первоначально это будут 100 случайных команд продолжительностью выполнения по 500 мсек каждая.

Но есть возможность изменить эту последовательность, запрограммировав пультом любые другие команды в количестве от 1 до 100, и робот их так же выполнит, не обращая внимания на препятствия.

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

Более подробно о том, как управлять и программировать робота описано в комментариях к скетчу.

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

Считывая данные с датчика света, робот автоматически включает фары, если попадает в затененную область, благодаря чему, его всегда будет видно в темноте или «под диваном», при этом издавая серию рандомных звуков.

Радиус действия пульта ограничен несколькими метрами, но для квартиры этого достаточно.

Если говорить о затратах, то на покупку всех необходимых модулей у меня ушло меньше 1Круб. Аккумулятор, пульт, светодиоды и ИК приемник были добыты из разного хлама.

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

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

Источник

Оцените статью