SlideShare una empresa de Scribd logo
1
Universidad Nacional Mayor de San Marcos
Facultad de Ingeniería de Sistemas e Informática
Arquitectura de Computadoras
Laboratorio 2 – Bluetooth
The JY-MCU module communicates with the Arduino via a serial connection. It has four pins
that we will be using:
 VCC is used to power the module. It needs to be connected to the Arduino 5v pin.
 GND is the ground pin. It needs to be connected to the Arduino Ground pin
 TXD is used to send data from the module to the Arduino. It needs to be connected
to the serial receive pin (RX) of the Arduino, which is pin 0 in case of the Uno. If you
are using a different Arduino board, check its schematics to make sure you have the
right pin.
 RXD is used to receive data from the Arduino. It needs to be connected to the the
Arduino serial transmit pin (TX) , which is pin 1 in the case of Arduino Uno.
2
La conexión normal que se hace con un bluetooth es la siguiente:
3
Como se observa la implementación de la conexión hace que los pines Rx t Tx se conecten
a los pines D0 y D1 de arduino, en ese caso se utiliza la librería serial como librería de acceso
serial en Arduino.
Sin embargo el gran problema en este caso es que no se podría utilizar el monitor serial por
que estarían ocupados sus pines en uso de conexión con Bluetooth. Por esta razón se
recomienda el uso de SoftwareSerial, el cual viene incluido en la IDE a partir de 1.0.5, con
el cual puede escogerse cualquier línea para Rx y Tx, como se vera en los siguientes
ejemplos.
a. Usando Blueterm
Es una aplicación para Android que es un emulador de terminal vt100 para conectarse a
cualquier dispositivo con puerto serie mediante un adaptador bluetooth-serie, es una
aplicación opensource que nos ayudara a enviar y recibir comandos rápidamente sin
necesidad de crear una aplicación android, aunque más adelante en otra parte de este
laboratorio, se creara una aplicación para personalizar completamente el proyecto.
Blueterm, terminal disponible en Google Play, se encuentra en la dirección
https://play.google.com/store/apps/details?id=es.pymasde.blueterm&hl=es_419
4
El circuito a armar esta en la siguiente figura:
El codigo de este circuito es:
5
//Programa prueba modulo bluetooth GP-GC021
//Probado con programas para android Blueterm y Amarino 2.0
//Probado con bluetooth portatil y software Octoplus Terminal
#include <SoftwareSerial.h>
const int rxPin = 4; //SoftwareSerial RX pin, conecta to JY-MCY TX pin
const int txPin = 2; //SoftwareSerial TX pin, conecta to JY-MCU RX pin
// nivel de 3.3 voltios puede ser necesario
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
const int ledPin = 13; // led pin
void setup()
{
//Pin donde conectamos el led para ver el correcto funcionamiento del modulo
pinMode(ledPin,OUTPUT);
//Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar
//mediante comandos AT
mySerial.begin(9600);
digitalWrite(ledPin, LOW); // LED inicialmente esta apagado
}
void loop()
6
{
//Mientras el puerto serie del modulo bluetooth esta disponible
while (mySerial.available() > 0)
{
//Guardamos en la variable dato el valor leido por el modulo bluetooth
char dato= mySerial.read();
//Comprobamos el dato
switch(dato)
{
//Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar
//en Blueterm Led encendido
case 'w':
{
digitalWrite(13,HIGH);
mySerial.println("Led encendido");
break;
}
//Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar
//en Blueterm Led apagado
case 'e':
{
digitalWrite(13,LOW);
mySerial.println("Led apagado");
break;
7
}
//Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia
//programa y mostramos en Blueterm Led intermitente
case 'r':
{
digitalWrite(13,HIGH);
delay(400);
digitalWrite(13,LOW);
delay(400);
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
mySerial.println("Led intermitente");
break;
}
}
}
}
b. Usando AppInventor.
Una forma más sencilla de uso de Android con Arduino es via AppInventor en cuya versión
2, estamos desarrollando aplicaciones de demostración. En este caso encenderemos 3 leds
(Rojo, Verde y Azul) a través de botones en la interfaz del móvil. El circuito a implementar
es el siguiente:
8
Los leds están conectados a los pines 8, 9 y 10 de Arduino, mientras que Rx y tx están
conectados alos pines 2 y 4.
A continuación la interfaz de la aplicación Android será la siguiente:
9
10
El codigo seria asi:
11
El dato mas importante es la declaración de la MAC del modulo bluettoth:
Como se ve la MAC del bluetooth debe ser ingresada a la variable para poder realizar
conexión con esta tarjeta. Para conocer dicha dirección se puede usar Bluetooth Terminal,
el cual tiene la siguiente pantalla:
Se instala en el móvil y el se encarga de mostrar la MAC de los dispositivos detectados.
En el caso de Arduino, el codigo que se ha implementado para el circuito es:
12
#include <SoftwareSerial.h>
const int rxPin = 4; //SoftwareSerial RX pin, conecta to JY-MCY TX pin
const int txPin = 2; //SoftwareSerial TX pin, conecta to JY-MCU RX pin
// nivel de 3.3 voltios puede ser necesario
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
String dato;
//Variable de tipo cadena para guardar los datos recibidos
int rojo= 8;
int verde= 9;
int azul= 10;
void setup() {
mySerial.begin(9600);
//Iniciamos comunicación serial
//Salidas digitales
pinMode(rojo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(azul, OUTPUT);
}
13
void loop() {
while (mySerial.available()) {
delay(10);
if (mySerial.available() > 0) {
char c = mySerial.read(); //Cuando se recibe un dato, se guarda como carácter
dato += c; //Cadena de caracteres formada por la suma de los datos recibidos
}
}
if (dato.length()> 0)
{
//Comprueba que la variable "dato" tenga al menos un caracter
if(dato == "1")
{
//Comparamos la cadena de caracteres con cada uno de los casos
mySerial.println("Encender led rojo"); //Muestra por el monitor serial la acción
realizada
digitalWrite(rojo, HIGH); //Enciende el led rojo
}
if(dato == "A") {
mySerial.println("Apagar led rojo");
digitalWrite(rojo, LOW);
}
if(dato == "2") {
mySerial.println("Encender led verde");
digitalWrite(verde, HIGH);
14
}
if(dato == "B") {
mySerial.println("Apagar led verde");
digitalWrite(verde, LOW);
}
if(dato == "3")
{
mySerial.println("Encender led azul");
digitalWrite(azul, HIGH);
}
if(dato == "C") {
mySerial.println("Apagar led azul");
digitalWrite(azul, LOW);
}
dato=""; //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y
compararlos con cada uno de los casos
}
}
De esta manera el proyecto esta completo y funcionara correctamente.
15
Otros ejemplos son:
Sensor:
16
Uso de cámara:
17
Control de proceso Arduino por Voz
18
19
20
Para el circuito en Arduino el diagrama es el siguiente:
21
Donde
Tx del Bluetooth se conecta con el pin 9 de Arduino
Rx del Bluetooth se conecta con el pin 10 de Arduino
En cuanto a los leds del display…
a 2
b 3
b 4
22
d 5
e 6
f 7
g 8
Codigo en Arduino:
#include <SoftwareSerial.h>
#include <stdio.h> /* printf, fgets */
#include <stdlib.h> /* atoi */
const int rxPin = 9; //SoftwareSerial RX pin, conecta to JY-MCY TX pin
const int txPin = 10; //SoftwareSerial TX pin, conecta to JY-MCU RX pin
// nivel de 3.3 voltios puede ser necesario
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
String cadena;
String dato;
int valor=0;
char* numero;
char c;
byte segmentos[10][7] = {
{ 1,1,1,1,1,1,0 }, // = 0
{ 0,1,1,0,0,0,0 }, // = 1
23
{ 1,1,0,1,1,0,1 }, // = 2
{ 1,1,1,1,0,0,1 }, // = 3
{ 0,1,1,0,0,1,1 }, // = 4
{ 1,0,1,1,0,1,1 }, // = 5
{ 1,0,1,1,1,1,1 }, // = 6
{ 1,1,1,0,0,0,0 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,0,0,1,1 } // = 9
};
void setup() {
//inicializando el display
cadena = String("enviando ");
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(11, OUTPUT); // led azul
pinMode(12, OUTPUT); // led verde
mySerial.begin(9600);
}
24
void loop()
{
delay(2000);
while (mySerial.available()) {
delay(10);
if (mySerial.available() > 0) {
c = mySerial.read(); //Cuando se recibe un dato, se guarda como carácter
dato += c; //Cadena de caracteres formada por la suma de los datos recibidos
}
if (dato.length()> 0)
{
//dato.toCharArray(numero,dato.length());
if(dato.charAt(0) >= '1' && dato.charAt(0) <= '9'){
//valor= atoi(numero);
valor = dato.charAt(0) - '0';
mostrar_display(valor);
cadena += valor;
mySerial.println(cadena);
mySerial.println("mostrando "+dato);
}
//Comprueba que la variable "dato" tenga al menos un caracter
25
if(dato == "0"){
//apagar leds
digitalWrite(11,LOW);
digitalWrite(12,LOW);
mySerial.println("enviado "+dato);
}
if(dato == "a"){
//encender led azul
digitalWrite(11,HIGH);
mySerial.println("enviado "+dato);
}
if(dato == "v"){
//encender led verde
digitalWrite(12,HIGH);
mySerial.println("enviado "+dato);
}
}
dato=""; //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y
compararlos con cada uno de los casos
}
}
void mostrar_display(int valor1){
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
26
digitalWrite(pin, segmentos[valor1][segCount]);
++pin;
}
}

Más contenido relacionado

Similar a Lab2 bluetooth.docx

Adc 4
Adc 4Adc 4
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Fernando Marcos Marcos
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
joaquinin1
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
SANTIAGO PABLO ALBERTO
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGO
Leida Zuñiga
 
Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8
JOSE JESUS SANCHEZ LEON
 
Proyecto
ProyectoProyecto
Proyecto
Luis Garcia
 
Conectores
ConectoresConectores
Conectores
Jessica Roca
 
Práctica04.Programando Arduino
Práctica04.Programando ArduinoPráctica04.Programando Arduino
Práctica04.Programando Arduino
Jonathan Ruiz de Garibay
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
Ketoc2k3
 
Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1
Ángel Vinicio Lligüín Silva
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
Fernando Cahueñas
 
Usart 3
Usart 3Usart 3
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Franz Amaya
 
Trababajo sobre placa arduino
Trababajo sobre placa arduinoTrababajo sobre placa arduino
Trababajo sobre placa arduino
Valeria Gonzalez
 
Microcontroladores: Comunicación en serie con Arduino
Microcontroladores: Comunicación en serie con Arduino Microcontroladores: Comunicación en serie con Arduino
Microcontroladores: Comunicación en serie con Arduino
SANTIAGO PABLO ALBERTO
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
joaquinin1
 
Informe escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoInforme escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduino
Juan Castillo Bolaños
 
Placa arduino
Placa arduinoPlaca arduino
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886
luisvargasquinto
 

Similar a Lab2 bluetooth.docx (20)

Adc 4
Adc 4Adc 4
Adc 4
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGO
 
Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8Practicas simulador arduino del 1 al 8
Practicas simulador arduino del 1 al 8
 
Proyecto
ProyectoProyecto
Proyecto
 
Conectores
ConectoresConectores
Conectores
 
Práctica04.Programando Arduino
Práctica04.Programando ArduinoPráctica04.Programando Arduino
Práctica04.Programando Arduino
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1
 
Comunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PCComunicación Serial entre un microcontrolador y un PC
Comunicación Serial entre un microcontrolador y un PC
 
Usart 3
Usart 3Usart 3
Usart 3
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Trababajo sobre placa arduino
Trababajo sobre placa arduinoTrababajo sobre placa arduino
Trababajo sobre placa arduino
 
Microcontroladores: Comunicación en serie con Arduino
Microcontroladores: Comunicación en serie con Arduino Microcontroladores: Comunicación en serie con Arduino
Microcontroladores: Comunicación en serie con Arduino
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
 
Informe escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoInforme escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduino
 
Placa arduino
Placa arduinoPlaca arduino
Placa arduino
 
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886
 

Último

MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdfMATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
JhonnyMorgadoR
 
Manual de la motocicleta Honda CB1 Manual de propietario tio
Manual de la motocicleta Honda CB1 Manual de propietario tioManual de la motocicleta Honda CB1 Manual de propietario tio
Manual de la motocicleta Honda CB1 Manual de propietario tio
MarcelinoMendoza7
 
Fam ISX EGR,VGT-CM871.pdfl manual vgt,egr,cm871
Fam ISX  EGR,VGT-CM871.pdfl manual vgt,egr,cm871Fam ISX  EGR,VGT-CM871.pdfl manual vgt,egr,cm871
Fam ISX EGR,VGT-CM871.pdfl manual vgt,egr,cm871
jmorenocalderon343
 
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIALTIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
renzorx100
 
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdfMANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
Aarón Reyes
 
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptxTECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
AlexbryanTorrico
 
COMPLETO trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
COMPLETO  trabajo para realizarun proyecto de grato de mecanica automotriz(1)...COMPLETO  trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
COMPLETO trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
BenedictoAugustoRoja
 
Manual versa N18 2020 fabricación mexicana
Manual versa N18 2020 fabricación mexicanaManual versa N18 2020 fabricación mexicana
Manual versa N18 2020 fabricación mexicana
CesarFelipeBarra
 
Tractores agricolas de-Valtra-Linea-BM.pdf
Tractores agricolas de-Valtra-Linea-BM.pdfTractores agricolas de-Valtra-Linea-BM.pdf
Tractores agricolas de-Valtra-Linea-BM.pdf
WilsonVillena
 

Último (9)

MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdfMATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
MATERIAL DE ESTUDIO CURSO TÉCNICAS DE OPERACIÓN 980E-5.pdf
 
Manual de la motocicleta Honda CB1 Manual de propietario tio
Manual de la motocicleta Honda CB1 Manual de propietario tioManual de la motocicleta Honda CB1 Manual de propietario tio
Manual de la motocicleta Honda CB1 Manual de propietario tio
 
Fam ISX EGR,VGT-CM871.pdfl manual vgt,egr,cm871
Fam ISX  EGR,VGT-CM871.pdfl manual vgt,egr,cm871Fam ISX  EGR,VGT-CM871.pdfl manual vgt,egr,cm871
Fam ISX EGR,VGT-CM871.pdfl manual vgt,egr,cm871
 
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIALTIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
TIPOS DE CONECTORES DE AUTOMOVILES SENA INDUSTRIAL
 
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdfMANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
MANUAL DEL PROPIETARIO - KIA STONIC (5).pdf
 
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptxTECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
TECNOLOGÍA EN LOS SISTEMAS ADAS (1).pptx
 
COMPLETO trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
COMPLETO  trabajo para realizarun proyecto de grato de mecanica automotriz(1)...COMPLETO  trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
COMPLETO trabajo para realizarun proyecto de grato de mecanica automotriz(1)...
 
Manual versa N18 2020 fabricación mexicana
Manual versa N18 2020 fabricación mexicanaManual versa N18 2020 fabricación mexicana
Manual versa N18 2020 fabricación mexicana
 
Tractores agricolas de-Valtra-Linea-BM.pdf
Tractores agricolas de-Valtra-Linea-BM.pdfTractores agricolas de-Valtra-Linea-BM.pdf
Tractores agricolas de-Valtra-Linea-BM.pdf
 

Lab2 bluetooth.docx

  • 1. 1 Universidad Nacional Mayor de San Marcos Facultad de Ingeniería de Sistemas e Informática Arquitectura de Computadoras Laboratorio 2 – Bluetooth The JY-MCU module communicates with the Arduino via a serial connection. It has four pins that we will be using:  VCC is used to power the module. It needs to be connected to the Arduino 5v pin.  GND is the ground pin. It needs to be connected to the Arduino Ground pin  TXD is used to send data from the module to the Arduino. It needs to be connected to the serial receive pin (RX) of the Arduino, which is pin 0 in case of the Uno. If you are using a different Arduino board, check its schematics to make sure you have the right pin.  RXD is used to receive data from the Arduino. It needs to be connected to the the Arduino serial transmit pin (TX) , which is pin 1 in the case of Arduino Uno.
  • 2. 2 La conexión normal que se hace con un bluetooth es la siguiente:
  • 3. 3 Como se observa la implementación de la conexión hace que los pines Rx t Tx se conecten a los pines D0 y D1 de arduino, en ese caso se utiliza la librería serial como librería de acceso serial en Arduino. Sin embargo el gran problema en este caso es que no se podría utilizar el monitor serial por que estarían ocupados sus pines en uso de conexión con Bluetooth. Por esta razón se recomienda el uso de SoftwareSerial, el cual viene incluido en la IDE a partir de 1.0.5, con el cual puede escogerse cualquier línea para Rx y Tx, como se vera en los siguientes ejemplos. a. Usando Blueterm Es una aplicación para Android que es un emulador de terminal vt100 para conectarse a cualquier dispositivo con puerto serie mediante un adaptador bluetooth-serie, es una aplicación opensource que nos ayudara a enviar y recibir comandos rápidamente sin necesidad de crear una aplicación android, aunque más adelante en otra parte de este laboratorio, se creara una aplicación para personalizar completamente el proyecto. Blueterm, terminal disponible en Google Play, se encuentra en la dirección https://play.google.com/store/apps/details?id=es.pymasde.blueterm&hl=es_419
  • 4. 4 El circuito a armar esta en la siguiente figura: El codigo de este circuito es:
  • 5. 5 //Programa prueba modulo bluetooth GP-GC021 //Probado con programas para android Blueterm y Amarino 2.0 //Probado con bluetooth portatil y software Octoplus Terminal #include <SoftwareSerial.h> const int rxPin = 4; //SoftwareSerial RX pin, conecta to JY-MCY TX pin const int txPin = 2; //SoftwareSerial TX pin, conecta to JY-MCU RX pin // nivel de 3.3 voltios puede ser necesario SoftwareSerial mySerial(rxPin, txPin); // RX, TX const int ledPin = 13; // led pin void setup() { //Pin donde conectamos el led para ver el correcto funcionamiento del modulo pinMode(ledPin,OUTPUT); //Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar //mediante comandos AT mySerial.begin(9600); digitalWrite(ledPin, LOW); // LED inicialmente esta apagado } void loop()
  • 6. 6 { //Mientras el puerto serie del modulo bluetooth esta disponible while (mySerial.available() > 0) { //Guardamos en la variable dato el valor leido por el modulo bluetooth char dato= mySerial.read(); //Comprobamos el dato switch(dato) { //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar //en Blueterm Led encendido case 'w': { digitalWrite(13,HIGH); mySerial.println("Led encendido"); break; } //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar //en Blueterm Led apagado case 'e': { digitalWrite(13,LOW); mySerial.println("Led apagado"); break;
  • 7. 7 } //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia //programa y mostramos en Blueterm Led intermitente case 'r': { digitalWrite(13,HIGH); delay(400); digitalWrite(13,LOW); delay(400); digitalWrite(13,HIGH); delay(200); digitalWrite(13,LOW); delay(200); mySerial.println("Led intermitente"); break; } } } } b. Usando AppInventor. Una forma más sencilla de uso de Android con Arduino es via AppInventor en cuya versión 2, estamos desarrollando aplicaciones de demostración. En este caso encenderemos 3 leds (Rojo, Verde y Azul) a través de botones en la interfaz del móvil. El circuito a implementar es el siguiente:
  • 8. 8 Los leds están conectados a los pines 8, 9 y 10 de Arduino, mientras que Rx y tx están conectados alos pines 2 y 4. A continuación la interfaz de la aplicación Android será la siguiente:
  • 9. 9
  • 11. 11 El dato mas importante es la declaración de la MAC del modulo bluettoth: Como se ve la MAC del bluetooth debe ser ingresada a la variable para poder realizar conexión con esta tarjeta. Para conocer dicha dirección se puede usar Bluetooth Terminal, el cual tiene la siguiente pantalla: Se instala en el móvil y el se encarga de mostrar la MAC de los dispositivos detectados. En el caso de Arduino, el codigo que se ha implementado para el circuito es:
  • 12. 12 #include <SoftwareSerial.h> const int rxPin = 4; //SoftwareSerial RX pin, conecta to JY-MCY TX pin const int txPin = 2; //SoftwareSerial TX pin, conecta to JY-MCU RX pin // nivel de 3.3 voltios puede ser necesario SoftwareSerial mySerial(rxPin, txPin); // RX, TX String dato; //Variable de tipo cadena para guardar los datos recibidos int rojo= 8; int verde= 9; int azul= 10; void setup() { mySerial.begin(9600); //Iniciamos comunicación serial //Salidas digitales pinMode(rojo, OUTPUT); pinMode(verde, OUTPUT); pinMode(azul, OUTPUT); }
  • 13. 13 void loop() { while (mySerial.available()) { delay(10); if (mySerial.available() > 0) { char c = mySerial.read(); //Cuando se recibe un dato, se guarda como carácter dato += c; //Cadena de caracteres formada por la suma de los datos recibidos } } if (dato.length()> 0) { //Comprueba que la variable "dato" tenga al menos un caracter if(dato == "1") { //Comparamos la cadena de caracteres con cada uno de los casos mySerial.println("Encender led rojo"); //Muestra por el monitor serial la acción realizada digitalWrite(rojo, HIGH); //Enciende el led rojo } if(dato == "A") { mySerial.println("Apagar led rojo"); digitalWrite(rojo, LOW); } if(dato == "2") { mySerial.println("Encender led verde"); digitalWrite(verde, HIGH);
  • 14. 14 } if(dato == "B") { mySerial.println("Apagar led verde"); digitalWrite(verde, LOW); } if(dato == "3") { mySerial.println("Encender led azul"); digitalWrite(azul, HIGH); } if(dato == "C") { mySerial.println("Apagar led azul"); digitalWrite(azul, LOW); } dato=""; //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos } } De esta manera el proyecto esta completo y funcionara correctamente.
  • 17. 17 Control de proceso Arduino por Voz
  • 18. 18
  • 19. 19
  • 20. 20 Para el circuito en Arduino el diagrama es el siguiente:
  • 21. 21 Donde Tx del Bluetooth se conecta con el pin 9 de Arduino Rx del Bluetooth se conecta con el pin 10 de Arduino En cuanto a los leds del display… a 2 b 3 b 4
  • 22. 22 d 5 e 6 f 7 g 8 Codigo en Arduino: #include <SoftwareSerial.h> #include <stdio.h> /* printf, fgets */ #include <stdlib.h> /* atoi */ const int rxPin = 9; //SoftwareSerial RX pin, conecta to JY-MCY TX pin const int txPin = 10; //SoftwareSerial TX pin, conecta to JY-MCU RX pin // nivel de 3.3 voltios puede ser necesario SoftwareSerial mySerial(rxPin, txPin); // RX, TX String cadena; String dato; int valor=0; char* numero; char c; byte segmentos[10][7] = { { 1,1,1,1,1,1,0 }, // = 0 { 0,1,1,0,0,0,0 }, // = 1
  • 23. 23 { 1,1,0,1,1,0,1 }, // = 2 { 1,1,1,1,0,0,1 }, // = 3 { 0,1,1,0,0,1,1 }, // = 4 { 1,0,1,1,0,1,1 }, // = 5 { 1,0,1,1,1,1,1 }, // = 6 { 1,1,1,0,0,0,0 }, // = 7 { 1,1,1,1,1,1,1 }, // = 8 { 1,1,1,0,0,1,1 } // = 9 }; void setup() { //inicializando el display cadena = String("enviando "); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(11, OUTPUT); // led azul pinMode(12, OUTPUT); // led verde mySerial.begin(9600); }
  • 24. 24 void loop() { delay(2000); while (mySerial.available()) { delay(10); if (mySerial.available() > 0) { c = mySerial.read(); //Cuando se recibe un dato, se guarda como carácter dato += c; //Cadena de caracteres formada por la suma de los datos recibidos } if (dato.length()> 0) { //dato.toCharArray(numero,dato.length()); if(dato.charAt(0) >= '1' && dato.charAt(0) <= '9'){ //valor= atoi(numero); valor = dato.charAt(0) - '0'; mostrar_display(valor); cadena += valor; mySerial.println(cadena); mySerial.println("mostrando "+dato); } //Comprueba que la variable "dato" tenga al menos un caracter
  • 25. 25 if(dato == "0"){ //apagar leds digitalWrite(11,LOW); digitalWrite(12,LOW); mySerial.println("enviado "+dato); } if(dato == "a"){ //encender led azul digitalWrite(11,HIGH); mySerial.println("enviado "+dato); } if(dato == "v"){ //encender led verde digitalWrite(12,HIGH); mySerial.println("enviado "+dato); } } dato=""; //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos } } void mostrar_display(int valor1){ byte pin = 2; for (byte segCount = 0; segCount < 7; ++segCount) {