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

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

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

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

Машинка на Arduino, управляемая через Bluetooth

Машинка, управляемая через Bluetooth, стоимостью чуть менее $100. Поставляется в разобранном виде. Помимо корпуса, мотора, колес, литиевой батарейки и зарядного устройства, получаем плату Arduino UNO328, контроллер мотора, Bluetooth адаптер, пульт дистанционного управления и прочее.

Видео с участием этого и еще одного робота:

Более подробное описание игрушки и возможность купить на сайте интернет-магазина DealExtreme.

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

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 см замедляет скорость.

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Деревянная чаша со вставкой из эпоксидной смолы

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

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

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

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

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

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

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

Эта часть проекта самая интересная и, наверное, самая важная.

Давайте вкратце разберемся, что именно происходит в программной части.

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

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

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

Теперь перейдем к настройке Matlab и Arduino для отрабатывания кода.

Для начала установите Arduino IO плагин в Matlab.

После этого замените файл arduino.m тем, что прикреплен к проекту под тем же именем.

Скачайте и сохраните finaldraw.m и draw.m в директорию с матлабом.

Загрузите файл adioes.ino на плату Arduino.

Проверьте, к какому порту подключена ваша плата Arduino, после чего откройте finaldraw.m и измените COM3 на ваш порт.

Измените расширение рисунка, который вы хотите нарисовать на .png. Это можно сделать с посощью большинстве графических редакторов. Сохраните полученный файл в директорию с Matlab. Откройте finaldraw.m и измените emma.png на название вашего рисунка с рисширением .png. Схраните файл emma.png.

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

На этом все. Подключите вашу плату Arduino к персональному компьютеру, пропишите в командной строке Matlab слово finaldraw и играйтесь.

Во время занятий:

  • Разберем что такое статическое и динамическое равновесие, поймем почему робот не падает, как работает сустав и движется конечность;
  • Познакомимся (вспомним) с понятиями электрический ток и напряжение, что такое цифровая и аналоговая электроника, как работает электромотор и серво мотор;
  • Узнаем, что такое микроконтроллер и среда разработки Arduino;
  • Разберемся как из серво моторов и простых деталей собрать шлагбаум, манипулятор, шагающего робота «Ходок»;
  • Запустим и научимся управлять роботом KONDO используя типовые движения. Затем мы научим его держать равновесие и перейдем к созданию своих движений для участия в спортивных соревнованиях, в конкурсах по танцам и многое другое;
  • Поставим камеру на робота «Робокит» познакомимся с контроллером Open MV, запустим систему машинного зрения и сделаем робота автономным.

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

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

Читать еще:  Простой кондуктор для точного сверления угловых отверстий

Вы узнаете, из каких узлов состоит простейший робот и как выполнять электрические соединения.
Научитесь программировать контроллер Arduino и подключать различные датчики для взаимодействия робота с внешним миром. Изучите ходовую часть и основы управления двигателями.
Узнаете, как организовать дистанционное управление роботом с помощью смартфона с операционной системой Android или с пульта дистанционного управления.
Сможете собрать различных роботов, построенных на основе простой базовой модели и способных выполнять различные задачи: находить выход из лабиринта, играть в кегельринг, двигаться по компасу, ориентироваться в пространстве и др.

Проекты и эксперименты

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

В приложении к книге содержится программный код, файлы с рисунками корпуса.

Состав набора

✓ Контроллер
x1 Плата, совместимая с Arduino Uno R3
x1 Кабель USB

✓ Платы расширения
x1 Плата расширения V5 (UNO Sensor Shield V5)
x1 Драйвер двигателей 2-х канальный на базе L298N

✓ Датчики
x1 Ультразвуковой дальномер HC-SR04
x3 Инфракрасный датчик препятствий
x3 Датчик линии TCRT 5000
x1 Электронный компас GY-271 (HMC5883L)
x1 Модуль GY-521 3-осевой акселерометр и гироскоп MPU6050

✓ Компоненты для управления
x1 Пульт управления + ИК приемник HX1838
x1 Модуль Bluetooth HC-05

✓ Элементы коммутации
x1 Плата макетная беспаечная [170 контактов], 45×34,5×8,5 мм
x40 Провода 20 см с разъемами “мама-мама”
x20 Провода 20 см с разъемами “папа-мама”
x8 Провода 20 см тонкие многожильные
x1 Выключатель питания KCD1-101

✓ Базовые компоненты
x5 Конденсатор керамический 0,1 мкФ
x10 Резистор 220 Ом

✓ Двигатели
x4 Двигатели колес
x1 Серводвигатель MG90S 13,6 г. 180°

✓ Светодиоды
x2 Светодиод красный 5 мм
x2 Светодиод зеленый 5 мм
x2 Светодиод синий 5 мм
x2 Светодиод желтый 5 мм

✓ Элементы питания, зарядное устройство
x2 Аккумуляторы литиевый 18650 3,7 В
x1 Отсек для 2-х аккумуляторов типа 18650
x1 Зарядное устройство для аккумуляторов 18650

✓ Механические детали
x2 Шасси мобильного робота 4WD
x4 Детали для установки серводвигателя и HC-SR04
x3 Детали бампера
x8 Детали для крепления двигателей
x4 Колеса

✓ Крепеж
x10 Стойки латунные
x105 Болты, гайки
x2 Нейлоновый стяжки 2,5х100 мм
x4 Держатель для светодиодов
x3 Втулки пластмассовые
х1 Клей

✓ Инструменты
x1 Отвертка
x1 Ключ гаечный M2хM3

✓ Руководство
x1 Инструкция по сборке мобильного робота

✓ Книга
x1 Момот М. Мобильные роботы на базе Arduino (2-изд.). – СПб.: БХВ-Петербург, 2017 – 336 с.

Дополнительные датчики

Чтобы твой робот не бился об стены и другие преграды, его нужно оснастить датчиками препятствия. Существуют датчики столкновений, датчики линий, инфракрасные датчики, ультразвуковые дальномеры и другие датчики. Также, чтобы сделать робота умным, можно оснастить его датчиками движения и освещения, которые позволят ему ориентироваться на местности, объезжая не только статичные, но и динамичные объекты. Рекомендуем устанавливать минимум два датчика препятствий на передней части робота. Желательно установить ещё два датчика и в задней части. Помни: чем больше датчиков, тем лучше.

Бортовой компьютер MC-2

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

В качестве контроллера управления механизмами шасси и сенсорами робота, решено использовать готовый Arduino контроллер. Из всех рассматриваемых мною контроллеров, я выбрал самый распространенный и доступный Arduino UNO. Так же можно использовать более компактный Arduino Nano. Оба устройства работают на avr микроконтроллере ATMega328p.

В статье на сайте вы можете дополнительно прочитать о преимуществах использования Arduino.

Связь между роботом и наземной базовой станцией должна осуществляться посредством стабильного канала связи на базе Wi-Fi, GPRS, 3G или через радио-канал.

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

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

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