Статията показва създаването на робот, който пътува по линии и може да премине през лабиринти, след като изучи лабиринта, може да премине през него по най-краткия път. Авторът дълго време създава този проект, късметът го изпревари за трети път.
Демонстрация на машината:
Материали и инструменти:
- Arduino RBBB
- Микромотори 2 бр
- Скоби за двигатели с 2 бр
- Колела 2 бр
- топка колело
- Аналогов сензор за отражение
- Гайки с болтове от 2 бр.
- водач на двигателя
- Държач за батерия 4 бр AAA
- Батерии (акумулаторни батерии) AAA 4 бр
- Дело
- Гайки, болтове, шайби
- свързващи проводници
- спойка
- клещи
- поялник
- отвертка
Първа стъпка. Теория.
Авторът се нуждаеше роботът, който сам ще намери изход от лабиринта, след което ще може да оптимизира връщането. При създаването на машина за лабиринти те се ръководят от левия метод. За да стане по-ясно, трябва да си представите, че сте били в лабиринт и винаги дръжте лявата си ръка на стената. След като преминете определен път, това ще ви помогне да излезете от лабиринта, ако не е затворен. Роботът може да работи само с отворени лабиринти.
Принципите на левия метод са доста прости:
- Ако можете да завиете наляво, завийте наляво.
- Ако е възможно да се движите направо, движете се право.
- Ако можете да завиете надясно, завийте надясно.
- Ако сте в задънена улица, завъртете на 180 градуса.
Също така, роботът трябва да взима решения на кръстовището, но ако не се изключи при завоя, тогава ще тръгне направо. За да се изгради по-добър маршрут за връщане, всяко решение се записва в паметта.
L = ляв завой
R = десен завой
S = пропуснете завой
B = завъртете на 180 градуса
Този метод е показан по-долу в действие като се използва обикновен лабиринт като пример. Роботът преодоля разстоянието с LBLLBSR команди.
![Робот, минаващ лабиринти](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979016_4.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979010_5.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979090_6.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979078_7.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979044_8.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979042_9.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979060_10.jpg)
Пътят излезе доста дълъг, той трябва да бъде превърнат в оптимална SRR. За целта се определя къде роботът е обърнал по грешен начин. Навсякъде, където се използва командата “B”, пътят ще бъде неправилен, тъй като роботът е бил в безизходица, така че “B” трябва да бъде заменен с нещо друго. Първият грешен ход беше LBL, роботът се обърна и обърна, докато просто беше необходимо да следва директно LBL = S. По този начин се изгражда идеалният път LBL = S, LBS = R. Въз основа на такива замествания, роботът изгражда идеален кратък път за себе си.
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979060_11.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979062_12.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979096_13.jpg)
![](https://bgm.imdmyself.com/uploads/posts/2016-03/1457979024_14.jpg)
Стъпка втора Шасито на робота.
Акрил с дебелина 0,8 мм стана основата за шасито на робота; рязането беше извършено с лазер според чертежа. В архива под статията ще има файл за рисуване от AutoCAD. Не беше необходимо да се използва такъв материал, но авторът взе това, което беше на разположение.
В долната част са направени отвори за монтиране на двигатели, дъски, колела и сензори. В горната част има голям отвор за проводници.
Стъпка трета Монтаж на колела.
Авторът закачи и двата двигателя с болтове. Освен това те просто поставят колела на оста си, като изравняват вала с отвора в колелото.
Четвъртата стъпка. Arduino.
В този момент авторът първо следва инструкциите за сглобяване на RBBB на Arduino. Освен това той отряза част от дъската, за да намали нейния размер. Захранващият конектор и стабилизаторът бяха отрязани с ножица за метал. След това 9-пинов конектор беше споена от лявата страна на платката за контакти от 5 V до A0, за да свържете сензор към него. 4-пинов конектор беше споена от дясната страна на платката за контакти от D5 до D8 и към него ще бъде свързан контролер на двигателя. За да захранва захранването, 2-пинов конектор е споен на 5V и GND.
Стъпка пета Контролер на двигателя.
Самият автор разработи печатна платка за тази стъпка, схемата във формата на Eagle е приложена в архива под статията. Първият мотор беше свързан с щифтове M1-A и M1-B, вторият с M2 и M2-B. Първият вход на първия In 1A мотор беше свързан към 7-ия щифт на Arduino. В 1B беше свързан с пин 6 на Arduino. Към първия вход на втория мотор In 2A е свързан към 5-ия щифт на Arduino. Pin In 2B се свързва към щифт 8 на Arduino. Захранването и заземяването са свързани към захранването на Arduino и земята.
Стъпка шеста Сензори.
Този елемент се продава под формата на платка от сензори, първоначално има осем от тях, двата крайни са изтрити от автора. Към платката беше споена 9-пинов конектор, към тях ще бъде свързан проводник, водещ към Arduino. Сензорът разпознава бяла и черна част на лабиринта, използвайки отражение от повърхността.
Седма стъпка. Горна част.
Шасито с горната част на робота, свързано с болтове и стелажи. Батерията беше закрепена отгоре с велкро. Проводници от него бяха положени през подготвената дупка. При закрепването авторът реши да не използва винтове, а да остави батерията с велкро, така че да бъде по-лесно да смените батериите. С помощта на превключвателя на кутията на батерията беше извършена проверка на производителността.
Стъпка осма Монтаж на сензори.
Сензорите са закрепени с болтове към дъното на машината. GND щифтът е свързан към GND Arduino. След това Vcc щифтът е свързан към 5V Arduino. ADC Arduino 5-0 свързва щифтовете на аналоговите 6-1 сензори.
Стъпка девета Ел.
Arduino само споени проводници от батерията. Включването и изключването на робота ще бъде превключвател на батерията, така че е решено да се използва запояване. С това завършва монтажа на робота.
Стъпка десета Софтуерната част.
Програмата има няколко функции, отговорни за алгоритъма на работа. Функцията „лява ръка“ получава показания от сензори и контролира робота съгласно тези правила. Функцията на въртене е включена, преди роботът да забележи черна линия, като забележи, че се движи направо. Вградена е и функция за оптимизиране на пътя. Програмата може да бъде изтеглена под статията в архива.
Видео с робот: