Автономний робот з автонавігацією на Arduino

Автономний робот з авто навігацією на Arduino

Ця стаття є покроковим керівництвом для створення автономного робота з авто навігацією. Для управління роботом використовується Arduino. Є дві різні програми для робота. Перша програма дозволяє роботу їздити всюди, уникаючи перешкод. Для визначення перешкод використовуються два ультразвукових датчики. Інша програма використовує двовимірний масив для складання плану навколишніх предметів. Основуючись на введених у двовимірний масив даних, робот знає, що і де знаходиться навколо нього.

Платформа VEX

Необхідні матеріали

Ми використовували Vex в якості шасі для робота, але ви можете використовувати й щось інше. Ми рекомендуємо зробити шасі з нуля. Ми також використовували датчики та двигуни Vex, але якщо ви використовуєте інші датчики та мотори, робот буде працювати майже так само.

- 2 ультразвукових датчики (4 для подальшої модернізації)
- 4 сервопривода (5 за бажанням)
- Arduino (ми використовували Uno)
- Макетна плата
- Проводи
- 2шт 9.6В акумулятори (ми використовували Vex)
- 9В батарея (для живлення Arduino)
- 4 колеса (діаметром 5")
- Різні дрібниці (гайки, болти і т.д.)
- Клейка стрічка

Ця стаття розділена на три кроки.
Перший крок присвячений механічній частині.
Другий крок присвячений електронній частині.
Третій крок присвячений програмуванню.

Платформа робота

Механічна частина

По-перше, потрібно міцне шасі. В статті є фотографії робота, але ви можете зробити його на свій лад. Ми зробили три різних варіанти цього робота. Перші два ми розглянемо тут. Перший варіант мав форму, схожу на вантажівку. Він був доволі великим, але повільним і важко повертав. Крім того, для наших цілей, великий розмір зайвий. Другий варіант ми зробили набагато меншим і компактнішим.

Спочатку необхідно додати сервоприводи на шасі, причому так, щоб на їх вали можна було надягнути колеса. Ми використовували чотири колеса. Якщо у вас потужні сервоприводи, ви можете використовувати два колеса. Але на верхній частині шасі повинно бути достатньо місця для Arduino, друкованої плати та акумуляторів.

Платформа робота

Потім встановіть колеса на сервоприводи. Ми встановили на вал після колеса додаткову захист від сходу колеса. Попереду робота є два додаткові колеса, які допоможуть роботу заїхати на бордюр або іншу перешкоду, якщо він у неї впереться. На два задні колеса для зменшення тертя додана клейка стрічка.

Встановіть батарейний відсік. Ми взяли зарядний пристрій Vex і модифікували його так, щоб він живив двигуни замість зарядки батарей. Візьміть плату і відпаяйте проводи + і GND, які йдуть в роз'єм для заряджаємих батарей. Далі припаюйте чорні проводи від двох батарей до проводу GND зарядки, і припаюйте червоні проводи від батарей до проводу + зарядного пристрою. Потім підключіть ці проводи до плати.

Потім зробіть кріплення для ультразвукових датчиків на передній частині робота. Якщо ви хочете додати ще датчики, ви можете продовжити кріплення.

Схема з'єднання

Електронна частина

Електронна частина цього робота не така вже й складна. З'єднайте акумулятори 9.6В паралельно, якщо ви використовуєте батарейний відсік від зарядного пристрою, то це вже зроблено. Потім слідуйте малюнку плати, розміщеному тут. Але будьте уважні, тому що в залежності від розміру вашого шасі, проводи від приводів можуть не дотягнутися до плати. Для сервоприводів 1 і 2 використовується один сигнальний провод, а для сервоприводів 3 і 4 інший. Це зроблено тому, що сервоприводи 1 і 2 повинні завжди рухатися однаково (тому що вони знаходяться на одній стороні), це також стосується сервоприводів 3 і 4.

Внутрішності робота

Якщо ви хочете додати ще один датчик або сервопривід, зробіть це за тим же принципом – сигнальний провод підключіть до Arduino, 5В до червоного проводу і GND до чорного. Пам'ятайте, що GND двигунів повинен бути підключений до GND Arduino та батареї.

Ми включили датчик обертання на одному з двигунів, щоб визначити, наскільки далеко вона повертається, але це необов'язково.

Начинка робота

Програмна частина

Для написання ПЗ використовувався Processing. Приклад коду для навігації з використанням двовимірного масиву (arraything) можна скачати нижче. У двовимірний масив ми вводимо 0 або 1. 1 означає об'єкт або перешкоду, і робот їздить тільки по 0.

Оригінал статті

Прикріплені файли:
Top