Você está na página 1de 51

UNIVERSIDAD TCNICA DEL NORTE

FICA
CIERCOM
COMUNICACIN INALAMBRICA

PROYECTO

TEMA: SISTEMA DE CONTROL EN UN TRANSPORTE PBLICO

INTEGRANTES: CARTAGENA EDUARDO


FELIX LEONOR
GUERRON LUCIA

FECHA: 22 DE ABRIL DEL 2014

IBARRA-ECUADOR

OBJETIVOS

GENERAL

Disear un sistema de control para un transporte interprovincial utilizando


Telemetra para controlar la cantidad de pasajeros y el dinero recaudado durante el
da.

ESPECFICOS

Realizar el algoritmo del sistema para controlar la subida y bajada de pasajeros del

trasporte interprovincial.
Disear el programa que permita realizar el conteo de pasajeros al da
Ejecutar la comunicacin inalmbrica con el microcontrolador ATMEGA a la

GLCD empleando la tecnologa bluetooth


Crear un panel de control en base a una pantalla GLCD para la visualizacin de los

datos.
Implementar esta aplicacin en protoboard para comprobar su correcto
funcionamiento con su respectiva simulacin y posteriormente en circuito impreso

para su presentacin final


Construir una maqueta con todos los dispositivos utilizados.

PROBLEMA

En la actualidad las unidades de transporte interprovincial usualmente no son conducidas


por sus propietarios y stos no tienen manera de controlar el nmero de pasajeros que han
usado el servicio. Esta informacin es importante ya que el propietario paga un porcentaje
con relacin al nmero de pasajeros. Este pago econmico se hace basndose en
estimaciones y a la informacin dada por el conductor, lo cual no es confiable.

JUSTIFICACION

Debido al problema planteado es necesario disponer de un sistema conteo de


pasajeros que nos brinde este dato de manera segura. Se intenta controlar el ingreso
de personas por una sola puerta, que es a la vez entrada y salida.

Entre los beneficios de este sistema de control tenemos los siguientes:

Incremento de los ingresos econmicos reales por unidad de trasporte


Contar con informacin oportuna sobre la cantidad de pasajeros que se tiene

actualmente en la unidad y la cantidad de asientos disponibles


Conocimiento real del total de ingresos recaudados en el da
Ofrecer un mejor servicio a los usuarios, ya que al llevar un control de la cantidad
de pasajeros no se sobrecargara la unidad ofreciendo asi un mejor trato a los
pasajeros.

Fig.1.Subida y bajada de transporte pblico.

ALCANCE

Este proyecto constara de sensores, los mismos que se colocaran en lugares


estratgicos del bus con la finalidad realizar el conteo y a la vez poder identificar el
tipo de pasajero( Adultos/Nios), para tener un control de la entrada y salida de
pasajeros, los datos obtenidos se enviaran de manera inalmbrica mediante
tecnologa bluetooth a un panel inalmbrico que consta de una pantalla GLCD en el
que se controla el nmero de asientos disponibles, el total de pasajeros diarios y el
reporte de ingresos recaudados durante el da.

Mediante la correcta ubicacin de los sensores se dar solucin a diferentes


variables que se pueden suscitar como el paso recurrente del controlador por la
puerta de ingreso al bus, adems se incluir un algoritmo de control que nos permita
identificar algn problema en los sensores como por ejemplo el bloqueo o
interrupcin de estos, en caso de suscitarse podremos identificar el acontecimiento
mediante una seal lumnica que identifica el sensor que presenta algn error.

Fig.2.Ubicacion de los sensores dentro del transporte.

CRONOGRAMA DE ACTIVIDADES PROYECTO COMUNICACIN


INALAMBRICA

FECHAS

26/04/2014
a
02/04/2014

02/04/2014
a
16/04/2014

TIEMPO
semanas

ACTIVIDADES

Planteamiento
problema.
planificacin
actividades

del
1

EVIDENCIA

Diapositivas
Cronograma de
actividades

Informe de los
materiales
seleccionados

10

de

Investigacin
de
materiales que conviene
utilizar en este proyecto
como
son
GLCD,
sensores,
micro
controlador, medio de
comunicacin
inalmbrica
bluetooth
analizando
su
funcionamiento forma
de comunicacin.

16/04/2014
a
30/04/2014

30/04/2014
a
14/05/2014

14/05/2014
a
28/05/2014

28/05/2014
a
11/06/2014

11/06/2014
a
25/06/2014

Investigacin de las
variables que intervienen
en la entrada y salida de
pasajeros, para en base a
estos crear un algoritmo
que refleje de manera
ms especfica como se
realiza el conteo de
pasajeros.
Adquisicin
de
materiales.
Desarrollo del programa
para la comprobacin del
correcto funcionamiento
delos sensores
Simulacin

Consultar
como
se
realiza la comunicacin
inalmbrica con el micro
controlador a la GLCD
mediante la tecnologa
bluetooth
Realizar el programa
para la visualizacin de
mensajes de entrada
Simulacin
Desarrollo del programa
para el conteo de
pasajeros.

Simulacin

Elaboracin de cdigo
que permita tener el dato
de asientos disponibles
en el bus.

del
de

Diseo del flujo


grama

Verificacin del
programa
implementndol
o en protoboard.
cuyo control se
llevara a cabo
mediante
el
encendido
de
diferentes leds.

Diseo
diagrama
bloques.

Implementacin
del
programa
en protoboard.

Visualizacin
de los datos
obtenidos en el
conteo
de
pasajeros en la
GLCD.
Visualizacin
en GLCD

10

12

15

12

12

25/06/2014
a
09/07/2014

09/06/2014
a
16/07/2014

Presentacin
en
la
GLCD del nmero de
asientos disponibles i
mensaje indicando una
advertencia cuando la
capacidad mxima ha
llegado a su limite
Diseo
del
circuito
impreso en software.
Diseo de maqueta
Implementacin
de
circuitos dentro de la
maqueta
Informe Final

Circuito
impreso
Maqueta

14

Proyecto
terminado
Elaboracin
articulo IEEE

10

AVANCE 3

INVESTIGACIN DE MATERIALES QUE CONVIENE UTILIZAR EN ESTE


PROYECTO

TECNOLOGA BLUETOOTH
La tecnologa Bluetooth es un sistema de comunicaciones inalmbrica que posee un
corto alcance, basados en el estndar IEEE 802.15.1, en este se puede transmitir voz, datos,
imgenes entre otros, mediante la tecnologa de radiofrecuencia. Esta tecnologa es
utilizada bsicamente en redes WPAN (Wireless Personal rea Network) o redes de rea
personal inalmbricas.

Fig. 3 Comunicacin mediante bluetooth


Fuente: http://www.tugentelatina.com/m/articles/view/El-bluetooth-el-mas-importante-enlace-de-lacomunicacion-Inalambrica

Esta tecnologa tiene como objetivos:

Proporcionar la comunicacin entre equipos fijos y mviles.


Eliminar el cableado entre dispositivos.
Brindar la posibilidad de crear pequeas redes inalmbricas.

Para entender esta tecnologa debemos conocer la manera en que operaran:


Banda de frecuencia libre
Para que esta tecnologa pueda operar, como utiliza el recurso del espectro
electromagntico necesita una banda de la frecuencia del espectro que sea abierta, es decir,
en una banda que este abierta a cualquier sistema sin importar el lugar donde se encuentre y
la banda que cumple con estas especificaciones es la banda ISM (mdica, cientfica,

internacional) que es una banda libre en la cual los rangos de frecuencia utilizados estn en
entrelos 2.4 GHz a los 2.4835 GHz.

Arquitectura de Bluetooth
Bluetooth provee un conjunto completo de protocolos, los cuales permiten la
intercomunicacin de aplicaciones entre dispositivos.

Fig. 4 Arquitectura Bluetooth.


Fuente: http://es.scribd.com/doc/218294144/64/Modulos-Bluetooth-serial-HC-05

Las capas que tiene la arquitectura de bluetooth ms importantes son:

Capa RF
Capa de radiofrecuencia donde se encuentra el MODEM de radio que se utiliza para
la transmisin y la recepcin, mediante la modulacin de salto de frecuencia (FHSS) en la
banda ISM.
Capa Banda Base
Encargada del control del enlace a nivel de bit y paquetes, asimismo establece la
codificacin y encriptacin, y tambin las reglas de saltos de frecuencia.
Capa de protocolo de manejo de enlace (LMP)
Encargada de establecer los enlaces con los dems dispositivos, adems es la
responsable de conectar los nodos maestros con los esclavos.

Capa de protocolo de adaptacin y control de enlace lgico (L2CAP)


Brindar servicio de datos orientados a conexin y no orientados a conexin de los
protocolos de las capas superiores, mediante multiplexacin, segmentacin y reensamblaje.

Protocolo RFCOMM
Establece comunicaciones seriales punto a punto, emulando RS232 a travs de radio
frecuencia, proporcionando la emulacin de puertos RS232 mediante el protocolo L2CAP

Protocolo de descubrimiento de servicios (SDP)


Permite que las aplicaciones del cliente descubran la existencia de diversos servicios
brindados por uno o ms servidores de aplicacin junto con los atributos y propiedades
que estos ofrecen.

Protocolo de control de telefona (TCP)


Define la sealizacin para el control de llamadas de voz para aplicacin de
telefona inalmbrica. El audio es transferido directamente de la aplicacin a la banda base.
El Bluetooth soporta hasta 3 canales de audio full dplex simultneamente

MDULO HC-05

Fig.5 mdulo HC-05


Fuente: http://botscience.net/store/index.php?route=product/product&product_id=70

Caractersticas:

Trabaja como maestro y esclavo

Frecuencia: 2.4Ghz Banda ISM

Modulacin: GFSK

Poder de transmisin: <=4dBm

Seguridades: Autenticacin y encriptacin

Pines: VCC, GND, Tx, Rx, KEY, State (LED)

Distancia bluetooth: 10 metros

Tamao compacto

Muy populares para aplicaciones con microcontroladores

Relativamente econmicos

Ofrece una mejor relacin de precio y caractersticas

Tensin de alimentacin de 3,3Volts

Bajo

consumo

(8mA

en

transmisin/recepcin

activa)

GLCD PANTALLA GRFICA DE CRISTAL LQUIDO

Fig.6 pantalla GLCD 128x64


Fuente: http://www.disca.upv.es/aperles/web51/modulos/glcd/glcd.html

GLCD es una pantalla plana formada por una matriz de pxeles monocromos
colocados delante de una fuente de luz o reflectora, estos estn dispuestos en filas y
columnas, estos pixeles pueden manejarse individualmente de esta manera permite mostrar
texto, grficos o una combinacin de ambos. La GLCD dispone de una memoria RAM que
tiene el mismo tamao de la capacidad que dispone la pantalla.Una pantalla GLCD se
emplea en aquellos casos en lo que se necesita tener un control del rea de la pantalla y as
proporciona mucha flexibilidad, pero debido a esta flexibilidad se necesita diferentes
controladores entre los ms importantes tenemos el Samsung KS0107, Samsung KS0108 o
el Toshiba T6963.
Las GLCD varan segn la cantidad de pixeles que disponen:

240x128

240x64

160x128

128x128

128x66

128x64

96x65

GLCD 128x64

Consta de 128 pixeles de largo por 64 pixeles de alto.


Su iluminacin de fondo est entre verde-amarillo cuando se enciende.
Fcil manejo con microprocesadores de 8-Bits.
Bajo consumo.
Contiene dos controladores internos un KS0108B y KS0107B.

Descripcin de los pines de conexin de una GLCD 128x64


PIN 1: VSS (Conexin a tierra)
PIN 2: VDD (Conexin de alimentacin 5 V)
PIN 3: V0 (Voltaje de salida negativa, por lo general es usada con un potencimetro con el
PIN 18 para el ajuste del contraste de los pixeles)
PIN 4: D/I (Datos de E/S para el cambio de registro)
PIN 5: R/W (Determina si los datos se van a leer o escribir)

PIN 6: E (Habilita la comunicacin con la GLCD)


PIN 7 - 14 (Especifica un dato de 8-Bits de informacin)
PIN15: CS1 (Indica si se selecciona la primera mitad de la pantalla, pixeles 0-63)
PIN16: CS2 (Indica si se selecciona la segunda mitad de la pantalla, pixeles 64-127)
PIN17: RESETB (Seal de reinicio, funciona de varias forma dependiendo de la ocasin)
PIN18: VEE (Conexin de ajuste de contraste de los pixeles)
PIN19: A (Conexin positiva de la luz de fondo, por lo general son +5V)
PIN20: K (Conexin negativa de la luz de fondo, por lo general es tierra)

MICROCONTROLADOR
Los microcontroladores que van a ser utilizados en este proyecto son de la familia
ATMEL denominado Atmega164PA que son microcontroladores de 8 bits de alto
rendimiento y baja potencia.

Fig.7 Microcontrolador Atmega 164A

Fuente: http://elcodis.com/parts/1289512/ATMEGA16A-PU.html

Algunas de sus caractersticas son:

Memoria
Flash
EEPROM
RAM

16 kbytes
512 bytes
1 kbytes

Voltaje
1.8 5.5 V
200mA de corriente mxima

Puertos de entrada y salida (I/O)


Puerto A
8bits
Puerto B
8bits
Puerto C
8bits
Puerto D
8bits

Conversor anlogo digital


Resolucin de 10-bits
8 Canales Multiplexados Simples de Salida
Rango de Voltaje de Entrada del ADC: 0 - VCC
Rango de Voltaje Diferencial del ADC: 2.7 - VCC
Voltaje de Referencia Seleccionable ADC: 2.5V o 1.1V

Interfaz a perifricos
Velocidades programables
Full dplex
Operacin maestro/esclavo
Comunicaciones sincrnicas

Interrupciones externas
3 interrupciones externas (INT 0, INT 1, INT 2)
4 modos de activacin (nivel bajo, nivel alto, franco de bajada, franco de
subida)

Cx serial
Tiene 2 puertos de cx serial USART 0 y USART 1
Full Dplex
Velocidad de alta resolucin
Operaciones de maestro / esclavo en operaciones sincrnicas

Fig 8. Distribucin de pines Atmega 164A


Fuente: http://www.atmel.com/images/doc7674.pdf

DIODO IRLED
Es un emisor de rayos infrarrojos que son una radiacin electromagntica situada en
el espectro electromagntico en el intervalo que va desde la luz visible a las microondas.
El IRLED es un tipo especial de diodo que trabaja como un diodo comn pero que al ser
atravesado por la corriente elctrica emite luz.
Estos diodos se diferencian de los LED por el color de la cpsula que los envuelve que es
de color azul o gris. Su dimetro generalmente es de 5 mm.

Fig 9.Diodo IRLED


Fuente: http://notitronicampana.blogspot.com/2011/05/emisor-y-receptor-con-un-infrarrojo.html

Caractersticas:
Voltaje de operacin
Escala de corrientes

Longitud de onda

1.5V a 2.2V
10 y 20 mA(color rojo)
20 y 40 mA (otros)
940nm

FOTOTRANSISTOR
El fototransistor es un dispositivo electrnico semiconductor sensible que reacciona
con la luz visible y tambin con los rayos infrarrojos que son invisibles. Para distinguirlo
del LED su cpsula es transparente.

Fig 10. Fototransistor-Simbologa


Fuente: http://www.directindustry.es/prod/fairchild-semiconductor/fototransistores-33535-552867.html

Los fototransistores tienen un tiempo de respuesta muy corto es decir que pueden
responder a variaciones muy rpidas en la luz. Debido a que existe un factor de
amplificacin de por medio, el fototransistor entrega variaciones mucho mayores de
corriente elctrica en respuesta a las variaciones en la intensidad de la luz.

El principio del fototransistor es parecido al del transistor clsico. Le falta la


componente de la base, pues slo posee dos patas, un emisor y un colector. La base de
hecho es sustituida por una capa de silicio fotosensible, si esta capa est iluminada aparece
en la base una corriente que crece con la luz, lo que pone en marcha al transistor.
En el fototransistor la corriente circula slo en un sentido y el bloqueo del transistor
depende de la luz; cuanta ms luz hay ms conduce.

Caractersticas:
Voltaje de colector a emisor
Voltaje de emisor a colector
Corriente colector

30 V
5V
20 mA

Temperatura de operacin
Sensibilidad mxima

-25C a 85C
Min (0,7micrones)
Max (0,9micrones)

Fig 11. Conexin entre el Led Infrarrojo y Fototransistor


Fuente: http://hardware-hackingmx.com/tag/sensores/

PANEL DE CONTROL INALAMBRICO


La informacin adquirida se visualizara en una pantalla GLCD ubicada en un panel de
control, en donde mediante botones podremos elegir los datos a mostrar.

Imagen1. Panel de control


Entre los datos que nos proporciona el sistema estn:
-

Capacidad mxima del bus


Nmero actual de pasajeros en el bus
Nmero de asientos disponibles
Cantidad total de pasajeros en el da. (Adultos y nios)
Reporte diario de dinero total recaudado

AVANCE 4

VARIABLES QUE INTERVIENEN EN LA ENTRADA Y SALIDA DE PASAJEROS,


PARA EN BASE A ESTOS CREAR UN ALGORITMO QUE REFLEJE DE
MANERA MS
PASAJEROS.

VARIABLES

ESPECFICA COMO

SE

REALIZA EL CONTEO

DE

Direccin de los pasajeros


Para llevar el control del nmero de pasajeros se debe tomar en cuenta cuantos
pasajeros suben y bajan del mismo, para lo cual es importante la direccin en la que
se mueven, as este contador aumentara en el momento en el que suban los
pasajeros

disminuir

conforme

bajen.

Usamos

sensores

ubicados

estratgicamente dentro del bus, uno en la entrada y el otro ubicado al pasar de la


cabina a la parte posterior del bus, as al topar primero el sensor de la puerta (que lo
llamaremos sensor principal) y luego al topar el segundo sensor (secundario)
concluimos que la persona est subiendo al bus y el contador aumenta. Al tener el
proceso contrario, activacin sensores secundario y luego principal, nuestro
contador disminuir pues el pasajero esta bajando.

Edad (tomamos como referencia la altura).


Para conocer el tipo de personas que ingresaron las clasificamos en adultos y nios,
para reconocer estos parmetros nos ayudamos de los sensores secundarios los
cuales estn ubicados a diferentes alturas, el ms bajo a 1.00 m y el ms alto a 1.40,
as si ingresa un nio solamente activara el sensor ms bajo (se considera para el
pago de pasajeros como nios solo hasta los 8 aos de edad y el promedio de altura
para esta edad esta alrededor del 1.30 m) y no el alto , enseguida se guardar en el
conteo del nmero de nios, el otro caso se presenta si ingresa un adulto, el cual
deber topara los 2 sensores secundarios, as aumenta el contador de adultos.
En el caso que el nio tenga una estatura ms baja que la del sensor secundario bajo,
como es obvio no lo activar y no se realiza el conteo, pues si tiene tan jaba estatura
su promedio de edad ser. y nios de esa edad no pagan pasaje. Hay que
tomar en cuenta que estos nios que no pagan pasaje no varan la disponibilidad de
los asientos en el bus.

Controlador
El controlador como sabemos suele subir y bajar de bus pero al ser un bus
interprovincial no es tan repetitivo estos movimientos, sin embargo tomamos este
parmetro en cuenta para que esto no afecte al conteo final ni al control del dinero.

El controlador solo se mueve de la cabina hacia abajo por lo tanto solamente estar
activando el sensor principal y as no aumenta el conteo.

Obstrucciones de los sensores


En el caso que se quiera alterar el funcionamiento del sistema, obstruyendo los
sensores, tendr un tiempo mximo de estar activado, si se excede este lmite de
tiempo se activara una alarma sonora la cual indique alguna falla en el sistema.

Entrada masiva de pasajeros


Por lo general en los transportes que son de uso pblico existe exceso de pasajeros y
se brinda un mal servicio, con este sistema se busca mejorar esta atencin por lo
cual no se permite exceso de pasajeros y no habr aglomeracin de persona, adems
ya que son rutas interprovinciales de largas distancias, esto permite que los sensores
realicen un trabajo eficiente y real de su conteo.

Pasaje
Tenemos nuestra clasificacin de pasajeros y sensado en 2 aspectos que son adultos
y mayores por lo tanto para el cobro de pasaje se basara en valores, adems al ser un
transporte interprovincial lo que interesa al implementar el sistema es si se ocupa o
no el nmero de asientos, por lo tanto no interesa si son o no estudiantes.

Cantidad mxima de pasajeros


No se permite llevar pasajeros parados, segn la Ley Orgnica de Transporte
Terrestre en su Art.135.1 por lo tanto solo se dispone de los asientos del bus, el
conteo de los pasajeros permitir que al llegar al lmite mximo de pasajeros se
active una alarma sonora que indique que no se puede recoger ms pasajeros.

ALGORITMO

Nuestro sistema inicia con un mensaje de bienvenida en la GLCD para visualizacin del
chofer, con un botn de encendido se pone en actividad y empezando as el sensado que
consta en total de 3 sensores, uno principal y dos para los secundarios(en variables se
especifica el funcionamiento de cada uno), cada que cuente un pasajero varia el contador
que se muestra en la GLCD, al momento que llega al valor lmite de pasajeros y se intente
alterar el funcionamiento del sistema por ejemplo obstaculizando los sensores se activa una
alarma sonora, paralelamente existen dos contadores (ascendentes) que llevan el control
del nmero de pasajeros por da uno para adultos y otro para nios, as al finalizar el da
con activar un botn sabremos el nmero total de pasajeros y el total de dinero recaudado
visualizado en la GLCD.

DIAGRAMA DE FLUJO
INICIOO

Sensores Principal: Sensor A


Sensores secundarios: Sensor B,
Sensor C
Pulsadores
Bluetooth

Mensaje de Bienvenida
Activacin de sensores
CASOS

Activa sensor principal


Sensor A = 1

Activa sensor secundario


Sensor B o C = 1

Tiempo de espera

Tiempo de espera

Activa
Sensor secundario

Activa
Sensor secundario

no

no

Sensor
A=0

si

Sensor B o
C=0

si
Realiza el conteo
descendente

Realiza el conteo ascendente


dependiendo de qu sensor
secundario se activo

X
X

Visualiza en la GLCD el
contador de pasajeros

Cont=nmero total de
pasajeros

si
Se activa alarma sonora

Con un botn se visualiza al


final todo la informacin de
conteo y de dinero recaudado

FIN

DIAGRAMA DE BLOQUES
Entradas

Sensores

Microcontrolado
r

Receptor
Bluetooth
HC-05
Microcontrolador
Procesamiento de
datos

Bluetooth
HC-05

Procesamiento de datos

Transmisor

Panel Inalmbrico

MODULO
BLUETOOTH
HC -05

MODULO BLUETOOTH
HC -05
TX

Cx
ATMEGA 164A

ATMEGA

PANEL
INALAMBRICO

SENSORES
Led
infrarrojofototransistor

AVANCE 5

COMUNICACIN ENTRE MDULOS BLUETOOTH.


Para realizar la parte de nuestro proyecto en la cual se comunican los dos
microcontroladores, para enviar las seales captadas por los sensores hacia el siguiente
microcontrolador donde tiene sus salidas conectadas a nuestro panel de control que es la
GLCD, debemos primero configurar nuestros mdulos.
Usaremos un mdulo HC 05 y otro HC 06, los cuales se configuraran como maestro y
esclavo respectivamente para que puedan enlazarse.
Inicialmente nuestros mdulos vienen configurados como esclavos, as que tomamos el
modulo bluetooth HC 05 para configurarlo como maestro mediante los comandos AT.
1. Accedemos a nuestro mdulo HC 05 mediante hyperterminal.
En donde el puerto serie debe configurarse de la siguiente manera: 34800 bps, 8
bits de datos, Sin paridad, Sin control de flujo., casa contrario no tendremos
respuesta de los comando AT, es decir, no responde con OK.
Para esto debemos tener en cuenta que el PIN 43(PIO 11), que en nuestro mdulo se
visualiza con el nombre de KEY, este debemos ponerlo en estado alto, con un
voltaje de 3.3V, luego conectar la alimentacin del mdulo y finalmente enviar un
comando AT para ver su respuesta.
2. Para configurarlo como maestro lo hacemos de la siguiente manera:
3. Cambiamos la velocidad de comunicacin indicando la misma que hayamos puesto
en el mdulo esclavo.
AT+UART=9600 //Configura la velocidad de comunicacin
OK// Respuesta de verificacin que se realiz la instruccin.
4. Usamos el comando role para cambiar el papel o funcin que cumple el bluetooth.
AT+ROLE=1
//Indicamos que se comporte como maestro
OK
// Respuesta de verificacin que se realiz la instruccin.

5. Para que ambos dispositivos se comuniquen entre s, el mdulo maestro debe


conocer la direccin del mdulo esclavo. Para indicarla hay que utilizar el comando
AT+BIND utilizando el CMODE=0 (Direccin predefinida por el usuario).
AT+CMODE=0 // para que acceda el esclavo
OK
// Respuesta de verificacin que se realiz la instruccin.
AT+BIND=11,5,40090 //Direccin del dispositivo esclavo
OK
// Respuesta de verificacin que se realiz la instruccin.
Pero en nuestro caso configuramos la opcin CMODE=1, as el maestro se
conectara a cualquier dispositivo que se encontrara en su rango de transmisin.
AT+CMODE=1
Los mdulos comenzarn a buscarse entre s y en menos de 2 segundos indicarn
con sus leds que estn emparejados y listos para transmitir datos.
6. Tambin podemos modificar ciertos parmetros como:
Envar: AT+NAME=Nombre // cambia el nombre del dispoditivo
Recibe: OKsetname
En nuestro caso lo configuramos como: AT+NAME=MAESTROB
Envar: AT+PIN=pin de 4 dgitos // cdigo PIN de emparejamiento
Recibe: OKpin de 4 dgitos
En nuestro caso lo configuramos como: AT+PIN=1111
Es necesario cambiar pues el pin de fbrica es el 1234 y para dar ms seguridad al
enlace.

7. De igual manera podemos cambiar estos valores en el HC 06


Envar: AT+NAME<Nombre> // cambia el nombre del dispositivo
Recibe: OKsetname
En nuestro caso lo configuramos como: AT+NAMEESCLAVOB

Envar: AT+PIN<pin de 4 digitos> // cdigo PIN de emparejamiento


Recibe: OK<pin de 4 digitos>
En nuestro caso lo configuramos como: AT+PIN1111

Es necesario cambiar pues el pin de fbrica es el 1234 y para dar ms seguridad al


enlace.

GLCD
Los LCDs grficos usan un controlador como el KS0108 (o compatible). Cada controlador
tiene una memoria de 512 bytes interna y por lo tanto permite controlar un display de
64x64 pxeles.

Lneas de configuracin de la GLCD


VSS: 0V referencia de masa para el chip
VDD: 5V, alimentacin del lcd
V0: Contraste
D/I: Elige si se desea escribir/leer un dato (1) o instruccin (0)
R/W: Elige si se desa leer (1) o escribir (0)
E: Cuando se hace un pulso en esta pata, se hace la transferencia
DB0..7: Conforman el bus de datos, es de donde se lee y donde se escriben los datos a
transferir
CS1..2: Eligen el controlador al que se le quiere hablar
RES: Al estar en 0 resetea los controladores
Vee: Salida de tensin negativa
K y A: Luz de fondo (Backlight) del LCD

Programa para la visualizacin de mensajes de entrada

Programa Sensores
include <mega164a.h>
#include <delay.h>
int i,j;
#include <stdio.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
if(j==1){
putchar('a');
PORTA.0=1;
j=0;
}else{
i=1;
}
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
if(i==1){
putchar('b');
PORTA.0=0;
i=0;
}else{
j=1;
}
}
// External Interrupt 2 service routine
interrupt [EXT_INT2] void ext_int2_isr(void)
{
// Place your code here
if(i==1)
{
putchar('c');
PORTA.2=1;

i=0;
}else{
j=1;
}
}
#ifndef RXB8
#define RXB8 1
#endif
#ifndef TXB8
#define TXB8 0
#endif
#ifndef UPE
#define UPE 2
#endif
#ifndef DOR
#define DOR 3
#endif
#ifndef FE
#define FE 4
#endif
#ifndef UDRE
#define UDRE 5
#endif
#ifndef RXC
#define RXC 7
#endif
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART0 Receiver buffer
#define RX_BUFFER_SIZE0 8
char rx_buffer0[RX_BUFFER_SIZE0];
#if RX_BUFFER_SIZE0 <= 256
unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
#else

unsigned int rx_wr_index0,rx_rd_index0,rx_counter0;


#endif
// This flag is set on USART0 Receiver buffer overflow
bit rx_buffer_overflow0;
// USART0 Receiver interrupt service routine
interrupt [USART0_RXC] void usart0_rx_isr(void)
{
char status,data;
status=UCSR0A;
data=UDR0;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer0[rx_wr_index0++]=data;
#if RX_BUFFER_SIZE0 == 256
// special case for receiver buffer size=256
if (++rx_counter0 == 0)
{
#else
if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
if (++rx_counter0 == RX_BUFFER_SIZE0)
{
rx_counter0=0;
#endif
rx_buffer_overflow0=1;
}
}
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART0 Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0==0);
data=rx_buffer0[rx_rd_index0++];
#if RX_BUFFER_SIZE0 != 256
if (rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
#endif
#asm("cli")
--rx_counter0;
#asm("sei")
return data;
}

#pragma used#endif
// USART0 Transmitter buffer
#define TX_BUFFER_SIZE0 8
char tx_buffer0[TX_BUFFER_SIZE0];
#if TX_BUFFER_SIZE0 <= 256
unsigned char tx_wr_index0,tx_rd_index0,tx_counter0;
#else
unsigned int tx_wr_index0,tx_rd_index0,tx_counter0;
#endif
// USART0 Transmitter interrupt service routine
interrupt [USART0_TXC] void usart0_tx_isr(void)
{
if (tx_counter0)
{
--tx_counter0;
UDR0=tx_buffer0[tx_rd_index0++];
#if TX_BUFFER_SIZE0 != 256
if (tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;
#endif
}
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART0 Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter0 == TX_BUFFER_SIZE0);
#asm("cli")
if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))
{
tx_buffer0[tx_wr_index0++]=c;
#if TX_BUFFER_SIZE0 != 256
if (tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;
#endif
++tx_counter0;
}
else
UDR0=c;
#asm("sei")
}
#pragma used-

#endif
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsizeCLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped

// Mode: Normal top=0xFF


// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
// External Interrupt(s) initialization
// INT0: On

// INT0 Mode: Falling Edge


// INT1: On
// INT1 Mode: Falling Edge
// INT2: On
// INT2 Mode: Falling Edge
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-15: Off
// Interrupt on any change on pins PCINT16-23: Off
// Interrupt on any change on pins PCINT24-31: Off
EICRA=0x2A;
EIMSK=0x07;
EIFR=0x07;
PCICR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;
// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=0x00;
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=0x00;
// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud Rate: 9600
UCSR0A=0x00;
UCSR0B=0xD8;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// USART1 initialization
// USART1 disabled
UCSR1B=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR1=0x00;
// ADC initialization

// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
}
}
Programa Visualizacin Mensajes GLCD

#include <mega164a.h>
#include <delay.h>
#include <stdio.h>
#include "Includes/graph.h"
#include "Includes/GLCD.h"
#include "Includes/seq2.h"
int j;
unsigned char str[] = "MENOR";
unsigned char str2[] = "ENTRADA";
unsigned char ArStr[] = "EXIT";
unsigned char ArStr2[] = "HOLA";
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
}

// External Interrupt 2 service routine


interrupt [EXT_INT2] void ext_int2_isr(void)
{
}
#ifndef RXB8
#define RXB8 1
#endif
#ifndef TXB8
#define TXB8 0
#endif
#ifndef UPE
#define UPE 2
#endif
#ifndef DOR
#define DOR 3
#endif
#ifndef FE
#define FE 4
#endif
#ifndef UDRE
#define UDRE 5
#endif
#ifndef RXC
#define RXC 7
#endif
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART0 Receiver buffer
#define RX_BUFFER_SIZE0 8
char rx_buffer0[RX_BUFFER_SIZE0];
#if RX_BUFFER_SIZE0 <= 256
unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
#else

unsigned int rx_wr_index0,rx_rd_index0,rx_counter0;


#endif
bit rx_buffer_overflow0;
// USART0 Receiver interrupt service routine
interrupt [USART0_RXC] void usart0_rx_isr(void)
{
char status,data;
status=UCSR0A;
data=UDR0;
if(data=='c')
{
glcd_clear();
glcd_puts(str,0,4,0,1,0);
}
if(data=='b')
{
glcd_clear();
glcd_puts(str2,0,4,0,1,0);
}

//Put an English string at column 0,row 0

if(data=='a')
{
glcd_clear();
glcd_puts(ArStr,0,3,0,1,0);
}
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer0[rx_wr_index0++]=data;
#if RX_BUFFER_SIZE0 == 256
// special case for receiver buffer size=256
if (++rx_counter0 == 0)
{
#else
if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
if (++rx_counter0 == RX_BUFFER_SIZE0)
{
rx_counter0=0;
#endif
rx_buffer_overflow0=1;
}
}

}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART0 Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0==0);
data=rx_buffer0[rx_rd_index0++];
#if RX_BUFFER_SIZE0 != 256
if (rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
#endif
#asm("cli")
--rx_counter0;
#asm("sei")
return data;
}
#pragma used#endif
// USART0 Transmitter buffer
#define TX_BUFFER_SIZE0 8
char tx_buffer0[TX_BUFFER_SIZE0];
#if TX_BUFFER_SIZE0 <= 256
unsigned char tx_wr_index0,tx_rd_index0,tx_counter0;
#else
unsigned int tx_wr_index0,tx_rd_index0,tx_counter0;
#endif
// USART0 Transmitter interrupt service routine
interrupt [USART0_TXC] void usart0_tx_isr(void)
{
if (tx_counter0)
{
--tx_counter0;
UDR0=tx_buffer0[tx_rd_index0++];
#if TX_BUFFER_SIZE0 != 256
if (tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;
#endif
}
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART0 Transmitter buffer

#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter0 == TX_BUFFER_SIZE0);
#asm("cli")
if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))
{
tx_buffer0[tx_wr_index0++]=c;
#if TX_BUFFER_SIZE0 != 256
if (tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;
#endif
++tx_counter0;
}
else
UDR0=c;
#asm("sei")
}
#pragma used#endif
// Standard Input/Output functions
#include <stdio.h>
void main(void)
{
// Declare your local variables here
DDRB=0x1F;
DATADDR = 0xff;
DDRD=0x80;
DDRC = 0x0F;
// Crystal Oscillator division factor: 1
#pragma optsizeCLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
EICRA=0x2A;
EIMSK=0x07;
EIFR=0x07;
PCICR=0x00;
UCSR0A=0x00;
UCSR0B=0xD8;

UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// Global enable interrupts
#asm("sei")
glcd_clear();
glcd_puts(ArStr2,0,3,0,1,0);
delay_ms(1000);
glcd_clear();
while (1)
{
}
}

Simulacin
Mensaje de entrada

Mensaje Categora Menores de Edad

Mensajes para la categora Adultos

Mensajes de salida

BIBLIOGRAFIA

-Datasheet

ATMEGA164PA:

Obtenido

de:

http://www.atmel.com/images/doc7674.pdf

-Datasheet

MDULO

HC-05:

Obtenido

de:

http://www.abcelectronica.net/productos/wireless/bluetooth/

-Fernando Ramrez: Obtenido de: Diseo e implementacin de un sistema de


seguridad

inalmbrico

con

tecnologa

bluetooth

vivienda:http://es.scribd.com/doc/218294144/64/Modulos-Bluetooth-serial-HC-05

para

-Carol

Huayta

(Enero

2012)

Obtenido

de:

Fototransistor:

http://es.scribd.com/doc/110647169/Fototransistor

-Proyectos Electrnicos (Abril 2009) Obtenido de: Sensor infrarrojo Emisor y


receptor: http://es.scribd.com/doc/3678453/SENSOR-INFRARROJO-Teoria-y-practica

Você também pode gostar