Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield: 4 шага
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield: 4 шага
Anonim
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield
Робот Mecanum Omni Wheels с шаговыми двигателями GRBL Arduino Shield

Робот Mecanum - проект, который я хотел создать с тех пор, как увидел его в ужасном блоге мехатроники Dejan: howtomechatronics.com

Деян действительно хорошо поработал, охватывая все аспекты, от оборудования, 3D-печати, электроники, кода и приложения для Android (изобретатель приложения MIT).

Это отличный проект, обновляющий все навыки мейкера.

Мне нужно было внести некоторые изменения в проекты

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

Я хотел использовать BlueTooth

Так:

Запасы

Arduino Uno + GRBL Shield

Шаговые двигатели

Модуль HC-06 BlueTooth

Липо аккумулятор 12 В

Шаг 1. Аппаратное обеспечение

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

Распечатал колеса и собрал их, как здесь:

Подключил 4 шаговых двигателя к шасси (в моем случае неиспользуемый ящик перевернут)

Проложил кабели к верхней части робота.

Шаг 2: Электроника

Электроника
Электроника
Электроника
Электроника
Электроника
Электроника

Я использовал свой модуль HC-06 BT, Самым сложным было настроить экран GRBL для работы с 4 шаговыми двигателями, поскольку для этого нет хорошего руководства, Необходимо установить перемычки, как показано на прилагаемом рисунке, чтобы сделать вывод «Инструмент» щита также для управления шаговым двигателем. также нужно поставить перемычку "Включить"

проводка 4 степперов и все.

Я также подавал питание от батарей на 12 В - двух стейков - один для Arduino и один для GRBl Shield.

Шаг 3: код Arduino

/ * === Arduino Mecanum Wheels Robot === Управление смартфоном через Bluetooth от Dejan, www. HowToMechatronics.com Библиотеки: RF24, www. HowToMechatronics.com AccelStepper от Mike McCauley: www. HowToMechatronics.com

* / / * 2019-11-12 Gilad Meller (https://www.keerbot.com - модифицируйте код для работы с GRBL arduino motor Shield Шаговые двигатели в щите отображаются как (шаг / направление): 2/5 3 / 6 4/7 12/13 с использованием драйвера A4988 12 В

В коде Dejan используется SoftwareSerial, а мой будет использовать стандартные выводы RX, TX (0, 1) Arduino Uno. Примечание: не забудьте заменить выводы RX TX при загрузке скетча в Arduino, иначе загрузка не удастся.

*/ #включают

// Определяем шаговые двигатели и выводы, которые будут использовать AccelStepper LeftBackWheel (1, 2, 5); // (Тип: драйвер, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4

int incomingByte = 0, c; // для входящих последовательных данных int wheelSpeed = 100;

void setup () {Serial.begin (9600); // открывает последовательный порт, устанавливает скорость передачи данных 9600 бит / с // Устанавливает начальные начальные значения для шаговых двигателей LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);

}

void loop () {if (Serial.available ()> 0) {// читаем входящий байт: incomingByte = Serial.read ();

c = incomingByte; переключатель (c) {case 71: Serial.println («Я получил поворот вправо W»); rotateRight (); перерыв; case 65: Serial.println ("Я получил" Повернуть влево Q "); повернуть налево(); перерыв; случай 1: Serial.println («Я получил BK / LFT»); moveRightBackward (); перерыв; случай 2: Serial.println («Я получил BK»); двигаться назад(); перерыв; case 3: Serial.println («Я получил BK / RT»); moveRightBackward (); перерыв; case 4: Serial.println («Я получил LEFT»); moveSidewaysLeft ();

перерыв; случай 5: Serial.println («Я получил СТОП»); прекратить движение(); перерыв; case 6: Serial.println («Я получил RT»); moveSidewaysRight (); перерыв; case 7: Serial.println («Я получил FWD / LFT»); moveLeftForward (); перерыв; case 8: Serial.println («Я получил FWD»); двигаться вперед(); перерыв; case 9: Serial.println («Я получил FWD / RT»); moveRightForward (); перерыв; по умолчанию: Serial.print («Не команда»); Serial.println (incomingByte, DEC); перерыв; } } //двигаться назад(); moveRobot ();

}

void moveRobot () {LeftBackWheel.runSpeed (); LeftFrontWheel.runSpeed (); RightFrontWheel.runSpeed (); RightBackWheel.runSpeed (); }

void moveForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveSidewaysRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveSidewaysLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void rotateLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void rotateRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveRightForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (wheelSpeed); } void moveRightBackward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftForward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (-wheelSpeed); } void stopMoving () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (0); }

Шаг 4: Appinventor

Новое приложение appinventor с другой и более простой функциональностью (без записей)

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

Заботиться.