Plataforma móvil controlada con Arduino, joystick y servos

Este artículo detalla la concepción, el diseño y la implementación de un fascinante proyecto de robótica básica: una Plataforma Móvil Cuadrúpeda de Cartón que, a pesar de su estructura simple y económica, es controlada con precisión por un joystick a través de una placa Arduino. Este proyecto es una fusión perfecta de electrónica, programación y diseño mecánico con materiales reciclables o de bajo costo.



🔩Funcionamiento

Este proyecto tiene como objetivo diseñar y construir una plataforma móvil, cuya estructura base está hecha de cartón en forma cuadrada. Utilizando una placa Arduino como núcleo de control, la plataforma será capaz de levantarse mediante el movimiento de cuatro servomotores de 5V, los cuales serán controlados por un joystick. Este proyecto combina conceptos de electrónica, programación y diseño mecánico, ideal para aprender y poner en práctica conocimientos de robótica básica.

El proyecto se basa en la réplica simplificada de la locomoción de un organismo cuadrúpedo, utilizando la sencillez del cartón como material estructural y la precisión de los servomotores para la articulación.

El Corazón Estructural: Cartón y Geometría

La elección del cartón como material base no es trivial. El cartón corrugado ofrece una excelente relación entre rigidez y peso, facilitando la construcción rápida y económica de la estructura sin requerir herramientas complejas.

  • Estructura Base: Una plataforma cuadrada simple sirve como el “cuerpo” central.
  • Articulaciones: Se diseñan y recortan cuatro “patas” que se unen a las esquinas de la base. El diseño se centra en permitir un movimiento vertical básico de elevación.
  • Puntos de Pivote: Cada pata se conecta a la base mediante un servomotor, que actúa como la única articulación de la pata, permitiendo un movimiento angular de 90° a 0° para levantar o bajar la plataforma.
BASE
SOPORTES

Actuadores y Control de Movimiento: Servomotores y Joystick

El movimiento es generado por cuatro servomotores de 5V (típicamente SG90 o MG90S). Estos motores son ideales porque permiten un control angular preciso (no rotación continua), esencial para la robótica de posición.

  • Los 4 Servomotores: Cada uno está asignado a una pata y se conecta a un pin PWM digital del Arduino. La librería Servo.h de Arduino es fundamental para controlar su posición con un ángulo de 90 a 0 grados.
  • El Joystick: Se utiliza un módulo joystick analógico (por ejemplo, el módulo KY-023 o similar). Este módulo tiene dos potenciómetros internos (uno para el eje X y otro para el eje Y) que proporcionan valores analógicos (de 0 a 1023 en Arduino) que varían según la inclinación de la palanca. Un movimiento en el joystick es la entrada principal que se traduce en el movimiento de las patas.

🔨Componentes

ComponenteCantidadEspecificaciónFunción
Placa Arduino1Arduino Uno, Nano, etc.Control de componentes(cerebro)
Servo4SG90 5vMover la base
Joystick 1(KY-023)Controlar servos
Cables de conexiónnUnir componentes
Fuente de alimentación15vSuministro de energía


🔌Conexiones

Conecta los pines del joystick:

  • VCC a 5V de la fuente de alimentación.
  • GND a GNDde la fuente de alimentación.
  • VRx a A0 (para eje X).
  • VRy a A1 (para eje Y).

Conecta los servos:

  • Conecta todos los sevo motores a la fuente de alimentación, GND a GND y VCC a 5v
  • Servo 1(eje Y positivo): pin de señal a pin 5 del arduino.
  • Servo 2(eje X positivo): pin de señal a pin 6 del arduino.
  • Servo 3(eje Y negativo): pin de señal a pin 9 del arduino.
  • Servo 4(eje X negativo): pin de señal a pin 10 del arduino.

Conecta el arduino:

  • Pin GND del arduino a GND de la fuente de alimentación

0️⃣Código

La programación requiere la librería Servo.h y la función clave de mapeo (map()) para traducir el rango analógico de 0-1023 del joystick al rango angular de 0-90 de los servomotores.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <Arduino.h>

#include <Servo.h> // Importar la librería para controlar el servo

const int servoMasYPin = 5;
const int servoMasXPin = 6;
const int servoMenosYPin = 9;
const int servoMenosXPin = 10;

// Pines del joystick
const int VRx = A0;
const int VRy = A1;
const int SW = 2;

// Creación del objeto servo
Servo servoMasY, servoMenosY, servoMasX, servoMenosX;

void setup() {

  // Inicialización del servos 
  servoMasY.attach(servoMasYPin);
  servoMenosY.attach(servoMenosYPin);
  servoMasX.attach(servoMasXPin);
  servoMenosX.attach(servoMenosXPin);

  // Posición inicial del servo: 90 grados
  servoMasY.write(90); 
  servoMenosY.write(90);
  servoMasX.write(90);
  servoMenosX.write(90);

  delay(5000);
  // Inicialización del puerto serie
  Serial.begin(9600);
}

void loop() {
  // Leer valores analógicos del joystick
  int x = analogRead(VRx); // Eje X
  int y = analogRead(VRy); // Eje Y

  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.println(y);
  // Mapear valores de 0-1023 a 90-0 
  int masY = map(y, 512, 1023, 90, 0);
  int menosY = map(y, 512, 0, 90, 0);
  int menosX = map(x, 512, 0, 90, 0);
  int masX = map(x, 512, 1023, 90, 0);



   // Controlar los servos, se cambiaron los ejes, debido a que en mi caso el josystick está parado
   //juega un poco con los valoes hasta obtener el movimiento deseado
   servoMasX.write((y > 562) ? masY : 90);
   servoMenosX.write((y < 462) ? menosY : 90);
   servoMasY.write((x > 562) ? masX : 90);
   servoMenosY.write((x < 462) ? menosX : 90);
   
  delay(50);
}


🖌️Diseños


🎬Videos


📑Conclusión

El proyecto de la Plataforma Cuadrúpeda de Cartón ha demostrado ser una excelente convergencia de ingeniería de bajo coste y control de precisión. Al fusionar la simplicidad estructural del cartón con la versatilidad de la placa Arduino y la exactitud de los servomotores, hemos creado un prototipo funcional de robótica cuadrúpeda.

El principal logro del proyecto radica en la implementación exitosa del control de posición a través de una interfaz manual. La traducción de las señales analógicas del joystick (entrada) al control angular (90° a 0°) de los cuatro servomotores (salida) mediante la función map() y la librería Servo.h es la esencia de la programación de actuadores.

Este ejercicio no solo válida los conocimientos en diseño mecánico frugal y electrónica básica, sino que también establece una base crucial para futuros desarrollos robóticos. La limitación del cartón y la necesidad de una fuente de alimentación externa robusta para los servos son lecciones valiosas que preparan al desarrollador para abordar retos más complejos, como la implementación de la cinemática inversa para una marcha real o la adopción de materiales más resistentes. En resumen, este proyecto es un testimonio de que la robótica avanzada comienza con la experimentación creativa y el dominio de los fundamentos de la electrónica.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra