Sei sulla pagina 1di 10

CRONOMETRO DIGITAL CONTROLADO POR BLUETOOTH EN UNA APLICACIN ANDROID

HAROLD STIVEN AMAYA VILLAMIL COD. 38260, JULIE MARGARITA GUZMAN SALDAA COD. 5188,
CESAR DAVID TREJOS COD. 31310, VICTOR MANUEL CHACIN LOPEZ COD. 31595

Resumen - Este trabajo tiene como objeto el


diseo y construccin de un cronometro
digital controlado por una aplicacin Android
a travs de bluetooth. En el diseo y
construccin destacan esencialmente dos
componentes, uno de programacin y el otro
del montaje circuital; como conector se
ambos componentes se emplea el
microcontrolador PIC 18F452. El programa
est estructurado de manera que el
microcontrolador reciba tres seales del
mdulo bluetooth; Inicio, Pausa y Reset. El
cronometro se visualiza en cuatro displays de
7 segmentos.
Abstract - This work has like purpose design
and build a digital chronometer controlled by
an Android app although Bluetooth. In the
design and built essentially stand two
components, programation and circuit; like
connector between both of them has been
used microcontroller PIC 18F452. Program is
structured so microcontroller gets three
signals from Bluetooth module; Start, Pause
and Reset. The chronometer is showed in four
7 segments displays.
Palabras
Clave

microcontrolador,
cronometro, bluetooth, Android, RS232,
display, USART

Key Words microcontroller, chronometer,


Bluetooth, Android, RS232, display, USART

INTRODUCCIN
Este trabajo tiene como objeto el diseo y
construccin de un cronometro digital
controlado por una aplicacin Android, a
travs de bluetooth, en el diseo se destaca la
programacin y el montaje circuital. Como
elemento
principal
se
emplea
el
microcontrolador PIC 18F452. Para la
construccin del cronometro se debe
seleccionar el tiempo que se desea controlar,
para este caso sern 59 minutos con 59
segundos, que sern visualizados en cuatro
displays de siete segmentos, y la puesta en
marcha se realizara por medio de una seal
enviada desde una aplicacin Android usando
el bluetooth de un Smartphone y un mdulo
bluetooth HC05, al igual que las seales de
pausa y reset. Ya que el microcontrolador PIC
18F452 es el elemento esencial en este
diseo, su programacin requiere mayor
dedicacin para que se realice la
comunicacin serial entre el Smartphone y el
microcontrolador, mientras muestra los datos
en los displays.

MARCO TERICO
Microcontrolador
Un microcontrolador (abreviado C, UC o
MCU) es un circuito integrado programable,
capaz de ejecutar las rdenes grabadas en su
memoria. Est compuesto de varios bloques
funcionales, los cuales cumplen una tarea
especfica. Un microcontrolador incluye en su
interior las tres principales unidades
funcionales de una computadora: unidad
central de procesamiento, memoria y
perifricos de entrada/salida.
Microchip proporciona un entorno de
desarrollo freeware llamado MPLAB que
incluye un simulador software y un
ensamblador. Otras empresas desarrollan
compiladores C y BASIC. Microchip tambin
vende compiladores para los PIC de gama alta
("C18" para la serie F18 y "C30" para los dsPIC)
y se puede descargar una edicin para
estudiantes del C18 que inhabilita algunas
opciones despus de un tiempo de
evaluacin.
Protocolo RS232
RS-232 (Recommended Standard 232), en
espaol: Estndar Recomendado 232,
tambin conocido como EIA/TIA RS-232C, es
una interfaz que designa una norma para el
intercambio de una serie de datos binarios
entre un DTE (Data Terminal Equipment,
Equipo Terminal de Datos) y un DCE (Data
Communication Equipment, Equipo de
Comunicacin de Datos), aunque existen
otras en las que tambin se utiliza la interfaz
RS-232.
Las UART o U(S)ART (Transmisor y Receptor
Asncrono Universal) se disearon para
convertir las seales que maneja la CPU y
transmitirlas al exterior. Las UART deben
resolver problemas tales como la conversin
de tensiones internas del DCE con respecto al

DTE, gobernar las seales de control, y


realizar la transformacin desde el bus de
datos de seales en paralelo a serie y
viceversa. Debe ser robusta y deber tolerar
circuitos abiertos, cortocircuitos y escritura
simultnea sobre un mismo pin, entre otras
consideraciones. Es en la UART en donde se
implementa la interfaz.
Generalmente, cuando se requiere conectar
un
microcontrolador
(con
seales
tpicamente entre 3,3 y 5 V) con un puerto RS232 estndar, se utiliza un driver de lnea,
tpicamente un MAX232 o compatible, el cual
mediante dobladores de tensin positivos y
negativos, permite obtener la seal bipolar
(tpicamente alrededor de +/- 6V) requerida
por el estndar.
Para los propsitos de la RS-232 estndar, una
conexin es definida por un cable desde un
dispositivo al otro. Hay 25 conexiones en la
especificacin completa, pero es muy
probable que se encuentren menos de la
mitad de stas en una interfaz determinada.
La causa es simple, una interfaz full duplex
puede obtenerse con solamente 3 cables.
Mdulo USART
Como su nombre lo indica, el mdulo USART
soporta la transmisin sincrnica y la
transmisin asincrnica, as como tambin
soporta el modo de reloj maestro y esclavo.

En la USART, un baudio equivale a un bit por


segundo y esta tasa de transferencia depende
de la frecuencia de reloj y de los valores de
configuracin almacenados en los registros de
control. Se pueden generar tramas de 5, 6, 7,
8 y 9 bits con uno o dos bits de parada que
sealan el final de una trama (en la
comunicacin
asincrnica)
segn
la
configuracin que ingrese el usuario.

El bit de paridad es un bit de control opcional


que se enva al final de una trama antes del bit
de parada para verificar si existe algn error
en la comunicacin. Este bit se calcula
contando el nmero de bits '1' que se envan:
si se escoge paridad par, este bit ser '1' si el
nmero de '1's es par, y ser '0' en caso
contrario; si se escoge paridad impar, el bit de
paridad ser '0' si el nmero de '1's es par y '1'
en caso contrario.
El bit de paridad se genera por hardware en el
transmisor de la USART realizando una or
exclusiva entre todos los bits de una trama; y
es verificado en el receptor tambin por
hardware. Este bit sirve para detectar si
ocurri un error en la comunicacin, pero no
sirve para asegurar que todos los bits llegaron
correctamente.
En una transmisin asincrnica, una trama de
datos inicia con un bit de arranque, seguido
del bit menos significativo de informacin y
cada uno de los siguientes bits hasta un
mximo de 9, terminando con el bit ms
significativo. Si la paridad est habilitada, el
bit de paridad se enva inmediatamente
despus de los datos, seguido de los bits de
parada. Cuando se termina de enviar la trama,
se puede enviar otra inmediatamente o se
puede dejar el canal libre esperando otra
trama.

Para comunicarnos con el mdulo y


configurarlo, es necesario tener acceso al
mdulo mediante una interfaz serial.
Podemos usar un arduino con un par de
cables (aprovechando el puente USB-Serial
del Arduino), un kit para XBee o un simple
MAX3232 en el puerto serie de la PC. Para
este artculo estaremos usando un mdulo
Bluetooth Bee Pro que comercializamos en
nuestra tienda web, as como una interfaz
USB-Serial con socket Xbee Foca que
tambin vendemos. Este es el hardware que
utilizamos en nuestro taller, pero tambin es
posible hacer los ensayos con el mdulo HC05 suelt0 o en formato para insertar en el
protoboard sin mayor problema.

METODOLOGA
El primer diseo que se describe, se trata de
realizar diseo del programa encargado de
gestionar como elemento de salida los cuatro
displays de 7 segmentos (con punto decimal)
de nodo comn y como elemento de entrada
la seal de recepcin del mdulo bluetooth
HC05. Este cronometro debe mostrar minutos
y segundos desde 00.00 hasta 59.59 en los
displays. Fig.1

Mdulo Bluetooth HC-05


El mdulo de bluetooth HC-05 es el que
ofrece una mejor relacin de precio y
caractersticas, ya que es un mdulo MaestroEsclavo, quiere decir que adems de recibir
conexiones desde una PC o tablet, tambin es
capaz de generar conexiones hacia otros
dispositivos bluetooth. Esto nos permite, por
ejemplo, conectar dos mdulos de bluetooth
y formar una conexin punto a punto para
transmitir
datos
entre
dos
microcontroladores o dispositivos.

FIG.1 Circuito para la visualizacin de los


displays.
El sistema puede encontrarse en tres estados,
en reset, contando o en pausa. El programa

principal debe ejecutar un bucle mostrando


00.00 mientras se mantiene a la espera de la
seal de inicio. La visualizacin se realizar a
una frecuencia de 80Hz y el temporizador est
configurado para que se realice visualizacin
durante un segundo, luego revisa si se ha
recibido alguna orden desde la aplicacin
Android para ejecutarla. En el momento que
se d la orden de inicio, el programa principal
sigue realizando el proceso anteriormente
descrito, pero despus de revisar si hay una
orden pasa a incrementar el contador y luego
vuelve a realizar la visualizacin, hasta que la
orden sea cambiada. Si el cronometro se
encuentra contando y se ingresa la orden de
pausa, el programa principal ingresa a un
bucle en el cual solo muestra el ultimo valor
obtenido, sin cambiarlo, y se mantiene a la
espera de una nueva orden. Por otra parte, sin
importar el estado en el que se encuentre el
programa si se recibe la orden de reset, el
programa saltar a la inicializacin de las
variables y se volver a ejecutar desde su
inicio. El programa anterior mente descrito es
el siguiente:

CBLOCK0x0A
;configuracion
necesaria para el uso del modulo
TAQ
BUFFER_ENVIO

ENDC

Reset_vector code 0x000


;establece
la posicion de memoria de inicio
goto START

code 0x002A

START
clrf
registro TRISA
clrf

TRISA ;limpia

el

PORTA ;limpia

el

TRISB ;limpia

el

PORTB ;limpia

el

TRISD ;limpia

el

PORTD ;limpia

el

PORTA
list p=18f452
include "p18f452.inc".const
CREACION DE VARIABLES

clrf
registro TRISB
clrf

LL

EQU 0X09 ;CONTEO

PORTD

JJ

EQU 0x08 ;RETARDO

clrf
registro TRISB

KK

EQU 0x0B ;LAPSO

DIG1

EQU 0X0C ;DYSPLAY 1

PORTD

DIG2

EQU 0X0D ;DYSPLAY 2

DIG3

EQU 0X0E ;DYSPLAY 3

movlw
CONFIGURA PORTC

DIG4

EQU 0X0F ;DYSPLAY 4

LECT EQU 0X10


;GUARDA EL NUMERO
RECIBIDO DEL BLUETOOTH

clrf

movwf

b'10000000'
TRISC

movlw
al registro w

0x00

;asigna ceros

movwf
salida el PORTD

TRISA ;configura de

movwf
ceros PORTD

PORTA ;carga

movwf
salida el PORTD

TRISB ;configura de

movwf
ceros PORTD

PORTB ;carga

movwf
DYSPLAYS

DIG1

movwf

DIG2

movwf

DIG3

movwf

DIG4

CONF_USART
;76543210

con

movlw

b'00100110'

movwf

TXSTA

movlw

b'10010000'

movwf

RCSTA

movlw

d'20'

movwf

SPBRG

;76543210

con

;REINICIA

return

;---------- VISUALIZACION DEL CARACTER -------

MOVLW

B'01111111'

MOVWF

TRISD

TABLA
el display
RLNCF

; genera los nmeros sobre


WREG,W

ADDWF PCL,F
movlw
al registro w

.80

;asigna ceros

movwf
salida el PORTD

LL

;configura de

RETLW B'00010000';;;;RETORNA EL 0
DECODIFICADO
RETLW B'01110011';;;;RETORNA EL 1
DECODIFICADO

; VA ACONFIGURAR EL
COMUNICACION SERIAL
rcall

;;*EDGCBAF

MODULO

DE

CONF_USART

goto Main
;----------------------------------------------------------;
CONFIGURA
EL
MODULO
DE
COMUNICACION SERIAL, SEGUN DATASHEET

RETLW B'00001001';;;;RETORNA EL 2
DECODIFICADO
RETLW B'01000001';;;;RETORNA EL 3
DECODIFICADO
RETLW B'01100010';;;;RETORNA EL 4
DECODIFICADO
RETLW B'01000100';;;;RETORNA EL 5
DECODIFICADO

RETLW B'00000100';;;;RETORNA EL 6
DECODIFICADO
RETLW B'01110001';;;;RETORNA EL 7
DECODIFICADO
RETLW B'00000000';;;;RETORNA EL 8
DECODIFICADO
RETLW B'01100000';;;;RETORNA EL 9
DECODIFICADO

MOVWF PORTA
;*GFEDCBA
MOVF DIG1,W
CALL

MOVWF PORTB
movlw D'5'
movwf JJ
rcall

;-------------------- RETARDOS ------------------------

TABLA

;define el valor de JJ

retardo ;va al retardo

RETURN

retardo
movlw D'20'

; define KK

movwf KK

MOVLW B'11110010'

decfsz JJ,F

; decremento JJ

bra

; va a lapso

lapso

MUESDISP2
;MUESTRA EL CARACTER EN
EL DYSPLAY 2

return

MOVWF PORTA
;*GFEDCBA
MOVF DIG2,W
CALL

lapso

TABLA

MOVWF PORTB
nop

; linea vacia

nop

movlw D'5'
movwf JJ

nop

rcall

decfsz KK,F
bra

lapso

bra

retardo

; decrementa KK

MUESDISP1
;MUESTRA EL CARACTER EN
EL DYSPLAY 1
MOVLW B'11110001'

retardo ;va al retardo

RETURN

MUESDISP3
;MUESTRA EL CARACTER EN
EL DYSPLAY 3
BCF

;------------ SELECCION DEL CARACTER -----------

;define el valor de JJ

PORTD,7

MOVLW B'11110100'
MOVWF PORTA
;*GFEDCBA
MOVF DIG3,W

CALL

TABLA

MOVWF PORTB

RCALL LEER
EL BLUETOOH
RETURN

movlw D'5'
movwf JJ

;define el valor de JJ

rcall

retardo ;va al retardo

BSF

PORTD,7

RETURN

MUESDISP4
;MUESTRA EL CARACTER EN
EL DYSPLAY 4
MOVLW B'11111000'
MOVWF PORTA
;*GFEDCBA

;--------------------- CONTADOR --------------------s1000


1000

;rutina de incremento x

clrf DIG3

;pone a cero las centenas

incf DIG4
de miles

;incrementa el contador

movf DIG4, w
conteo de los miles
xorlw 06h
quedara en cero

;carga en work el
;si work era 10, entonces

btfsc STATUS, Z
queda alto

MOVF DIG4,W
CALL

; LEE LO QUE RECIBE

TABLA

GOTO

MOVWF PORTB

;si es cero, el flag z

START

;inicializa los miles

return

movlw D'5'
movwf JJ
rcall

;define el valor de JJ

retardo ;va al retardo

RETURN

ss1000
1000
movlw

;rutina de incremento x
09h

movwf DIG3
centenas
VISUALIZAR
;LLAMA LAS RUTINAS PARA
MOSTRAR LOS DYSPLAYS

decf DIG4
de miles

;pone a cero las

;incrementa el contador

RCALL MUESDISP1
RCALL MUESDISP2
RCALL MUESDISP3
RCALL MUESDISP4
DECFSZ LL
BRA

VISUALIZAR

movf DIG4, w
conteo de los miles
xorlw .255
quedara en cero

;carga en work el
;si work era 10, entonces

btfsc STATUS, Z
queda alto

;si es cero, el flag z

GOTO
miles

STARTN

;inicializa los
s10

return

;rutina de incremento x 10
clrf DIG1

;pone a cero las unidades

incf DIG2
de decenas

;incrementa el contador

;rutina de incremento x

clrf DIG2

;pone a cero las decenas

movf DIG2, w
conteo de las decenas

incf DIG3
de centenas

;incrementa el contador

s100
100

movf DIG3, w
conteo de las centenas
xorlw 0ah
quedara en cero

;carga en work el

;incrementa los miles

ss10
10

;rutina de incremento x
movlw

ss100
100

;rutina de incremento x

movwf DIG2
decenas

;pone a cero las

;incrementa el contador

movf DIG3, w
conteo de las centenas

;carga en work el

;si work era 10, entonces

btfsc STATUS, Z
queda alto
call ss1000

09h

movwf DIG1
unidades
decf DIG2
de decenas

05h

xorlw .255
quedara en cero

;incrementa las centenas

;si es cero, el flag z

return

return

call s100

;si es cero, el flag z

return

call s1000

decf DIG3
de centenas

;si work era 10, entonces

btfsc STATUS, Z
queda alto

;si work era 10, entonces

btfsc STATUS, Z
queda alto

movlw

xorlw 06h
quedara en cero

;carga en work el

;incrementa el contador

movf DIG2, w
conteo de las decenas
xorlw .255
quedara en cero

;carga en work el

;si work era 10, entonces

btfsc STATUS, Z
queda alto
call ss100

;pone a cero las

;si es cero, el flag z

;incrementa las centenas

return
;si es cero, el flag z
;incrementa los miles

subir
incf DIG1
de unidades

;rutina de incremento
;incrementa el contador

movf DIG1, w
conteo de las unidades
xorlw 0ah
quedara en cero

;carga en work el

;si work era 10, entonces

btfsc STATUS, Z
queda alto
call s10

;si es cero, el flag z

;incrementa las decenas

return

PAUSA
RCALL VISUALIZAR
LOS DYSPLAYS

;VISUALIZA

BTFSS LECT,3
SI FINALIZA LA PAUSA

;PREGUNTA

return
CONTANDO

;CONTINUA

BRA

RCALL VISUALIZAR
LOS DYSPLAYS

;MUESTRA

BTFSS LECT,3
PAUSA EL CRONOMETRO

;REVIZA SI SE

RCALL PAUSA
RUTINA DE PAUSA

;VA

BTFSS LECT,4
REINICIA E; CRONOMETRO

;REVIZA SI SE

BRA
START
CRONOMETRO

;REINICIA EL

RCALL subir
E;L CONTADOR

;AUMENTA

BRA

LA

Main

End

PAUSA

LEER
MOVFF
RCREG,LECT ;LEE EL
VALOR QUE RECIBE EL BLUETOOH
RETURN

Main

-----------------------------------------------------------una vez realizado el diseo del circuito y el


programa del microcontrolador, solo se
requiere el diseo de la aplicacin Android,
para realizar el control del circuito, la
aplicacin a utilizar para el diseo de la
aplicacin es appinventor, que es una
herramienta proporcionada por google, que
utiliza un sistema de cloques, de manera que
no es necesaria la redaccin de cdigo para la
implementacin de apps. La aplicacin debe
contar con tres botones, uno para cada una
de las opciones, y enviar la siguiente seal en
decimal segn la instruccin:
Inicio: 4

BTFSC LECT,2
INICIA EL CRONOMETRO

;REVIZA SI SE

BRA
Main
;SE
MANTIENE A LA ESPERA DEL INICIO
MOVLW
.80
;INICIA EL CONTADOR DEL RETARDO
MOVWF

LL

Pausa: 8
Reset: 16
La aplicacin cuenta con dos partes, una es la
interfaz y los bloques de programacin. La
interfaz cuenta con cinco botones con las
siguientes labels:
Botn 1: Seleccionar Bluetooth, conecta el
Smartphone al mdulo bluetooth HC05

Botn
2:
Desconectar
Bluetooth,
desconecta el mdulo Smartphone del
mdulo Bluetooth
Botn 3: Inicio, pone en marcha el
cronometro
Botn 4: Pausa, pausa el conteo
Botn 5: Reset, pone en ceros el
cronometro

Conclusiones

Fig.2 Interfaz de la aplicacin android


Una vez diseada la interfaz de la aplicacin,
se procede a programar los elementos de la
interfaz a travs de los bloques de
programacin

A pesar de que el mdulo HC05 es


confiable en varias ocasiones puede
haber error en la recepcin del dato
enviado por el Smartphone, lo que
causa que el microcontrolador
ejecute la opcin incorrecta.
A pesar de que el cronometro da la
sensacin de estar tomando el
tiempo correcto, presenta un error
considerable en ya que est limitado
por la frecuencia de oscilacin y a que
debe ejecutar barios bucles antes de
mostrar el contador.
La aplicacin desarrollada tiene la
limitacin de que cuando el
Smartphone se bloquea, pierde la
conexin con el mdulo HC05, la
nica forma de corregir este fallo es
necesario desarrollar una aplicacin
ms robusta utilizando otro programa
desarrollador.

Potrebbero piacerti anche