Четирикрак робот, базиран на Arduino. Направи си сам робот Arduino Какъв вид роботи могат да бъдат сглобени от arduino

Резултатът е доста забавен робот, който може да види препятствията пред себе си, да анализира ситуацията и след това, само като избере най-добрия маршрут, отива по-нататък. Роботът се оказа много маневрен. Той е в състояние да се завърти на 180 градуса, а ъгълът на въртене е 45 и 90 градуса. Като основен контролер авторът използва Iteaduino, който е аналог на Arduino.

Материали и инструменти за направата на робот:
- микроконтролер (Arduino или подобен Iteaduino);
- ултразвуков сензор;
- държач за батерии;
- китайски играчки за създаване на междуосие (можете да закупите готови);
- резачки за тел;
- лепило;
- проводници;
- двигатели;
- ПДЧ;
- прободен трион;
- транзистори (D882P).

Процес на производство на роботи:

Стъпка първа. Създаване на междуосие
За да създаде междуосие, авторът купи две китайски играчки. Въпреки това, не е нужно да се притеснявате за това, ако имате допълнителни пари, тъй като можете да закупите готова база. С помощта на резачки за тел автомобилите бяха разрязани на две части, за да образуват две задвижващи оси. След това тези части бяха залепени заедно. Въпреки това, в този случай можете да работите с поялник, пластмасата е перфектно запоена.

Когато избирате коли, най-добре е да вземете играчки с обикновени колела, тъй като според автора с шипове като неговите роботът скача много.

Има още един такъв момент, когато проводниците ще бъдат изведени от двигателите, на един от тях трябва да запомните да промените полярността.


Стъпка втора. Изработване на горния капак
Горният капак на робота е от фибран, като за целта може да се използва и дебел картон. В капака се вижда правоъгълен отвор, който трябва да бъде разположен така, че оста на сервото, което ще бъде вкарано в него, да е симетрично. Що се отнася до дупката в средата, през нея ще бъдат изведени проводници.


Стъпка трета. Робот пълнеж
Най-добре е да използвате отделно захранване за свързване на шасито, тъй като контролерът изисква 9V за захранване и само 3V за двигателите. По принцип държачите за батерии вече са вградени в шасито на такива машини, просто трябва да бъдат свързани паралелно.








Двигателите са свързани към контролера с помощта на транзистори от типа D882 P. Те са извадени от стария контролен панел на машината. Най-добре е, разбира се, да използвате силови транзистори от типа TIP120B, но авторът е избрал просто според подходящи характеристики. Цялата електронна част е свързана по посочената схема.

След фърмуера на робота, той ще бъде готов за тестване. За да може роботът да има време да се обърне под определен ъгъл, трябва да изберете правилното време за работа на двигателите.

Що се отнася до сензорите, ултразвуковият трябва да бъде свързан към 7-ми цифров изход на микроконтролера. Сервомоторът е свързан към 3-ти цифров вход, основата на транзистора на левия двигател е свързана към 11-ия щифт, а основата на десния двигател към 10-ия.

Ако Krona се използва като захранване, тогава минусът е свързан към GND, а плюсът към VIN. Също така трябва да свържете емитера на транзистора и отрицателния контакт от захранването на шасито на робота към GND.

Здравейте. Тази статия е кратка история за това как направиробот техен ръце. Защо история, ще попитате? Всичко се дължи на факта, че за производството на такива занаятинеобходимо е да се използва значително количество знания, което е много трудно да се представи в една статия. Ще преминем през процеса на изграждане, ще надникнем в кода и в крайна сметка ще оживим създаването на Силиконовата долина. Съветвам ви да гледате видеото, за да имате представа какво трябва да се случи в крайна сметка.

Преди да продължите, моля, обърнете внимание на следното, което е в производството занаятиизползвал лазерен нож. Можете да откажете лазерен нож, ако имате достатъчно опит в работата с ръцете си. Точността е ключът към успешното завършване на проекта!

Стъпка 1: Как работи?

Роботът има 4 крака, с 3 сервопривода на всеки от тях, които му позволяват да движи крайниците си в 3 степени на свобода. Движи се с "пълзяща походка". Нека да е бавно, но едно от най-плавните.

Първо трябва да научите робота да се движи напред, назад, наляво и надясно, след това да добавите ултразвуков сензор, който ще помогне за откриване на препятствия / препятствия, а след това Bluetooth модул, благодарение на който управлението на робота ще достигне ново ниво.

Стъпка 2: Необходими части

скелетизработена от плексиглас с дебелина 2 мм.

Електронната част на домашния продукт ще се състои от:

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

  • Щит за серво управление;
  • захранване (в проекта е използван захранващ блок 5V 4A);

  • ултразвуков сензор;
  • hc 05 bluetooth модул;

За да направите щит, ще ви трябва:

  • платка (за предпочитане с общи линии (шини) на захранване и заземяване);
  • междуплаткови щифтови съединители - 30 бр.;
  • гнезда на платка - 36 бр.;

  • проводници.

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

  • Лазерен нож (или сръчни ръце);
  • Супер лепило;
  • Горещо лепило.

Стъпка 3: Скелет

Нека използваме графична програма, за да нарисуваме съставните части на скелета.

След това по всеки наличен начин изрязахме 30 части от бъдещия робот.

Стъпка 4: Сглобяване

След изрязване отстранете защитното хартиено покритие от плексигласа.

След това преминете към сглобяването на краката. Крепежни елементи, вградени в части от скелета. Всичко, което остава да се направи, е да се сглобят парчетата. Връзката е доста стегната, но за по-голяма надеждност можете да нанесете капка суперлепило върху крепежните елементи.

След това трябва да модифицирате сервоприводите (залепете винт срещу валовете на серво).

С това усъвършенстване ще направим робота по-стабилен. Усъвършенстването трябва да се извърши само за 8 сервопривода, останалите 4 ще бъдат прикрепени директно към тялото.

Прикрепяме краката към свързващия елемент (извита част), а той от своя страна към сервото на тялото.

Стъпка 5: Изработване на щита

Изработката на дъската е доста проста, ако следвате снимките, представени в стъпката.

Стъпка 6: Електроника

Фиксирайте серво щифтовете на arduino дъската. Щифтовете трябва да бъдат свързани в правилната последователност, в противен случай нищо няма да работи!

Стъпка 7: Програмиране

Време е да съживим Франкенщайн. Първо, заредете програмата legs_init и се уверете, че роботът е в позицията, показана на снимката. След това заредете quattro_test, за да видите дали роботът реагира на основни движения като напред, назад, наляво и надясно.

ВАЖНО: Трябва да добавите допълнителна библиотека към arduino IDE. Връзката към библиотеката е дадена по-долу:

Роботът трябва да направи 5 стъпки напред, 5 стъпки назад, да завие наляво на 90 градуса, да завие надясно на 90 градуса. Ако Франкенщайн прави всичко правилно, ние се движим в правилната посока.

П. С: монтирайте робота на чашата като стойка, така че всеки път да не го поставя в първоначалната точка. След като тестовете покажат нормалната работа на робота, можем да продължим тестването, като го поставим на земята/пода.

Стъпка 8: Обратна кинематика

Обратната кинематика е това, което всъщност управлява робота (ако не се интересувате от математическата страна на този проект и бързате да завършите проекта, можете да пропуснете тази стъпка, но знаейки какво задвижва робота, винаги ще бъде полезно).

С прости думи, обратната кинематика или накратко IK е „частта“ от тригонометричните уравнения, които определят позицията на острия край на крака, ъгъла на всяко серво и т.н., които в крайна сметка определят няколко предварителни настройки. Например дължината на всяка стъпка на робота или височината, на която ще се намира тялото по време на движение / почивка. Използвайки тези предварително дефинирани параметри, системата ще извлече количеството, с което всяко серво трябва да бъде преместено, за да управлява робота с дадени команди.

Те започват да изучават arduino, като създават прости роботи. Днес ще говоря за най-простия робот на arduino uno, който като куче ще следва ръката ви или всеки друг обект, който отразява инфрачервената светлина. Освен това този робот ще забавлява децата. Моят 3-годишен племенник с желание си играеше с робота :)

Ще започна с изброяване на частите, които ще са необходими при изграждането - Arduino UNO;

Инфрачервени далекомери;

- 3-волтови двигатели със скоростни кутии и колела;

- конектори за 3А батерии;

-батерия (ако няма достатъчно батерии);

- Реле за управление на двигатели;

Е, и други материали, които ще са необходими в процеса на създаване.
Първо правим основата. Реших да го направя от дърво. Изрязах дървена дъска по такъв начин, че моторите да седят перфектно в процепите


След това затягам двигателите с дървена дъска, завинтвайки тази шина

По-нататък в кутията поставих arduino, реле, мозъчна платка, далекомери и под основата на шасито въртящо се

Сега свързваме всичко според схемата

В края зареждаме следната скица в arduino:

Const int R = 13; // щифтове, към които са свързани IR далекомери const int L = 12; int двигател L = 9; // щифтове, към които е свързано релето int motorR = 11; int buttonState = 0; void setup() ( pinMode(R,INPUT); pinMode(L,INPUT); pinMode(motorR,OUTPUT); pinMode(motorL,OUTPUT); ) void loop() (( buttonState = digitalRead(L); if (buttonState) == HIGH)( digitalWrite(motorR,HIGH); ) else ( digitalWrite(motorR,LOW); ) ) (( buttonState = digitalRead(R); if (buttonState == HIGH)( digitalWrite(motorL,HIGH); ) else ( digitalWrite(motorL, LOW); ) ) ) )

Принципът на действие е много прост. Левият далекомер е отговорен за дясното колело, а десният за лявото

За да стане по-ясно, можете да гледате видео, което показва процеса на създаване и действието на робота

Този робот е много прост и всеки може да го направи. Това ще ви помогне да разберете как работят модули като релета и IR далекомери и как най-добре да ги използвате.

Надявам се, че ви е харесал този занаят, не забравяйте, че занаятите са готини!

Добър ден! Пред вас, скъпи, е арт робот, който може да рисува различни сферични или яйцевидни предмети с размери от 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;
  • щит JJRobots;

  • 2xA4988 драйвери за стъпкови двигатели;
  • Захранване 12V / 2A;
  • 11x M3 6 мм винтове;
  • 4x винтове M3 16mm;
  • 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-PORT в менюто "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, значи не сте инсталирали правилно разширенията. Архивирайте и внимателно следвайте инструкциите за инсталиране на разширения.

Това е всичко, благодаря за вниманието!)

Много е лесно да се правят различни коли с дистанционно управление, прости сензори и логика на Arduino. Следователно тази линия е невероятно популярна. Продават се много съвместими сензори и разширителни платки. Интернет е пълен с готови софтуерни библиотеки и проекти с отворен код за всички случаи. Почти всички въпроси, които ще имате в процеса на овладяване на Arduino, вече са зададени от някой и винаги ще намерите отговора.

Да започнем с нещо, а? Основният проблем е изборът на контролер. Има много ревизии на Arduino, както и клонинги на трети страни, изградени от тези ревизии. Ето може би двата най-интересни за нас класа:

  • Arduino Uno е най-добрият избор за начинаещ, най-простата, най-достъпната и най-разпространената платка. Базиран е на чип ATmega328 с тактова честота 16 MHz, 32 KB флаш памет, 2 KB RAM и 1 KB EEPROM. Uno има 14 цифрови входа/изхода, които могат да се използват за управление на сензори и серво и други устройства;
  • Arduino Mega / Mega 2560 е платка, която ще ви бъде полезна, когато знаете предварително, че проектът ще бъде труден. Основната разлика е повече входове/изходи (48 в Mega, 54 в Mega 2560). Тук има и много повече памет: 8 KB RAM, 4 KB EEPROM и флаш памет от 128 и 256 KB (съответно в Mega и Mega 2560). Помежду си платките също се различават по чип, USB скорост и някои други характеристики.

Разбира се, има и Arduino Pro, Arduino LilyPad и много други. Но сега нека се съсредоточим върху първите два модела. В нашия случай всичко е съвсем просто: Мега е необходима за робот с много крака.

Първи код

Първо, нека инсталираме Arduino IDE (arduino.cc) - това е безплатна среда за разработка на различни платформи. Сега, ако свържем нашия Arduino, можем да опитаме да напишем първия код на най-простия пример: мигащата LED програма. Повечето контролери на Arduino го имат и са свързани към пин 13. Между другото, в света на Arduino програмите обикновено се наричат ​​скици. Ето текста на скицата с коментари:

// Дайте на този щифт името LED: const int LED = 13; void setup() ( // Инициализиране на цифров щифт // за изход: pinMode(LED, OUTPUT); ) void loop() ( // Задаване на ниво логика-едно // на пин 13 (светещ светодиод): digitalWrite(LED, HIGH ) ; // Пауза на скицата // за секунда: закъснение(1000); // Прилагане на логическо нулево ниво // към щифт 13 (изключете светодиода): digitalWrite(LED, LOW); // Пауза на скицата отново за секунда: забавяне (1000); )

Обърнете внимание на функциите за настройка и цикъл. Те трябва да присъстват във всяка скица на Arduino. Настройката се извиква веднъж, когато контролерът е включен или след рестартиране на контролера. Ако искате кодът да бъде изпълнен само веднъж, той трябва да бъде поставен тук. Най-често това са всякакви процедури за инициализиране на нещо. Нашата скица не е изключение: цифровите щифтове на Arduino могат да работят както като входове, така и като изходи. Във функцията за настройка казваме, че пин 13 ще работи като цифров изход на контролера.

След като функцията за настройка приключи работата си, автоматично се стартира затворен цикъл, вътре в който ще бъде извикана функцията за цикъл. От нас се изисква да напишем какво искаме да правим там. И ние искаме да приложим логическо едно ниво (5 V) към щифт 13, тоест да запалим светодиода, след това да изчакаме една секунда (1000 в милисекунди), след това да приложим логическо нулево ниво (0 V) и отново да изчакаме една секунда. Следващото извикване на цикъл ще повтори всичко.

Сега ние „качваме“ нашата скица в контролера. Не, нямаме нужда от програмист. Контролерите на Arduino, в допълнение към нашите скици, съдържат специална програма - bootloader, която по-специално контролира зареждането на код от компютър. Така че, за да качим скицата, имаме нужда само от USB кабел и елемента от менюто File → Upload (Ctrl + U) в Arduino IDE.

ключов въпрос

Колко крака всъщност ни трябват? Нека дефинираме в различни конфигурации ходещи роботи. По брой на краката:

  • двукрак - двукрак (прототип - човек);
  • четириноги - четириноги (прототип - повечето бозайници);
  • хексапод - шесткрак (прототип - повечето насекоми);
  • октопод - осемкрак (прототип - паяци, скорпиони, раци и други членестоноги).

Освен броя на краката, важна е и конфигурацията на всеки. Основната характеристика на крака е броят на степените на свобода или размерите на свободата (DOF). Степента на свобода е способността да се върти или огъва около една ос (по-рядко да се движи напред по нея). Очевидно, ако има само една степен на свобода, тогава няма да стигнете далеч на такъв крак. Краката с две степени на свобода (2DOF) вече позволяват на многокраки роботи да се движат, въпреки че 2DOF позволява свободно движение на върха на крака само в една равнина. И кракът на 3DOF премества „крака“ в 3D пространство (освен ако, разбира се, и трите оси не са успоредни). Има и крака с 4DOF, които просто увеличават гъвкавостта и обхвата на движение на крака. Насекомите най-често имат 4DOF крака.

Какво означава това за нас? В евтините любителски роботи всяка степен на свобода се реализира от един двигател, по-точно, серво задвижване или серв. Конфигурацията на краката уникално определя колко от тези сервоприводи са необходими. Така че 3DOF hexapod ще изисква 18 серво, а 4DOF паяк ще изисква 32. Не се плашете от числата, малките сервомодели, използвани в любителските RC модели, са много евтини. В онлайн магазините те могат да бъдат намерени при поискване микро серво.

За да програмирате серво мотори, достатъчно е да знаете, че те вече имат контролер, който върши основната работа. И всичко, което е необходимо, е захранване и цифров сигнал, който казва на контролера в каква позиция искаме да завърти задвижващия вал. Лесно е да намерите информация за техния дизайн. Техният протокол е най-простият от всички протоколи за цифрова комуникация: широчинно-импулсна модулация - PWM (PWM на английски). Всички прости серво двигатели имат три-пинов конектор: маса, +5V (напрежението може да варира в зависимост от размера и мощността) и вход за сигнал. Arduino контролерите могат да генерират този сигнал по два различни начина. Първият е хардуерен PWM, който самият чип може да изведе на няколко от своите цифрови I/O щифтове. Вторият е софтуер. Софтуерът ви позволява да получавате повече различни PWM сигнали едновременно от хардуера. За него е предвидена удобна обвивка под Arduino - библиотеката Servo. Позволява ви да използвате 12 сервомотора едновременно на повечето малки контролери (Uno, Due, Nano) и 48 серво на Arduino Mega и други подобни. Сигналният щифт на сервото е свързан към цифровия щифт на Arduino. Заземяване и захранване - очевидно, за земята и захранването, те могат да бъдат споделени от всички сервоприводи. В трижични серво контури, черно или кафяво е смляно, обикновено червено +5 V в средата и накрая бяло или жълто е сигнал. От софтуерна гледна точка контролът е изключително прост:

Серво мисерво; // Серво на Arduino pin 9 myservo.attach(9); // Завъртане до позиция 90º myservo.write(90);

Повечето серво мотори могат да завъртят вала на 180°, а за тях 90° е средна позиция. За да се опрости свързването на серво машини към платката Arduino, има редица решения. Най-каноничният е Sensors Shield. Като го инсталирате на Uno и захранвате терминалите за серво, можете да свържете техните конектори директно към него.

Батерия

Друг важен въпрос е храненето. Ако имате усъвършенствана платка, която ви позволява да захранвате цялата система през една захранваща линия (и серво моторите няма да пречат на работата на контролера), тогава можете да се справите с един източник. Изборът е огромен, най-доброто от всичко, разбира се, Li-Ion / Li-Po брикети за радио модели. Но те също се нуждаят от подходящи зарядни устройства. Ако имате по-прост контролер (Uno / Due / Nano), тогава можете да го захранвате отделно, например, с 9-волтова Krona, и да свържете сервоприводите към основната мощна батерия. Така че сервоприводите определено ще имат достатъчно мощност. В случай на литиеви батерии трябва да следите напрежението дори по-внимателно от обикновено, за да няма преразреждане (допустимите напрежения трябва да бъдат изяснени за определен тип батерия). За да направите това, малък цифров волтметър също се завинтва към робота Sleipnir, което ще бъде обсъдено по-нататък.

Robobug направете го сами

комплект

  • Контролер Arduino Uno: 1150 рубли
  • Три серводвигателя. Използвах HXT500, 200 r. парче
  • Отделение за батерии за "Krona" с превключвател: 50 рубли.
  • Батерия "Krona": 145 рубли.
  • IR приемник: $90
  • Стоманена тел с диаметър приблизително 1,5 мм. Аз например използвах счупена бъркалка за яйца

Общо: 2035 стр.

DmitryDzz:Искам да ви поканя да направите малък дистанционно управляван роботизиран бръмбар с шест крака на базата на контролера Arduino Uno. Лапите ще имат една степен на свобода, управлението ще се извършва с помощта на конвенционално дистанционно управление за телевизор.

Трябва да кажа, че това са цените на скъпите московски магазини. В китайските онлайн магазини всичко това ще струва два пъти по-евтино. Като се има предвид доставката. Вярно е, че ще трябва да изчакате, според моя опит, от две седмици до три месеца.

По-лесен начин е да вземете набор от конструктори, защото в първите стъпки един контролер няма да е достатъчен. Сега много магазини предлагат такива комплекти. Например, има прекрасен онлайн магазин "Amperka". Тук ще ви бъдат предложени няколко подобни дизайнери, различаващи се по пълнота и, разбира се, по цена. Най-простото нещо ми беше достатъчно - "Матрьошка Х". Той включва контролер Arduino Uno, USB кабел за свързване към компютър, прототипна платка (необходимо нещо!), набор от джъмпери, светодиоди, резистори и други дреболии.

В същия магазин има раздел "Уики", където дори ще намерите прекрасни кратки видео уроци, преведени на руски език. Не пропускайте да ги разгледате. И разбира се, има форум, където вероятно ще се опитат да ви помогнат.

Какво ви трябва от инструментите:

  • поялник и всичко необходимо за запояване. Не е нужно да запоявате много и не се нуждаете от много умения;
  • пистолет за горещо лепило и пръти към него;
  • клещи за работа с тел.

Ако имате всичко, нека започваме!

Контрол

Нека преминем към първата стъпка: трябва да се научим как да взаимодействаме с дистанционното управление и да разберем кодовете за натискане на някои от неговите бутони. След това тези кодове ще бъдат полезни за скицата за управление на робота.

На този етап ще ви трябва и IR приемник и би било хубаво да имате платка за прототипи. По-голямата част от IR дистанционните работят на носещи честоти от 36 kHz, 38 kHz или 40 kHz (Panasonic, Sony). Изключенията са Sharp (56 kHz), Bang & Olufsen (455 kHz) и може би някой друг по-екзотичен. Следователно всеки IR приемник на 36, 38 или 40 kHz е доста подходящ за нас. Честотата може да не съвпада точно с носещата честота на сигнала. В този случай чувствителността на приемника ще намалее, но на практика не забелязах никакъв дискомфорт при използване на TSOP2136 IR приемник (36 kHz - последните две цифри - честота) и дистанционното управление на Sony (40 kHz).

Така че, IR приемниците TSOP21xx, TSOP22xx, TSOP312xx са подходящи за повечето дистанционни. Последните две цифри могат да бъдат 36, 37, 38 или 40. Преди да включите IR приемника, проверете изводите на изводите му - има само три от тях: + 5V (захранване), GND (земя), Vs (изход) . Нека сглобим веригата, както е на илюстрацията (окабеляване за TSOP2136).


Както можете да видите, свързахме изхода на IR приемника към аналоговия вход на контролера A0.

Ето как изглежда кодът на скицата:

#include "IRremote.h" // Аналогов вход на контролера // към който е свързан IR приемникът: const int IR_PIN = A0; // Създаване на обект на IR приемник: IRrecv irrecv(IR_PIN); void setup() ( Serial.begin(9600); Serial.println("ready"); // Започнете да слушате IR сигнали: irrecv.enableIRIn(); ) void loop() ( // Опишете резултатите от структурата, // където // получени и декодирани // IR команди ще бъдат поставени: decode_results резултати; // Ако IR командата е приета и // успешно декодирана, тогава изведете // получения код към // серийния порт на контролера: if ( irrecv.decode (&results)) ( Serial.println(results.value); irrecv.resume(); ) )

Скицата използва специална библиотека IRremote.h, която декодира сигналите на различни IR дистанционни. Тази библиотека е отворен проект, можете да го изтеглите от https://github.com/shirriff/Arduino-IRremote. И за да го свържете с нашия проект, трябва да изпълните три стъпки:

  • копирайте директорията на библиотеката в директорията на библиотеките, която от своя страна се намира в инсталационната директория на Arduino IDE;
  • рестартирайте IDE;
  • добавете реда #include "IRremote.h" в началото на нашата скица.

Сега функциите за IR декодиране ще бъдат налични в скицата. Но за да видим получените кодове, ние все пак ще използваме обекта Serial. С негова помощ чрез серийния порт (същия USB кабел) ще прехвърлим кодовете към компютъра. Във функцията за настройка инициализираме обекта Serial. "9600" е 9600 бод - скоростта, която ще се използва за пренос на данни. След инициализацията можем да пишем в серийния порт с помощта на функцията println. За да видите резултата от този изход на компютъра в Arduino IDE, изберете елемента от менюто Инструменти → Сериен монитор (Ctrl + Shift + M). Просто се уверете, че е настроен на 9600 бод.

Така контролерът получава захранване чрез USB кабел и предава данни през него. Зареждаме скицата, стартираме серийния монитор и започваме да натискаме бутоните на дистанционното управление. Кодовете трябва да се появят в прозореца на серийния монитор. Протоколите за дистанционно управление са различни, понякога може да е един код, понякога няколко. Във всеки случай винаги можете да разпределите кодове, които са уникални за всеки бутон на дистанционното управление.

Нуждаем се от 13 бутона за дистанционно управление. използвах следното:

  • 1 - плавен завой наляво;
  • 2 - движение напред;
  • 3 - плавен завой надясно;
  • 4 - завийте наляво на място;
  • 5 - стоп;
  • 6 - завийте надясно на място;
  • 7 - движение назад със завой надясно;
  • 8 - движение назад;
  • 9 - движение назад със завой наляво;
  • син бутон - много бавен;
  • жълто - бавно;
  • зелено - бързо;
  • червено - много бързо.

Запишете кодовете за тези бутони, ще ви трябват по-късно за скицата за управление на робота.

Алгоритъм за движение

Скицата за управление на робота е достъпна на страницата на нашия проект (bit.ly/1dEwNDC). Не забравяйте да промените стойностите на константите на кодовете на натиснатите бутони на дистанционното управление с кодовете на вашето дистанционно управление (константите IR_COMMAND_XXX_CODES във файла ir_command_codes.h).

Няма да анализираме скицата подробно, мисля, че коментарите в кода са достатъчни, но един въпрос все още си струва да се обмисли.

Движенията на насекомите са много интересни. И въпреки че всички тези бръмбари падат много близо до земята, по някаква причина те винаги са стабилни: във всеки един момент най-малко три крака (два от едната страна и един от другата) стоят на повърхността. И докато тези крака дърпат бръмбара към една от неговите задвижвани цели, останалите три се издърпват, за да повторят това движение. Нашата цел е да направим нещо подобно.

Нашият робот бъг има три серводвигателя, подредени в ред, перпендикулярно на движението. При левия и десния серводвигатели оста на вала е насочена нагоре, а при централната - напред. Задачата, например, на лявото серво е да изпомпва два крака наведнъж: левия преден и левия заден. Между другото, те са здраво свързани помежду си и залепени към кобилицата на това серво. Задачата на централното серво е да повдигне лявата страна на бръмбара, след това дясната. Следователно към кобилицата на този двигател са прикрепени централните ляв и десен крак, които са една U-образна част.

Скицата трябва да гарантира, че роботът се движи напред, назад, плавно се върти в движение и се завърта на място. И също така бих искал да контролирам скоростта на бръмбара. За да опишем тези движения програмно, имаме нужда от математика. Вижте диаграмата.


Сините кръгове показват краката на бръмбара робота, стоящи на повърхността, а белите кръгове са тези във въздуха. Моля, имайте предвид, че когато се движите напред или назад, левият и десният серводвигатели трябва да се движат точно по същия начин. И при завъртане на място, двигателите трябва да се въртят в различни посоки (симетрично). Интересно е също, че движението напред и назад се различава само във фазата на централния серводвигател.

И така, как се прилага? Спомняме си, че контролерът постоянно извиква функцията за цикъл. И така, в тази функция трябва да поставим кода, който определя текущата позиция на сервоприводите и ги задава в тази позиция. Всеки серводвигател трябва да осцилира. Можем да изчислим позицията на серводвигателя в момент t, използвайки следната формула:

X = A sin(2πt/T),

където X е желаната позиция на сервомотора, A е амплитудата на трептене, T е периодът на трептене.

Така че, в зависимост от момента на времето t, ще получим промяна в стойността на X в диапазона от -A до +A. Сервомоторите могат да заемат позиция в диапазона от 0 до 180°. Ето защо е по-добре за нас да осцилираме около „нулевата“ позиция при 90 °. И ако искаме да осигурим колебания с период от 1 s около позицията 90 ° с амплитуда 30 °, тогава формулата се преобразува в следната форма:

X = 90 + 30 sin(2πt/1000),

където t е времето в милисекунди от началото на трептението. За да контролираме скоростта на автоматичния разговор, можем да променим периода на осцилация. Колкото по-голямо е, толкова по-ниска е скоростта.

И сега да се върнем отново към нашата схема, защото формулата, написана по-горе, все още не е завършена. Как да се гарантира, че синхронното, а след това обратното движение на левия и десния серводвигател? Как да промените фазата на централния серводвигател? Трябва да добавим фазата на трептене към нашата формула. Изместването на аргумента синус с π например за десния двигател ще го накара да работи в противофаза спрямо левия, тоест по начина, по който трябва да се завъртим на място. Ето как ще изглежда нашата формула сега:

X = 90 + 30 sin(2πt/1000 + Φ),

където Φ е фазата на трептенията, стойността е от 0 до 2π.

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

Сглобяване

Сега нека сглобим робота на прототипната дъска и да попълним контролната скица.

Това е много важна стъпка преди сглобяването. Опитайте да изключите USB кабела и да захраните оформлението от батерията Krona. Проверете всички фази на движението и се уверете, че всичко работи. След сглобяването на робота промяната на каквото и да е (например подмяна на счупен сервомотор) ще бъде по-трудна.


Сега да преминем към самата сглобка. Основният носещ елемент е отделението за батерията. Съветвам ви да използвате отделение от затворен тип и винаги с превключвател.

Най-лесният начин да фиксирате детайлите на бръмбара е с горещо лепило. Започнете със серводвигатели. Отстранете ненужните уши за закрепване и свържете колите заедно. След това залепете този комплект от три "сервомотора" към капака на батерията. Не забравяйте, че отделението за батерията трябва да се отваря свободно, за да смените батерията.

Най-лесният начин е да залепите контролера към гнездото, но не ми харесва тази опция, тъй като ще трябва да дам Arduino Uno на грешката завинаги. Следователно можете да усложните живота си и да използвате конекторите на Arduino за закрепване на отделението за батерии. Залепете щифтов конектор на дъното на отделението с 2,54 мм стъпка между щифтовете. Той трябва да бъде разположен така, че да влиза в гнездото на контролера в областта на ​​цифровите изходи 8-11. И без това все още не ни трябват. Ако конекторът не е под ръка, ще свърши U-образна извита кламер.

Проводниците, идващи от отделението за батерията, трябва да бъдат свързани към клемите Vin и GND в съседство с него. Не обръщайте полярността! Плюс "Krona" на Vin, минус на GND. За да осигурите надежден контакт на проводниците с конекторите на Arduino, можете просто да калайдисвате върха на проводника по-дебел, но аз използвах къса кламер като щепсел. И мястото на запояване беше затворено с термосвиваема тръба.


Конекторите от серво кабелите трябва да бъдат отрязани, захранващите проводници (+5 V - обикновено червени и GND - черни или кафяви) трябва да бъдат комбинирани и свързани към 5V жаковете и съседния GND на контролера. Ще се свържем малко по-късно. Проводниците за контролен сигнал (обикновено жълти) се извеждат към цифровите изходи на контролера: левият сервомотор е на щифт 2, централният е на пин 4, десният е на пин 7.

"+" и "-" на IR приемника могат просто да бъдат включени в конектора Arduino (5V и съседен GND). Вярно е, огъване наполовина, удвояване на дебелината им. Запояваме по-рано свързаните захранващи проводници към серводвигателите към същите захранващи крака на IR приемника. Изходният сигнал на IR приемника е малко вероятно да достигне аналоговия вход на контролера A0 и ще трябва да го увеличите с проводник.

Няколко съвета за правене на крака. Първо, подгответе левия и десния "предно-задни" крака. Уверете се, че са симетрични (обърнете внимание както на дължините, така и на ъглите на завоите). Започнете да залепвате краката само след като се уверите, че серводвигателите са настроени в положение "нула" (90°).

Поставете средния чифт крака последен. Съветвам ви първо да направите средните крака по-дълги, а след това след монтажа да ги отрежете до желаната дължина. В позиция "нула", всичките шест крака трябва да са на повърхността. Превъртането на средните крака с амплитуда 15° не трябва да пречи на завоите отпред-назад.

Какво следва?

Robobug е готова мобилна платформа, базирана на един от най-популярните и достъпни контролери. Проектът е отворен: https://github.com/beetle-ringo/arduino. Направете вилица (клон) в GitHub и добавете своята функционалност. Разрешете на въображението си - добавете IR LED и роботът е готов за битка с роботи. Свържете далекомери, тактилни сензори, жироскоп... Научете робота да заобикаля препятствия или да върви по линия, опитайте да инсталирате уеб камера върху него. Може да има милион идеи и винаги можете да изберете най-интересната.

Робот Слейпнир

комплект

  • Контролер за робот Arduino Uno Dagu Spider: $2530
  • Серво задвижвания SG90 9g (16 броя) 1150 р.
  • LiPo батерия, 7,4 V, 1800 mAh $4,99
  • Радио модул 4 Pin Bluetooth RF трансивър 270 р.
  • Индикатор за напрежение (опция) DC 3.3-30V Червен LED панелен метър $100
  • Алуминиев ъгъл. В най-близкия строителен пазар 135 рубли.
  • Болтове и гайки. На най-близкия битпазар 35 рубли.

Общо: 4710 r.

*Компонентите са закупени по различно време и много позиции могат да бъдат оптимизирани

poconoco:Нека се опитаме да сглобим нестандартна конфигурация - осемкрак 2DOF робот. Краката с 2DOF са много по-лесни за програмиране, плюс имам куп неизползвани сервомота на склад. И най-важното е, че ще бъде възможно да го кръстим в чест на осемкракия кон на бог Один Слейпнир (винаги мечтан!).

Нашият Sleipnir ще има четири крака с две панти от всяка страна. Всяко съединение е серво, така че осем серво на всяка страна. За простота всичките осем панти от едната страна на коня ще се въртят в една и съща равнина. Въпреки че това изобщо не е необходимо. Освен това, ако краката от едната страна са поставени в малко "шах", така че два съседни крака да не могат да се докоснат един друг, ще бъде още по-добре, ще ви позволи да направите по-широка крачка и да галопирате.


Кокетно и функционално, но далеч не най-евтиното решение е използването на нестандартна контролна платка, оптимизирана за свързване на серво машини в голям брой. Попаднах на Dagu Spider Robot Controller - това е същият Arduino Mega, но на платка с предварително запоени 3-пинови конектори, където можете веднага да свържете същите тези 48 серво без никакви щитове. Идеален за многокраки Arduino роботи.

Контрол

Ще бъдем контролирани чрез Bluetooth. Има различни хардуерни решения за това. Това са щитове и отделни шалове със сериен интерфейс UART (като обикновен com порт, само с 5 V нива на сигнала). Струваше ми се, че най-практичният беше малък шал с UART интерфейс. Свързва се към съответните UART/серийни щифтове на порта Arduino. Отбелязваме два нюанса: има само един такъв порт на Uno / Due / Nano и други подобни и се използва и за мигане чрез USB. Следователно може да се наложи да изключите Bluetooth модула по време на фърмуера. И вторият нюанс - не забравяйте, че RX-пинът на модула е свързан към TX-пин на Arduino, а TX - към RX. Такива неща има в UART.

Bluetooth програмирането не е по-трудно от серво, данните могат да се четат байт по байт, които ще използваме:

Charcmd; Serial.begin(9600); if (Serial.available()) cmd = Serial.read();

Ако се използва Arduino Mega и Bluetooth е свързан към втория порт, тогава Serial1 се записва вместо Serial. Прави впечатление, че не можете да използвате Bluetooth, а да управлявате робота директно чрез USB. И нищо няма да се промени в кода по-горе! Просто работи със сериен порт и дали там виси BT предавател или USB сериен конвертор - за нас няма значение.

Другата страна на Bluetooth

Най-удобният начин за свързване е чрез стандартни Linux помощни програми. За да работим, имаме нужда от помощните програми sdptool, rfcomm (включени в пакета bluez в хранилищата на Ubuntu), както и minicom (пакетът се нарича така). Инструкции за използване на тези помощни програми могат да бъдат намерени в мрежата.

Алгоритъм за движение


За хексапод най-простата походка ще бъде следната: краката са разделени на две групи от по три крака, като едната от групите е изцяло на земята, другата е във въздуха, пренаредена напред. Това далеч не е единствената възможна походка. Можете да държите само две лапи във въздуха или дори една, а останалите четири или пет на земята. За октапод също има много походки. Ще вземем най-простия, също с две групи по четири крака.

И така, какво трябва да направим, за да работим с 16 сервомотора и избрана походка? Правилният отговор е да прочетете за обратната кинематика (IK). Обемът на статията не позволява широкото разширяване на темата, но в интернет има изобилие от материали. Накратко, IR решава проблема с намирането на необходимите управляващи сигнали, за да може системата да заеме желаната позиция в пространството. За крака това означава, че според координатите на точката, където кракът трябва да удари, е необходимо да се определят ъглите на сервоприводите, които трябва да бъдат зададени за това. И като контролирате координатите на краката, можете да контролирате позицията на тялото. Имаме 2DOF крака, осите са успоредни, така че стъпалото винаги се движи в една и съща равнина. Проблемът с IR в този случай се свежда до 2D пространство, което значително го опростява.

Нека за всеки крак местният произход O е валът на горното серво, тоест бедрото. И имаме координатите на точка А, където кракът трябва да удари. Тогава е лесно да се види, че е необходимо да се реши задачата за намиране на пресечните точки на две окръжности (вижте диаграмата на краката на едната страна, това е илюстрирано там на най-десния крак). След като се намери точката B на пресечната точка на окръжностите (избирайки някоя от тях), е лесно да се изчислят желаните ъгли, като се използва преобразуването от декартови координати в полярни. В кода решението на този проблем изглежда така:

Float A = -2*x; float B = -2 * y; float C = sqr(x) + sqr(y) + sqr(hipLength) - sqr(shinLength); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(hipLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt(sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; ax = X0 + B*mult; bx = X0 - B*mult; ay = Y0 - A*mult; от = Y0 + A*mult; // или bx за друга точка на пресичане float jointLocalX = ax; // или от за друга пресечна точка float jointLocalY = ay; float hipPrimaryAngle = polarAngle(jointLocalX, jointLocalY); float hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = polarAngle(x - jointLocalX, y - jointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;

където x и y са координатите на точката, до която трябва да стигнете с крак; hipStartAngle - ъгълът, под който първоначално е завъртян "хълбока" (при сервото в средно положение), аналогично - shinStartAngle. Между другото, в тези изчисления ъглите очевидно са в радиани и те трябва да бъдат прехвърлени към Servo обекти вече в градуси. Пълният работещ код на фърмуера, включително това парче, е публикуван в GitHub, вижте връзката в края на статията. Това е част от IC, но освен това, имате нужда от доста прост код, за да използвате тази IC на всички крака (вижте функциите legsReachTo(), legWrite()). Ще ви е необходим и код, който всъщност реализира разходката - движението на една група крака "назад" (така че роботът да се движи напред), докато другата група крака се издига и се движи напред за следващата стъпка, вижте stepForward () функция. Тя прави една стъпка с дадените параметри. Тези параметри, между другото, могат да направят крачка назад, въпреки името на функцията. Ако тази функция се извика в цикъл, роботът ще пристъпи напред.

Сега получавате команди и тяхната интерпретация. Нека добавим състояние към програмата:

Enum състояние ( СТОП, НАПРЕД, НАЗАД, НАПРЕД_НАДЯСНО, НАПРЕД_НАЛЯВО);

И в главния цикъл за изпълнение на цикъла () ще разгледаме текущото състояние (променлива на състоянието) и ще издърпаме stepForward(), ако се движим напред (със или без ротация), и отново stepForward(), но с отрицателен аргумент xamp , ако трябва да се движим назад. След това завоите ще се обработват в legWrite(), а за десен завой краката от дясната страна ще стоят неподвижни (докато левите редове). Ето такъв конски танк. Брутално, но много просто и работи. Гладкото завъртане може да се направи само с 3DOF крака, пример за това може да се види в репозитория на бъгибъги.

Превключвател (състояние) ( случай FORWARD: случай FORWARD_RIGHT: случай FORWARD_LEFT: stepForward(h, dh, xamp, xshift); прекъсване; случай BACKWARD: stepForward(h, dh, - xamp, xshift); прекъсване; )

команда Char; while (Serial1.available()) command = Serial1.read(); превключвател (команда) ( случай "w": състояние = НАПРЕД; прекъсване; случай "s": състояние = НАЗАД; прекъсване; случай "d": състояние = НАПРЕД_НАДЯСНО; прекъсване; случай "a": състояние = НАПРЕД_ЛЯВО; прекъсване; по подразбиране : състояние = СТОП;)

С това основните точки на фърмуера приключиха, останалото са малки неща. Въпреки че има още един, може би важен момент - възможността за фина настройка на сервоприводите. Дори и при най-внимателното сглобяване, ако всички сервоприводи бъдат командвани да се завъртят на 90°, някои от тях пак ще се окажат леко изкривени. Ето защо трябва да можете да го персонализирате. Можете да видите как го направих в методите hipsWrite() и shinsWrite() и в масивите за фина настройка hipsTune и shinsTune.

Сглобяване

За такива конструкции не е необходимо нищо специално: лист плексиглас с подходяща дебелина (от най-близкия домакински битпазар) и прободен трион или ножовка ще направят за изрязване на детайлите. И разбира се, бормашина за пробиване на дупки. Вместо плексиглас можете да използвате шперплат (тогава все още можете да направите възпоменателен надпис върху крайния дизайн с горелка). Могат да се използват и алуминиеви листове или ъгли. Със Sleipnir минах точно по начина на използване на алуминиев ъгъл с ребра 1 см (купих го някъде в хардуерен супермаркет).


Основата ще бъде правоъгълна рамка. Крайници - 4-сантиметрови ивици. Също така си струва да се запасите с много малки болтове, гайки. Изрязваме ъгъла на необходимите парчета, изрязваме канали за сервоприводи, пробиваме дупки за монтажни болтове и винтове. Дизайнът е по-добре да се покаже, отколкото да се опише. Размерите могат да бъдат всякакви, роботите трябва да бъдат различни. Но запомнете: колкото по-дълги са краката, толкова повече лост ще трябва да бута сервото и толкова по-голямо е натоварването върху него. До невъзможност за обръщане и дори счупване. Но 4-5 см не е проблем.

За бюджетните леки роботи те често не се притесняват с отделно завъртане на крайниците и цялото натоварване пада изцяло върху вала на серво. При малко тегло това изобщо не е критично. А с по-голямо тегло трябва да помислите за сервоприводи с метални зъбни колела и вал на сачмен лагер.

Всяко серво обикновено се предлага с няколко винта и набор от приставки, които могат да се завинтват върху вала за различни приложения. Най-подходящ за нас е единичен "рог" (или клаксон), който ви позволява да прикрепите щанга към сервото. И така, осите на две сервоприводи са прикрепени към един прът и прътът става „бедро“. В този случай единият серв е прикрепен към тялото, а другият става част от подбедрицата. Струва си да завиете още една лента към нея, само за да удължите или да направите крайника по-интересен. Малко упорита работа - и платформата е готова (удобни комплекти отвертки, гаечни ключове, пинсети, резачки и т.н. значително ускоряват процеса).

Какво следва?

Целият проект е достъпен на https://github.com/poconoco/sleipnir. Описах една от най-непрактичните конфигурации - много крака 2DOF, висок, тесен, лесно пада настрани. Опитайте се да направите по-добър робот с 3DOF крака. С 4DOF крака. С нокти или челюсти. Като пример за 3DOF обратна кинематика можете да се обърнете към хранилището на бъгибъги - има фърмуер на хексапод. Можете също така да направите не контролирани, а интелигентни роботи, като поставите сензори за разстояние вместо Bluetooth и да научите робота да заобикаля стени и препятствия. Ако поставите такъв сензор на серво задвижване и го завъртите, тогава можете да сканирате района, почти като сонар.