Professional Documents
Culture Documents
Material
-Arduino Uno Rev 3
-Mdulo Bluetooth JY-MCU
-Dispositivo Android con Bluetooth
-Leds rojo, amarillo y verde
-Resistencias 220 ohms x 3, 5K6, 10K
Mdulo Bluetooth
El Bluetooth es un estndar de comunicacin inalmbrica que permite
la transmisin de datos a travs de radiofrecuencia en la banda de
2,4 GHz. Existen muchos mdulos Bluetooth para usarlos en nuestros
proyectos de electrnica, pero los ms utilizados son los mdulos de
JY-MCU, ya que son muy econmicos y fciles de encontrar en el
mercado. Son mdulos pequeos y con un consumo muy bajo que nos
permitirn agregar funcionalidades Bluetooth a nuestro Arduino. Estos
mdulos contienen el chip con una placa de desarrollo con los pins
necesarios para la comunicacin serie.
Existen dos modelos de mdulos Bluetooth: el HC-05 que puede ser
maestro/esclavo (master/slave), y el HC-06 que solo puede actuar
como esclavo (slave). La diferencia entre maestro y esclavo es que en
modo esclavo es el dispositivo quien se conecta al mdulo, mientras
que en modo maestro es el mdulo quien se conecta con un
dispositivo.
Fsicamente, los dos mdulos son muy parecidos, solo varan algunas
conexiones. Los pins que encontraremos son los siguientes:
-Vcc: Alimentacin del mdulo entre 3,6V y 6V.
-GND: La masa del mdulo.
-TXD: Transmisin de datos.
-RXD: Recepcin de datos a un voltaje de 3,3V.
-KEY: Poner a nivel alto para entrar en modo configuracin del
mdulo (solo el modelo HC-05)
Comandos AT
Los comandos AT son un tipo de comandos que sirven para configurar
el mdulo Bluetooth a travs de un microcontrolador, un ordenador o
con cualquier dispositivo que posea una comunicacin serie (Tx/Rx).
Son unas instrucciones que nos permiten cambiar los baudios del
mdulo, el PIN, el nombre, etc. Para usar los comandos AT el mdulo
Bluetooth no debe estar vinculado a ningn dispositivo (led rojo del
mdulo parpadeando). Segn las especificaciones del mdulo, el
tiempo que se tiene que respetar entre el envo de un comando AT y
otro tiene que ser de 1 segundo. Si se enva un comando AT y en
menos de un segundo se enva otro, el mdulo no devuelve
respuesta.
Ahora vamos a configurar el mdulo Bluetooth a travs de comandos
AT enviados desde el Monitor Serial del Arduino. El cdigo del Arduino
necesario tanto por el mdulo HC-05 como el HC-06 es el siguiente:
#include <SoftwareSerial.h> //Librera
comunicacin serie en otros pins
que
permite
establecer
Serial.write(BT.read());
}
if(Serial.available())
{
BT.write(Serial.read());
}
}
Entre los dos modelos de mdulo Bluetooth existen diferencias a la
hora de enviar los comandos AT:
HC-06
En el HC-06 solo se necesitan cuatro pines: Vcc, GND, TXD y RXD. El
pin KEY no es necesario.
Al enviar un comando AT no se debe enviar ningn carcter de LF
(nueva lnea) ni CR (retorno de carro) al final del comando. En el
Monitor Serial del Arduino tenemos que poner No hay fin de lnea.
Cdigo Arduino
int
int
int
int
int
ledred=8;
ledgreen=9;
ledblue=10;
tx=1;
rx=0;
char inSerial[15];
void setup(){
Serial.begin(9600);
pinMode(ledred, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(ledblue, OUTPUT);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
void loop(){
int i=0;
int m=0;
delay(500);
if (Serial.available() > 0) {
while (Serial.available() > 0) {
inSerial[i]=Serial.read();
i++;
}
inSerial[i]='\0';
Check_Protocol(inSerial);
}}
void allpinslow()
{
digitalWrite(ledred, LOW);
digitalWrite(ledgreen, LOW);
digitalWrite(ledblue, LOW);
}
void Check_Protocol(char inStr[]){
int i=0;
int m=0;
Serial.println(inStr);
if(!strcmp(inStr,"red")){
//Ledred ON
allpinslow();
digitalWrite(ledred, HIGH);
Serial.println("Red ON");
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
if(!strcmp(inStr,"green")){
//Ledgreen ON
allpinslow();
digitalWrite(ledgreen, HIGH);
Serial.println("Green ON");
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
if(!strcmp(inStr,"blue")){
//Ledblue ON
allpinslow();
digitalWrite(ledblue, HIGH);
Serial.println("Blue ON");
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
if(!strcmp(inStr,"all on")){
//Ledred ON
allpinslow();
digitalWrite(ledred, HIGH);
digitalWrite(ledblue, HIGH);
digitalWrite(ledgreen, HIGH);
Serial.println("ALL ON");
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
if(!strcmp(inStr,"all off")){
allpinslow();
Serial.println("ALL OFF");
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
//Ledred ON
else{
for(m=0;m<11;m++){
inStr[m]=0;
}
i=0;
}}
abrimos
en
ajustes
Despus
de
esto,
arriba
a
la
derecha
pondr conectado:<nombre> Significa que tenemos asociado nuestro
dispositivo Android con nuestro mdulo Bluetooth y el led de este
deja de parpadear y se queda fijo.
Luego solo hay que poner los comandos para encender y apagar los
leds. Cuando se escribe un comando tenemos que pulsar Enter del
teclado para enviarlos al Arduino. En el terminal no se pueden borrar
caracteres, por lo que si nos equivocamos pulsamos Enter y lo
volvemos a escribir.
Video: https://www.youtube.com/watch?v=Cr0PXxLFvZk
Esquema de conexiones:
Para explicar el uso de este mdulo voy a usar esta sencilla aplicacin
que consiste en encender y apagar 3 leds diferentes.
A la derecha del editor nos aparecer una lista con todos los elementos que estamos usando, es muy
recomendable nombrar cada cosa para luego no volvernos locos en el editor de bloques.
Se nos abrir esta ventana, donde iremos colocando los bloques que
Ahora
vayamos
por
partes...
el
caso
de
que
si
lo
est:
Cambia
el
texto
del
botn
por "Desconectar"
Cambia
el
color
del
texto
a
gris.
- Se enva una cadena de texto cualquiera para que el otro extremo
"sepa con quien hablar".
Primero,
al
pulsar
el
botn
de
encender "on",
tenemos
que:
Y este sera el resultado final, aadindole al botn "salir" la accin de cerrar la aplicacin:
int rojo= 8;
int naranja= 9;
int verde= 10;
void setup() {
Serial.begin(9600);
//Salidas digitales
pinMode(rojo, OUTPUT);
pinMode(naranja, OUTPUT);
pinMode(verde, OUTPUT);
}
void loop() {
while (Serial.available()) {
delay(10);
if (Serial.available() > 0) {
char c = Serial.read();
guarda como carcter
dato += c;
la suma de los datos recibidos
}
}
if (dato.length() > 0) {
"dato" tenga al menos un caracter
if(dato == "1") {
//Comparamos la cadena de
caracteres con cada uno de los casos
}
if(dato == "A") {
Serial.println("Apagar led rojo");
digitalWrite(rojo, LOW);
}
if(dato == "2") {
Serial.println("Encender led naranja");
digitalWrite(naranja, HIGH);
}
if(dato == "B") {
Serial.println("Apagar led naranja");
digitalWrite(naranja, LOW);
}
if(dato == "3") {
Serial.println("Encender led verde");
digitalWrite(verde, HIGH);
}
if(dato == "C") {
Serial.println("Apagar led verde");
digitalWrite(verde, LOW);
}
dato=""; //Declaramos la variable "vaca" para volver a guardar de
nuevo caracteres y compararlos con cada uno de los casos
}
}
Montaje en protoboard:
IMPORTANTE:
- El cdigo para emparejar el mdulo bluetooth con el dispositivo,
suele
ser
"1234".
- Si se usan los pines 0 y 1 del arduino (Rx y Tx), a la hora de cargar
el sketch hay que desconectarlos y una vez se haya cargado los
volvemos a conectar. En el caso de que queris usar otros pines
digitales para no tener problema con esto, tendris que usar la
librera SoftwareSerial.h.
Aqu
podis
encontrar
ms
informacin: http://arduino.cc/es/Reference/SoftwareSerial
AppInventor: http://appinventor.mit.edu/explore/classic.html
AppInventor
2: http://ai2.appinventor.mit.edu/
Versin
para
descargar
(Windows): http://beta.appinventor.mit.edu/learn/setup/setupwindows.html
http://beta.appinventor.mit.edu/#
345823017