En
la práctica de esta entrada vamos a construir un servo que se controlará por
bluetooth y utilizaremos una aplicación android creada con App Inventor.
Añadir
la comunicación bluetooth al Arduino es muy sencilla. Lo único que necesitamos
es un módulo bluetooth HC-05 (Maestro y Esclavo) o HC-06 (esclavo).
Comunicación
bluetooth con arduino
Este
módulo permite una comunicación serie con el dispositivo de comunicación
bluetooth al que nos conectemos. Podemos configurarlo en modo maestro, el
módulo seleccionara el dispositivo al que se quiere conectar, o en modo
esclavo, el módulo estará a la espera de dispositivos que se quieran conectar a
el.
Para
conectarlo al Arduino lo podemos hacer de dos formas:
1º
Modo: Conectarlo directamente a los pines de Tx-Rx del Arduino.
Para
ello solo tendremos que conectar el pin Tx del dispositivo bluetooth al Rx del
Arduino, y el Rx de la comunicación bluetooth al Tx del Arduino. El problema
que tiene este montaje, es que eliminamos la posibilidad de utilizar el monitor
del ide del Arduino para depurar el programa. Otro inconveniente que tiene, es
que para poder programar el Arduino, el bluetooth no puede estar conectado a la
placa del Arduino.
2º
Modo: Conectarlo a cualquier pin y utilizar la librería “Software Serial”
Otra
forma de conectarlo es utilizar las funciones que nos ofrece la librería
“Software serial”, para poder hacer que, cualquier pin del Arduino, pueda
funcionar como un puerto serie. Lo único que tenemos que tener en cuenta es que
el pin donde esté conectado el Tx del bluetooth sera el pin Rx, y donde este el
Rx sera el Tx
Como
programarlo
La
programación es muy sencilla. Solo tendremos que crear una variable para poder
manejar el puerto serie.
Si
lo conectamos directamente a los pines Rx-Tx del Arduino solo tendremos que
poner:
Serial.begin(9600);
Si
lo hacemos con la librería “Software Serial” tendremos que crear el puerto y
luego inicializarlo
Para
leer los datos mediante la comunicación bluetooth utilizaremos, en los dos,
casos la variable servopos:
servopos
= miPuertoSerie.read();
Si
queremos ver la señal que recibe la placa, podemos utilizar el monitor del
Arduino, para escribir en el monitor utilizaremos:
Serial.println(servopos);
Código Arduino
//Germán Alonso
//Control servo por bluetooth Android
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo;
int blueTx = 0;
int blueRx = 1;
SoftwareSerial bluetooth(blueTx, blueRx);
void setup()
{
myservo.attach (9);
//Conexión puerto serie con el PC
Serial.begin(9600);
//Conexión puerto serie con el Bluetooth
bluetooth.begin(9600);
}
void loop()
{
//Aplica el byte recibido por bluetooth a la variable "servopos", recordar que la señal puede ser desde 0 hasta 180
if(bluetooth.available()> 0 )
{
int servopos = bluetooth.read();
Serial.println (servopos);
myservo.write (servopos);
}
}
Creación App Bluetooth con App Inventor