Escolar Documentos
Profissional Documentos
Cultura Documentos
FICA
CIERCOM
COMUNICACIN INALAMBRICA
PROYECTO
IBARRA-ECUADOR
OBJETIVOS
GENERAL
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
datos.
Implementar esta aplicacin en protoboard para comprobar su correcto
funcionamiento con su respectiva simulacin y posteriormente en circuito impreso
PROBLEMA
JUSTIFICACION
ALCANCE
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
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
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.
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.
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.
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
MDULO HC-05
Caractersticas:
Modulacin: GFSK
Tamao compacto
Relativamente econmicos
Bajo
consumo
(8mA
en
transmisin/recepcin
activa)
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
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.
Fuente: http://elcodis.com/parts/1289512/ATMEGA16A-PU.html
Memoria
Flash
EEPROM
RAM
16 kbytes
512 bytes
1 kbytes
Voltaje
1.8 5.5 V
200mA de corriente mxima
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
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.
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.
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.
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)
AVANCE 4
VARIABLES
ESPECFICA COMO
SE
REALIZA EL CONTEO
DE
disminuir
conforme
bajen.
Usamos
sensores
ubicados
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.
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.
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
Mensaje de Bienvenida
Activacin de sensores
CASOS
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
X
X
Visualiza en la GLCD el
contador de pasajeros
Cont=nmero total de
pasajeros
si
Se activa alarma sonora
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
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.
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
#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
// 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)
{
}
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
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/
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