|   FOROS      |         |     KIO4 |      
   Inicio B4A (Basic4Android) App inventor 2 WAMP - PHP - MySQL
   Elastix - VoIP Cosas de Windows Webs interesantes Arduino
  Estación meteorológica Visual Basic Script (VBS) Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

____________________________

Bluetooth y Arduino. Proyecto cochecito - 1
Bluetooth y Arduino. Proyecto cochecito - 2

Bluetooth y Arduino. Proyecto cochecito - 3

 

29C.- Arduino - Motores de contínua - Android - Bluetooth.

Proyecto de un cochecito controlado con un móvil con Android por Bluetooth y Arduino. App inventor.

 

- Vamos a controlar un cochecito movido por dos motores de corriente contínua mediante Bluetooth y Arduino. El control lo haremos mediante un móvil o una tablet con Android.

- Vídeo del cocherito leré. (NOTA: Mientras preparo el vídeo del cochecito puedes ver este.)

- Si tienes problemas para localizar los elementos necesarios, envíame un correo y te diré donde encontrarlos barato.

- Necesitaremos:

- Un Arduino UNO.

- Un módulo Bluetooth para el Arduino.

- Un driver o controlador para los motores de contínua.

- Dos motores de contínua.

Se puede utilizar cualquier motorcito de contínua que funcione con 5 V... 9 V

- Un portapilas para 6 o 9 voltios.

Por unos 10 € se puede encontrar el chasis, los motorcitos, las ruedas y el portapilas.

Utiliza dos ruedas de tracción y una ruedecilla libre en la parte de atrás.

Uno de los problemas que tendrá este cochecito, es distinto movimiento de sus ruedas, es decir aunque los motores de iguales características, uno siempre irá más veloz de otro, de tal manera que cuando intentemos que el coche circule en línea recta, debido a las distintas velocidades de los motores, curvará su dirección. Esto ser podría correguir utilizando otra forma de dirección o controlando individualemente la velocidad de cada motor mediante una realimentación.

__________________________

Leemos estos dos tutoriales para saber el funcionamiento de nuestro proyecto:


- 1º Lees este tutorial para aprender a utilizar el Arduino, controlador de motores y los motores:

Arduino + Controlador + Motores

- 2º Lees este tutorial para aprender programar con App inventor Android, Bluetooth y Arduino:

Android + Bluetooth + Arduino con App inventor

__________________________

- Comenzamos.

- Una vez leído los dos tutoriales anteriores, comenzamos...

- Vamos a empezar por el programa que tenemos que instalar en el móvil, puede servir el que hemos visto en: Android + Bluetooth + Arduino con App inventor lo puedes instalar en el móvil desde este QR:

Instálalo en tu móvil escaneando este QR

 

____________________________
- Conexiones.

Módulo
ENA
In1
In2
In3
In4
ENB
Arduino
10
9
8
7
6
5
Módulo Bluetooh
Arduino
VCC 3,3 V
GND GND
TXD RX (es la conexión 0 del Arduino)
RXD TX (es la conexión 1 del Arduino)

- El módulo Bluetooth se alimenta con 3,3 V.

- El módulo controlador de los motores alimenta al Arduino con 5 V.

- El módulo Arduino solo necesita la alimentación de 5 V que viene del controlador, no es necesario alimentar al Arduino con el USB ni con el conector negro de alimentación.

- No olvides conectar Gnd desde el controlador de motores al Gnd del Arduino.

- Cuando vayas a cargar el programa al Arduino, quita el cable rojo de alimentación del módulo Bluetooth (si intentas cargar con el módulo Bluetooth conectado, dará error). Una vez cargado el programa en el Arduino, vuelve a conectar el cable rojo del módulo Bluetooth.

IMPORTANTE:

1.- Debes vincular al módulo Bluetooth al móvil, el nombre del módulo Bluetooth será linvor o HC-06. La contraseña: 1234

2.- Para cargar el programa al Arduino debemos quitar el cable de alimentación del Bluetooth, cuando esté cargado volvemos a conectar ese cable.

____________________________
- Código.

Programa para el Arduino.
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
// diciembre 2015

// Conexiones del Motor A
char val;
int enA = 10;
int in1 = 9;
int in2 = 8;

// Conexiones del Motor B
int enB = 5;
int in3 = 7;
int in4 = 6;

void setup() { 
  Serial.begin(9600); // Aqui establecemos la velocidad
  // Terminales de salida en el Arduino
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  analogWrite(enA, 90);
  analogWrite(enB, 90);
}

void loop() { 
if( Serial.available() )
val = Serial.read();

// Avanza Motor A
if( val == '1' )
{ 
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
}

// Avanza Motor A y B
if( val == '2' )
{ 
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

// Avanza Motor B
if( val == '3' )
{ 
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

// Parar A
if( val == '4' )
{ 
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW); 
} 

// Parar A y B
if( val == '5' )
{ 
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
} 

// Parar B
if( val == '6' )
{ 
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
} 

// Retrocede A
if( val == '7' )
{ 
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
} 

// Retrocede A y B
if( val == '8' )
{ 
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH); 
} 

// Retrocede B
if( val == '9' )
{  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH); 
} 

if( val == 'A' )
{ 
analogWrite(enA, 70);
analogWrite(enB, 70);
} 
if( val == 'B' )
{ 
analogWrite(enA, 110);
analogWrite(enB, 110);
} 
if( val == 'C' )
{ 
analogWrite(enA, 150);
analogWrite(enB, 150);
} 
if( val == 'D' )
{ 
analogWrite(enA, 200);
analogWrite(enB, 200);
} 
if( val == 'E' )
{ 
analogWrite(enA, 250);
analogWrite(enB, 250);
} 

}

- Según se envíe los caracteres A, B, C, D o E, la velocidad de los motores será 70, 110, 150, 200 o 250. Estos valores producen distintos Duty Cycle de PWM.

____________________________
____________________________
____________________________
____________________________
- Giro del cochecito

- Vamos a añadir dos Botones en la aplicación del móvil para poder girar a derecha e izquierda.

- Agregamos los Botones "Gira a izquierda" y "Gira a derecha".

- Los renombramos como X, Y.

- Añadimos los bloques siguientes...

- Es decir, cuando pulsemos el Botón a izquierda se enviará una "X". Cuando pulsemos el botón a derecha, se enviará una "Y" por Bluetooth.

 

Programa para el Arduino.
// Juan Antonio Villalpando
// juana1991@yahoo.com
// diciembre 2015 // kio4.com char val; int velocidad=90; int enA = 10; int in1 = 9; int in2 = 8; // Conexiones del Motor B int enB = 5; int in3 = 7; int in4 = 6; void setup() { Serial.begin(9600); // Aqui establecemos la velocidad // Terminales de salida en el Arduino pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); analogWrite(enA, velocidad); analogWrite(enB, velocidad); } void loop() { if( Serial.available() ) val = Serial.read(); // Avanza Motor A if( val == '1' ) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } // Avanza Motor A y B if( val == '2' ) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); } // Avanza Motor B if( val == '3' ) { digitalWrite(in3, HIGH); digitalWrite(in4, LOW); } // Parar A if( val == '4' ) { digitalWrite(in1, LOW); digitalWrite(in2, LOW); } // Parar A y B if( val == '5' ) { digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } // Parar B if( val == '6' ) { digitalWrite(in3, LOW); digitalWrite(in4, LOW); } // Retrocede A if( val == '7' ) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } // Retrocede A y B if( val == '8' ) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } // Retrocede B if( val == '9' ) { digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } // Velocidades. PWM. if( val == 'A' ) { velocidad=70; } if( val == 'B' ) { velocidad=110; } if( val == 'C' ) { velocidad=150; } if( val == 'D' ) { velocidad=200; } if( val == 'E' ) { velocidad=250; } analogWrite(enA, velocidad); analogWrite(enB, velocidad); // Giros if( val == 'X' ) { analogWrite(enA, 60); analogWrite(enB, 60); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW);
delay(800);
} if( val == 'Y' ) { analogWrite(enA, 60); analogWrite(enB, 60); digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
delay(800); } }

 

- Fíjate que he puesto la asignación de velocidad de una manera distinta al código anterior.

- En los giros, ponemos una velocidad lenta, 60, luego paramos una rueda (LOW, LOW) y accionamos la otra (HIGH LOW).

- También se podría parar una rueda mediante: analogWrite(enB, 0);

- Después del giro continuará con la misma velocidad que llevaba.

-----------------------------------

__________________________________
- Comentarios.

- El movimiento del cochecito puede tener problema por la falta de paralelidad de las ruedas.

- Posiblemente un motor gire más rápido que otro, intenta corregirlo mediante la variable velocidad.

___________________________________

___________________________________

___________________________________

- ¿Le ponemos una cámara?

- Síííííííííííí.

- Podemos elegir entre estas dos opciones:

1.- Cámara grabadora.

- Por 7 € podemos poner en nuestro cochecito esta minicámara de unos 2.7 cm x 2.7 cm x 2.6 cm.

- Realiza la grabación en una SdCard de entre 2 GB y 32 GB.

- Resolución de vídeo: 640x480, formato AVI.

- Resolución de la imagen: 1600x1200, formato JPG.

- Mediante esta minicámara podemos grabar en la SdCard el recorrido de nuestro cochecito, luego sacamos la SdCard y la ponemos en nuestro ordenador (o bien conectamos directamente la cámara al ordenador mediante cable USB), veremos un archivo de imagen en formato .AVI en donde estará la grabación, que podremos visualizar en el ordenador.

.... Pero yo quiero ver el recorrido en tiempo real

2.- Cámara retransmisora.

- Bueno, pues entonces compra esta otra que viene a costar unos 17 €. Esta cámara es emisora, es decir, emite en tiempo real lo que esté captando y lo recibe un receptor. Este receptor está conectado a un televisor, podemos ver en ese televisor lo que está captando la cámara.

NOTA: no he utilizado esta cámara, posiblemente al estar la cámara en movimiento sobre el cochecito, se pierda sincronización y calidad en las imágenes recibidas.

Receptor de la cámara. Se conecta a un televisor mediante dos cables RCA, amarillo para la imagen y blanco para el sonido. Se alimenta con una Fuente de Alimentación de 12 V que viene en el paquete del pedido.
Se le conecta la antena y se sintoniza entre 900 MHz y 1200 MHz.

Características:

Sensor de imagen: 1/3 CMOS
CMOS píxeles totales: PAL : 628 H x 582 V
Resolución horizontal: 380 líneas de TV
Ángulo de visión: 62
Iluminación mínima: 1.5 lux/f1.5
Control de ganancia: automático
Alcance efectivo sin obstáculos: 50 m
Canal de frecuencia: 900-1200 MHz

Precaución: Un receptor sólo puede trabajar con una cámara, la cámara no tiene audio

Especificaciones:

Especificaciones del receptor:

Fuente de alimentación: adaptador de AC-DC (dc> 6 V 800 ma)
Consumo de corriente: 400 mA
Consumo de energía: Approx.3W
Temperatura de funcionamiento:-10c-50c/> 14f-> 122F
Temperatura de almacenamiento:-40c-> 85c/-40f> 185F
Humedad de funcionamiento: 85% de humedad relativa

Radio frecuencia:

Tipo de demodulación: FM
Frecuencia: ISM 900 mhz-1230 MHz
Frecuencia intermedia: 480 MHz
Antena: 50 Ohm Conector F
Sensibilidad de recepción: <-75 dBm

El paquete incluye:

1 x Wireless Mini cámara de vigilancia
1x1.2 GHz receptor inalámbrico
1 x a/v cables
1 x adaptador de corriente 9V1A
1 x 12V1A adaptador de corriente
1 x antena
1 x clip de la batería
1 x Manual de usuario

_______________________________________________________

- Otro driver para los motores. L298 Dual H-Bridge Motor Driver.

L298 Dual H-Bridge Motor Driver.

_____________________________________

NOS HA FUNCIONADO, ¡¡¡¡¡¡¡BIENNNNN!!!!!!

 

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información