Роботы на arduino uno. Готовые Arduino роботы. Готовый робот или каркас для робота

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

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

Шаг 1: Как это работает?

Робот имеет 4 ноги, с 3 сервоприводами на каждой из них, что позволяют ему перемещать конечности в 3-х степенях свободы. Он передвигается «ползучей походкой». Пусть она медленная, зато одна из самых плавных.

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

Шаг 2: Необходимые детали

Скелет изготавливается из оргстекла толщиной 2 мм.

Электронная часть самоделки будет состоять из:

  • 12 сервоприводов;
  • arduino nano (можно заменить любой другой платой arduino);

  • Шилда для управления сервоприводами;
  • блока питания (в проекте использовался БП 5В 4А);

  • ультразвукового датчика;
  • hc 05 bluetooth модуля;

Для того, чтобы изготовить шилд понадобится:

  • монтажная плата (предпочтительно с общими линиями (шинами) питания и земли);
  • межплатные штыревые соединители — 30 шт;
  • гнезда на плату – 36 шт;

  • провода.

Инструменты :

  • Лазерный резак (или умелые руки);
  • Суперклей;
  • Термоклей.

Шаг 3: Скелет

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

После этого в любой доступный способ вырезаем 30 деталей будущего робота.

Шаг 4: Сборка

После резки снимаем защитное бумажное покрытие с оргстекла.

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

Затем нужно доработать сервоприводы (приклеить по винту напротив валов сервоприводов).

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

Прикрепляем ноги к связующему элементу (изогнутая деталь), а его в свою очередь к сервоприводу на теле.

Шаг 5: Изготавливаем шилд

Изготовление платы довольно простое, если следовать представленным в шаге фотографиям.

Шаг 6: Электроника

Закрепим выводы сервоприводов на плате arduino. Выводы следует соединять в правильной последовательности, иначе ничего не будет работать!

Шаг 7: Программирование

Пришло время оживить Франкенштейна. Сначала загрузим программу legs_init и убедимся в том, что робот находится в таком положении, как на картинке. Далее загрузим quattro_test, чтобы проверить реагирует ли робот на базовые движения, такие как движение вперед, назад, влево и вправо.

ВАЖНО: Вам необходимо добавить дополнительную библиотеку в программную среду arduino IDE. Ссылка на библиотеку представлена ниже:

Робот должен сделать 5 шагов вперед, 5 шагов назад, повернутся влево на 90 градусов, повернутся вправо на 90 градусов. Если Франкенштейн делает всё правильно, мы двигаемся в верном направлении.

P . S : установите робота на чашку, как на стенд, чтобы каждый раз не выставлять его на первоначальную точку. Как только тесты показали нормальную работу робота, можем продолжать испытания, поставив его на землю/пол.

Шаг 8: Инверсная кинематика

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

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

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

Итак, введение в задачу:

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

Теперь разберемся, что нам понадобится:

  1. Платформа (корпус). Здесь есть варианты: сделать самому всё, купить детальки и собрать из них, либо же купить готовое. Выбирайте, что душе угодно

В комплектеобычно идет платформа и по одному мотору на два ведущих колеса (гусенице) и отсек для батареек. Есть варианты полного привода - по мотору на 4 колеса. Для начинающих рекомендуем брать платформы танкового типа

Два ведущих колеса и третье опорное.

  1. Далее, нам понадобиться дальномер. Сонар (он же дальномер, он же Ultrasonic module) В качестве дальномера изначально выбор был между ультразвуковым и инфракрасным. Поскольку характеристики ультразвукового существенно лучше (максимальная дальность около 4-5 метров, против 30-60 см), а цена примерно одинаковая, то выбор пал на Ultrasonic. Наиболее распространена модель HC-SR04.

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

Как быть? Первое что приходит в голову это - поставить на выход микроконтроллера транзистор и с него уже питать моторы. Это конечно хорошо, но не прокатит, если мы захотим мотор в другую сторону пустить… Зато с этой задачей хорошо справится H - мост, который представляем собой немного более сложную схему, чем пара транзисторов. Но в данном случае их полно в виде готовых интегральных схем, так что думаю велосипед изобретать незачем - купим готовый. К тому же цена располагает - 2-3 доллара…Двинемся дальше. Для этих целей купим микросхему L293D, или что еще лучше, Motor Shield на ее основе.

Motor shield на микросхеме L298N

  1. Генерация звука – пьезоизлучатель

Самым простым вариантом генерации звука является использование пьезоизлучателя.

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

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

Обратный пьезоэлектрический эффект: в пьезоизлучателях (эффективны на высоких частотах и имеют небольшие габариты);)

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

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

Урок 2. Работа с ультразвуковым датчиком измерения расстояния (дальномером)

Урок 3. Arduino и Motor Shield на основе L298N

Урок 4. Воспроизведение звука – пьезоизлучатель

Урок 5. Сборка робота и отладка программы

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

Для его изготовления понадобится 3D-принтер, набор стандартных инструментов + Arduino.

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

Шаг 1: Немного о роботе

Арт-робот — двухосевая самоделка , которая может наносить рисунок на большинстве сферических поверхностей. Робот настраивается под определённый тип предмета (шары для пинг-понга, рождественские украшения, лампочки и яйца (утиные, гусиные, куриные …).

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

Шаг 2: Необходимые детали

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

  • 2x подшипника 623;
  • Шпилька диаметром 3 мм и длиной 80-90 мм;
  • 1x пружина (длиной 10 мм и диаметром 4,5 мм);
  • 2x шаговых двигателя NEMA 17 (крутящий момент 4,4 кг / см);
  • Кабели для двигателей (длиной 14 + 70 см);
  • USB-кабель;
  • 1x сервопривод SG90;
  • Arduino Leonardo;
  • shield JJRobots;

  • 2xA4988 драйвера для шаговых двигателей;
  • Блок питания 12В / 2A;
  • 11x винтов M3 6 мм;
  • 4x винта M3 16 мм;
  • 4x гайки M3;
  • 2x 20-мм присоски;
  • 1x гайка-барашек M3;
  • 1x маркер;

Шаг 3: Общая схема

В качестве «шпаргалки» можете воспользоваться данной схемой.

Шаг 4: Давайте начинать!

Робот двигает манипулятором, с закрепленным на нём маркером, что приводится в действие шаговым двигателем. Другой шаговый двигатель отвечает за поворот объекта, на который наносится рисунок (яйцо, шарик …). Для удерживания предмета на месте используются две присоски: одна, прикрепленная к шаговому двигателю, а другая на противоположной стороне предмета. Маленькая пружина будет давить на присоску, помогая ей удерживать предмет. Для поднятия/опускания маркера используется сервопривод SG90.

Шаг 5: Манипулятор

Установим гайку в отверстие, подготовленное для неё и закрутим 16 мм винт. Сделаем то же самое для держателя предметов (справа на изображении выше). При создании шарнира для манипулятора использовались 2 16 мм винта. Этот шарнир должен свободно вращаться после закручивания винтов.

Шаг 6: Присоски

Установим одну из присосок внутрь отверстия в держателе предметов.

Шаг 7: Крепление шаговых двигателей

Закрепим оба шаговых двигателя к основной раме с помощью 8-ми винтов.

Шаг 8: Ось вращения

Разместим все элементы, как показано на изображении выше.

  • Присоска;
  • Гайка;
  • Верхняя часть;
  • Пружина;
  • Подшипник 623 (должен быть встроен в левую чашку);
  • Левая чашка;
  • Свободное пространство для основной рамы;
  • Правая чашка;
  • Подшипник 623;
  • Разделительное кольцо;
  • Гайка-барашек (M3).

Шаг 9: Размещаем все по своим местам

Вставим собранный манипулятор на ось шагового двигателя.

Установим левую опору на ось шагового двигателя.

Маркер и яйцо установлены в качестве примера (сейчас размещать их не нужно).

ПРИМЕЧАНИЕ: Сервопривод потребует корректировок. Нужно будет повторно установить его угол во время процесса калибровки.

Шаг 10: Электроника

Закрепим электронику на тыльной стороне основной рамы с помощью винтов (2-х будет достаточно).

Подключим кабеля.

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

Шаг 11: Программирование Arduino Leonardo

Запрограммируем Arduino Leonardo с помощью программной среды Arduino IDE (v 1.8.1).

  • Загрузим Arduino IDE (v 1.8.1) и установим программу;
  • Запустим программное обеспечение. Выберем плату Arduino Leonardo и соответствующий COM-ПОРТ в меню «tools-> board»;
  • Откроем и загрузим код Sphere-O-Bot. Распакуем все файлы внутрь одной папки и назовём её «Ejjduino_ARDUINO».

Шаг 12: Арт-робот готов к созданию произведений искусства

Шаг 13: Управление роботом

Программное обеспечение Inkscape. Загрузим и установим программное обеспечение Inkscape (рекомендую стабильную версию 0.91).

Загрузим и установим расширение EggBot Control (версия 2.4.0 была полностью протестирована).

Расширение EggBot Control для Inkscape — это инструмент, который необходимо использовать при тестировании и калибровке EggBot, а также перенесении рисунки на яйцо. Сначала нужно запустить Inkscape. После запуска Inkscape появится меню «Расширения», а в нём уже нужно выбрать подменю «Eggbot». Если не видите подменю Eggbot, то вы неправильно установили расширения. Выполните резервное копирование и внимательно следуйте инструкциям по установке расширений.

На этом всё, спасибо за внимание!)

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



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

Codebender – это браузерный IDE, это самый простой способ программировать вашего робота из браузера. Нужно кликнуть на кнопку «Run on Arduino» и все, проще некуда.

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

/* Arduino Obstacle Avoiding Robot with a servo motor and an ultrasonic sensor HC-SR04 LED and buzzer */ //Библиотеки #include #include "Ultrasonic.h" //Константы const int button = 2; //Пин кнопки на пин 2 const int led = 3; //Пин светодиода (через резистор) на пин 3 const int buzzer = 4; //Пин пищалки на пин 4 const int motorA1= 6; //позитивный (+) пин мотора A на пин 6 (PWM) (от модуля L298!) const int motorA2= 9; //негативный пин (-) мотора A на пин 9 (PWM) const int motorB1=10; // позитивный (+) пин мотора B на пин 10 (PWM) const int motorB2=11; // негативный пин (-) мотора B на пин 11 (PWM) Ultrasonic ultrasonic(A4 ,A5); //Создаем объект ultrasonic(trig pin,echo pin) Servo myservo; //Создаём объект Servo, чтобы контролировать сервоприводы //Переменные int distance; //Переменная для хранения дистанции до объекта int checkRight; int checkLeft; int function=0; //Переменная для хранения функции робота: "1" – движение или "0" - остановлен. По умолчанию остановлен int buttonState=0; //Переменная для хранения состояния кнопки. По умолчанию "0" int pos=90; //переменная для хранения позиции серво. По умолчанию 90 градусов- датчик будет смотреть вперёд int flag=0; //полезный флаг для хранения состояния кнопки, когда кнопка отпущена void setup() { myservo.attach(5); //Серво-пин соединён с пином 5 myservo.write(pos); // говорит сервоприводу идти на позицию в переменной "pos" pinMode(button, INPUT_PULLUP); pinMode(led, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(motorA1,OUTPUT); pinMode(motorA2,OUTPUT); pinMode(motorB1,OUTPUT); pinMode(motorB2,OUTPUT); } void loop() { //Проверка состояния кнопки buttonState = digitalRead(button); unsigned long currentMillis = millis(); //считаем... //Меняет главную функцию (остановлен/двигается) когда кнопка нажата if (buttonState == LOW) {//Если кнопка нажата единожды... delay(500); if (flag == 0){ function = 1; flag=1; //меняем переменную флага } else if (flag == 1){ //Если кнопка нажата дважды function = 0; flag=0; //меняем переменную флага снова } } if (function == 0){ //Если кнопка отжата или нажата дважды, то: myservo.write(90); //установить для серво 90 градусов – датчик будет смотреть вперёд stop(); //робот остаётся неподвижным noTone(buzzer); //пищалка выключена digitalWrite(led, HIGH);// и диод горит } else if (function == 1){//Если кнопка нажата, то: //Считываем дистанцию... distance = ultrasonic.Ranging(CM); //Совет: Используйте "CM" для сантиметров и "INC" для дюймов //Проверяем на наличие объектов... if (distance > 10){ forward(); //Всё чисто, двигаемся вперёд! noTone(buzzer); digitalWrite(led,LOW); } else if (distance <=10){ stop(); //Обнаружен объект! Останавливаемся и проверяем слева и справа лучший способ обхода! tone(buzzer,500); // издаём звук digitalWrite(led,HIGH); // включаем светодиод //Начинаем сканировать... for(pos = 0; pos =0; pos-=1){ //идём от 180 градусов к 0 myservo.write(pos); // говорим серво пройти на позицию в переменной "pos" delay(10); // ждём 10 мс, пока сервопривод достигнет нужной позиции } checkRight= ultrasonic.Ranging(CM); myservo.write(90); // Датчик снова смотрит вперёд //Принимаем решение – двигаться влево или вправо? if (checkLeft checkRight){ right(); delay(400); // задержка, меняем значение при необходимости, чтобы заставить робота повернуться. } else if (checkLeft <=10 && checkRight <=10){ backward(); //Дорога перекрыта... возвращаемся и идём налево;) left(); } } } } void forward(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void backward(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void left(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void right(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void stop(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); }

Нажав кнопку «Edit», вы можете редактировать скетч для своих нужд.

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

Если робот не двигается, может изменить контакты электромоторов (motorA1 и motorA2 или motorB1 и motorB2).

Шаг 7: Завершенный робот

Ваш самодельный робот, обходящий препятствия, на базе микроконтроллера Arduino готов.



 
Статьи по теме:
Фарш для котлет из говядины и свинины: рецепт с фото
До недавнего времени я готовил котлеты только из домашнего фарша. Но буквально на днях попробовал приготовить их из куска говяжьей вырезки, честно скажу, они мне очень понравились и пришлись по вкусу всему моему семейству. Для того, чтобы котлетки получил
Схемы выведения космических аппаратов Орбиты искусственных спутников Земли
1 2 3 Ptuf 53 · 10-09-2014 Союз конечно хорошо. но стоимость выведения 1 кг груза всё же запредельная. Ранее мы обсуждали способы доставки на орбиту людей, а мне бы хотелось обсудить альтернативные ракетам способы доставки грузов (согласись з
Рыба на решетке - самое вкусное и ароматное блюдо
Особенность приготовления рыбы на мангале состоит в том, что независимо от того, как вы будете жарить рыбу — целиком или кусочками, кожу снимать не следует. Тушку рыбы нужно разделать очень аккуратно — старайтесь разрезать ее таким образом, что голова и х
Ю.Андреев - Живой журнал! Андреев Ю.А. Юрий Андреев: биография
Андреев Ю.А. - об авторе Юрий Андреевич родился в Днепропетровске. В 1938 году семья переехала из Днепропетровска в Смоленск, где встретила войну (отец - кадровый военный). В 1944 семья переехала в Ленинград по месту службы отца. Окончил школу с золотой