Carro explorador (parte 1)

A continuación se presenta la primera parte del carro explorador.

El carro consiste en conectarse por medio de bluetooth (HC-06) al control, que será un teléfono con una aplicación, donde al iniciar la aplicación debe ingresar una contraseña, luego se mostrará una pantalla de control dónde se encuentra el botón de conectar (conectarse con el carro), Hablar (dar comandos de voz al carro, ejemplo para encender la luces), ac. sensor(activar el acelerómetro, pero dicho botón va a estar accesible hasta que el carro ya se haya conectado con el teléfono), también va a tener un slider (se va a utilizar para mover un servo motor, lo cual va a tener la cámara) y 2 pantallas, una donde muestra la temperatura del carro y la distancia que detecta  el sensor ultrasónico(SDM-IO), dicho sensor va a estar ubicado al frente del carro, y la otra pantalla muestra la dirección del carro.

 

En esta primera parte el carro tendrá la funcionalidad de conectarse por medio del bluetooth y moverse con el acelerómetro del celular, se utilizará lo siguiente: 


*1 módulo bluetooth HC-06

*1 arduino mega

*1 driver TB6612FNG

*4 motores dc


Figura 1. Conexiones del circuito

Código del arduino:

#define TxD 1 //definir pin TxD
#define RxD 0 //definir pin RxD


//enable
int STBY = 26; //standby

//Motores derechos
int PWM1 = 2; //velocidad motor 1, ruedas derechas
int IN11 = 22; //Dirección
int IN21 = 23; //Dirección

//Motores izquierdos
int PWM2 = 3; //velocidad motor 2, ruedas izquierdas
int IN12 = 27; //Dirección
int IN22 = 30; //Dirección

//otros
int dato = 0; // Asignación de variable, letra leía por el bluetooth

void setup() {

  Serial.begin(9600);

  pinMode(STBY, OUTPUT);

  pinMode(PWM1, OUTPUT);
  pinMode(IN11, OUTPUT);
  pinMode(IN21, OUTPUT);

  pinMode(PWM2, OUTPUT);
  pinMode(IN12, OUTPUT);
  pinMode(IN22, OUTPUT);

}

//****************************cicloprincipal************************************

void loop() {

  if (Serial.available() > 0) {
    dato = Serial.read();

  }
  if (dato == 'a') //al recibir la letra "a" ejecute lo siguiente, carro hacia delante
  {
    adelante(); //llama la función
  }

  if (dato == 'k') //al recibir la letra "k" ejecute lo siguiente, carro hacia atras
  {
    atras(); //llama la función
  }

  if (dato == 'b')  //al recibir la letra "b" ejecute lo siguiente, el carro va a la derecha
  {
    derecha(); //llama la función
  }

  if (dato == 'c')  //al recibir la letra "c" ejecute lo siguiente, el carro va a la izquierda
  {
    izquierda(); //llama la función
  }

  if (dato == 'g')  //al recibir la letra "g" ejecute lo siguiente, el carro se detiene
  {
    detenerse(); //llama la función
  }

}


//****************************************Funciones*******************************************


void adelante()
{
  digitalWrite(STBY, HIGH);
  analogWrite(PWM1, 255);
  analogWrite(PWM2, 255);
  digitalWrite(IN11, HIGH);
  digitalWrite(IN21, LOW);
  digitalWrite(IN12, LOW);
  digitalWrite(IN22, HIGH);
}

void atras()
{
  digitalWrite(STBY, HIGH);
  analogWrite(PWM1, 255);
  analogWrite(PWM2, 255);
  digitalWrite(IN11, LOW);
  digitalWrite(IN21, HIGH);
  digitalWrite(IN12, HIGH);
  digitalWrite(IN22, LOW);
}

void derecha()
{
  digitalWrite(STBY, HIGH);
  analogWrite(PWM1, 255);
  analogWrite(PWM2, 255);
  digitalWrite(IN11, LOW);
  digitalWrite(IN21, HIGH);
  digitalWrite(IN12, LOW);
  digitalWrite(IN22, HIGH);
}

void izquierda()
{
  digitalWrite(STBY, HIGH);
  analogWrite(PWM1, 255);
  analogWrite(PWM2, 255);
  digitalWrite(IN11, HIGH);
  digitalWrite(IN21, LOW);
  digitalWrite(IN12, HIGH);
  digitalWrite(IN22, LOW);
}

void detenerse()
{
  digitalWrite(STBY, LOW);
}


Imágenes de la programación de la interfaz y bloques de la aplicación en app inventor:

Screen 1:

Figura 1. Interfaz screen 1
Figura 2. Bloques screen 1

Screen 2:

En la configuración del activity starter1 marcada como importante en la figura 3, en propiedades, en action agregar lo siguiente:

android.bluetooth.activier.action.REQUEST_ENABLE

                                                                        Figura 3. Interfaz screen 2 (parte 1)

Figura 4. Interfaz screen 2 (parte 2)

Figura 5. Bloques screen 2


Video del funcionamiento:






Comentarios

Entradas populares