Самодельный робот на Arduino, следующий за рукой

Опыт создания первого робота на Ардуино (робот-«охотник»)

В данной статье я хочу описать процесс сборки своего первого робота на ардуино. Материал будет полезен другим таким же новичкам, как и я, которые захотят изготовить какую-нибудь «самобеглую тележку». Статья представляет собой описание этапов работы с моими дополнениями по различным нюансам. Ссылка на итоговый код (скорее всего, не самый идеальный) дана в конце статьи.

По мере возможности я привлекал к участию своего сына (8 лет). Что именно с ним получалось, а что нет — на это я выделил часть статьи, возможно, кому-то пригодится.

Общее описание робота

Вначале несколько слов о самом роботе (идея). Собирать что-то типовое на старте не очень хотелось. В то же время, набор компонентов был довольно стандартным — шасси, двигатели, ультразвуковой датчик, датчик линии, светодиоды, пищалка. Вначале из этого «супового набора» был придуман робот, который охраняет свою территорию. Он едет на нарушителя, который пересек линию круга, а потом возвращается в центр. Однако в этом варианте была нужна прочерченная линия, плюс лишняя математика, чтобы постоянно оставаться в круге.

Поэтому после некоторых обдумываний я несколько изменил идею и решил делать робота-«охотника». На старте он поворачивается вокруг своей оси, выбирая поблизости цель (человека). Если «жертва» обнаружена, «охотник» включает мигалку и сирену, и начинает ехать на нее. Когда человек отходит/отбегает, робот выбирает новую цель и преследует ее, и так далее. Такому роботу не нужен ограниченный круг, и он может работать на открытой территории.

Как видите, это во многом напоминает игру «догонялки». Хотя в итоге робот и не получился достаточно резвым, но он честно взаимодействует с окружающими его людьми. Особенно это нравится детям (иногда, правда, кажется, что они вот-вот растопчут его, аж сердце ёкает. ). Думаю, для популяризации технического конструирования это хорошее решение.

Структура робота

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

«Мозги» робота — плата arduino uno (1); была в заказанном из Китая наборе. Для наших целей ее вполне хватает (ориентируемся на количество используемых пинов). Из этого же набора мы взяли готовое шасси (2), на которое крепятся два ведущих колеса (3) и одно заднее (свободно вращающееся) (4). Также в наборе был готовый батарейный отсек (5). Спереди у робота стоит ультразвуковой датчик (HC-SR04) (6), сзади — драйвер двигателей (L298N) (7), по центру — светодиод-мигалка (8), и чуть в стороне — пищалка (9).

На этапе компоновки мы смотрим:

— чтобы все влезло
— чтобы было сбалансировано
— чтобы было рационально размещено

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

  1. В шасси из набора есть много заводских отверстий, но какая в них логика — я так и не разобрался. Двигатели и аккумуляторный блок закрепились без проблем, дальше началась «подгонка» со сверлением новых отверстий, чтобы закрепить ту или иную плату.
  2. Весьма выручили латунные стойки и прочий крепеж из запасников (иногда приходилось выкручиваться).
  3. Шины от каждой платы пропускал через зажимы (опять же нашел в запасниках). Весьма удобно, все провода лежат красиво и не болтаются.

Отдельные блоки

Теперь пройдусь по блокам и расскажу персонально про каждый.

Батарейный отсек

Понятно, что робот должен иметь хороший источник энергии. Варианты могут быть разные, я выбрал вариант с 4 аккумуляторами АА. В сумме они дают примерно 5 В, и такое напряжение можно прямо подать на пин 5V платы arduino (минуя стабилизатор).

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

Так как питание нужно везде, то для удобства я сделал по центру робота два разъема: один «раздает» землю (справа), а второй — 5 В (слева).

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

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

Читайте также:
Приточная вентиляция с подогревом своими руками: нюансы подогрева воздуха + инструкция по сборке системы

Для управления двигателями, как я писал выше, используется драйвер L298N. По документации у него три пина на каждый двигатель: один для изменения скорости и пара пинов для направления вращения. Тут есть один важный момент. Оказывается, если напряжение питания 5 В, то регулировка скорости просто не работает! То есть либо совсем не крутит, либо крутит по максимуму. Вот такая особенность, из-за которой я «убил» пару вечеров. В конце концов, нашел упоминание где-то на одном из форумов.

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

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

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

Еще одна железяка, где пришлось искать компромиссное решение. Ультразвуковой датчик на реальных препятствиях дает нестабильные цифры. Собственно, это было ожидаемо. Идеально он работает где-нибудь на соревнованиях, где есть гладкие, ровные и перпендикулярные поверхности, а вот если перед ним «мелькают» чьи-то ноги — тут нужно вводить дополнительную обработку.

В качестве такой обработки я поставил медианный фильтр на три отсчета. Исходя из тестов на реальных детях (во время тестов ни один ребенок не пострадал!), его оказалось вполне достаточно для нормализации данных. Физика здесь простая: у нас есть сигналы, отраженные от нужных объектов (дающие требуемое расстояние) и отраженные от более далеких, например, стен. Вторые представляют собой случайные выбросы в измерениях вида 45, 46, 230, 46, 46, 45, 45, 310, 46… Именно их медианный фильтр и отсекает.

После всей обработки у нас получается расстояние до ближайшего объекта. Если оно меньше некоторой пороговой величины — тогда мы включаем сигнализацию и едем прямо на «нарушителя».

Мигалка и сирена

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

Программа управления

Расписывать детально код я смысла не вижу, кому нужно — ссылка в конце статьи, там всё достаточно читабельно. А вот общую структуру было бы неплохо объяснить.

Первое, что пришлось осмыслить: робот — это устройство реального времени. Точнее, вспомнить, потому что и раньше, и сейчас все равно занимаюсь электроникой. Значит, сразу забываем про вызов delay(), который очень любят использовать в скетчах-примерах, и который просто «замораживает» программу на указанный промежуток времени. Вместо этого, как советуют опытные люди, вводим таймеры на каждый блок. Прошел требуемый промежуток — выполнили действие (увеличили яркость светодиода, включили двигатель и так далее).

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

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

Нюансы педагогики

Все, что было описано выше, я делал в свободное время по вечерам. В неспешном режиме я потратил на робота где-то недели три. На этом можно было бы и завершиться, но я еще обещал вам рассказать о работе с ребенком. Что выполнимо в таком возрасте?

Работа по инструкции

Каждую деталь мы сначала проверяли отдельно — светодиоды, пищалка, моторы, датчики и т. д. Есть большое количество готовых примеров — какие-то прямо в среде разработки, другие можно найти в интернете. Это, несомненно, радует. Берем код, подключаем деталь, убеждаемся, что работает, далее уже начинаем изменять под свою задачу. Подключения по схеме и под некоторым моим контролем ребенок делает сам. Это хорошо. Работать четко по инструкции тоже надо уметь.

Порядок работы («от частного к общему»)

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

Читайте также:
Нестандартная однушка - цена ремонта

Сверление, резьбы, винты, гайки, пайка и запах канифоли — куда же без этого. Ребенок получил базовый скилл «Работа с паяльником» — удалось спаять несколько соединений (я чуть-чуть помогал, не скрою). Не забывайте про объяснение техники безопасности.

Работа на компьютере

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

Первое: английский. В школе его только-только начали, поэтому мы «со скрипом» разбирали, что такое pishalka, migalka, yarkost и прочий транслит. Поняли хотя бы это. Я осознанно не стал использовать родные английские слова, так как до этого уровня мы еще не дошли.

Второе: эффективная работа. Учили горячие комбинации клавиш, как быстро выполнять типовые операции. Периодически, когда писали программу, мы менялись с сыном местами, и я говорил, что нужно сделать (замену, поиск и т.д.). Приходилось повторять снова и снова: «выдели двойным кликом», «зажми Shift», «зажми Ctrl» и так далее. Процесс обучения здесь не быстрый, но, я думаю, навыки постепенно отложатся «в подкорку».

Третье: слепая печать. Комментарии в коде я доверил печатать ребенку (пусть тренируется). Сразу поставили правильно руки, чтобы пальцы постепенно запоминали расположение клавиш.

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

Кстати, про перспективу…

Дальнейшее развитие

Робот сделан, ездит, мигает и пищит. Что же теперь? Воодушевившись достигнутым, мы планируем дорабатывать его дальше. Есть задумка сделать дистанционное управление — по типу лунохода. Было бы интересно, сидя за условным пультом, контролировать движение робота, который ездит совсем в другом месте. Но это уже будет отдельная история…

И в конце, собственно, герои этой статьи (видео по клику):

Самодельный робот на Arduino, следующий за рукой

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

Начну с перечисления деталей, которые будут необходимы при построении — Arduino UNO;

-двигатели 3-х вольтовые с редукторами и колесами;

-коннекторы для батареек 3А;

-аккумулятор (если не хватит батареек);

-Реле, чтобы управлять двигателями;

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

Потом планочкой из дерева я зажимаю моторы, прикручивая эту планку

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

Теперь все соединяем по схеме

В конце загружаем следующий скетч в ардуино:

const int R = 13; //пины к которым подключены ИК-дальномеры
const int L = 12;
int motorL = 9; //пины к которым подключено реле
int motorR = 11;
int buttonState = 0;
void setup() <
pinMode(R,INPUT);
pinMode(L,INPUT);
pinMode(motorR,OUTPUT);
pinMode(motorL,OUTPUT);
>
void loop() <
<
buttonState = digitalRead(L);
if (buttonState == HIGH) <
digitalWrite(motorR,HIGH);
> else <
digitalWrite(motorR,LOW);
>
>
<<
buttonState = digitalRead(R );
if (buttonState == HIGH) <
digitalWrite(motorL,HIGH);
> else <
digitalWrite(motorL,LOW);
>
>
>
>

Принцип действия очень прост. Левый дальномер отвечает за правое колесо, а правый за левое

Чтобы было понятнее, можете посмотреть видео в котором показан процесс создания и действие робота

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

Надеюсь, что вам понравилась такая самоделка, помните, что самоделки — это круто!

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

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

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

Читайте также:
Роскошная вилла Collector’s в Таиланде

Я хочу рассказать про робота и те «особенности», которые мы встретили при его постройке.
Выбор пал на четырехколесный робот. Заказывал на Алиэкспресс в «максимальной» комплектации, с бесплатной доставкой – вышло около 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 и электродвигателей, то стандартный выключатель вам не подходит – нужен двухполюсной – что бы одним движением обесточивать обе схемы. Хотя можно и однополюсным – отключать «минус» от обоих схем.

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

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

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

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

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

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

Робот, ездящий по линии под управлением Arduino

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

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

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

В результате выглядеть он будет так:

Что понадобится

Для нашего примера понадобятся следующие детали:

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

Собираем робота

Сначала соберём робота, установим всю механику и электронику.

Собираем платформу

Для начала прикрепим колёса к моторам.

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

Теперь крепим балансировочный шар.

Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.

Читайте также:
Оформление ванных комнат доступными способами

Крепим сенсоры

Закрепим их, как показано на фото:

Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.

Крепим Arduino

Arduino закрепим с противоположной стороны двумя винтиками и гайками.

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

Крепим Motor Shield и соединительные провода

Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).

В этом проекте, для экономии времени концы соединительных проводов просто скручены с контактами моторов. При работе «начисто» стоит жёстко припаять провода к моторам.

Крепим Troyka Shield

Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:

Программирование

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

Основная идея алгоритма

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

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

При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.

Таким образом получаем простую систему с тремя состояниями:

На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:

Левый Правый Целевое состояние
STATE_FORWARD
1 STATE_RIGHT
1 STATE_LEFT
1 1 STATE_FORWARD

Реализация на Arduino

Проблема инертности и её решение

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

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

Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:

На той поверхности, на которой проводился эксперимент, были получены следующие результаты:

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

Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.

Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:

На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:

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

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

Адаптивное поведение

Перед финальным экспериментом произведём ещё несколько поправок.

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

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

В итоге наш код будет выглядит следующим образом:

Результат

Что дальше?

Представленный алгоритм оставляет множество возможностей для улучшения и оптимизации. Скорость поворота можно так же менять адаптивно. Можно добавить контроль заноса. Можно поиграть с расположением сенсоров и центром масс. В конце концов можно получить непобедимого на треке робота.

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

Робот на Ардуино и машинка на 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 автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.

CARduino – самодельный робот на Arduino

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

Что такое библиотека?
Библиотека облегчает управление CARduino. Этот проект рассчитан на людей с небольшим опытом в программировании, которые хотят делать простых роботов. Вам даже не нужно знать, как управлять мотором. Библиотека сводит программу до простых команд “Повернуть направо и проехать 1 секунду” или “Ехать вперед 3 секунды, а затем ускориться”. Библиотека также содержит примеры программ, которые помогут вам. Более подробная информация о библиотеке содержится в конце статьи.

Если у меня нет таких же материалов, я могу использовать другие?
Конечно, вы можете собирать робота как вам угодно. Библиотека будет работать практически независимо от сборки. Например, вы можете использовать другой материал для шасси. Я использовал дерево, потому что смог найти только его.

Что может сделать робот?
Он может делать все что угодно. Даже без дополнительных устройств его возможности практически не ограничены. При помощи библиотеки CARduino, писать программу для Arduino очень легко. Дополнительная макетная плата позволяет добавлять разнообразные датчики.

Какая стоимость робота?
Если собирать его с нуля, то около 100$. У меня были почти все части, поэтому он обошелся мне примерно в 30$. Все компоненты достаточно распространены и должны у вас быть.

Детали

1х Arduino Uno.
1х Макетная плата.
1х Разъёмы для Arduino и макетной платы.

1х Дальномер Sharp.
2х Микро мотора.
Пара колес 49×19мм.
Пара кронштейнов для двигателя.
Пара шариковых колёс .
Драйвер моторов для Arduino.
1х Кусок дерева 15×10.75 см.
12х Шурупов.
1х 9В батарея

Подготовка шасси робота

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

Установка шариковых колёс

Установите оба колеса сзади, с обеих сторон. Отметить места, на которые попадают их крепёжные отверстия и просверлите их. Используйте шурупы для крепления.

Установка моторчиков

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

Установка Arduino и макетной платы

Вы должны начать с центрирования Arduino и макетной платы на шасси. Отметьте отверстия держателя и просверлите их. Потом прикрепите основу с макетной платой и Arduino шурупами.

Установка датчика

Расположите датчик спереди и посередине, отметьте крепёжные отверстия и просверлите их. Вы должны использовать отверстия на обоих сторонах датчика. Используйте шурупы для крепежа. Убедитесь, что при установке JST выводы находится вверху. Вставьте JST провода в датчик.
Красный провод присоедините к + макетной платы, черный к GND, а желтый в любую другую точку. После этого подключите драйвер моторов к Arduino.

Подключение двигателей колес к драйверу

Подключите положительный контакт правого двигателя к отрицательному контакту А драйвера.
Подключите отрицательный контакт правого двигателя к отрицательному контакту А драйвера.

Подключите положительный контакт левого двигателя к отрицательному контакту В драйвера.
Подключите отрицательный контакт левого двигателя к отрицательному контакту В драйвера.

Подключение питания и датчика

Подключите 5В к + макетной платы, а GND к GND макетной платы. Желтый провод датчика подключите ко второму контакту АЦП.

Установка батареи

Просто приклейте её супер клеем на задней панели CARduino. Затем присоедините + и GND к + и GND Carduino.

Вы закончили сборку робота! На нем без изменений будет работать библиотека и тестовые программы. Подробнее о этом написано ниже.

Библиотека

Для установки библиотеки скачайте Carduino.zip ниже. Найдите / arduino-1.0/libraries. Извлеките содержимое архива в эту папку.. Чтобы использовать её, откройте Arduino IDE и последуйте по пути -> import library -> Carduino.

Значение функций:
void mycarduino.begin ()
Инициализация CARduino. Напишите эту команду в начале программы.

void mycarduino.goforward (время в секундах, скорость)
Эта функция перемещает CARduino вперед в течении указанного времени с указанной скоростью. Скорость может быть любым числом от 1 до 1023, 1023 – максимальная скорость.

void mycarduino.goback (время в секундах, скорость)
То же самое, только назад.

void mycarduino.turnright (время)
Поворот направо в течении указанного в времени(в миллисекундах).

void mycarduino.turnleft (время)
Тоже самое налево.

Int mycarduino.proximity ()
Возвращает значение с датчика в сантиметрах

Примеры:
Перейдите по адресу File -> Examples -> Carduino -> [имя на ваш вкус]

Blink – CARduino секунду двигается вперед, на секунду останавливается, секунду движется вперёд, и т.д.

Object Avoid – CARduino постоянно движется вперед, пока объект находится на расстоянии более 25 сантиметров. Затем он случайным образом выбирает сторону и поворачивает в неё на 800 или 2300 миллисекунд.

Cautious Driving – работает как предыдущая программа, но замечая объект на расстоянии 40 см замедляет скорость.

Вы полностью закончили проект!

Ниже видео робота в действии (из-за проблем с дальномером он отключен, но робот работал)

Как собрать робота самостоятельно в домашних условиях: от простого к сложному

Роботы заменяют людей на производстве и в быту, трудятся в опасных условиях. Андроиды, напоминающие человека, работают, как правило, в качестве промоутеров, а промышленные машины настроены на точное выполнение функций. Их разработкой занимаются специалисты.

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

Робот, реагирующий на источник света

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

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

Необходимые инструменты и детали

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

  • основа – монтажная плата или плотный материал (картон);
  • движущая сила – миниатюрные моторчики мощностью 3 или 5 В (из старой игрушки);
  • колеса – крышки от пластиковых бутылок;
  • датчики – фототранзисторы на 3 В;
  • источник питания — 3 спаянные батарейки АА (пальчиковые);
  • управляющие элементы – транзисторы 816Г (производство – Россия);
  • монтажные приспособления – провода из витой пары.

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

Процесс сборки

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

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

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

К 3 соединенным батарейкам подпаивают провода и определяют на плате 2 точки их схождения (плюс и минус). Удобно продеть в края платы витую пару, запаять концы к транзисторам и датчикам, вывести петлю и к ней подпаять батарейки.

Двигатели устанавливают в конце шасси с противоположной стороны платы. Управляющий моторчик крепят напротив управляемой системы. Это необходимо, чтобы робот поворачивался на свет.

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

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

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

Когда все сделано правильно, двигатели на плате вращаются, меняя скорость в зависимости от степени освещения.

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

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

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

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

Робот, различающий препятствия

Перед сборкой интеллектуального устройства обдумывают его внешний вид и принцип передвижения. Оптимальный вариант – использование гусеничной цепи (как в танке).

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

Инструменты и запчасти

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

  • микроконтроллер (ATmega 16 в корпусе Dip-40);
  • керамические конденсаторы 0,1 мкФ, 1 мкФ, 22 пФ;
  • резисторы на 25 Вт номиналом 10 кОм (1 единицу) и 220 Ом (4 штуки);
  • диод 1N4004;
  • L7805 в корпусе ТО-220;
  • паяльник;
  • инфракрасные диоды (2 шт.);
  • фототранзисторы, способные реагировать на длину ик-лучей;
  • резонатор кварцевый на 16 МГц;
  • мультиметр;
  • радиодетали;
  • гусеницы и мотор от игрушечного экскаватора, танка.

Работа с платой

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

Далее осматривают корпус контроллера MK-Dip и выделяют в нем узлы:

  • вывод Reset, подтянутый резистором к «плюсу» источника питания;
  • электролит на 1000 мкФ для защиты от скачков напряжения;
  • кварцевый резонатор и конденсаторы, которые нужно располагать вблизи от выводов Xtal1 и Xtal2.

Управление двигателями

В приспособлении используется микросхема L293D со встроенными диодами, которые защищают систему от перегрузки. Она имеет 2 канала, что позволяет подключить сразу 2 двигателя. Моторчики на плате запрещено присоединять напрямую к МК. Контакт обеспечивается с помощью ключевых транзисторов.

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

Установка датчиков препятствий

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

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

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

Прошивка робота

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

Прописывая команды, следует учесть, что по инструкции у робота 2 датчика. Если на 1 из фототранзисторов поступает свет от инфракрасного диода, механизм начинает движение назад, отъезжая от препятствия. Он разворачивается и снова едет вперед.

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

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

Роботы для детей

Робототехника позволяет школьникам развивать творческие навыки и знакомить с техническими терминами. Освоив принципы конструирования lego-роботов (как правило, в школах робототехники используют для обучения lego-платформы), дети учатся разбираться в новых технологиях и осваивают азы востребованной профессии.

Ребятам будет интересно самостоятельно построить или поучаствовать в сборке:

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

Полезные роботизированные устройства для начинающих

Первые шаги в робототехнике можно начать:

  • со знакомства с наборами для конструирования и программирования Lego BOOST (7-12 лет) и Lego EV3 (с 10 лет);
  • с конструирования вибророботов, предназначенных для детских игр;
  • с занятий с использованием электронных конструкторов «Знаток»;
  • со сборки простых конструкторов для начинающих на основе Arduino;
  • с конструирования моделей, представленных обучающими конструкторами Engino.

Необходимые навыки

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

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

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: