Cómo hacer una mano robótica a control remoto con Arduino © GPL3+

 

Cómo hacer una mano robótica a control remoto con Arduino

Cómo hacer una mano robótica a control remoto con Arduino © GPL3+

Una mano robótica que emula el movimiento de tu mano de forma inalámbrica a través de un guante con sensores.

 

Componentes y Suministros

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
× 1
Ard lilypadmain
Placa base Arduino LilyPad
× 1
XBee S1 (antena de rastreo)
× 2
Escudo SparkFun XBee
× 1
Escudo SparkFun Xbee para Lilypad
× 1
10275 01
Conexión básica SparkFun LilyPad FTDI – 5V
× 1
Sensor flexible de 2,2″
× 5
Resistencia de 47k ohmios
× 5
pila AAA
× 3
Soporte de batería 3xAAA
× 1
Batería de 9V (recargable NiMh)
× 1
escudo robótico
× 1
servomotor de 5V
× 5

Herramientas y máquinas necesarias.

Taladro (genérico)
Amoladora angular (genérica)
Mini taladro (genérico)
Máquina de soldar (genérica)
09507 01
Soldador (genérico)

Aplicaciones y servicios en línea

idea web
IDE de Arduino

Acerca de este proyecto

 

título (opcional)

Este es mi proyecto escolar para el 5° año de bachillerato (soy italiana, tenemos 5 años de bachillerato).

Consiste en una mano artificial controlada por un guante con sensores flexibles. La mano artificial reproduce los movimientos de la mano con el guante de control, de forma inalámbrica. Tanto la mano como el guante funcionan con Arduino.

Solo quería compartir mi trabajo para cualquier persona interesada 🙂

Esta guía aún está en desarrollo, lo siento si algunas partes no están claras, pondré algunas imágenes en 3D en el futuro.

Comparto algo sobre mi proyecto en mi página de Facebook: https://www.facebook.com/Gabry295

Paso 1: Materiales necesarios

 

Compré casi todo de https://www.sparkfun.com/, tienen precios decentes (¡no quiero hacer publicidad!) Costo total: alrededor de $160

Materiales para el guante de control:

• a guante elástico;

Lily Pad Arduino placa (hay diferentes versiones, que normalmente solo tienen 4 entradas analógicas, así que ten cuidado y compra la de la foto): funciona exactamente como el clásico Arduino UNO, por lo que incluso puedes usar un Arduino Nano, pero ojo el voltaje necesario;

Módulo XBee: para comunicación por radio;

Escudo para conectar el xbee módulo;

• 5 Sensores flexibles;

• 5 resistencias: 47kΩ;

batería con 3×1.5V baterías (Lilypad se puede alimentar de 2,7 a 5,5 V, por lo que 4,5 V está bien);

Adaptador LilyPad FTDI: para conectar la placa LilyPad a la PC y cargar programas con el IDE de Arduino (bastante opcional, porque también puedes usar la placa Arduino UNO quitando el chip ATmega, pero es complicado hacer este tipo de conexión cada vez).

-Materiales para la mano robótica:

• un acero estructura para la palma de la mano y madera para dedos;

Arduino UNO tablón;

Módulo XBee;

• 5 servomotores Alimentado a 5V (utilicé TowerPro SG90);

• a escudo de refuerzo para Arduino UNO: para conectar los servomotores utilicé el Escudo_robot de FuturaElettronica, que también tiene un regulador de conmutación para alimentar todo el circuito, pero puedes usar cualquier escudo diseñado para controlar servomotores. Enlace: https://store.open-electronics.org/index.php?_rou… ;

Escudo para conectar el XBee módulo (hice uno horrible, pero es barato y necesitaba hacer uno pequeño debido al tamaño del Robot_Shield);

sedal;

• (opcional) las plomadas de pesca, para fijar la línea de pesca, también se pueden hacer simplemente haciendo un nudo;

batería de 9V.

-Herramientas necesarias:

amoladora angular (principalmente para cortar madera y acero);

amoladora axial;

maquina de soldar (con electrodos);

taladro;

estación de soldadura y soldar;

• electricista las tijeras;

alicates;

Manguito termorretráctil.

Paso 2: Hacer el guante

Para hacer el guante de control, sugiero primero elegir la posición correcta de los diversos componentes y luego conectar todo con la longitud correcta de cable.

Para realizar lecturas analógicas con Arduino LilyPad, debe crear un divisor de voltaje, ya que estos sensores flexibles no funcionan como potenciómetros (solo tienen 2 contactos).

Entonces, siguiendo el esquema, primero suelde la resistencia 5 en la placa LilyPad, un lado a los 5 pines analógicos diferentes, el otro en común a tierra. Luego suelde los sensores flex, un lado a los 5 pines analógicos diferentes y el otro común al positivo.

Luego conecte el XBee Shield: dos cables para la fuente de alimentación, los otros dos para la señal. Suelde el pin Tx al Rx y viceversa.

Ahora necesitas la batería y el guante, listo.

ADVERTENCIA: no alimente el Arduino LilyPad por encima de 5,5 V y no lo alimente al revés (aunque a veces lo hice por error… ¡Y sigue funcionando!)

Paso 3: Haz la mano robótica

 

Esta es la parte más complicada, ya que debe elegir los materiales correctos para hacer la mano, pero también puede ser fácil si tiene la capacidad de imprimir la mano en 3D (hay muchos proyectos 3D diferentes en la web para imprimir partes de la mano). mano).

Empecé haciendo los dedos con corcho, para encontrar la estructura adecuada para los movimientos, luego lo hice con una rama.

Entonces haga tres cilindros de madera por dedo, dos de los cuales con 1 cm en la longitud normal de su falange, necesarios para encajar una pieza en otra.

Luego con una amoladora angular haz los surcos para que las piezas encajen entre sí (mira las imágenes, lo entenderás mejor).

Necesitarás papel de lija para hacer las piezas curvas, para que puedan rotar.

Use un taladro para hacer los agujeros para la bisagra, luego necesita hacer dos agujeros más para la línea de pesca, verticalmente, uno hacia el interior de la mano y otro hacia el exterior. Entonces, cuando los cables están conectados a la parte superior del dedo, cuando tiras del uno, el dedo se cierra, y cuando tiras del otro, el dedo se abre.

La palma era problemática, ya que inicialmente la hice con madera y las partes más delgadas siempre se rompían. Así que decidí hacerlo de acero y no tuve problemas.

Córtalo y haz unas protuberancias similares a las que se hacen para los dedos para unirlos a la palma (ver las imágenes como referencia). Luego usa el taladro para hacer los otros agujeros para el hilo de pescar, el pulgar será complicado ya que no está vertical como los otros dedos.

Después de haber hecho la mano, es necesario fabricar un soporte para los cinco servomotores y un soporte para las placas Arduino UNO. Asegúrese de elegir la posición correcta de los servos, para que no se toquen entre sí durante la rotación.

La última parte es conectar los dedos a los servomotores: colocar los hilos de pescar en la parte superior del dedo y pasarlos por los orificios; luego, cuando los alambres estén en la parte inferior de la mano, gire el rotor (manualmente, sin energizarlo) a su rotación máxima (180°) para que quede en posición vertical, luego ajuste el alambre que cierra el dedo al la mayor parte del orificio inferior del rotor, por ejemplo, haciendo un nudo; girar de nuevo el rotor a 0° (vuelve a estar vertical y el nudo hecho antes está en la parte superior) luego enganchar el otro hilo (que abre el dedo) en el orificio más bajo del rotor. Sigue la última imagen de este paso para entender mejor.

Así, cuando el motor está a 0° (vertical) el dedo está abierto y cuando el rotor está a 180° (vertical de nuevo) el dedo está cerrado.

Paso 4: Circuito de mano robótica

 

Para el circuito, puede optar por utilizar un escudo servo Arduino UNO (busque en eBay o Amazon) con un escudo XBee, o hacer un escudo personalizado (haré uno tan pronto como sea posible) con el módulo XBee y pines para servo motores y alimentar el Arduino UNO a través de su puerto jack.

El DIY XBee Shield que hice usa una resistencia de 12 KOhm y una resistencia de 22 KOhm, puedes ver el cableado en las imágenes.

Así que usé lo que había comprado antes, pero puedes usar cualquier cosa que te permita controlar los servos y el XBee.

Los servomotores tienen 3 cables:

  • amarillo: señal (conectar al pin digital);
  • rojo: potencia (+5V);
  • marrón: tierra (GND).

Así que ahora no cometerás errores 🙂

Usé el tipo más simple de servomotor, funcionando a 5V, con un ángulo de rotación de 180 grados (ese es el ángulo perfecto, no necesitamos más).

Los puertos USB de una computadora no pueden dar suficiente energía para controlar 5 servos, por lo que sugiero usar una fuente de alimentación de 12V para probar todo, luego usar la batería de 9V (se prefieren las alcalinas).

Paso 5: Programas

El programa de manos y guantes, con todas las descripciones, se encuentran en los enlaces a continuación.

RECUERDA: Para cargar el programa, debes quitar todo lo que esté conectado a los pines TX y RX del Arduino (en este caso el módulo XBee), de lo contrario el programa no cargará. Además, no olvide configurar el tipo correcto de Arduino en el IDE (LilyPad o Arduino UNO).

Enlaces para ambos códigos:

Pruebe este código para probar los sensores flexibles en el guante: https://codebender.cc/sketch:56264

y esto para probar la conexión entre el Lilypad y el Arduino Uno: https://codebender.cc/sketch:55014

FKZFCPSI12KB3B3.ino
FLFSX7LI6M2MXY9.ino

codificado

Archivo sin títuloarduino
/*
Flex Glove

Created by Santin Gabriele, 2014
I.T.S.T. "J. F. Kennedy", cl. 5^A EA
Thanks to Elias De Lamper for suggestions to improve this program!
*/

int ResThumb   = A4;  // Variables of the analog read form the flex sensors connected to the analog pins of Arduino LilyPad
int ResIndex   = A3;  
int ResMiddle  = A2;
int ResAnnular = A1;
int ResPinky   = A0;

int OpenedThumb   =0; // Variables of the values when the hand is completely opened
int OpenedIndex   =0; // This is needed for a continuous calibration
int OpenedMiddle  =0;
int OpenedAnnular =0;
int OpenedPinky   =0;

int ClosedThumb;      // Variables of the values when the hand is completely closed
int ClosedIndex;      // We can't set it to zero since that the minimum value reached
int ClosedMiddle;     // in the analog read never reach zero. We'll assign the value of
int ClosedAnnular;    // a first analog read, then the program in the loop will
int ClosedPinky;      // automatically  assing lower values

int thumb   =0;       // Variables of the values to send
int index   =0;
int middle  =0;
int annular =0;
int pinky   =0;


void setup()
{
  Serial.begin(9600);   // Activating serial communication, XBee Series 1 are pre-programmed at 9600 baud/s
  
  pinMode(ResThumb,   INPUT);   // The variables of the sensor are set as input
  pinMode(ResIndex,   INPUT);
  pinMode(ResMiddle,  INPUT);
  pinMode(ResAnnular, INPUT);
  pinMode(ResPinky,   INPUT);

  ClosedThumb   = analogRead(ResThumb);
  ClosedIndex   = analogRead(ResIndex);  
  ClosedMiddle  = analogRead(ResMiddle); 
  ClosedAnnular = analogRead(ResAnnular);
  ClosedPinky   = analogRead(ResPinky);  
}

void loop()
{
  thumb   = analogRead(ResThumb);  
  index   = analogRead(ResIndex);  
  middle  = analogRead(ResMiddle); 
  annular = analogRead(ResAnnular);
  pinky   = analogRead(ResPinky);  
  
  if(thumb   > OpenedThumb)   // Calibration reading and setting the maximum values. This needs you to completely open your hand a few times
  OpenedThumb   = thumb;
  if(index   > OpenedIndex)
  OpenedIndex   = index;
  if(middle  >  OpenedMiddle)
  OpenedMiddle  = middle;
  if(annular > OpenedAnnular)
  OpenedAnnular = annular;
  if(pinky   > OpenedPinky)
  OpenedPinky   = pinky;
  
  if(thumb   < ClosedThumb)  // Calibration reading and setting the minimum values. This needs you to completely close your hand a few times
  ClosedThumb   = thumb;
  if(index   < ClosedIndex)
  ClosedIndex   = index;
  if(middle  < ClosedMiddle)
  ClosedMiddle  = middle;
  if(annular < ClosedAnnular)
  ClosedAnnular = annular;
  if(pinky   < ClosedPinky)
  ClosedPinky   = pinky;
  
  thumb   = map(thumb  ,ClosedThumb  ,OpenedThumb  ,0,180);  // The analog read has to be readapted in values between 0 and 180 to be used by the servomotors.
  index   = map(index  ,ClosedIndex  ,OpenedIndex  ,0,180);  // The minimum and maximum values from the calibrations are used to correctly set the analog reads.
  middle  = map(middle ,ClosedMiddle ,OpenedMiddle ,0,180);
  annular = map(annular,ClosedAnnular,OpenedAnnular,0,180);  
  pinky   = map(pinky  ,ClosedPinky  ,OpenedPinky  ,0,180);
  
  Serial.write("<");      // This character represent the beginning of the package of the five values
  Serial.write(thumb);    // The values are sent via the Tx pin (the digital pin 1)
  Serial.write(index);  
  Serial.write(middle);  
  Serial.write(annular);
  Serial.write(pinky);
  
  delay(30);
}
maestro de código
https://codebender.cc/sketch:59559
maestro de código
https://codebender.cc/sketch:55013
maestro de código
https://codebender.cc/sketch:56264
maestro de código
https://codebender.cc/sketch:55014

diagramas

circuito de guantes
Descargar
Circuito a realizar para el guante sensor
Paja
Circuito de mano robótica
Descargar
Circuito a realizar para la mano del robot
robot%20mano

Fuente Arduino.cc