Четвероногий робот на базе Arduino.

Представляем простой мини проект на Ардуино для начинающих — Робот паук с управлением от ИК пульта. Для изготовления данного робота своими руками потребуется минимум деталей и инструментов. В статье вы сможете узнать список необходимых материалов и инструментов для его изготовления, также мы разместили подробную инструкцию со схемами сборки, чертежи деталей и готовый скетч.

Видео. Робот паук на пульте управления

Основание робота состоит из двух фанерок, склеенных термопистолетом, лапы паука выполнены из стальной проволоки диаметром 2мм. Для приема сигнала от пульта ДУ используется IR приемник, для движения используются три сервомотора. Питание осуществляется от батарейки «Крона» 9V. В данном примере используется микроконтроллер Robotdyn UNO , но можно использовать любую плату Arduino.

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

Для этого проекта нам потребуется:

  • плата Arduino UNO;
  • ИК приемник;
  • любой пульт ДУ;
  • фанера толщиной 3 — 4 мм;
  • проволока диаметром 1,5 — 2 мм;
  • три сервопривода;
  • батарейка на 9 В;
  • провода и изолента.

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

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


Фото. Устройство робота паука с управлением от IR пульта

Трехпиновые разъемы от сервоприводов мы отрезали, один из них используется для подключения IR приемника к Ардуино. Дощечки из фанеры склеиваются между собой при помощи термопистолета, который обеспечивает надежное крепление, при этом не требуется долго ждать — пластмасса затвердевает в течении нескольких минут. Сервоприводы и разъем для IR приемника можно приклеить к корпусу клеем.

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

Сборка робота паука на ИК управлении

Скачать бесплатно проект

1. выпиливаем две дощечки необходимого размера

2. склеиваем дощечки между собой термопистолетом

3. срезаем с сервоприводов провода с разъемами

4. склеиваем между собой три сервопривода

5. спаиваем между собой провода от сервоприводов

6. припаиваем к одному разъему провода с контактами

5. приклеиваем сервоприводы к корпусу робота

6. приклеиваем к корпусу разъем для IR приемника

7. отрезаем стальную проволоку необходимой длины

8. загибаем проволоку для лап согласно чертежу

9. приклеиваем к лапам рычаги от сервомашинок

10. подбираем для своего пульта IR приемник

11. указываем команды от пульта в файле ir_command_codes.h

12. собираем робота паука с Arduino UNO

13. тестируем робота паука + ИК управление


Любые вопросы по изготовлению и настройке данного проекта вы можете задать в комментариях к этой записи или на нашем канале YouTube в комментариях под видеороликом к мини проекту «Arduino робот паук + ИК управление».

Также часто читают:

Четырехногий робот-паук создан для демонстрации работы сервомашинок под управлением контроллера Arduino (для кружка робототехники).

У робота два режима:

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

Использовались сервомашинки Turnigy TGY-9025MG металлическим редуктором.

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

Корпус был сделан из упаковочного материала для компов. Для сервомашинок требуется отдельное питание. В качестве источника питания используется Li-po батарея Turnigy 2S 1600 mAh.

Вот вид сверху и снизу робота в процессе сборки.

Для управления сервоприводом в Arduino имеется стандартная библиотека Servo. На платах, отличных от Mega, использование библиотеки отключает возможность использования analogWrite() (PWM) на пинах 9 и 10 (вне зависимости подключены к этим пинам сервы или нет). На платах Mega, до 12 серв могут использоваться без влияния на функциональность PWM, но использование от 12 до 23 сервомашинок отключит PWM на пинах 11 и 12. Cервопривод подключается 3-мя проводами: питание, земля и сигнальный. Питание – красный провод. Черный(или коричневый) провод – земля подключается к GND выводу Arduino, сигнальный(оранжевый/желтый/белый) провод подключается к цифровому выводу контроллера Arduino. Будем использовать выводы 5,6,7,8 Arduino.

Напряжение выдаваемое батареей 7.4 – 8.4 В. Т.к. для питания сервоприводов необходимо напряжение 4.8 – 6.0 В будем использовать стабилизатор напряжения 5В, собранный на микросхеме L7805. Одна микросхема постоянно перегревалась, проблема решилась установкой параллельно двух микросхем L7805.

Для обнаружения препятствий будем использовать ультразвуковой датчик HC-SR04, который позволяет определять расстояние до объекта в диапазоне от 2 до 500 см с точностью 0.3 см. Если расстояние до препятствия меньше 10 см, робот делает поворот и движется дальше вперед.

В качестве пульта используется пульт lg, приемник ИК-сигналов - TSOP31238(1-GND, 2 - +5V, 3-OUT).

Схема электрическая

И весь робот в сборе (плата Arduino питается от батарейки Крона).

Приступим к написанию скетча

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

Например движение вперед состоит из следующих шагов:

  1. левая передняя нога вперед;
  2. правая передняя нога вперед;
  3. левая задняя нога вперед;
  4. правая задняя нога вперед;
  5. четыре ноги вместе назад (что приведет к перетаскиванию тела робота-паука).

Данные для угла поворота каждой сервы на каждом шаге для каждого движения робота-паука хранятся в трехмерном массиве arr_pos.

Int arr_pos={ { // forward {90,90,90,90},{45,90,90,90},{45,135,90,90}, {45,135,45,90},{45,135,45,135},{135,45,135,45} }, { // back {90,90,90,90},{90,90,90,45},{90,90,135,45}, {90,45,135,45},{135,45,135,45},{45,135,45,135} }, { // circle_left {90,90,90,90},{0,90,90,90},{0,0,90,90}, {0,0,0,90},{0,0,0,0},{180,180,180,180} }, { // circle_right {90,90,90,90},{180,90,90,90},{180,180,90,90}, {180,180,180,90},{180,180,180,180},{0,0,0,0} } }; int pos_stop={{90,90,90,90}};

Процедура course(int variant)реализует перемещения сервоприводов для каждого шага следующих движений робота-паука: вперед, назад, поворота по часовой стрелке и поворота против часовой стрелки.

Void course(int variant) { int i=0; for(i=1;i<6;i++) { if(arr_pos[i]!=arr_pos) {myservo11.write(arr_pos[i]);} if(arr_pos[i]!=arr_pos) {myservo12.write(arr_pos[i]);} if(arr_pos[i]!=arr_pos) {myservo13.write(arr_pos[i]);} if(arr_pos[i]!=arr_pos) {myservo14.write(arr_pos[i]);} delay(200); } }

Для остановки, засыпания и пробуждения робота-паука существует процедура go_hor_all()

Void go_hor_all() { myservo11.write(pos_stop); myservo12.write(pos_stop); myservo13.write(pos_stop); myservo14.write(pos_stop); delay(500); }

Реализуем простое ИК-управление с пульта. Выбираем 7 клавиш, данные о кодах заносим в скетч в виде констант. И в цикле loop() реализуем логику выбора движений робота-паука при нажатии клавиш ИК-пульта. Программа получения кода get_ir_kod() вызывается по прерыванию CHANGE на входе 2. Используется Arduino библиотека IRremote.

К режиму управления робота с ИК-пульта добавим автономный режим. В автономном режиме робот будет двигаться вперед, при достижении препятствия робот будет делать поворот и опять двигаться вперед. Ультразвуковой датчик HC-SR04 позволяет определять расстояние до объекта в диапазоне от 2 до 500 см с точностью 0.3 см. Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе. Если расстояние до препятствия меньше 10 см, робот делает поворот и движется дальше вперед. Переход из режима ИК-управления в автономный режим производим нажатием клавиш "желтая" и "синяя".

Для работы с датчиком HC-SR04 будем использовать Arduino библиотеку Ultrasonic. Конструктор Ultrasonic принимает два параметра - номера пинов к которым подключены выводы Trig и Echo:

#include "Ultrasonic.h" // trig -12, echo - 13 Ultrasonic ultrasonic(12, 13);

Получается такой код

// коды клавиш ИК пульта // lg 6710v00090d #define FORWARD 32 // pr + #define BACK 33 // pr - #define CIRCLE_LEFT 17 // vol- #define CIRCLE_RIGHT 16 // vol+ #define STOP 54 // зеленая #define SLEEP 55 // красная #define AWAKE 37 // ок #define EXT 50 // желтая #define AUTO 52 // синяя... .... ..... void loop() { delay(1000); if(ext==0) { float dist_cm = ultrasonic.Ranging(CM); Serial.print("dist_cm=");Serial.println(dist_cm); if(dist_cm<10.0) ir_kod=CIRCLE_LEFT; else ir_kod=FORWARD; } if(ir_kod!=0) { Serial.print("ir_kod=");Serial.println(ir_kod); switch(ir_kod) { case FORWARD: // вперед course(1); Serial.print("forward\n"); break; case BACK: // назад course(2); Serial.print("back\n"); break; case CIRCLE_LEFT: // вращение влево course(3); Serial.print("circle_left\n"); break; case CIRCLE_RIGHT: // вращение вправо Serial.print("circle_right\n"); course(4); break; case STOP: // остановка ir_kod=0; go_hor_all(); Serial.print("pause\n"); break; case SLEEP: // засыпание ir_kod=0; go_hor_all(); myservo11.detach();myservo12.detach(); myservo13.detach();myservo14.detach(); digitalWrite(13,LOW); Serial.print("sleep\n"); break; case AWAKE: // пробуждение ir_kod=0; myservo11.attach(5);myservo12.attach(6); myservo13.attach(7);myservo14.attach(8); digitalWrite(13,HIGH); go_hor_all(); Serial.print("awake\n"); break; case AUTO: // режим автономный //ir_kod=FORWARD; ext=0; myservo11.attach(5);myservo12.attach(6); myservo13.attach(7);myservo14.attach(8); Serial.print("auto\n"); break; default: break; } } } // получить код переданный с ИК пульта void get_ir_kod() { detachInterrupt(0); // отключить прерывание 0 if (irrecv.decode(&results)) { //Serial.println(results.value); if (results.value > 0 && results.value < 0xFFFFFFFF) { ir_dt = results.value; if(ir_dt==EXT && ext==0) {ir_kod = SLEEP;ext=1;} else if(ext==1) { if(ir_dt==FORWARD || ir_dt==BACK || ir_dt==CIRCLE_LEFT || ir_dt==CIRCLE_RIGHT || ir_dt==STOP || ir_dt==SLEEP || ir_dt==AWAKE || ir_dt==AUTO) ir_kod = ir_dt; } else ; } irrecv.resume(); } attachInterrupt(0, get_ir_kod, CHANGE); }

Архив со скетчем и библиотеками Ultrasonic и IRremote можно скачать ниже


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

Материалы и инструменты для изготовления:
- набор лезвий;
- термоклей;
- дремель (нужны очень тонкие сверла);
- винтоверт;
- дрель со сверлом 7/32;
- крестообразная отвертка;
- лезвие;
- отсек для батареек;
- макетная плата.


Из электроники понадобится:
- восемь микросервоприводов с кронштейнами;
- 6 батареек типа АА и прищепка;
- много перемычек и контактных разъемов.

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

И запчастей необходим набор Fischertechnik.

Процесс изготовления робота. :

Шаг первый. Создаем каркас робота
Чтобы изготовить каркас понадобится набор Fischertechnik. Как он должен выглядеть, можно увидеть на фото. Для создания каркаса нужны три высоких «кирпичика», между ними должно иметься четыре отверстия. Конкретно в этой самоделке будет использоваться элемент с 11-ю вырезами. Важно убедится в том, чтобы все сервоприводы были рабочими.








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

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








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

Конкретно в данном случае винт сервопривода должен выступать над пластиком, благодаря этому он будет подвижным. В корпусе второго сервопривода нужно проделать углубление под головку винта.
Что










Что-бы соединить два сервопривода используется горячий клей.

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






После того как ноги будут собраны и подсоединены к роботу, конструкция должна выглядеть так, как на фото.


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


Шаг шестой. Макетная плата
Нужно вытащить все 30 перемычек. Далее все нужно соединить проводами так, как указано на схеме. На каждом сервоприводе есть три контакта, один отвечает за заземление, через один подается питание, а еще один нужен для контроля двигателя.

Контакты сервопривода Vcc и GND нужно соединить с контактами макета Vcc и GND. Также к каналам макета GND и Vcc подключается источник питания мощностью 7.5В.

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



Шаг седьмой. Настраиваем сервоприводы.
Теперь настало время создать программный код для робота. В первую очередь на Arduino нужно создать новый проект, чтобы синхронизировать двигатели. Как должен выглядеть код, можно увидеть на фото. Благодаря этому коду происходит выравнивание ног робота.


Чтобы паук мог подняться, нужно создать еще один проект под названием Up и Down. Благодаря этому коду ноги паука смогут двигаться вверх и вниз.


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


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

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

Прошивка: (скачиваний: 152)

Julian Horsey собрал этого симпатичного робота-паука на базе Arduino (контроллер Arduino Mega). В конструкции задействовано всего два электродвигателя, которые управляются релейными модулями H-bridge, что позволяет паучку двигаться вперед, назад или медленно поворачиваться за счет изменения направления вращения электромоторов. Управление - со смартфона через Bluetooth. Паук движется сходно с танком или роботом, маневрами которого можно управлять за счет разной скорости вращения двух его колес.

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

Шаг 4. Настройка смартфона

Управлять по Bluetooth очень просто. Чтобы посылать команды роботу, Julian Horsey пользовался программой Bluetooth Terminal Programm . Затем перешел на использование Arduino Bluetooth Controller . Вторая программа позволяет раскидать команды по клавишам, как в игровом пульте ДУ. Arduiono преобразует эти нажатия в соответствующие сигналы на выходе. Если вам требуется большая гибкость управления, можете попробовать MIT App Inventor system , но автор робота этого делать не пробовал.

Шаг 5. Все готово

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