Интересный роботманипулятор на Arduino
Робот-манипулятор на Arduino
Создаем робот-манипулятор с использованием дальномера, реализуем подсветку.
Резать основание будем из акрила. В качестве двигателей используем сервопривода.
Общее описание проекта робота-манипулятора
В проекте использовано 6 серводвигателей. Для механической части использован акрил толщиной 2 миллиметра. В качестве штатива пригодилось основание от диско-шара (один из двигателей вмонтирован внутрь). Также использован ультразвуковой датчик расстояния и светодиод диаметром 10 мм.
Для управления роботом используется Arduino плата питания. Сам источник питания — блок питания компьютера.
В проекте изложены исчерпывающие пояснения по разработке робо-руки. Отдельно рассмотрены вопросы питания разработанной конструкции.
Основные узлы для проекта манипулятора
Давайте начнем разработку. Вам понадобятся:
- 6 серводвигателей (я использовал 2 модели mg946, 2 mg995, 2 futuba s3003 (mg995/mg946 по характеристикам лучше, чем futuba s3003, но последние намного дешевле);
- акрил толщиной 2 миллиметра (и небольшой кусок толщиной 4 мм);
- ультразвуковой датчик расстояния hc-sr04;
- светодиды 10 мм (цвет — на ваше усмотрение);
- штатив (используется в качестве основания);
- схват аллюминиевый (стоит около 10-15 долларов).
- Плата Arduino Uno (в проекте использована самодельная плата, которая полностью аналогична Arduino);
- плата питания (вам придется ее сделать самим, к этому вопросу мы вернемся позже, он требует отдельного внимания);
- блок питания (в данном случае используется блок питания компьютера);
- компьютер для программирования вашего манипулятора (если вы используете для программирования Arduino, значит, среда Arduino IDE)
Конечно же, вам пригодятся кабели и некоторые базовые инструменты вроде отверток и т.п. Теперь мы можем перейти к конструированию.
Сборка механической части
Перед началом разработки механической части манипулятора, стоит отметить, что чертежей у меня нет. Все узлы делались «на коленке». Но принцип очень простой. У вас есть два звена из акрила, между которыми надо установить серводвигатели. И другие два звенья. Тоже для установки двигателей. Ну и сам схват. Подобный схват проще всего купить в интеренете. Практически все устанавливается с помощью винтов.
Длина первой части около 19 см; второй — около 17.5; длина переднего звена около 5.5 см. Остальные габариты подбирайте в соответсвии с размерами вашего проекта. В принципе, размеры остальных узлов не так важны.
Механическая рука должна обеспечивать угол поворота 180 градусов в основании. Так что мы должны установить снизу серводвигатель. В данном случае он устанавливается в тот самый диско-шар. В вашем случае это может быть любой подходящий бокс. Робот устанавливается на этот серводвигатель. Можно, как это показано на рисунке, установить дополнительное металлическое кольцо-фланец. Можно обойтись и без него.
Для установки ультразвукового датчика, используется акрил толщиной 2 мм. Тут же снизу можно установить светодиод.
Детально объяснить как именно сконструировать подобный манипулятор сложно. Многое зависит от тех узлов и частей, которые есть у вас в наличии или вы приобретаете. Например, если габариты ваших сервоприводов отличаются, звенья арма из акрила тоже изменятся. Если изменятся габариты, калибровка манипулятора тоже будет отличаться.
Вам точно придется после завершения разработки механической части манипулятора удлинить кабели серводвигателей. Для этих целей в данном проекте использовались провода из интернет-кабеля. Для того, чтобы все это имело вид, не поленитесь и установите на свободные концы удлиненных кабелей переходники — мама или папа, в зависимости от выходов вашей платы Arduino, шилда или источника питания.
После сборки механической части, мы можем перейти к «мозгам» нашего манипулятора.
Схват манипулятора
Для установки схвата вам понадобится серводвигатель и несколько винтов.
Итак, что именно необходимо сделать.
Берете качалку от сервы и укорачиваете, пока она не подойдет к вашему схвату. После этого закручиваете два маленьких винта.
После установки сервы, проворачиваете ее в крайнее левое положение и сжимаете губки схвата.
Теперь можно установить серву на 4 болта. При этом следите, чтобы двигатель был все так же в крайнем левом положении, а губки схвата закрыты.
Можно подключить сервопривод к плате Arduino и проверить работоспособность схвата.
Учтите, что могут возникнуть проблемы с работой схвата, если болты/винты слишком сильно затянуты.
Добавление подсветки на манипулятор
Можно сделать ваш проект ярче, добавив на него подсветку. Для этого использовались светодиоды. Делается несложно, а в темноте выглядит очень эффектно.
Места для установки светодиодов зависят от вашего креатива и фантазии.
Электросхема
Можно использовать вместо резистора R1 потенциометр на 100 кОм для регулировки яркости вручную. В качестве сопротивлени R2 использовались резисторы на 118 Ом.
Перечень основных узлов, которые использовались:
- R1 — резистор на 100 кОм
- R2 — резистор на 118 Ом
- Транзистор bc547
- Фоторезистор
- 7 светодиодов
- Переключатель
- Подключение к плате Arduino
В качестве микроконтроллера использовалась плата Arduino. В качестве питания использовался блок питания от персонального компьютера. Подключив мультиметр к красному и черному кабелям, вы увидите 5 вольт (которые используются для серводвигателей и ультразвукового датчика расстояния). Желтый и черный дадут вам 12 вольт (для Arduino). Делаем 5 коннекторов для сервомоторов, параллельно подключаем позитивные к 5 В, а негативные — к земле. Аналогично с датчиком расстояния.
После этого подключите оставшиеся коннекторы (по одному с каждой сервы и два с дальномера) к распаянной нами плате и Arduino. При этом не забудьте в программе в дальнейшем корректно указать пины, которые вы использовали.
Кроме того, на плате питания был установлен светодиод-индикатор питания. Реализуется это несложно. Дополнительно использовался резистор на 100 Ом между 5 В и землей.
10 миллиметровый светодиод на роботе тоже подключен к Arduino. Резистор на 100 Ом идет от 13 пина к к позитивной ноге светодиода. Негативный — к земле. В программе его можно отключить.
Для 6 серводвигателей использовано 6 коннекторов, так как 2 серводвигателя снизу используют одинаковый сигнал управления. Соответствующие проводники соединяются и подключаются к одному пину.
Повторюсь, что в качестве питания используется блок питания от персонального компьютера. Либо, конечно, вы можете приобрести отдельный источник питания. Но с учетом, того, что у нас 6 приводов, каждый из которых может потреблять около 2 А, подобный мощный блок питания обойдется недешево.
Обратите внимание, что коннекторы от серв подключаются к ШИМ-выходам Arduino. Возле каждого такого пина на плате есть условное обозначение
. Ультразвуковой датчик расттояния можно подключить к пинам 6, 7. Светодиод — к 13 пину и земле. Это все пины, которые нам понадобятся.
Теперь мы можем перейти к программированию Arduino.
Перед тем как подключить плату через usb к компьютеру, убедитесь, что вы отключили питание. Когда будете тестировать программу, также отключайте питание вашей робо-руки. Если питание не выключить, Arduino получит 5 вольт от usb и 12 вольт от блока питания. Соответственно, мощность от usb перекинется к источнику питания и он немного «просядет».
На схеме подключения видно, что были добавлены потенциометры для управления сервами. Потенциометры не являются обязательным звеном, но приведенный код не будет работать без них. Потенциометры можно подключить к пинам 0,1,2,3 и 4.
Программирование и первый запуск
Для управления использовано 5 потенциометров (вполне можно заменить это на 1 потенциометр и два джойстика). Схема подключения с потенциометрами приведена в предыдущей части. Скетч для Arduino находится здесь.
Снизу представлены несколько видео робота-манипулятора в работе. Надеюсь, вам понравится.
На видео сверху представлены последние модификации арма. Пришлось немного изменить конструкцию и заменить несколько деталей. Оказалось, что сервы futuba s3003 слабоваты. Их получилось использовать только для схвата или поворота руки. Так что виесто них были установлены mg995. Ну а mg946 вообще будут отличным вариантом.
Программа управления и пояснения к ней
// управляются привода с помощью переменных резисторов — потенциометров.
int potpin = 0; // аналоговый пин для подключения потенциометра
int val; // переменная для считывания данных с аналогового пина
val = analogRead(potpin); // считывает значение потенциометра (значение между 0 и 1023)
val = map(val, 0, 1023, 0, 179); // масштабирует полученное значение для использования с сервами (получаем значение в диапазоне от 0 до 180)
myservo1.write(val); // выводит серву в позицию в соответствии с рассчитанным значением
delay(15); // ждет, пока серводвигатель выйдет в заданное положение
val = analogRead(potpin1); // серва 2 на аналоговом пине 1
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin2); // серва 3 на аналоговом пине 2
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin3); // серва 4 на аналоговом пине 3
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin4); //серва 5 на аналоговом пине 4
val = map(val, 0, 1023, 0, 179);
Скетч с использованием ультразвукового датчика расстояния
Это, наверное, одна из самых эффектных частей проекта. На манипулятор устанавливается датчик расстояния, который реагирует на препятствия вокруг.
Основные пояснения к коду представлены ниже
#define trigPin 7
#define echoPin 6
Мы добавили в наш код серводвигатели, светодиод и датчик расстояния. Здесь изменять ничего не надо.
Следующий кусок кода:
Мы присвоили всем 5-ти сигналам (для 6 приводов) названия (могут быть любыми)
Интересный робот-манипулятор на Arduino
Речь пойдет о роботе-манипуляторе, на котором используется дальномер. Еще робот имеет подсветку. Всего робот работает на 6-ти серводвигателях. Для создания механической части использовался акрил толщиной два миллиметра. Для изготовления штатива было взято основание от диско-шара, при этом один мотор строен прямо в него.
Робот работает на плате Arduino. В качестве источника питания используется компьютерный блок.
Шаг первый. Собираем механическую часть робота
Механическая часть собирается очень просто. Два куска акрила нужно соединить с помощью серводвигателя. Другие два звена соединяются аналогичным образом. Что касается схвата, то его лучше всего купить через интернет. Все элементы крепятся с помощью винтов.
Длина первой части составляет порядка 19 см, а второй примерно 17.5 см. Переднее звено имеет длину 5.5 см. Что касается остальных элементов, то их размеры выбираются на личное усмотрение.
Угол поворота в основании механической руки должен составлять 180 градусов, поэтому снизу нужно установить серводвигатель. В нашем случае его нужно установить в диско-шар. Робот же устанавливается уже на серводвигатель.
Для установки ультразвукового датчика понадобится кусок акрила толщиной 2 см.
Чтобы установить схват будет нужно несколько винтов и серводвигатель. Нужно взять качалку от серводвигателя и укорачивать ее до тех пор, пока она не подойдет ко схвату. Затем можно закрутить два маленьких винта. После установки серводвигатель нужно повернуть в крайнее левое положение и свести губки захвата.
Теперь серводвигатель крепится на 4 болта, при этом важно следить, чтобы он находился в крайнем левом положении, а губы были сведены.
Теперь сервпривод можно подключить к плате и проверить, работает ли схват.
Шаг третий. Подключение электронной части
Основным контроллером для робота является плата Arduino. В качестве источника питания используется компьютерный блок, на его выходах нужно найти напряжение 5 Вольт. Оно должно быть, если замерить мультиметром напряжение на красном и черном проводе. Это напряжение нужно для питания серводвигателей и датчика расстояния. Желтый и черный провод блока выдает уже 12 Вольт, они нужны для работы Arduino.
Для сервомоторов нужно сделать пять коннекторов. К позитивным подключаем 5В, а негативные к земле. Аналогичным образом подключается и датчик расстояния.
Еще на плате имеется светодиодный индикатор питания. Для его подключения используется резистор 100 Ом между +5В и землей.
». Что касается ультразвукового датчика расстояния, то его можно подключить к пинам 6 и 7. Светодиод подключается к земле и 13-му пину.
Теперь можно приступать к программированию. Перед тем как подключаться через USB, нужно убедиться, что питание полностью отключено. При тестировании программы питание робота тоже нужно отключать. Если это не сделать, контроллер получить 5В от USB и 12В от блока питания.
На схеме можно увидеть, что для управления серводвигателями были добавлены потенциометры. Они не являются необходимой составляющей робота, но без них предложенный код работать не будет. Потенциометры подключаются к пинам 0,1,2,3 и 4.
На схеме есть резистор R1, его можно заменить потенциометром на 100 кОм. Это позволит регулировать яркость вручную. Что касается резисторов R2, то их номинал 118 Ом.
Вот перечень основных узлов, которые применялись:
— 7 светодиодов;
— R2 — резистор на 118 Ом;
— R1 — резистор на 100 кОм;
— переключатель;
— фоторезистор;
— транзистор bc547.
Шаг четвертый. Программирование и первый запуск робота
Чтобы управлять роботом, было использовано 5 потенциометров. Вполне реально заменить такую схему на один потенциометр и два джойстика. Как подключить потенциометр, было показано в предыдущем шаге. После установки скеча робота можно испытать.
Первые испытания робота показали, что установленные серводвигатели типа futuba s3003 оказались слабыми для робота. Их можно применять лишь для поворота руки или для схвата. Вместо них автор установил двигатели mg995. Идеальным вариантом будут двигатели типа mg946.
Процесс создания Робота Манипулятора на Arduino (Часть 2)
Немного про мозги системы. Как я уже говорил, здесь используется Arduino Uno, а для крепления серв был приобретен Sensor Shield V5 (300 р.). Конечно, можно было бы обойтись и без него, но паяю и делаю платы я ещё хуже (вообше никак).
Впоследствии была напечатана нормальная платформа, а главное, клешня, для всего этого чуда (для клешни был куплен 4 сервомотор Tower Pro 9g уже за 240р., сами детали 630р.). Здесь же опять я немного накосячил с размерами, все дорабатывалось шкуркой и напильником.
И вот наше творение готово, можно запускать и кричать: «Оно живое, живое. », а нет, настало время писать прошивку. (Дальше будет более нудная часть, кто не хочет читать, как делалась прошивка, листайте дальше.)
В общем и целом для работы с сервами использовалась библиотека Servo. Стандартные функции давали слишком резкие движения, и моторов могли двигаться лишь поочередно (это не очень большой минус, но хотелось одновременной работы). Поэтому была написана собственная функция для каждого из моторов (их всего 4). За каждый проход базовой функции loop() проверяется положение мотора с помощью Servo.read(), если он не совпадает с заданным углом, на 1 приближаем его к нужному углу. Таким образом, вышла довольная плавная работа манипулятора.
А теперь история про софт для компа
Вначале все писалось на Proccesing, этот язык (среда разработки?!) часто рекомендуют для работы с ардуино через COM порт. Выглядело это так:
Не очень красиво, не правда ли?! Отсутствие нормального редактора интерфейсов (хотелось «красииива») сподвигло писать все на C#.
Общий функционал программы таков: управление сервами из программы, подключение геймпада и передача команд с оного на робота, выполнение «программы» по координатам. Вообще в начале хотелось сделать полет, где можно было бы тыкнуть на участок и таким образом рисовать (надеюсь, вы поняли), это даже вышло, но люфты манипулятора заставили отказаться от этого (весьма не точно выходило выполнение такого рисования).
—КОНЕЦ ИСТОРИИ ПРО СОФТ—
А теперь видео примеры того, что же в итоге вышло. Нужно ещё многое допиливать и в программе и в прошивке, но кое-что манипулятор уже может сделать
Конечно не всегда с первого раза
Очень круто создать что-то с ноля полностью своими силами, было сделано много проб и ошибок, но результатом я доволен.
Что нужно учесть:
-Прикинуть мощность моторов и размеры робота
-Правильно смоделить/вырезать детали, чтобы не было люфтов (да, это и так всем ясно, но проблема от этого не исчезает)
Стоимость всей затеи:
3 х сервы Tower Pro 9g = 480р.
1 х серва Tower Pro 9g = 240р.
Печать всех деталей = 1532р.
Болты, гайки, крепления (называются крепления для плат)
Arduino Uno = 600р. (весь набор Амперка X обошелся в 3000р.)
Sensor Shield V5 = 300р.
Общий итог: 3452р.
И ещё немного фоточек
p.s. баянометр ругается на лигу инженеров
А я свой манипулятор традиционно из говна и палок делал =D
Все равно круто 🙂
Женщина и робот манипулятор? Блиин, ну почему я об этом думаю?
Набор от амперки — 3000р, ардуина на али — 200
Во-первых, здравствуйте, у нас пол страны барыг, которые так делают абсолютно со всем.
Во-вторых, у амперки ориганалы в отличии от али, на счет клавиатуры конечно не уверен.
а в чем смысл покупки оригинала если копия не уступает по функционалу, а очень часто имеет более приятные плюшки.
набор от амперки был приобретен в самом начале иучения ардуино, т.к. содержал в наборе книжку с полезной инфой и опытами которые с этим набором можно провести. После того, как был получен навык с этим набором, стал покупать только на али. И могу точно сказать, что копия уступает оригиналу.
Скажи в чем уступает то
Мега за доллар? Да за доллар можно килограмм природного кремния купить!
смех без причины — признак дурачины. У меня есть китайские uno и амперские, у амперки оригинал инфа 100тка, так что сиди смейся опёздол.
Ты забавный, но за слово «опёздол», я даже плюсик поставлю 😀
сейчас оно тебе посоветует.
диванная аналитика, она такая.
Наборы у амперки полное говно, за пару кнопок светодиодов и резисторы они просят от 3к, при этом на али находил такие наборы за 150-350р, а за 3к можно набрать целую тонну датчиков сенсоров дисплеев итд.
Даже наборы с али стоят в пределах 500 за мелкий и 1000-1200 за огромный.
ну можно начать с того, что покупать ардуино на али-покупать кота в мешке. 100% подделка. У амперки же только итальянский оригинал. Отсюда и цены. Если только начинаешь работать с ардуино-лучше брать оригинал. Он точно будет работать. А когда придрочишься научишься можно брать уже и за 100 рублей плату.
Итальянский оригинал, блять.
Вот самая дешевая с али, делает все тоже самое что и твой итальянский оригинал, блять.
У меня арду с алика с надписью, что сделано в Италии и с «сопажком» 🙂 Чудеса. )
Штук 10 ардуин с али, еще столько esp8266 и знаешь сколько плат не завелось ?
0 ровно 0 плат не завелось, все работает, схематика у них простейшая и ломаться там нечему !
Твой ответ из разряда аудиофильских кабелей.
Ну да, расскажи это FTDI китайскому который могут поставить в arduino.
В целом риск конечно малый и выгода перевешивает, для себя покупаю в Китае. Но покупая, к примеру в подарок, выберу набор Амперки.
Если учесть что почти ВСЕ arduino От китайцев имею CH340.
Если учесть, что все китайца такие честные и правильные. Даже имея шанс 1/1000, лично мне не хотелось бы дарить кирпич.
А насчет электроники у них все пока в порядке. Целый ящик забит деталями с али, и шанс, что попадется брак крайне мал, т.к. случался всего 1 раз и то с диодом.
Да даже со шмотками. Баба на фотке — дура не знающая про обручи. Или она реально думала что на 1 фотке ткая задница у модели? 🙂 Ну и цвета на 1 фотке явно подкручены
Сейчас сам закупаюсь на али, но если бы я начал с китайской ардуины, то так бы и забросил это дело. Там только с дровами разобраться. еще не запустил, а уже геморой. Я бы советовал начинать с оригинала, а потом уже все равно. Хоть голые МК программируй
ничего не знал про ардуино, купил самый дешевый китайский клон.
10 минут ушло на поиск установку драйверов+ немного еботни с ВИН10 х64, там надо отключать проверку подписи драйвера, а потом все как по маслу.
Скажи ты же ведь в курсе, что андуино это опенсорс проект (точнее ардуино это зарегистрированый товарный знак, но в целом проект опенсорс) поэтому любой может совершенно легально взять документацию с сайта ардуины и по ней напечатать свою плату (опять же для полной юридической чистоты она должна называться по другому). При этом плата сделанная на заводе в италии и плата сделанная на заводе в китае отличается чуть менее чем ничем (так как по одной и той же документации её делали, отличается только вкосовщина типа шелкографии и цвета паяльной маски). Внимание вопрос, что такого пиздатого в оригинальной плате, раз за нее надо переплачивать в 10 раз? Тем что в комплекте идут проводочки (70 рублей за упаковку из того же китая) и набор датчиков (с датчиками сложнее их 100500 видов, но на 2.5к с али такую кучу датчиков можно заказать, что может сил не хватить все датчики освоить)
PS сейчас ради интереса зашел посмотреть что же входит в набор за 3к который тут обсуждается. 12 светодиодов, два десятка резисторов, несколько кнопок, переменный резистор и пучок проводов с бредбордом. Не сморю, все это конечно полезное и нужное. Но мне одному кажется, что чего то в этот набор сильно не доложили на эти 3к.
Вот здесь вы немного ошибаетесь. Я тоже долгое время думал, что плата с китая ничем не отличается от оригинала, но это не так. Посмотри на оригинал, а потом на свою ардуину. На оригинал, затем снова на свою ардуину. Видишь разницу? Да, сама часть с МК мало чем отличается (только формфактор МК), но если приглядеться, то мы увидим, что различаются части, ответственные за программирование. В оригинале стоит другой МК, а в китайской подделке, которую ты хвалишь. Да да подделке. Я знаю про опенсорс, но тут другая хрень. Они не просто сделали подобную плату, а удешевили ее. Вместо МК поставили TTL конвертер. И ты спросишь: Ну и что? А вот что. Оригинал работает из коробки только из-за этого. Дрова не нужны. Из за этого же можно шить с телефона/планшета/тапка
З.Ы. Что вы так набросились на меня. Я сказал свое мнение об оригинале. Я всего лишь сказал, что оригинал удобнее, но и с китаем все то же самое можно делать. Ну а для новичка лучьше брать наборы амперки. Там все очень понятно изложено да и поддержка отличная.
А что мы? Мы тоже высказываем свое мнение. Причем замечу, что я высказываю свое мнение тезисно, хотя в голове оно сформулировано гораздо короче, в виде местоимения и пары матерных слов.
Чесно говоря я хз какой там преобразователь стоит на плате, я после покупки воткнул плату в USB, установил Arduino IDE, в настройках выбрал свою плату и нажал загрузить скетч. О каких ты драйверах там говоришь я хз. Но предположим некоторе китайцы действительно требуют драйвера. Если для тебя установка драйверов такая сложная операция, что ты готов за это переплатить 2к то мало понятно зачем тебе ардуина.
И пойми меня правильно, я не против самой компании атмелка. Я сам регулярно затариваюсь в чип и дип, когда мне нужно что-то вот прям сейчас и мне не важно, что я за скорость переплачу. Я не против переплачивать за красивую упаковку с картинками если ты покупаешь вещь в подарок. Но я категорически против таких как ты, которые приходят и рассказывают, что если вы купите у китайцев то у вас ничего работать не будет, или работать будет не так и её придется дорабатывать напильником. Одна из причин такой популярности ардуины это её относительно низкая цена, поэтому её можно пихать во все. То есть купил у китайцев ящик за копейки и тыкаешь её во все. Если покупать по ценам атмелки это не возможно. За те деньги которые они просят ты с каждой платы будешь пылинки сдувать. А вот китайские платы с этим велеколепно справляются. Они работают, они стоят недорого, что еще для счастья надо?
И по поводу подделок, ты же понимаешь что опенсорс не запрещает форкать.
Я сам если что закупаюсь в Китае, и ни разу не против китайских штук. А вам лишь бы срач затеять. Я всего лишь написал, что для начала оригинал удобнее, а потом уже не важно. Но вы естессно подумали, что я против китайских ардуино.
Момент удобнее, я опустил из рассмотрения, так как на мой взгляд для начинающего полезнее взять более полный набор с кучей всякой разной переферии (да хотя бы те же резисторы упаковка резисторов из 30 номиналов по 10 штук каждого покрывающая 90% потребностей начинающего стоит 100р на али, 2 номинала от атмелки кажутся насмешкой). Опять же на мой взгляд в базовый набор ардуины просто нужен экран потому, что без него очень ограничены возможности по взаимодействию с устройством (еще 200р за экран с кнопочками), еще 80р на упаковку светодиодов (5 разных цветов по 20 штук). проводов (3*80 папа-папа, мама-мама, папа-мама на все случаи жизни). И дальше датчиков по вкусу, в оставшуюся сумму уместится GPS, датчики давления/температуры/влажности, RFID, блютус, реле и т д. И от такого набора мне кажется толку будет в разы больше чем от набора от атмелки (я честно сказать хз что кроме моргания светодиодом из того работа можно полезного собрать). Но возможно кому то действительно вместо кучи датчиков будет убобнее иметь бумажную инструкцию. Поэтому ладно, пускай кому то будет убобнее с бумажкой. А вот с того момента как ты начал говорить «ко-ко-ко подделка, ко-ко-ко оригинальная, ко-ко-ко точно работает» я уже категорически не согласен.
Робот-манипулятор на Arduino
Создаем робот-манипулятор с использованием дальномера, реализуем подсветку.
Резать основание будем из акрила. В качестве двигателей используем сервопривода.
Общее описание проекта робота-манипулятора
В проекте использовано 6 серводвигателей. Для механической части использован акрил толщиной 2 миллиметра. В качестве штатива пригодилось основание от диско-шара (один из двигателей вмонтирован внутрь). Также использован ультразвуковой датчик расстояния и светодиод диаметром 10 мм.
Для управления роботом используется Arduino плата питания. Сам источник питания — блок питания компьютера.
В проекте изложены исчерпывающие пояснения по разработке робо-руки. Отдельно рассмотрены вопросы питания разработанной конструкции.
Основные узлы для проекта манипулятора
Давайте начнем разработку. Вам понадобятся:
- 6 серводвигателей (я использовал 2 модели mg946, 2 mg995, 2 futuba s3003 (mg995/mg946 по характеристикам лучше, чем futuba s3003, но последние намного дешевле);
- акрил толщиной 2 миллиметра (и небольшой кусок толщиной 4 мм);
- ультразвуковой датчик расстояния hc-sr04;
- светодиды 10 мм (цвет — на ваше усмотрение);
- штатив (используется в качестве основания);
- схват аллюминиевый (стоит около 10-15 долларов).
- Плата Arduino Uno (в проекте использована самодельная плата, которая полностью аналогична Arduino);
- плата питания (вам придется ее сделать самим, к этому вопросу мы вернемся позже, он требует отдельного внимания);
- блок питания (в данном случае используется блок питания компьютера);
- компьютер для программирования вашего манипулятора (если вы используете для программирования Arduino, значит, среда Arduino IDE)
Конечно же, вам пригодятся кабели и некоторые базовые инструменты вроде отверток и т.п. Теперь мы можем перейти к конструированию.
Сборка механической части
Перед началом разработки механической части манипулятора, стоит отметить, что чертежей у меня нет. Все узлы делались «на коленке». Но принцип очень простой. У вас есть два звена из акрила, между которыми надо установить серводвигатели. И другие два звенья. Тоже для установки двигателей. Ну и сам схват. Подобный схват проще всего купить в интеренете. Практически все устанавливается с помощью винтов.
Длина первой части около 19 см; второй — около 17.5; длина переднего звена около 5.5 см. Остальные габариты подбирайте в соответсвии с размерами вашего проекта. В принципе, размеры остальных узлов не так важны.
Механическая рука должна обеспечивать угол поворота 180 градусов в основании. Так что мы должны установить снизу серводвигатель. В данном случае он устанавливается в тот самый диско-шар. В вашем случае это может быть любой подходящий бокс. Робот устанавливается на этот серводвигатель. Можно, как это показано на рисунке, установить дополнительное металлическое кольцо-фланец. Можно обойтись и без него.
Для установки ультразвукового датчика, используется акрил толщиной 2 мм. Тут же снизу можно установить светодиод.
Детально объяснить как именно сконструировать подобный манипулятор сложно. Многое зависит от тех узлов и частей, которые есть у вас в наличии или вы приобретаете. Например, если габариты ваших сервоприводов отличаются, звенья арма из акрила тоже изменятся. Если изменятся габариты, калибровка манипулятора тоже будет отличаться.
Вам точно придется после завершения разработки механической части манипулятора удлинить кабели серводвигателей. Для этих целей в данном проекте использовались провода из интернет-кабеля. Для того, чтобы все это имело вид, не поленитесь и установите на свободные концы удлиненных кабелей переходники — мама или папа, в зависимости от выходов вашей платы Arduino, шилда или источника питания.
После сборки механической части, мы можем перейти к «мозгам» нашего манипулятора.
Схват манипулятора
Для установки схвата вам понадобится серводвигатель и несколько винтов.
Итак, что именно необходимо сделать.
Берете качалку от сервы и укорачиваете, пока она не подойдет к вашему схвату. После этого закручиваете два маленьких винта.
После установки сервы, проворачиваете ее в крайнее левое положение и сжимаете губки схвата.
Теперь можно установить серву на 4 болта. При этом следите, чтобы двигатель был все так же в крайнем левом положении, а губки схвата закрыты.
Можно подключить сервопривод к плате Arduino и проверить работоспособность схвата.
Учтите, что могут возникнуть проблемы с работой схвата, если болты/винты слишком сильно затянуты.
Добавление подсветки на манипулятор
Можно сделать ваш проект ярче, добавив на него подсветку. Для этого использовались светодиоды. Делается несложно, а в темноте выглядит очень эффектно.
Места для установки светодиодов зависят от вашего креатива и фантазии.
Электросхема
Можно использовать вместо резистора R1 потенциометр на 100 кОм для регулировки яркости вручную. В качестве сопротивлени R2 использовались резисторы на 118 Ом.
Перечень основных узлов, которые использовались:
- R1 — резистор на 100 кОм
- R2 — резистор на 118 Ом
- Транзистор bc547
- Фоторезистор
- 7 светодиодов
- Переключатель
- Подключение к плате Arduino
В качестве микроконтроллера использовалась плата Arduino. В качестве питания использовался блок питания от персонального компьютера. Подключив мультиметр к красному и черному кабелям, вы увидите 5 вольт (которые используются для серводвигателей и ультразвукового датчика расстояния). Желтый и черный дадут вам 12 вольт (для Arduino). Делаем 5 коннекторов для сервомоторов, параллельно подключаем позитивные к 5 В, а негативные — к земле. Аналогично с датчиком расстояния.
После этого подключите оставшиеся коннекторы (по одному с каждой сервы и два с дальномера) к распаянной нами плате и Arduino. При этом не забудьте в программе в дальнейшем корректно указать пины, которые вы использовали.
Кроме того, на плате питания был установлен светодиод-индикатор питания. Реализуется это несложно. Дополнительно использовался резистор на 100 Ом между 5 В и землей.
10 миллиметровый светодиод на роботе тоже подключен к Arduino. Резистор на 100 Ом идет от 13 пина к к позитивной ноге светодиода. Негативный — к земле. В программе его можно отключить.
Для 6 серводвигателей использовано 6 коннекторов, так как 2 серводвигателя снизу используют одинаковый сигнал управления. Соответствующие проводники соединяются и подключаются к одному пину.
Повторюсь, что в качестве питания используется блок питания от персонального компьютера. Либо, конечно, вы можете приобрести отдельный источник питания. Но с учетом, того, что у нас 6 приводов, каждый из которых может потреблять около 2 А, подобный мощный блок питания обойдется недешево.
Обратите внимание, что коннекторы от серв подключаются к ШИМ-выходам Arduino. Возле каждого такого пина на плате есть условное обозначение
. Ультразвуковой датчик расттояния можно подключить к пинам 6, 7. Светодиод — к 13 пину и земле. Это все пины, которые нам понадобятся.
Теперь мы можем перейти к программированию Arduino.
Перед тем как подключить плату через usb к компьютеру, убедитесь, что вы отключили питание. Когда будете тестировать программу, также отключайте питание вашей робо-руки. Если питание не выключить, Arduino получит 5 вольт от usb и 12 вольт от блока питания. Соответственно, мощность от usb перекинется к источнику питания и он немного «просядет».
На схеме подключения видно, что были добавлены потенциометры для управления сервами. Потенциометры не являются обязательным звеном, но приведенный код не будет работать без них. Потенциометры можно подключить к пинам 0,1,2,3 и 4.
Программирование и первый запуск
Для управления использовано 5 потенциометров (вполне можно заменить это на 1 потенциометр и два джойстика). Схема подключения с потенциометрами приведена в предыдущей части. Скетч для Arduino находится здесь.
Снизу представлены несколько видео робота-манипулятора в работе. Надеюсь, вам понравится.
На видео сверху представлены последние модификации арма. Пришлось немного изменить конструкцию и заменить несколько деталей. Оказалось, что сервы futuba s3003 слабоваты. Их получилось использовать только для схвата или поворота руки. Так что виесто них были установлены mg995. Ну а mg946 вообще будут отличным вариантом.
Программа управления и пояснения к ней
// управляются привода с помощью переменных резисторов — потенциометров.
int potpin = 0; // аналоговый пин для подключения потенциометра
int val; // переменная для считывания данных с аналогового пина
val = analogRead(potpin); // считывает значение потенциометра (значение между 0 и 1023)
val = map(val, 0, 1023, 0, 179); // масштабирует полученное значение для использования с сервами (получаем значение в диапазоне от 0 до 180)
myservo1.write(val); // выводит серву в позицию в соответствии с рассчитанным значением
delay(15); // ждет, пока серводвигатель выйдет в заданное положение
val = analogRead(potpin1); // серва 2 на аналоговом пине 1
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin2); // серва 3 на аналоговом пине 2
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin3); // серва 4 на аналоговом пине 3
val = map(val, 0, 1023, 0, 179);
val = analogRead(potpin4); //серва 5 на аналоговом пине 4
val = map(val, 0, 1023, 0, 179);
Скетч с использованием ультразвукового датчика расстояния
Это, наверное, одна из самых эффектных частей проекта. На манипулятор устанавливается датчик расстояния, который реагирует на препятствия вокруг.
Основные пояснения к коду представлены ниже
#define trigPin 7
#define echoPin 6
Мы добавили в наш код серводвигатели, светодиод и датчик расстояния. Здесь изменять ничего не надо.
Следующий кусок кода:
Мы присвоили всем 5-ти сигналам (для 6 приводов) названия (могут быть любыми)
Интересный робот-манипулятор на Arduino
Речь пойдет о роботе-манипуляторе, на котором используется дальномер. Еще робот имеет подсветку. Всего робот работает на 6-ти серводвигателях. Для создания механической части использовался акрил толщиной два миллиметра. Для изготовления штатива было взято основание от диско-шара, при этом один мотор строен прямо в него.
Робот работает на плате Arduino. В качестве источника питания используется компьютерный блок.
Шаг первый. Собираем механическую часть робота
Механическая часть собирается очень просто. Два куска акрила нужно соединить с помощью серводвигателя. Другие два звена соединяются аналогичным образом. Что касается схвата, то его лучше всего купить через интернет. Все элементы крепятся с помощью винтов.
Длина первой части составляет порядка 19 см, а второй примерно 17.5 см. Переднее звено имеет длину 5.5 см. Что касается остальных элементов, то их размеры выбираются на личное усмотрение.
Угол поворота в основании механической руки должен составлять 180 градусов, поэтому снизу нужно установить серводвигатель. В нашем случае его нужно установить в диско-шар. Робот же устанавливается уже на серводвигатель.
Для установки ультразвукового датчика понадобится кусок акрила толщиной 2 см.
Чтобы установить схват будет нужно несколько винтов и серводвигатель. Нужно взять качалку от серводвигателя и укорачивать ее до тех пор, пока она не подойдет ко схвату. Затем можно закрутить два маленьких винта. После установки серводвигатель нужно повернуть в крайнее левое положение и свести губки захвата.
Теперь серводвигатель крепится на 4 болта, при этом важно следить, чтобы он находился в крайнем левом положении, а губы были сведены.
Теперь сервпривод можно подключить к плате и проверить, работает ли схват.
Шаг третий. Подключение электронной части
Основным контроллером для робота является плата Arduino. В качестве источника питания используется компьютерный блок, на его выходах нужно найти напряжение 5 Вольт. Оно должно быть, если замерить мультиметром напряжение на красном и черном проводе. Это напряжение нужно для питания серводвигателей и датчика расстояния. Желтый и черный провод блока выдает уже 12 Вольт, они нужны для работы Arduino.
Для сервомоторов нужно сделать пять коннекторов. К позитивным подключаем 5В, а негативные к земле. Аналогичным образом подключается и датчик расстояния.
Еще на плате имеется светодиодный индикатор питания. Для его подключения используется резистор 100 Ом между +5В и землей.
». Что касается ультразвукового датчика расстояния, то его можно подключить к пинам 6 и 7. Светодиод подключается к земле и 13-му пину.
Теперь можно приступать к программированию. Перед тем как подключаться через USB, нужно убедиться, что питание полностью отключено. При тестировании программы питание робота тоже нужно отключать. Если это не сделать, контроллер получить 5В от USB и 12В от блока питания.
На схеме можно увидеть, что для управления серводвигателями были добавлены потенциометры. Они не являются необходимой составляющей робота, но без них предложенный код работать не будет. Потенциометры подключаются к пинам 0,1,2,3 и 4.
На схеме есть резистор R1, его можно заменить потенциометром на 100 кОм. Это позволит регулировать яркость вручную. Что касается резисторов R2, то их номинал 118 Ом.
Вот перечень основных узлов, которые применялись:
— 7 светодиодов;
— R2 — резистор на 118 Ом;
— R1 — резистор на 100 кОм;
— переключатель;
— фоторезистор;
— транзистор bc547.
Шаг четвертый. Программирование и первый запуск робота
Чтобы управлять роботом, было использовано 5 потенциометров. Вполне реально заменить такую схему на один потенциометр и два джойстика. Как подключить потенциометр, было показано в предыдущем шаге. После установки скеча робота можно испытать.
Первые испытания робота показали, что установленные серводвигатели типа futuba s3003 оказались слабыми для робота. Их можно применять лишь для поворота руки или для схвата. Вместо них автор установил двигатели mg995. Идеальным вариантом будут двигатели типа mg946.