¿Cómo hacer un brazo robótico controlado por Arduino y Bluetooth?

En el último siglo, la robótica es el campo de investigación más emergente. Los robots han tomado el control de casi todo lo que solían hacer los humanos. Podemos ver robots autónomos que realizan diversas tareas en nuestra sociedad. Existen también algunos Robots controlados a distancia que nos ayudan a realizar diversas operaciones. Desde hacer nanocircuitos en el campo de la ingeniería hasta realizar cirugías complejas en el campo de la medicina, los robots son más confiables que los seres humanos.



Brazo robotico

En este proyecto vamos a hacer un brazo robótico que será controlado por un microcontrolador Arduino. Se controlará a través de Bluetooth con la ayuda de una aplicación de control remoto de Android.



¿Cómo controlar un brazo robótico usando Arduino?

Ahora como conocemos el resumen de nuestro proyecto. Recopilemos más información sobre los circuitos y comencemos a construir un brazo robótico controlado por Bluetooth y lo controlemos a través de Bluetooth.



Paso 1: recopilación de los componentes

El mejor enfoque para iniciar cualquier proyecto es hacer una lista completa de componentes. Esta no solo es una forma inteligente de iniciar un proyecto, sino que también nos ahorra muchos inconvenientes en medio del proyecto. A continuación se incluye una lista de componentes de este proyecto:



  • Transceptor serie inalámbrico Bluetooth HC-05
  • Adaptador 6V
  • Cables de puente
  • Tablero de circuitos

Paso 2: estudiar los componentes

Como tenemos una lista completa de todos los componentes que vamos a utilizar, avancemos un paso y revisemos un breve estudio de todos los componentes.

Arduino Nano es una placa de microcontrolador que realiza diversas operaciones en diferentes circuitos. Requiere un Código C que le dice al tablero qué tareas realizar y cómo. Tiene 13 pines de E / S digitales, lo que significa que podemos operar 13 dispositivos diferentes. Arduino Nano tiene exactamente la misma funcionalidad que Arduino Uno pero en un tamaño bastante pequeño. El microcontrolador de la placa Arduino Nano es ATmega328p. Si desea controlar más de 13 dispositivos, use Arduino Mega.

Arduino Nano



Transceptor serie inalámbrico Bluetooth HC-05 : Necesitamos comunicación inalámbrica en este proyecto, por lo que usaremos tecnología Bluetooth y para ese módulo que se usará es el HC-05. Este módulo tiene varias velocidades en baudios programables, pero la velocidad en baudios predeterminada es 9600 bps. Puede configurarse como maestro o esclavo, mientras que otro módulo HC-06 solo puede funcionar en modo esclavo. Este módulo tiene cuatro pines. Uno para VCC (5V) y los tres restantes para GND, TX y RX. La contraseña predeterminada de este módulo es 1234 o 0000 . Si queremos comunicarnos entre dos microcontroladores o comunicarnos con cualquier dispositivo con funcionalidad Bluetooth como un Teléfono o Laptop HC-05 nos ayuda a hacerlo. Ya están disponibles varias aplicaciones de Android, lo que facilita mucho este proceso.

Módulo Bluetooth HC-05

Un típico Brazo robotico se compone de varios segmentos y generalmente tiene 6 articulaciones. Contiene un mínimo de 4 motores paso a paso que son controlados por la computadora. Los motores paso a paso son diferentes de otros motores de CC. Se mueven con precisión en incrementos exactos. Estos brazos robóticos se utilizan para realizar diversas operaciones. Podemos operarlos manualmente a través de un mando a distancia o podemos programarlos para que funcionen de forma autónoma.

Brazo robotico.

Paso 3: ensamblar los componentes

Ahora, como sabemos sobre el funcionamiento de todos los componentes principales utilizados. Comencemos a ensamblarlos y a hacer un circuito para construir un brazo robótico por control remoto.

  1. .Coloque la placa Arduino Nano en la placa. El Arduino se alimentará a través del cable positivo y negativo del adaptador.
  2. Coloque el módulo Bluetooth en la placa también. Encienda el módulo Bluetooth a través de Arduino. Conecte el pin Tx del módulo Bluetooth al pin Rx de la placa Arduino Nan y conecte el pin Rx del módulo Bluetooth al pin Tx de la placa Arduino Nano.
  3. Como sabemos, hay 4 motores paso a paso. Cada uno tiene un nombre técnico. Se les llama Codo , Hombro , Base, y Pinza . El Vcc y Tierra de todos los motores serán comunes y estarán conectados al positivo y negativo del adaptador de 6V. El pin de señal de los cuatro motores se conectará al pin5, pin6, pin9 y pin11 de Arduino Nano.
  4. Asegúrese de que las conexiones que ha realizado estén de acuerdo con el siguiente diagrama de circuito.

    Diagrama de circuito

Paso 4: Empezando con Arduino

Si aún no está familiarizado con Arduino IDE, no se preocupe porque a continuación se explica un procedimiento paso a paso para configurar y usar Arduino IDE con una placa de microcontrolador.

  1. Descargue la última versión de Arduino IDE de Arduino.
  2. Conecte su placa Arduino Nano a su computadora portátil y abra el panel de control. Luego, haga clic en Hardware y sonido . Ahora, haga clic en Dispositivos e impresoras. Aquí, busque el puerto al que está conectada su placa de microcontrolador. En mi caso es COM14 pero es diferente en diferentes computadoras.

    Encontrar puerto

  3. Haga clic en el menú Herramientas y configure la placa para Arduino Nano en el menú desplegable.

    Tablero de ajuste

  4. En el mismo menú de herramientas, establezca el puerto en el número de puerto que observó antes en el Dispositivos e impresoras .

    Puerto de configuración

  5. En el mismo menú de herramientas, configure el procesador ATmega328P (antiguo cargador de arranque).

    Procesador

  6. Para escribir código para operar los servomotores, necesitamos una biblioteca especial que nos ayudará a escribir varias funciones para los servomotores. Esta biblioteca se adjunta junto con el código, en el enlace a continuación. Para incluir la biblioteca, haga clic en Bosquejo> Incluir biblioteca> Agregar ZIP. Biblioteca.

    Incluir biblioteca

  7. Descargue el código adjunto a continuación y péguelo en su IDE de Arduino. Clickea en el subir para grabar el código en la placa del microcontrolador.

    Subir

Para descargar el código, haga clic aquí.

Paso 5: descarga de la aplicación

Como ahora hemos ensamblado todo el circuito y cargado el código en la placa del microcontrolador. Descarguemos una aplicación móvil que funcionará como control remoto para el brazo robótico. Hay una aplicación gratuita disponible en Google Play Store. El nombre de la aplicación es Control de robot de brazo pequeño . Para realizar una conexión Bluetooth, encienda el Bluetooth en su móvil. Ve a la configuración y empareja tu móvil con el módulo HC-05. Después de hacer esto, presione el botón Bluetooth en la aplicación. Si se pone verde, significa que la aplicación ahora está conectada y lista para operar el brazo robótico. Hay controles deslizantes para configurar el brazo robótico que se desee.

Aplicación

Paso 6: comprensión del código

El código está bien comentado y es fácil de entender. Pero aún así, se explica brevemente a continuación.

1. Al principio, se incluye una biblioteca para escribir un código para operar servomotores. Otra biblioteca matemáticas.h se incluye para realizar diferentes operaciones matemáticas en el código. También se inicializan cuatro objetos para ser utilizados por los cuatro servomotores.

#include // biblioteca arduino #include // biblioteca c estándar #define PI 3.141 Servo baseServo; Servo hombroServo; Servo codoServo; Pinza servoServo; comando int;

2. Luego se declara una estructura para tomar valores para los servomotores de base, hombro y codo.

struct jointAngle {// declarando una estructura int base; int hombro; int codo; };

3. Después de esto, algunas variables se inicializan para almacenar el agarre, el retardo y la posición deseados del servomotor. la velocidad se establece en 15 y se crea un objeto para tomar el valor del ángulo en la estructura.

int deseadoGrip; int gripperPos; int deseadoDelay; int servoSpeed ​​= 15; int listo = 0; struct jointAngle desireAngle; // ángulos deseados de los servos

4. configuración vacía () es una función que se utiliza para configurar los pines de Arduino como INPUT o OUTPUT. Aquí en esta función, hemos declarado que el pin de los motores estará conectado a qué pines del Arduino. También se garantiza que Arduino no lea la entrada en serie durante demasiado tiempo. La posición inicial y la velocidad en baudios también se configuran en esta función. La tasa de baudios es la velocidad a la que la placa del microcontrolador se comunicará con los servos y el módulo Bluetooth adjunto.

configuración vacía () {Serial.begin (9600); baseServo.attach (9); // conecta el servo base en el pin 9 al objeto servo shoulderServo.attach (10); // conecta el servo de hombro en el pin 9 al objeto servo elbowServo.attach (11); // conecta el servo codo en el pin 9 al objeto servo gripperServo.attach (6); // conecta el servo de pinza en el pin 9 al objeto servo Serial.setTimeout (50); // asegura que el arduino no lee el serial por mucho tiempo Serial.println ('iniciado'); baseServo.write (90); // posiciones iniciales de los servos shoulderServo.write (150); elbowServo.write (110); listo = 0; }

5. servoParallelControl () es una función que se utiliza para detectar la posición actual del brazo robótico y moverlo según el comando dado a través de la aplicación móvil. Si la posición actual es menor que la real, el brazo se moverá hacia arriba y viceversa. Esta función devolverá el valor de la posición actual y la velocidad del servo.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // lee la posición actual int newPos = startPos; // int theSpeed ​​= velocidad; // define dónde está la posición con respecto al comando // si la posición actual es menor que el movimiento real hacia arriba if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); retraso (theSpeed); return 0; } else {return 1; }}

6. bucle vacío () es una función que se ejecuta repetidamente en un bucle. Esta función lee los datos que vienen en serie y almacena el ángulo de cada servo en la estructura. Inicialmente, el estado de todos los servos se establece en cero. Aquí una función servoParallelControl () se llama y se le pasan parámetros. esta función devolverá el valor y se almacenará en una variable de estado.

bucle vacío () {if (Serial.available ()) {listo = 1; ángulo deseado.base = Serial.parseInt (); deseadoAngle.shoulder = Serial.parseInt (); deseadoAngle.elbow = Serial.parseInt (); deseadoGrip = Serial.parseInt (); deseadoDelay = Serial.parseInt (); if (Serial.read () == ' n') {// si el último byte es 'd' entonces detenga la lectura y ejecute el comando 'd' significa 'done' Serial.flush (); // limpiar todos los demás comandos apilados en el búfer // enviar la finalización del comando Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int hecho = 0; while (hecho == 0 && listo == 1) {// mueve el servo a la posición deseada status1 = servoParallelControl (deseadoAngle.base, baseServo, deseadoDelay); status2 = servoParallelControl (ángulo deseado.hombro, hombroServo, retraso deseado); status3 = servoParallelControl (ángulo deseado. codo, codoServo, retraso deseado); status4 = servoParallelControl (deseadoGrip, gripperServo, deseadoDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // fin de while}

Ahora, este fue todo el procedimiento de hacer un brazo robótico. Después de grabar el código y descargar la aplicación, el robot debería funcionar perfectamente bien cuando se muevan los controles deslizantes de la aplicación. También puede programar el brazo para que funcione de forma autónoma para realizar la tarea deseada.