O braço robótico é um dos mecanismos mais desejados para sistemas de automação por conta da sua precisão e agilidade.
Objetivo deste Projeto
Este é um projeto simples e de montagem rápida, a ideia é fornecer a estrutura de funcionamento pronto, para que você apenas modifique de acordo com sua necessidade.
Materiais necessários
- Fonte de Alimentação 5V 2A;
- Cabo MicroUSB;
- Braço robótico do Arduino Ômega;
- 4x Servos Motores SG92R;
- ESP32;
Montagem do Braço
Por mais que pareça complicado, o braço basicamente já vem parcialmente montado pelo o Arduino Ômega, a única coisa necessária será inserir as peças de encaixe do motor no braço e encaixar o motor no braço. Caso você queria deixar este braço usual de forma continua, é interessante seguir umas boas práticas.
Boas práticas na Mecânica do Braço
Este braço não foi feito para aplicações em campo, por isso ele é simples, é uma prova de conceito! Por isso, é importante se atentar aos pontos de conexões mecânicas fixas e móveis, pois o parafuso não pode nem está apertado e nem muito folgado. Além disso, é necessário o uso de um trava rosca no parafuso, caso contrário o movimento do braço vai desenroscar a porca.
Caso você não saiba o que é trava rosca, é um liquido que se passa em rosca de parafusos para impedir que a porca desenrosque com vibrações ou movimentos e caso você não tenha, use esmalte de unha.
Limitações do Braço
Embora cada servo motor tenha um ângulo de trabalho de até 180°, não poderão exercer todo esse ângulo no braço, caso contrário irá forçar o motor. Por conta das limitações mecânicas, o correto é limitar também o ângulo de trabalho de cada motor.
Diagrama esquemático
Uma observação é que é necessário uma alimentação a parte para os motores, pois se alimentado diretamente com a placa do ESP32, o diodo do conector USB vai superaquecer.
Código do Braço Robótico do Arduino Ômega
Basicamente o código a seguir verifica se houve alguma comunicação via serial ou bluetooth e envia o comando cada servo motor, respeitando as limitações de ângulo do braço. No entanto, para que o código funcione corretamente, é necessário baixar a biblioteca <Arduinojson.h> e <Servo.h> para ESP32.
#include <Servo.h> int servosPins[] = {13, 27, 33, 32}; // Pinos do ESP32 int servosLimit[] = {180, 100, 120, 90}; // Pinos do ESP32 int nServos = sizeof(servosPins) / sizeof(int); /* Obtem o tamanho do array (pega o valor de byte do array e divide pela quantidade de bytes de uma variável do tipo inteiro (tem que ser o mesmo tipo que a do array a ser obtido o tamanho)) */ Servo servos[4]; // Define e indica que servos será um array de 4 slotes void setServo(int i, int a){ // Método de escrita no servos, com as respectiva limitaçõe de ângulo de cada eixo if(a <= servosLimit[i]) // Limita ângulo do servo para não forçar o motor servos[i].write(a); } void setup() { for(int i = 0; i < nServos; ++i) { if(!servos[i].attach(servosPins[i])) { // Inicializa PWM para os servos Serial.print("Servo "); Serial.print(i); Serial.println("attach error"); } } } void loop() { for(int i = 0; i < 180; ++i){ for(int j = 0; j < 4; ++j){ setServo(j, i); } delay(20); } for(int i = 180; i > 0; --i){ for(int j = 0; j < 4; ++j){ setServo(j, i); } delay(20); } }
Funcionamento do Braço Robótico
A ideia tinha sido usar o json por meio das duas portas seriais ou Bluetooth mas na pratica apresentou muita latência, então a melhor solução foi deixar o braço rodando realizando movimentos já programados.
Deixe uma resposta