CARduino – самодельный робот на Arduino
Самодельный робот на Arduino, следующий за рукой
Многие начинающие самоделкины начинают изучение ардуино с создания простеньких роботов. Сегодня я расскажу о простейшем роботе на ардуино уно, который как собачка будет следовать за вашей рукой или за любым другим объектом, отражающим инфракрасный свет. Также этот робот позабавит детишек. Мой 3-х летний племянник охотно игрался с роботом:)
Начну с перечисления деталей, которые будут необходимы при построении — Arduino UNO;
-инфракрасные дальномеры;-двигатели 3-х вольтовые с редукторами и колесами;
-коннекторы для батареек 3А;
-аккумулятор (если не хватит батареек);
-Реле, чтобы управлять двигателями;
Ну, и прочие материалы, которые понадобятся в процессе создания.
Сначала делаем основание. Я решил сделать его из дерева. Деревянную дощечку и пропилил таким образом, что моторы в прорезях сидят идеально
Потом планочкой из дерева я зажимаю моторы, прикручивая эту планку
Далее на корпусе я разместил ардуино, реле, бредбоард, дальномеры, а под основание шасси поворачивающееся
Теперь все соединяем по схеме
В конце загружаем следующий скетч в ардуино:
Принцип действия очень прост. Левый дальномер отвечает за правое колесо, а правый за левое
Чтобы было понятнее, можете посмотреть видео в котором показан процесс создания и действие робота
Этот робот очень простой и его может сделать каждый. Он поможет вам понять принципы действия таких модулей, как реле и ИК дальномеры и как их лучше использовать.
Надеюсь, что вам понравилась такая самоделка, помните, что самоделки — это круто!
Как сделать робота на Ардуино своими руками: самодельный robot Arduino в домашних условиях
В сегодняшней статье я расскажу вам, как сделать робота, обходящего препятствия, на базе микроконтроллера Ардуино своими руками.
Чтобы сделать робота в домашних условиях вам понадобится собственно сама плата микроконтроллера и ультразвуковой сенсор. Если сенсор зафиксирует препятствие, сервопривод позволит ему обогнуть препятствие. Сканируя пространство справа и слева, робот выберет наиболее предпочтительный путь для обхода препятствия.
У робота есть индикаторный диод, зуммер, сигнализирующий об обнаружении препятствия, и функциональная кнопка.
Самодельный робот очень простой в исполнении.
Шаг 1: Необходимые материалы
- Arduino UNO
- Мини макетная плата
- Драйвер двигателя L298N
- Два электромотора с колесами
- Ультразвуковой датчик измерения расстояния HC — SR04
- Микросервопривод
- Кнопка
- Красный диод
- Резистор 220 Ом
- Отсек для элемента питания 9В (с/без коннектора)
- 8 стоек для макетных плат с наружной и внутренней резьбой, 8 винтов и 8 гаек
Также вам понадобится одна большая металлическая скрепка и бусина (для заднего опорного колеса).
Для изготовления каркаса робота использован кусок плексигласа (оргстекла) 12х9,5 см. Можно сделать каркас из дерева или металла, или даже из компакт-дисков.
- Дрель
- Суперклей
- Отвертка
- Клеевой пистолет (опционально)
Для питания робота используется батарейка 9В (крона), она достаточно компактная и дешевая, но разрядится уже примерно через час. Возможно, вы захотите сделать питание от аккумулятора на 6 В (минимум) или 7 В (максимум). Аккумулятор мощнее батарейки, но и дороже и больше по габаритам.
Шаг 2: Делаем каркас робота
Положите всю электронику на плексиглас и маркером отметьте места, где нужно будет просверлить монтажные отверстия (фото 1).
На нижней стороне пластины плексигласа приклейте на суперклей электромоторы. Они должны быть параллельны друг другу, с помощью линейки-угольника проверьте их положение прежде чем клеить (фото 2). Затем приклейте на суперклей отсек для батарейки.
Можно также просверлить отверстия под провода электромоторов и питания.
Шаг 3: Монтируем электронику
Закрепите на каркасе плату контроллера и драйвер двигателей, используя стойки для печатных плат, винты и гайки. Миниатюрная макетная плата клеится на липкий слой (уже есть на нижней стороне) (фото 1).
Теперь делаем заднее опорное колесо из скрепки и бусины (фото 2). Концы проволоки закрепите на нижней стороне каркаса суперклеем или термоклеем.
Шаг 4: Устанавливаем «глаза» робота
На передней части каркаса приклейте на суперклей миниатюрный сервопривод. Рассмотрите на первом фото, как крепится плата ультразвукового датчика к сервоприводу с помощью маленького вала.
На втором фото показано, как выглядит завершенное соединение датчика и сервопривода.
Шаг 5: Схема подключений
Теперь приступаем к подключению электронных компонентов. Подключение компонентов происходит согласно схеме на рисунке 1.
На макетную плату устанавливайте только диод, зуммер и кнопку, это упрощает схему и позволяет добавить дополнительные устройства в дальнейшем.
Шаг 6: Код
Код, который приведен ниже, сделан с помощью Codebender.
Codebender – это браузерный IDE, это самый простой способ программировать вашего робота из браузера. Нужно кликнуть на кнопку «Run on Arduino» и все, проще некуда.
Вставьте батарейку в отсек и нажмите на функциональную кнопку один раз, и робот начнет движение вперед. Для остановки движения нажмите на кнопку еще раз.
Нажав кнопку «Edit», вы можете редактировать скетч для своих нужд.
Например, изменив значение «10» измеряемого расстояния до препятствия в см, вы уменьшите или увеличите дистанцию, которую будет сканировать robot Arduino в поисках препятствия.
Если робот не двигается, может изменить контакты электромоторов (motorA1 и motorA2 или motorB1 и motorB2).
Шаг 7: Завершенный робот
Ваш самодельный робот, обходящий препятствия, на базе микроконтроллера Arduino готов.
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
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 см замедляет скорость.
Вы полностью закончили проект!
Ниже видео робота в действии (из-за проблем с дальномером он отключен, но робот работал)
Делаем самобалансирующего робота на Ардуино
Рассказываем о том как можно использовать Ардуино для создания самобалансирующего робота, который балансирует как Сигвей.
Как работает балансировка?
Сигвей от англ. Segway – двухколесное средство передвижения стоя, оснащенное электроприводом. Еще их называют гироскутерами или электрическими самокатами.
Вы когда-нибудь задумывались, как работает Сигвей? В этом уроке мы постараемся показать вам, как сделать робота Ардуино, который уравновешивает себя точно так же, как Segway.
Чтобы сбалансировать робота, двигатели должны противодействовать падению робота. Это действие требует обратной связи и корректирующих элементов.
Элемент обратной связи — гироскоп-акселерометр MPU6050, который обеспечивает как ускорение, так и вращение во всех трех осях (основы MP26050 I2C). Ардуино использует это, чтобы знать текущую ориентацию робота. Корректирующим элементом является комбинация двигателя и колеса.
В итоге должен получиться примерно такой друг:
Схема робота
Сначала подключите MPU6050 к Ардуино и проверьте соединение, используя коды в этом учебном руководстве по интерфейсу IMU. Если данные теперь отображаются на последовательном мониторе, вы молодец!
Продолжайте подключать остальные компоненты, как показано выше. Модуль L298N может обеспечить +5В, необходимый для Ардуино, если его входное напряжение составляет +7В или выше. Тем не менее, мы выбрали отдельные источники питания для двигателя и схемы.
Создание робота
Корпус робота изготовлен в основном из акрилового пластика с двумя редукторными двигателями постоянного тока:
Основная печатная плата, состоящая из Arduino Nano и MPU6050:
Модуль драйвера двигателя L298N:
Мотор редуктора постоянного тока с колесом:
Самобалансирующийся робот по существу является перевернутым маятником. Он может быть лучше сбалансирован, если центр массы выше относительно колесных осей. Высший центр масс означает более высокий момент инерции массы, что соответствует более низкому угловому ускорению (более медленное падение). Вот почему мы положили батарейный блок на верх. Однако высота робота была выбрана исходя из наличия материалов
Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.
Теория
В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».
ПИД-регулятор уменьшает погрешность до наименьшего возможного значения, постоянно регулируя выход. В нашем самобалансирующем роботе Arduino вход (который является желаемым наклоном в градусах) устанавливается программным обеспечением. MPU6050 считывает текущий наклон робота и подает его на алгоритм PID, который выполняет вычисления для управления двигателем и удерживает робота в вертикальном положении.
PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:
- Сделайте Kp, Ki и Kd равными нулю.
- Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
- Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
- Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.
Поведение робота можно посмотреть ниже на видео:
Код Ардуино самобалансирующего робота
Нам понадобилось четыре внешних библиотеки, для создания нашего робота. Библиотека PID упрощает вычисление значений P, I и D. Библиотека LMotorController используется для управления двумя двигателями с модулем L298N. Библиотека I2Cdev и библиотека MPU6050_6_Axis_MotionApps20 предназначены для чтения данных с MPU6050. Вы можете загрузить код, включая библиотеки в этом репозитории.
Значения Kp, Ki, Kd могут работать или не работать. Если они этого не делают, выполните шаги, описанные выше. Обратите внимание, что наклона в коде установлен на 173 градуса.
Вы можете изменить это значение, если хотите, но обратите внимание, что это угол наклона, которым должен поддерживаться роботом. Кроме того, если ваши двигатели слишком быстры, вы можете отрегулировать значения: