SlideShare una empresa de Scribd logo
1 de 26
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

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 ATmega328PFernando 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 pagjoaquinin1
 
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 ArduinoSANTIAGO PABLO ALBERTO
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOLeida Zuñiga
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduinoKetoc2k3
 
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 PCFernando Cahueñas
 
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 arduinoValeria 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 2017joaquinin1
 
Informe escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoInforme escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoJuan Castillo Bolaños
 
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886luisvargasquinto
 

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
 
Placa arduino
Placa arduinoPlaca arduino
Placa arduino
 
Informe escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoInforme escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduino
 
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886
 

Último

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfmiltonantonioescamil
 
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeonardoMedrano7
 
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docxkattiagonzalesrengif
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllllJesusFlores332
 
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxErgonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxmolinabdiego93
 
Manual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfManual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfAlbisRosMartnez
 
Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023danyercatari1
 

Último (7)

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdf
 
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
 
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllll
 
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxErgonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
 
Manual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfManual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdf
 
Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023
 

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) {