App inventor 2 en español
Cómo programar los teléfonos móviles con Android.
Bluetooth, Arduino y App inventor 2 - Juan Antonio Villalpando
-- Tutorial de iniciación de App Inventor 2 en español --
Volver al índice del tutorial
___________________________
Índice de los tutoriales del Proyecto cochecito.
1.- Bluetooth y Arduino. Proyecto cochecito - 1
2.- Bluetooth y Arduino. Proyecto cochecito - 2
3.- Bluetooth y Arduino. Proyecto cochecito - 3
- Los tutoriales 1 y 2 se explican la parte del Arduino y la parte de App inventor.
- El tutorial 3 es el proyecto completo.
___________________________
- Bluetooth y Arduino. Proyecto cochecito - 2
- Presentación
- En el tutorial anterior hemos visto como conectar un módulo Bluetooth al Arduino y enviar información desde el móvil al Arduino por BT.
- Hemos visto cómo se vincula el módulo Bluetooth al Arduino y cómo podemos cambiar la luminosidad de un LED tricolor mediante PWM.
- Ahora tratamos de realizar un sencillo proyecto para controlar y mover un cochecito de dos motores de tensión contínua con dos ruedas mediante Bluetooth.
- Este capítulo del tutorial se complementa con otro: Proyecto de cochecito por Bluetooth con Arduino y Android.
- En este capítulo solo voy a exponer una manera se controlar dos LED mediante BT. Más adelante lo haremos con motores.
p40 movil a Arduino MOTOR.aia
_________________
- Diseño.
Insertamos los elementos indicados:
sdl_Conectar es un SelectorDeLista.
Btn_Desconectar es un Botón.
B1 ... B9 son Botones.
A ... E son Botones.
Cliente Bootooh y Notificador.
_________________
- Bloques.
- Vinculamos el Bluetooth del Arduino y del Android.
- Según la tecla pulsada se envía un caracter mediante BT.
- Con las teclas "Avanza" se moverá hacia adelante el motor A, el B o los dos.
- Con las teclas de "Para" se parará el motor A, el B o los dos.
- Con las teclas de "Retro" retrocederá el motor A, el B o los dos.
- En este caso en vez de motores, se encenderán o apagarán los LED.
- Las teclas de retrocesos tienen código pero no realizarán cambios en los LED, se utilizarán más adelante cuando utilicemos motores.
- Para controlar la velocidad de los motores utilizaremos 5 Botones, según el Botón pulsado se enviará el caracter: A, B, C, D o E, que indicará un nivel de velocidad.
A será lento, B un poco más rápido, C más rápido, D muy rápido y E máxima velocidad.
- Se podría enviar la velocidad mediante un Deslizador (como vimos en el tutorial de Bluetooth con el LED tricolor), pero es más sencillo enviando solo 5 niveles de velocidad con estos Botones. Ya que es más sencillo enviar un carácter que varios, si tuviéramos que enviar la velocidad 125, por ejemplo, el código se complicaría.
- NOTA: App inventor no admite "Multitouch", es decir pulsar dos teclas a la vez y que funcionen. Por eso he puesto las teclas intermedias para activar a los dos motores.
____________________________________________________________
- ARDUINO.
_________________
- Conexiones.
Conectamos el módulo Bluetooth como se indica en esta tabla:
|
Módulo Bluetooh |
Arduino |
VCC |
5 V |
GND |
GND |
TXD |
RX (es la conexión 0 del Arduino) |
RXD |
TX (es la conexión 1 del Arduino) |
|
Conectamos dos LED con su resistencia limitadora de 220 Ω. Los conectamos a terminales PWM, en nuestro caso al 10 y 11.
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.
- No es conveniente conectar motores de contínua directamente a las salidas del Arduino ya que necesitan muchos miliAmperios y la placa no puede suministrar tantos, se puede calentar y averiarse.
- Se utilizan drivers, controladores para motores que además están alimentados con una fuente de tensión externa. Lo veremos en otro tutorial.
_________________
- Código.
Programa para el Arduino.
|
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
char val;
int Pin10 = 10;
int Pin11 = 11;
void setup() {
Serial.begin(9600); // Aqui establecemos la velocidad
pinMode(Pin10, OUTPUT);
pinMode(Pin11, OUTPUT);
}
void loop() {
if( Serial.available() ) {
val = Serial.read();
if( val == '1' )
{
digitalWrite(Pin10, HIGH);
}
if( val == '2' )
{
digitalWrite(Pin10, HIGH);
digitalWrite(Pin11, HIGH);
}
if( val == '3' )
{
digitalWrite(Pin11, HIGH);
}
if( val == '4' )
{
digitalWrite(Pin10, LOW);
}
if( val == '5' )
{
digitalWrite(Pin10, LOW);
digitalWrite(Pin11, LOW);
}
if( val == '6' )
{
digitalWrite(Pin11, LOW);
}
if( val == 'A' )
{
analogWrite(Pin10, 20);
analogWrite(Pin11, 20);
}
if( val == 'B' )
{
analogWrite(Pin10, 50);
analogWrite(Pin11, 50);
}
if( val == 'C' )
{
analogWrite(Pin10, 150);
analogWrite(Pin11, 150);
}
if( val == 'D' )
{
analogWrite(Pin10, 200);
analogWrite(Pin11, 200);
}
if( val == 'E' )
{
analogWrite(Pin10, 250);
analogWrite(Pin11, 250);
}
}
} |
- Según llega los caracteres 1, 2, 3, 4, 5 o 6, se encenderá o apagarán los LED. Fijate que sale una señal digital:
digitalWrite(Pin10, HIGH);
- Si llegan los caracteres 7, 8 o 9 enviados por el código del Android, no se realizará ninguna acción ya que estos están previstos para cuando se utilicen motores.
- Si llegan los caracteres A, B, C, D o E, los LED encenderán más o menos según el nivel PWM aplicado. Fíjate que sale una señal PWM:
analogWrite(Pin10, 150);
Según llegue A, B, C, D o E, el PWM será 20, 50, 150, 200 o 250.
- He elegido salidas que sean PWM para poder ver el funcionamiento en digital y en PWM.
- Cuando veamos el código del Arduino con los motores, notaremos algunas modificaciones.
- Recuerda el PWM (Modulación de Anchura de Pulso), cuanto más ancho sea el pulso más iluminará el LED ya que le llegará tensión durante más tiempo.
- La frecuencia y la altura del pulso siempre es la misma, lo que cambia es su ancho.
__________________________________
|