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
___________________________
9E.- App inventor, Bluetooth, Arduino y Potenciómetro.
- Movemos el cursor de un potenciómetro conectado a Arduino. Mediante Bluetooth Arduino enviará el valor del potenciómetro a Android.
- Lo he realizado con el IDE 1.0.6 (Baja el IDE 1.06 de aquí), pero también funcionará con otros IDE.
- Arduino UNO.
- Módulo Bluetooth para conectarlo al Arduino, utilizo el HC06
Viene a costar unos 2,6 €.
(Cuidado que hay unos módulos que valen menos de 2 € y no traen los chips de bluetooth, mira en las fotos que por una de la cara tengan los chips como indico en la foto de abajo)
_______________________________________________
- Conexionado del módulo Bluetooth y el Arduino.
- Lo primero es conectar nuestro módulo Bluetooth al Arduino. Debemos tener mucho cuidado de no permutar la alimentación Vcc (+) y Gnd (-), si nos equivocamos y lo conectamos en el sitio equivocado el módulo se averiará inmediatamente.
- El módulo que he comprado Arduino Bluetooth Wireless Serial Port Module admite tensiones comprendidas entre 3,6 V y 6 V.
- En la foto muestro dos módulos Bluetooth, uno en anverso y otro en reverso. Observamos 4 pines (Vcc, Gnd, Txd y Rxd).
- Además hay otras dos posibles conexiones (State y Key) que no nos hacen falta y no utilizaremos.
- También se nos suministra un cable para conectarlo al Arduino.
____________________________
- Forma de conectarlo.
[- Fíjate que se ha conectado a los terminales 10 y 11 en vez del RX-0 y TX-1.]
Módulo Bluetooh |
Arduino |
VCC |
5 V |
GND |
GND |
TXD |
Al terminal 10 del Arduino |
RXD |
Al terminal 11 del Arduino |
- Cuando realizamos la conexión anterior y lo conectamos mediante el cable USB al ordenador para programarlo, el LED rojo del módulo Bluetooth parpadeará continuamente, eso significa que está en funcionamiento.
- Fíjate que conectamos a los terminales 10 y 11, esto lo comentaré al final de esta página.
_________________________________
- Emparejamiento de los Bluetooth.
- Llamamos emparejamiento al reconocimiento entre dos dispositivos Bluetooth.
- Conectamos el módulo Bluetooth al Arduino. El LED rojo del módulo Bluetooth parpadeará.
- Encendemos nuestro teléfono móvil y activamos la conexión Bluetooth.
|
|
- Pulsamos sobre Bluetooth y nos saldrá una pantalla que indicará los dispositivos disponibles, es decir los dispositivos con Bluetooth encendido que hay en nuestra proximidad.
- Detecta el Bluetooth del Arduino denominado linvor. Pulsamos sobre él. En otras versiones el múdulo de Bluetooth se llama HC-06
- En la siguiente pantalla escribiremos la contraseña de sincronización, que será 1234.
- Ya tenemos al Bluetooth del móvil y del Arduino sincronizados. |
- Si en algún momento tenemos problemas de sincronización, desconectamos el Bluetooth del Ardunio y repetimos la operación.
- O bien pulsamos sobre el icono de la derecha de linvor y luego Desvincular. En otras versiones el múdulo de Bluetooth se llama HC-06 |
_______________________
- Código del Arduino.
potenciometro_arduino.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11);
// El TX del módulo BT va al pin 10 del Arduino
// El RX del módulo BT va al pin 11 del Arduino
byte serialA;
void setup(){
I2CBT.begin(9600);
Serial.begin(9600);
}
void loop (){
// Se van a enviar 3 datos. El 0, el 1 y el 2.
byte Datos[2];
// El terminal central del potenciómetro va a A0 del Arduino
int i=analogRead(A0);
serialA=I2CBT.read();
Datos[0]='a';
Datos[1]=i/256;
Datos[2]=i%256;
// Por ejemplo, lee 876.
// Para obtener el Dato[1]= 876/256 = 3 (Número entero)
// Para obtener el Dato[2] = 876 mod 256 = 108 (El resto de esa división)
// Envío de datos.
if (serialA == 49){
I2CBT.write(Datos[0]);
I2CBT.write(Datos[1]);
I2CBT.write(Datos[2]);
serialA=0;
}
delay(100);
} |
_________________
- Comentarios.
- Se van a enviar tres bytes (8 bits cada uno). Datos[0], Datos[1] y Datos[2]
- El potenciómetro dará niveles de 0 a 1023, por lo cual necesitaremos dos datos para enviar esa información.
- Por eso hacemos:
Datos[1]=i/256;
Datos[2]=i%256;
- Además enviamos el caracter "a" para indicar que hemos enviado datos.
- El Dato[2] es un byte con signo, por eso en el código de App inventor consultaremos su signo.
___________________________________________________________
9E.- Arduino envía el valor de un potenciómetro a Android.
p9E_arduino_pot_movil.aia
- Al mover el potenciómetro saldrá su valor óhmico en la Etiqueta1 de la aplicación.
_________________
- Diseño.
- El Intervalo del Reloj lo ponemos a 10 milisegundos.
_________________
- Bloques.
_________________
- Comentarios.
- Cada 10 milisegundos el Reloj consulta si hay bytes disponibles, en ese caso recibe los dos datos correspondiente al valor enviado por el potenciómetro.
- El proceso es el siguiente. Android envía cada 10 ms el caracter 49, que corresponde a la letra 'a'
- Si Arduino por BT recibe el caracter 'a' le envía al Android sus datos del potenciómetro.
- Recibe dos bytes del valor del potenciómetro, ya que este puede valer hasta 1023
- Es un continuo diálogo enviando 49 o el caracter 'a' entre uno y otro disitivo continuamente.
- El Dato2 consultamos si es negativo, en ese caso le sumamos 256.
______________________________________________________
______________________________________________________
9E2.- En vez de un Reloj ponemos un Botón.
p9E2_arduino_pot_boton_movil.aia
- En vez de un Reloj que obtiene el valor de potenciómetro automáticamente vamos a poner un Botón, cuando lo pulsemos obtendremos el valor de potenciómetro.
- El código de Arduino es el mismo que el del tutorial anterior.
_________________
- Diseño.
_________________
- Bloques.
______________________________________________________
______________________________________________________
- Con dos potenciómetros movemos una imagen.
p9E2_arduino_pot2_movil.aia
- Envía los datos de dos potenciómetros...
- En este caso tenemos dos potencíometros uno conectado al A0 y otro al A1 del Arduino.
- Al mover los potenciómetro se mueve un avioncito por la pantalla del móvil.
potenciometros_dos_arduino.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11);
byte serialA;
void setup(){
I2CBT.begin(9600);
}
void loop (){
byte Datos[6];
int x=analogRead(A0);
int y=analogRead(A1);
serialA=I2CBT.read();
Datos[0]='a';
Datos[1]=x/256;
Datos[2]=x%256;
Datos[3]='b';
Datos[4]=y/256;
Datos[5]=y%256;
if (serialA == 49) {
I2CBT.write(Datos[0]);
I2CBT.write(Datos[1]);
I2CBT.write(Datos[2]); I2CBT.write(Datos[3]); I2CBT.write(Datos[4]); I2CBT.write(Datos[5]);
serialA=0;
}
delay(100);
}
|
_________________
- Diseño.
_________________
- Bloques.
__________________________________
|