Оглавление:

Робот Arduino Sumo: 5 шагов
Робот Arduino Sumo: 5 шагов

Видео: Робот Arduino Sumo: 5 шагов

Видео: Робот Arduino Sumo: 5 шагов
Видео: Arduino robot sumo 2024, Ноябрь
Anonim
Робот Arduino Sumo
Робот Arduino Sumo

Прежде чем мы начнем

Что такое робот-сумо?

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

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

Идея:

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

Итак, давайте посмотрим на законы о конкуренции роботов-сумо:

Я объясню некоторые важные роли, которые вы должны учитывать при создании собственной SUMO, это также может помочь вам вообразить и усовершенствовать свою собственную идею, не вдаваясь в подробности.

1. Размеры: максимальная ширина 20 см, максимальная длина 20 см, высота не указана.

2. Форма: форма робота может быть изменена после начала гонки, но без неотъемлемых частей, чтобы оставаться одним центральным объектом.

3. Вес: не более 3 кг.

4. Робот должен владеть собой.

Шаг 1: Компоненты

Image
Image
Использование для каждого компонента
Использование для каждого компонента

1 Ардуино Ano3

2 Двигатель постоянного тока

1 мост L298N Dual H для Arduino

1 ультразвуковой датчик

2 ИК-порта TCRT5000

1 аккумулятор 9 В

Батарейка АА 4 * 1,5 В штуки + батарейный отсек

4 колеса робота

перемычки

Шаг 2: использование каждого компонента

Использование для каждого компонента
Использование для каждого компонента
Использование для каждого компонента
Использование для каждого компонента

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

1- Arduino Ano3

Это основная плата, которая контролирует все части и связывает их вместе.

2- Двигатель постоянного тока

Которые помогают роботу маневрировать и перемещаться по кольцу СОРЕВНОВАНИЙ.

4- Двойной H-мост L298N для Arduino

Это небольшая панель, которая обеспечивает постоянное напряжение на двигатели, а также поддерживает плату Arduino с хорошим контролем движения и напряжения.

5- Ультразвуковой датчик

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

6- ИК-порт TCRT5000

Как мы уже упоминали, контест-ринг выполнен в определенном размере и имеет два цвета: заполнение - черное, а рамка - белая. Участник не должен выходить на улицу. Поэтому мы используем ИК-датчик, чтобы убедиться, что робот не выйдет за пределы ринга. Этот датчик имеет возможность различать цвета кольца).

7- Батарея 9В

Он поддерживает главную плату (Arduino) с важным напряжением.

8- батарейка АА 4 * 1,5 в штуки + батарейный отсек

Он поддерживает два двигателя (двигатель постоянного тока) с важным напряжением, и он должен быть разделен, чтобы обеспечить полную силу для колес.

9- Перемычки

Шаг 3: Дизайн

Дизайн
Дизайн
Дизайн
Дизайн

Я создал два робота-сумо с помощью Google 3D sketch-up, потому что мне нравится создавать бумажные модели своих роботов, прежде чем вырезать детали из акрила на лазерном резаке. Чтобы убедиться, что все детали подходят друг к другу, важно, чтобы бумажные модели были напечатаны с точным размером чертежей.

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

Чтобы быть более чувствительным к весу робота, поместите батареи в передней части робота так, чтобы передний щиток находился под углом 45 градусов к форме робота.

Загрузите дизайн 1 отсюда

Загрузите дизайн 2 отсюда

Вы также можете Скачать шаблон бумажной модели

Откройте файл PDF с помощью Adobe Acrobat Reader (рекомендуемое программное обеспечение)

Шаг 4. Стратегия игры

Image
Image
Стратегия игры
Стратегия игры

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

Стратегия игры (1):

· Мы будем делать робота вокруг себя непрерывно.

· Робот постоянно измеряет расстояние во время вращения.

· Если измеренное расстояние до соперника меньше (например, 10 см), это означает, что противник находится прямо перед роботом.

· Робот должен перестать вращаться, а затем начать атаку (быстро двигаться вперед с полной силой).

· Робот должен всегда снимать показания с ИК-датчиков, чтобы быть уверенным, что мы не пересекли границу кольца.

· При считывании ИК-присутствия белого цвета он должен перемещать робота прямо в направлении, противоположном датчику (например: если передний датчик, дававший индикацию белого цвета робота, движется назад)!

Стратегия игры (2):

· На старте робот измеряет расстояние впереди.

· Робот отодвинется на такое же измеренное расстояние.

· Робот перестает вращаться, а затем внезапно начинает атаку (двигаться вперед с полной силой).

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

· Робот должен всегда снимать показания с ИК-датчиков, чтобы быть уверенным, что мы не пересекли границу кольца.

· При считывании ИК-присутствия белого цвета он должен перемещать робота прямо в направлении, противоположном датчику (например: если передний датчик, дававший индикацию белого цвета робота, движется назад)!

Шаг 5: программирование

Программирование
Программирование

пожалуйста, проверьте схему и код

* Обновление 26.03.2019

Сначала загрузите отсюда ультразвуковую библиотеку и установите ее:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

Ахмед Азуз

www.instructables.com/id/How-to-Make-Ardu…

Сначала загрузите библиотеку отсюда

github.com/ErickSimoes/Ultrasonic/blob/ma…

*/

#include Ultrasonic.h

Ультразвуковой ультразвуковой (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // передний датчик #define IR_sensor_back A1 // задний датчик int distance;

установка void ()

{Serial.begin (9600); задержка (5000); // согласно ролям совместимости сумо} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); расстояние = ultrasonic.read (); ПОВЕРНУТЬ (200); // запускаем rotete if (distance <20) {Stop (); while (расстояние 650 || IR_back> 650) {break;} delay (10); } if (IR_front <650) // <650 означает белую линию {Stop (); задержка (50); НАЗАД (255); задержка (500); } if (IR_back <650) // {Stop (); задержка (50); ВПЕРЕД (255); задержка (500); } / * ----------- отладка ---------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println («см»); Serial.println ("ИК-фронт:"); Serial.println (IR_front); Serial.println ("ИК назад:"); Serial.println (IR_back); * /

} //--------------------------------------------

void FORWARD (int Speed) {// Когда мы хотим позволить двигателю двигаться вперед, // просто аннулируем эту часть в секции цикла. analogWrite (IN1, Скорость); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Скорость); } // -------------------------------------------- void НАЗАД (int Speed) {// Когда мы хотим, чтобы мотор двигался вперед, // просто аннулируем эту часть в секции цикла. analogWrite (IN1, 0); analogWrite (IN2, Скорость); analogWrite (IN3, Скорость); analogWrite (IN4, 0); } // -------------------------------------------- void ROTATE (int Speed) {// Когда мы хотим позволить мотору вращаться, // просто аннулируем эту часть в секции цикла. analogWrite (IN1, Скорость); analogWrite (IN2, 0); analogWrite (IN3, Скорость); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Когда мы хотим, чтобы двигатель остановился, // просто аннулируем эту часть в секции цикла. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Рекомендуемые: