Ardutanque v1.0

Después de un tiempo sin publicar, me he decidido a terminar la primera versión del ardutanque. Se trata de un control rudimentario, en plan R/C pero por bluetooth desde un dispositivo Android.

A partir de los posts anteriores, donde explico cómo montar el tanque y cómo controlar los motores, he seguido desarrollando el proyecto, en el cual, faltaba un elemento esencial, el control.

Éste ha sido posible gracias a una aplicación para móvil que encontré hurgando por el playStore, la cual tenía implemetado el control en 8 direcciones de un coche, mas encendido/apagado de luces y control de la velocidad del mismo. La aplicación es y permite el control tanto con botones (como un mando de consola) o con los acelerómetros del móvil.
La aplicación en cuestión se llama Bluetooth RC Controller

Aplicación de Andico para el control de un coche r/c mediante bluetooth con android y arduino
Aplicación de Andico para el control de un coche r/c mediante bluetooth con android y arduino

El tanque, en su primera versión, no está cargado de sensores, láser… simplemente lleva los motores, un driver L298, un Arduino UNO y un módulo bluetooth. Vamos a ver cómo está montado en  un esquema:

Esquema del circuito de control del tanque
Esquema del circuito de control del tanque

La comunicación por bluetooth desde el movil es sencilla, el móvil envía un caracter por cada botón pulsado, aquí podemos ver los comandos utilizados:

  • Forward -> F
  • Back -> B
  • Left -> L
  • Right -> R
  • Forward Left -> G
  • Forward Right ->I
  • Back Left -> H
  • Back Right -> J
  • Stop -> S
  • Front Lights On -> W (upper case)
  • Front Lights Off -> w (lower case)
  • Back Lights On -> U (upper case)
  • Back Lights Off -> u (lower case)
  • Speed 0 -> 0 (Zero)
  • Speed 10 -> 1
  • Speed 20 -> 2
  • Speed 30 -> 3
  • Speed 40 -> 4
  • Speed 50 -> 5
  • Speed 60 -> 6
  • Speed 70 -> 7
  • Speed 80 -> 8
  • Speed 90 -> 9
  • Speed 100 -> q

Estos datos se recogen en el arduino por medio de la librería SoftSerial:


if (mySerial.available()){
ordenRecibida = mySerial.read();
Serial.println(ordenRecibida);
}

Para controlar las orugas del tanque, he creado dos librerías (nota mental: debería completarlas y liberarlas) para el control de un motor y del tanque (con 2 motores).

La primera es sencilla, se basa en el control de un motor, aqui tenemos la declaración de la clase motor:


#ifndef Motor_h
#define Motor_h

class Motor{
private:
int pinAvance;
int pinRetroceso;
int pinVelocidad;

void ajustarVelocidad(int velocidad);

public:
Motor();
Motor(int pinAvance, int pinRetroceso, int pinVelocidad);

//setters
void setMotor(int pinAvance, int pinRetroceso, int pinVelocidad);

void avance(int velocidad);
void retroceso(int velocidad);
void paro();
};
#endif

Es decir, un motor sólo puede estar parado, girando en un sentido o en sentido contrario.

Pero un tanque tiene dos motores, cada uno impulsa a una oruga, y además quiero que gire. Bueno, esta parte ya no depende del motor, sino del objeto tanque. En él, introduciremos los dos objetos motor y podremos realizar giros, avances, control de velocidad…

Aquí está la declaración de la clase tanque:


#ifndef Tanque_H
#define Tanque_H
#include "Motor.h"

class Tanque {
private:
Motor motorIzquierdo;
Motor motorDerecho;

public:
Tanque();
Tanque(int pinAvanceMIz, int pinRetrocesoMIz, int pinVelocidadMIz, int pinAvanceMDer, int pinRetrocesoMDer, int pinVelocidadMDer );

void setMotorIzquierdo(int pinAvance, int pinRetroceso, int pinVelocidad);
void setMotorDerecho(int pinAvance, int pinRetroceso, int pinVelocidad);

void avance(int velocidad);
void retroceso(int velocidad);
void giroIzquierda(int velocidad);
void giroDerecha(int velocidad);

void adelanteIzquierda(int velocidad);
void atrasIzquierda(int velocidad);
void adelanteDerecha(int velocidad);
void atrasDerecha(int velocidad);

void parada();
};
#endif

Este código y el .ino de control básico está disponible en mi repositorio de Github.

Os dejo, que jugar con el tanque desde el móvil vicia 🙂

El ardutanque correteando alegremente por el pasillo de casa
El ardutanque correteando alegremente por el pasillo de casa

4 opiniones en “Ardutanque v1.0”

  1. Buenos días necesito ayuda para realizar un pequeño proyecto casero con arduino, soy aficionado y estoy intentando controlar 11 salidas que me activen cada una de ellas un rele para controlar una electrovalvula para regar mi huerta, la idea es que que cuando reciba la orden de activación empiecen a activarse una de tras de otra durante un tiempo pre programado. Espero que me pueda orientar, gracias de antemano

    1. Hola Juan pues bien mira una idae saria con un bluetooht y una aplicacion en un Smartphone seria lo mas idoneo y facil pero yo que no tengo un modulo bluetooht estoy experimentando con un decodificador de tonos DTMF http://www.atva.com.ar/dtmf_3dj/dtmf_3dj.htm espero te sirva de algo esta info saludos y suerte con tu huerta

  2. hola pepe desde Perú puedes por favor ayudarme con este tanque acerca de los materiales que usas y el esquema del circuito con arduino.soy muy aficionado de ARDUINO.

    1. Hola Johann, puedes utilizar para el tanque un shield de motores y para las orugas, yo usé unos kits de Tamiya;
      Universal Plate Set 70098
      Double Gearbox Kit 70168
      Track & Wheel Set 70100

      para el resto del tanque, mírate estos posts.

Comentarios cerrados.