viernes, 8 de julio de 2016

CONTROL DE SERVO POR BLUETOOTH


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


Componentes de la aplicación:



Bloques de la aplicación:



¿Te ha gustado este tutorial?
Colabora con nosotros y haz una donación: