Robô Mecanum Omni Wheels com GRBL Stepper Motors Arduino Shield: 4 etapas
Robô Mecanum Omni Wheels com GRBL Stepper Motors Arduino Shield: 4 etapas
Anonim
Mecanum Omni Wheels Robot com GRBL Stepper Motors Arduino Shield
Mecanum Omni Wheels Robot com GRBL Stepper Motors Arduino Shield
Mecanum Omni Wheels Robot com GRBL Stepper Motors Arduino Shield
Mecanum Omni Wheels Robot com GRBL Stepper Motors Arduino Shield
Robô Mecanum Omni Wheels com GRBL Stepper Motors Arduino Shield
Robô Mecanum Omni Wheels com GRBL Stepper Motors Arduino Shield

Robô Mecanum - Um projeto que eu queria construir desde que o vi no blog de mecatrônica gread do Dejan: howtomechatronics.com

Dejan realmente fez um bom trabalho cobrindo todos os aspectos de hardware, impressão 3D, eletrônica, código e um aplicativo Android (inventor do aplicativo do MIT)

Este é um grande projeto de overhoul que atualiza todas as habilidades de um criador.

Tive poucas mudanças a fazer nos projetos

Eu não queria usar o PCB customizado que ele usava, mas um escudo GRBL antigo que eu tinha em casa.

Eu queria usar o BlueTooth

Então:

Suprimentos

Arduino Uno + Escudo GRBL

Motores de passo

Módulo HC-06 BlueTooth

Bateria lipo 12V

Etapa 1: Hardware

Hardware
Hardware
Hardware
Hardware

Imprimiu as rodas e as montou como aqui:

4 motores de passo conectados ao chassi (no meu caso, uma gaveta não utilizada de cima para baixo)

Passei os cabos até o topo do robô.

Etapa 2: Eletrônica

Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos

Usei meu módulo HC-06 BT, A parte mais difícil foi configurar a blindagem GRBL para funcionar com motores de 4 passos, uma vez que não há um bom guia para isso, Há a necessidade de colocar Jumpers como pode ser visto na foto em anexo, para que a saída "Ferramenta" da blindagem também controle um motor de passo. também precisa colocar "Enable" Jumper

a fiação dos 4 steppers e pronto.

Eu também forneci a energia de baterias de 12 V - duas stes - uma para o Arduino e outra para o GRBl Shield

Etapa 3: Código Arduino

/ * === Arduino Mecanum Wheels Robot === Controle do smartphone via Bluetooth da Dejan, www. HowToMechatronics.com Bibliotecas: RF24, www. HowToMechatronics.com AccelStepper de Mike McCauley: www. HowToMechatronics.com

* / / * 2019-11-12 Gilad Meller (https://www.keerbot.com - modifique o código para funcionar com a blindagem do motor arduino GRBL Os motores de passo na blindagem são mapeados como (passo / direção): 2/5 3 / 6 4/7 12/13 usando driver A4988 12V

O código de Dejan usa SoftwareSerial e o meu usará os pinos RX, TX padrão (0, 1) do Arduino Uno Nota: Certifique-se de rempve os pinos RX TX ao fazer o upload do esboço para o arduino ou o upload falhará.

*/ #incluir

// Defina os motores de passo e os pinos que usarão AccelStepper LeftBackWheel (1, 2, 5); // (Tipo: driver, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4

int entrandoByte = 0, c; // para dados seriais de entrada int wheelSpeed = 100;

void setup () {Serial.begin (9600); // abre a porta serial, define a taxa de dados para 9600 bps // Define os valores iniciais para os steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);

}

void loop () {if (Serial.available ()> 0) {// ler o byte de entrada: EntryByte = Serial.read ();

c = Byte de entrada; switch (c) {case 71: Serial.println ("Recebi Rotate right W"); vire à direita(); pausa; caso 65: Serial.println ("Recebi Rotate left Q"); vire à esquerda(); pausa; caso 1: Serial.println ("Recebi BK / LFT"); moveRightBackward (); pausa; caso 2: Serial.println ("Recebi BK"); mover para trás(); pausa; caso 3: Serial.println ("Recebi BK / RT"); moveRightBackward (); pausa; caso 4: Serial.println ("Recebi ESQUERDA"); moveSidewaysLeft ();

pausa; caso 5: Serial.println ("Recebi STOP"); pare de se mexer(); pausa; caso 6: Serial.println ("Recebi RT"); moveSidewaysRight (); pausa; caso 7: Serial.println ("Recebi FWD / LFT"); moveLeftForward (); pausa; caso 8: Serial.println ("Recebi FWD"); Siga em frente(); pausa; caso 9: Serial.println ("Recebi FWD / RT"); moveRightForward (); pausa; padrão: Serial.print ("Não é um comando"); Serial.println (entrandoByte, DEC); pausa; } } //mover para trás(); 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); }

Etapa 4: Appinventor

Um novo aplicativo appinventor com funcionalidade diferente e mais simples (sem gravações)

Por favor, envie a mensagem e eu envio para você - o upload falha.

Tome cuidado.