Escolar Documentos
Profissional Documentos
Cultura Documentos
MONITOREO DE PARMETROS
A TRAVS DE UN SISTEMA DE TELEMETRA
TESINA
QUE PARA OBTENER LA
ESPECIALIDAD EN SISTEMAS INMERSOS
P R E S E N TA :
FEBRERO 2009
Dedicatoria
A mis padres, Daniel I. Mnguez Rodrguez y Guadalupe Vital Ugalde, quienes siempre me han
brindado todo su apoyo en las decisiones que he tomado en mi vida; y por su esfuerzo, que me
ha servido de inspiracin a lo largo de mi preparacin como profesionista y ser humano.
A mi abuelita Ma. Eugenia Vital Ugalde quien ha sido como una segunda madre para mi. A mi
hermana Diana G. Mnguez Vital con quien he compartido mis mejores momentos y ha sabido
levantar mi nimo en los peores.
Por ltimo, pero no menos importante, a mi familia que sin importar la distancia que nos separa
hemos mantenido la misma unidad; siempre los conservar en mi memoria ya que saben
transmitir su cario, su apoyo y su alegra.
Agradecimientos
Al Dr. Roberto Herrera Charles quien como profesor, consejero y director de Tesina me ayud
durante la Especialidad desde su inicio hasta la terminacin del proyecto de Tesina. A mis
revisores el Dr. Jess Francisco Crdoba, M.C. Adolfo Esquivel y Esp. Eduardo Barba por sus
observaciones y consejos. Al cuerpo acadmico de la especialidad, M.C. Teodoro lvarez, M.C.
Jos Montoya, M.C. David Saucedo y M.C. Juan Tapia por compartir sus experiencias y
conocimientos.
A mis compaeros de especialidad Mizael Lpez-Lucho, Aryn Serrano y Branko Ivankovic; a
scar Muoz, Rodolfo Jimnez, Carlos Hernndez y Sonia Casillas por compartir sus
experiencias, aportar sus ideas para la realizacin de este trabajo y por hacer de sta una
experiencia muy enriquecedora.
A M.C. Armando Salas y a la empresa Karl Zeiss que a travs del proyecto desarrollado entre
ambos nos sirvi como punto de partida para la propuesta del proyecto de Tesina.
A CONACYT por el apoyo brindado a travs de la beca de programas inscritos en el PNPC; a los
proyectos de investigacin SIP-20071264, Sistema de control de unidades remotas mviles
SIP-20080851 del IPN y Creacin de una especialidad en Embedded Systems Fondo Mixto
CONACYT BC Convocatoria 2006-2 Proyecto 63058. A CITEDI por aceptarme en su programa
de Especialidad y por los servicios que me permiti utilizar en sus instalaciones como estudiante.
Abstract
This work introduces a monitoring system which is able to make the reading of parameters such
as temperature and sends it to a server in order to visualize them with a Java Applet.
The presented system make use of several data transmission technologies which have evolved in
a significant way. The system starts with the use of an embedded system or microcontroller unit
(MCU) for taking samples of the signal generated by a temperature sensor, also it manages the
serial communication, following the RS-232 standard, with a transceiver device (Starlert ST-1)
which uses the UDP package protocol in order to send data over the Internet through the GSM
network using the package service GPRS. The information gathered is saved in a Web Apache
server and creates a log file with data which can be parsed to an Applet written in Java and using
its visual elements be able to watch the parameters' behavior.
An important feature of this work is the use of high-performance devices to combine
communications, processing and Internet technologies, and using the knowledge acquired in the
specialization course to develop a system that can be implemented in many applications in order
to improve industrial processes, crops systems, security devices and health care services, among
others, it bears mentioning that having a supervisory control leads to process automation, remote
data access and work reduction on human resources which may result in better performance.
ndice
1. Introduccin........................................................................................1
1.1. Aplicaciones de los Sistemas de Telemetra...................................................................3
1.2. Objetivos del proyecto....................................................................................................6
1.2.1. Objetivo General......................................................................................................6
1.2.2. Objetivos especficos...............................................................................................6
1.2.3. Organizacin de la Tesina........................................................................................7
2. Antecedentes Tericos..........................................................................8
2.1. Sistema Global de Comunicaciones Mviles (GSM).....................................................8
2.1.1. Historia de GSM......................................................................................................8
2.1.2. Arquitectura GSM....................................................................................................9
2.2. Servicio General de Paquetes por Radio (GPRS).........................................................12
2.3. Protocolo de Datagrama de Usuario (UDP)..................................................................15
5. Resultados..........................................................................................51
5.1. Programacin del Convertidor Analgico Digital........................................................53
5.2. Programacin del Puerto Serie......................................................................................54
5.3. Programacin del Applet en Java..................................................................................57
6. Conclusiones......................................................................................59
6.1. Trabajo Futuro...............................................................................................................61
Referencias.............................................................................................62
Apndice A.............................................................................................63
Apndice B.............................................................................................80
Apndice C.............................................................................................85
Apndice D.............................................................................................86
ndice de figuras
Figura 1.1: Proceso de Telemetra................................................................................................1
Figura 1.2: Sistema de RF de AgriNET [1]..................................................................................4
Figura 1.3: Diagnstico de servicio de un automvil va e-mail brindado por OnStar [11]. . .5
Figura 1.4: Estetoscopio Electrnico Digital de AMD Telemedicine [2]...................................6
Figura 2.1: Reuso de Frecuencias...............................................................................................10
Figura 2.2: Arquitectura de una red GSM................................................................................11
Figura 2.3: Internet y sus protocolos..........................................................................................15
Figura 2.4: Paquete de datos UDP..............................................................................................16
Figura 3.1: Transmisin de datos al servidor............................................................................17
Figura 3.2: DEMOQE128 y Starlert ST-1.................................................................................18
Figura 3.3: Microcontrolador Flexis 32-bit ColdFire...............................................................21
Figura 3.4: DEMOQE128 [12]....................................................................................................22
Figura 4.1: Segmentos del V1 ColdFire [5]................................................................................24
Figura 4.2: Diagrama a Bloques del Convertidor A/D [5].......................................................29
Figura 4.3: Registro de Estado y Control 1 (ADCSC1)............................................................30
Figura 4.4: Registro de Estado y Control 2 (ADCSC2)............................................................31
Figura 4.5: Registro de Configuracin (ADCCFG)..................................................................31
Figura 4.6: Registro de Estado y Control del Contador de Tiempo Real (RTCSC)..............33
Figura 4.7: Distribucin interna de la fuente de Reloj.............................................................36
Figura 4.8: Registro de Control 1 del ICS (ICSC1)..................................................................37
Figura 4.9: Registro de Control 2 del ICS(ICSC2)...................................................................37
Figura 4.10: Registro de Estado y Control del ICS (ICSSC)...................................................38
Figura 4.11: Registro de Control 1 del puerto serie (SCIxC1).................................................39
Figura 4.12: Register de Control 2 del Puerto Serie (SCIxC2)................................................40
Figura 4.13: Registro de Control 3 del Puerto Serie (SCIxC3)...............................................41
Figura 4.14: Registro de Baud Rate del SCI. Arriba: SCIxBDH. Abajo: SCIxBDL.............42
Figura 4.15: CodeWarrior para microcontroladores...............................................................43
Figura 4.16: Cdigo fuente implementado en el microcontrolador.........................................44
Figura 5.1: Computadora Personal y Starlert ST-1..................................................................51
Figura 5.2: Prueba del Convertidor A/D...................................................................................54
Figura 5.3: Envo de caracteres a la Terminal Serial...............................................................55
Figura 5.4: Sistema Completo.....................................................................................................56
Figura 5.5: Visualizacin de grfico de temperatura en Internet...........................................58
ADC
A-GPS
APN
ARP
ASCII
AuC
AVL
BSC
BSS
BTS
CEPT
CDMA
CDPD
DCS 1800
DCO
DNS
DMIPS
EDGE
FIFO
FLL
FTP
GGSN
Gateway GPRS Support Node (Puerta de Enlace del Nodo de Soporte GPRS)
GPRS
GPS
GSM
GSMA
HLR
HSCSD
High Speed Circuit Switched Data (Datos Conmutados por Circuitos de Alta
Velocidad)
HSPA
HTTP
I2C
ICMP
ICS
IDE
IGMP
IP
ISDN
LAN
LIN
M2M
MoU
MS
MSC
NRZ
PAN
PCS 1900
PLMN
PPP
PSTN
RARP
RF
RTC
SCI
SGSN
SIM
SMS
SMTP
SPI
SQL
SSH
TCP
TDMA
TELNET
TFTP
TRAU
UDP
UMTS
USB
VLR
WAN
W-CDMA
WPAN
1. Introduccin
La introduccin de nuevas tecnologas ha sido crucial en el desarrollo del hombre, han
simplificado infinidad de labores donde era necesario contar con numerosos procesos antes de
obtener algn resultado. La observacin y control de estos procesos es una tarea muy importante
para la obtencin de resultados ms precisos y puede ser ms eficiente si se realiza de forma
automtica y sin tener que contar con recursos humanos de manera presencial en el lugar donde
se realiza este proceso. Aqu es donde la telemetra nos ofrece una solucin para esta clase de
problemas. La telemetra nos permite realizar mediciones de parmetros fsicos a distancia los
cuales pueden ser posteriormente almacenados y visualizados por el usuario interesado.
De forma general, se puede describir el procedimiento con la Figura 1.1 y de acuerdo a la
ilustracin, un sistema de telemetra bsico puede ser muy simple, y sin embargo, efectivo; se
pueden nombrar varios ejemplos, desde una persona midiendo el tamao de muestras
defectuosas en un lote de produccin y enviando los resultados a la persona encargada del rea,
hasta un sistema controlando una red inalmbrica de sensores monitoreando una zona forestal
para detectar posibles incendios y enviando reportes peridicos al guardabosques en turno. Sea el
caso de estudio, los componentes de un sistema de telemetra no varan en gran proporcin.
El objeto de observacin puede ser cualquier parmetro fsico o qumico, los cuales son
sensados para obtener finalmente ya sea un nivel de voltaje, una variacin en frecuencia de
alguna seal o incluso datos serializados que cumplan con algn estndar de comunicaciones.
Cuando se trata con seales elctricas analgicas es necesario acondicionarlas y digitalizarlas
para convertirse en entrada de un procesador y realizar las operaciones necesarias para colocar
1
Introduccin
los datos en el medio de transmisin. Se puede considerar, por ejemplo, la actividad elctrica del
corazn medida en un intervalo de tiempo y es sensada con electrodos.
El proceso de transmisin de datos es muy parecido a un codificador de informacin. Los datos
que se requieren enviar a travs del medio de transmisin deben de cumplir con ciertas
caractersticas para que puedan utilizar el canal de transmisin; si se enva en forma de paquetes,
puede ser requerida informacin adicional como la del destinatario o el mtodo de envo que se
necesita usar; otro ejemplo puede ser cuando la cantidad de informacin que se enva excede las
capacidades del medio de transmisin (como el ancho de banda), entonces, es necesario utilizar
algoritmos de compresin o disminuir la tasa de transmisin.
El medio de transmisin de datos puede realizarse a travs de cables o inalmbricamente. La
cantidad de protocolos de comunicacin existentes es infinita, y cada uno se ha adaptado de
acuerdo a las caractersticas presentadas por el ambiente que rodea al medio de transmisin. A
travs de un medio cableado, se aade a los datos mayor seguridad, integridad e inmunidad al
ruido comparado con los medios inalmbricos, adems existen topologas diferentes para cumplir
con requerimientos de velocidad, acceso y otras caractersticas; los medios cableados ofrecen al
diseador una rpida implementacin y adems sencilla como es el caso del estndar RS-232,
aunque para obtener mejores tasas de transmisin existen otros como Ethernet y se pueden
incluso formar redes de rea local o LAN cuando existen varios usuarios interesados en los datos
enviados. Sin embargo, el uso de las frecuencias en el aire ha logrado que en el medio cientfico
se desarrollen sistemas muy complejos de codificacin y compresin haciendo uso de protocolos
robustos como 802.11 y Bluetooth, aunque tambin existen otros menos complejos como
802.15.4, que es la base de la especificacin de Zigbee, que a cambio del uso de perfiles y altas
tasas de transmisin, ofrece un alcance muy amplio en reas abiertas as como un bajo consumo
de potencia y as se vuelve una solucin altamente eficaz para formar redes de rea personal
inalmbricas o WPAN. El uso de estos medios, a diferencia de los cableados, es que
proporcionan un uso eficiente del espacio haciendo que estos sistemas puedan utilizarse en
cualquier sitio; otra caracterstica importante es el reuso de la infraestructura ya establecida,
como es el caso de este trabajo, en el que se utiliza la red mvil GSM/GPRS a travs del
dispositivo transceptor Starlert ST-1 que realiza el envo de paquetes para hacerlos llegar al
servidor. Los medios de transmisin inalmbricos estn en constante evolucin, cada vez ofrecen
2
Introduccin
mayor confiabilidad y tasas de transmisin tan altas que ahora vemos como un hecho el poder
realizar el envo de seales de video en tiempo real por donde hasta hace apenas algunos aos
solo era posible transmitir voz.
La recepcin de datos es similar a la transmisin en el sentido que se tienen que cumplir con los
mismos requerimientos de comunicacin que estn dados por el medio de transmisin, el subsistema que recibe la informacin enviada por el transmisor, debe ser capaz de interpretar el
protocolo utilizado. En esta parte, si existiera alguna codificacin en el envo de datos, el
dispositivo encargado de la recepcin debe ser capaz de decodificarlos y almacenarlos para ms
adelante se puedan visualizar como datos numricos de manera tabular o con grficos.
La visualizacin de datos puede estar relacionada con el sub-sistema que recibe los datos, ya
que un proceso puede estar encargado de la recepcin y otro del despliegue de la informacin
que se reproduce en el dispositivo local visualizador. En el caso de la aplicacin que se presenta
en esta Tesina, el proceso de despliegue est almacenado en el servidor y se ejecuta en la
mquina virtual de Java instalada en el cliente.
Introduccin
se puede tener acceso a esta informacin de manera remota por medio de bases de RF de control
(Figura 1.2) combinado con tecnologas como el Internet.
Otro ejemplo muy comn que demuestra la importancia del uso de sistemas de telemetra se
puede observar en los sistemas de seguridad vehicular como los que desarrolla una compaa
llamada OnStar desarrollada por General Motors. El objetivo de OnStar es ofrecer a sus usuarios
gran rapidez de respuesta en caso de accidentes automovilsticos ya sean a causa de siniestros o
robo del vehculo. Los usuarios de vehculos equipados con este sistema como el de la Figura 1.3
pueden obtener de manera automtica, por e-mail, diagnsticos mensuales, servicio de
navegacin a travs de voz, respuesta automtica de un asesor en caso de que se desplieguen las
bolsas de aire a causa de un accidente y asistencia en caso de robo de vehculo. Todas los
servicios mencionados con anterioridad son posibles gracias al uso de un sistema que combina el
monitoreo constante del automvil con tecnologa GPS para la localizacin del vehculo as
como el uso de redes celulares. Bsicamente el usuario puede contactar directamente a un asesor
de OnStar haciendo uso de los componentes bsicos de un telfono celular, es decir, un
micrfono integrado, una antena celular y la red celular; mientras tanto el asesor del servicios
localiza al vehculo utilizando el sistema de localizacin GPS. En otro caso, cuando las bolsas de
4
Introduccin
aire del vehculo son desplegadas, un mensaje es enviado al sistema de telemetra del vehculo
equipado el cual se comunica al centro de servicios utilizando la misma red celular.
Figura 1.3: Diagnstico de servicio de un automvil va e-mail brindado por OnStar [11]
La telemedicina es una de las reas en la que se ha tenido un mayor desarrollo y sto se debe
principalmente a las necesidades que como seres humanos presentamos; conforme crece la
poblacin en el mundo, mayor es el nmero de gente que necesita tratamientos mdicos de
manera inmediata y el personal especializado para el cuidado de cierto tipo de enfermedades no
es la suficiente para cubrir estas necesidades en todos los rincones del mundo, hay ocasiones que
personas necesitan ser examinadas por estos especialistas y tienen que viajar varios kilmetros
para poder tratar sus enfermedades lo cual se traduce en gastos muy grandes. La habilidad de la
telemedicina para proveer cuidado mdico interactivo utilizando tecnologa moderna y las
telecomunicaciones es fundamental para resolver este tipo de problemas que nuestra sociedad
enfrenta. Ya sea atencin mdica en tiempo real, para incrementar la efectividad en el uso de
camas en un hospital, atender comunidades rurales muy alejadas, la telemedicina es
definitivamente la mejor opcin.
La empresa AMD Telemedicine es lder a nivel mundial como proveedor de instrumentos
mdicos (Figura 1.4) usados en telemedicina. Los instrumentos mdicos que esta empresa provee
pueden ser utilizados para distintas reas del cuidado de la salud como son la cardiologa,
odontologa, dermatologa, otorrinolaringologa, oftalmologa, patologa, pediatra, tratamientos
de emergencia, salud de la mujer, cuidados primarios, radiologa, ultrasonidos y monitoreo de
signos vitales.
Introduccin
Introduccin
2. Configurar el mdulo convertidor analgico digital del microcontrolador.
3. Configurar el mdulo serial del microcontrolador.
4. Acoplamiento del sensor de temperatura al microcontrolador.
5. Enviar datos del microcontrolador al mdem ST-1.
6. Desarrollar un Applet en Java para la visualizacin de datos en el servidor.
2. Antecedentes Tericos
Para la realizacin de este proyecto se hace uso de tecnologas desarrolladas para los sistemas de
telecomunicaciones; la red de telefona celular GSM de la cual surge GPRS, que usando las
mismas radiofrecuencias y estaciones bases que ya existen de GSM, ofrece a sus usuarios,
negocios y otras organizaciones mejoras importantes en la transmisin inalmbrica de
informacin con el desempeo de conexiones cableadas. Adems, tambin se hace mencin al
Protocolo de Datagrama de Usuario (UDP) que es el protocolo utilizado por el Starlert ST-1 para
enviar sus datos a travs de Internet.
Antecedentes Tericos
funcional solo para el pas donde se desarrollaban, de tal forma que stos solo funcionaban
dentro de las fronteras del mismo.
Poco despus, el 7 de Septiembre de 1987 cuando el acuerdo llamado Memorandum of
Understandig (MoU) fue firmado en Copenhagen por 15 operadores de telecomunicaciones de
13 pases se logr fundar el primer sistema celular digital a travs de Europa que ms adelante se
convertira en la Asociacin GSM (GSMA). En la actualidad, la asociacin representa a ms de
740 operadores GSM a travs de 219 pases y territorios del mundo y sirve a ms de 2,600
millones de usuarios.
En 1991, el primer sistema GSM estuvo listo para ser utilizado de manera amigable con los
usuarios y fue entonces cuando el significado del acrnimo GSM cambio a Sistema Global para
Comunicaciones Mviles. En ese mismo ao se dio a conocer el Sistema Celular Digital 1800
(DCS 1800) que bsicamente trasladaba al sistema GSM a la banda de 1800 MHz lo cual dio
pauta a establecer en Estados Unidos el mismo sistema a los 1900 MHz que sera llamado
Sistema de Comunicacin Personal 1900 (PCS 1900).
Durante el siguiente ao muchos operadores europeos ya contaban con redes de comunicaciones
basados en el sistema GSM el cual captara la atencin a nivel mundial y lograra establecerse en
esa ndole provocando un xito comercial para los proveedores del sistema.
el reuso eficiente de
frecuencias utilizando estaciones base de poca potencia y rango limitado. Debido a que el
suscriptor cuenta con un sistema que emite poca potencia, el rango de la seal ser limitada, de
esta forma, para satisfacer la necesidad de cobertura amplia, se debe considerar una
infraestructura con una cantidad significativa de estaciones que forman la red celular, en la cual a
cada estacin se le asigna una parte del espectro de frecuencias como en la Figura 2.1; al estar
limitadas en su rango de alcance, para que dos clulas puedan hacer uso de la misma frecuencia,
necesitan estar separadas por una o ms clulas con el fin de evitar interferencias. El reuso
eficiente de frecuencias es una caracterstica muy importante ya que el espectro de frecuencias es
9
Antecedentes Tericos
un recurso bastante limitado.
A pesar de que el reuso de frecuencias es una ventaja sobresaliente, las redes celulares tambin
tienen algunas desventajas:
Todas las redes celulares necesitan que conforme se mueve una estacin mvil, la
llamada activa est pasando de una clula a otra.
La red debe de estar pendiente de la posicin de la estacin mvil, incluso cuando no hay
llamada en progreso, para que pueda entregar correctamente una llamada entrante cuando
se requiera [15].
La infraestructura de una red GSM, como se ilustra en la Figura 2.2, se puede describir a grandes
rasgos en tres partes: el usuario mvil que controla el equipo o Estacin Mvil (MS) que lo
conecta a la infraestructura de la red; dicha conexin se establece mediante el Sub-sistema de
Estaciones Mviles (BSS); y por ltimo, el Centro de Conmutacin y servicios Mviles
10
Antecedentes Tericos
(MSC) que se encarga de manejar los servicios mviles as como la conmutacin de llamadas
entre usuarios mviles y otros usuarios mviles o fijos.
La estacin mvil es el equipo fsico que conecta al usuario GSM a la red, este equipo debe de
ser porttil y se presenta en varias formas y con distintas potencias. Para establecer una buena
comunicacin con la red GSM es necesario realizar una autenticacin por medio de un Mdulo
de Identidad del Suscriptor (SIM) el cual es un chip que es insertado en el equipo mvil del
usuario con la finalidad de realizar llamadas as como recibirlas, y adems, obtener acceso a
otros servicios que tenga registrado. La MS permite recibir servicios de voz y de datos, entre los
disponibles, se encuentra el Servicio General de Paquetes por Radio (GPRS) usando una
transferencia de datos IP o X.25 a velocidades de hasta 115 kbps.
Una Estacin Base (BTS), de acuerdo a su rango de alcance, define el rea ocupada de la clula
dentro del rea de cobertura en la zona donde esta ubicada. Bsicamente se trata de un
dispositivo transceptor, cuya funcin es proveer la conectividad entre la red y la estacin mvil a
travs de la interfaz de radio Um. El tamao de la celda formada por la BTS es inversamente
proporcional a la densidad de poblacin que exista en la zona y puede tener un rango desde
200m hasta 30 km aproximadamente. El Controlador de Estaciones Base (BSC) puede
controlar a una o varias BTS con el fin de proveer de funciones de operacin y
telecomunicaciones como el manejo de las llamadas cuando atraviesan ms de una celda, la
11
Antecedentes Tericos
configuracin de los canales de radio y la conmutacin entre frecuencias tambin conocido como
frequency hopping. Entre una o ms BTS y el BSC, se forma el BSS el cual utiliza la interfaz Abis para formar esta conexin. Un elemento importante que se considera dentro del BSS o como
parte del MSC es la Unidad de Adaptacin y Rango de Trans-codificacin (TRAU) que sirve
para agregarle eficiencia al uso de las frecuencias realizando una compresin de datos con el fin
de tener un buen nmero de llamadas en cierto ancho de banda.
El conmutador MSC est basado en el diseo de un ISDN o un PSTN adaptado para brindar
funcionalidad extra para redes celulares, como registro, autenticacin, ruteo de llamadas,
transferencia inter-celdas, entre otros. El MSC se encarga de conectar a la red de radio-telfonos
a la red de telfonos pblica; adems, da acceso a la base de datos de la red y al Centro de
Autenticacin (AuC) el cual verifica los permisos de acceso del suscriptor.
Dentro de la red GSM tambin existe otro sub-centro llamado Registro de Localizacin de
usuarios Locales (HLR) el cual es una base de datos que almacena la informacin
administrativa de los suscriptores, por cada red GSM debe de existir como mnimo una HLR. El
Registro de Localizacin de usuarios Visitantes (VLR) fue ideada con el fin de evitar la
sobrecarga de informacin en el HLR; el VLR tambin contiene una base de datos con
informacin de los suscriptores y solo cuando el suscriptor se encuentra en otra rea de cobertura
ajena a su rea local, cuando el suscriptor abandona la red, entonces el HLR hace una peticin
para borrar la informacin del suscriptor visitante del VLR. El rea del VLR abarca la zona
cubierta por las BTS y su respectivo MSC para el cual el VLR provee servicios. El Registro de
Localizacin de usarios locales, el Registro de Localizacin de usuario Visitantes y el Centro de
Conmutacin y servicios Mviles proveen el direccionamiento de las llamadas as como las
capacidades de roaming de GSM.
12
Antecedentes Tericos
marc un paso ms hacia las redes de tercera generacin, tambin llamadas 3G, cuyo mayor
atractivo son las velocidades de transferencia de datos y la capacidad para transmitir video en
tiempo real.
Aunque el enfoque de GPRS era hacia las empresas, los servicios se han extendido hacia
usuarios en general. La tendencia hacia los dispositivos conectados a la red de Internet cada vez
parece ser marcada por los dispositivos mviles, sobrepasando a las computadoras personales
que han estado presentes desde antes.
GPRS permite acceso a los servicios de Internet con una tasa de transmisin de hasta 115 kbps
usando hasta ocho canales de radio los cuales son asignados a un usuario o compartido por varios
usuarios. La aceptacin de este sistema ha hecho que cuente con una cobertura casi total a nivel
mundial, de esta forma los usuarios pueden tener acceso a su informacin en casi cualquier lugar.
Otra ventaja de este servicio es que la conexin de los usuarios GPRS con la red es de manera
permanente de modo que el acceso a la informacin sea instantnea, y as, aumentar su
productividad.
Para implementar el servicio GPRS en la red de GSM no es necesario realizar una inversin muy
grande para las compaas que proveen de estos servicios ya que GPRS fue diseado para
coexistir con la Red Mvil Pblica Terrestre GSM (PLMN). Esto significa que GPRS puede
convivir con los servicios de paquetes de datos ya existentes, incluso los componentes del
Servicio de Mensajes Cortos (SMS) pueden trabajar con GPRS de forma que permita realizar el
envo de SMS a travs de GPRS.
Con la introduccin de GPRS y el Protocolo de Internet (IP) a las redes mviles, los usuarios
pueden disfrutar mayor rapidez y tasas de transmisin de datos; adems, GPRS permite realizar
llamadas de datos y de voz simultneamente. Los usuarios que reciben estos servicios tienen la
capacidad de estar conectados siempre a Internet de tal forma que puedan enviar correos
electrnicos con archivos adjuntos grandes, contar con el servicio de oficina mvil, navegar por
Internet de manera rpida y telemetra.
Como se mencion, la implementacin de GPRS en los sistemas de GSM no implican cambios
13
Antecedentes Tericos
muy drsticos en la red existente; para tal fin, se introducen dos nuevos elementos en la red y
modificaciones mnimas en los componentes existentes. El Servidor del Nodo de Soporte
GPRS
(SGSN) y el Puerta de Enlace del Nodo de Soporte GPRS (GGSN) son los
Paquetes de Datos Celular Digital (CDPD). Esta tecnologa ofrece tasas de transmisin
de hasta 19.2 kbps, el costo de implementacin es ms alto que GPRS, est diseado para
implementarse sobre los servicios celulares analgicos existentes; es confiable cuando
hay pocas llamadas analgicas pero pueden haber prdidas de datos cuando el volumen
de llamadas es grande.
Datos Conmutados por Circuitos de Alta Velocidad (HSCSD). Esta tecnologa ofrece
14
Antecedentes Tericos
velocidades de hasta cuatro veces 14.4 kbps. Este servicio no ofrece la caracterstica de
conexin permanente de GPRS por lo que es necesario estableces un nuevo enlace con el
usuario cada vez que desee enviar o recibir datos; el servicio de cobrado por minutos y
por canales usados.
15
Antecedentes Tericos
cada uno, de modo que los requerimientos de confiabilidad de la capa de aplicacin es el factor
principal para elegir entre un protocolo u otro. UDP es menos confiable que TCP al enviar varios
paquetes en secuencia debido a que no se puede asegurar que todos llegarn a su destino. A
travs del encabezado del IP se puede identificar el protocolo que se utilizar. Hay aplicaciones
que funcionan igualmente con UDP y TCP, aunque tambin existen aplicaciones que solo podrn
utilizar un protocolo u otro.
El protocolo UDP es simple, eficiente e ideal para aplicaciones como TFTP y DNS. Bsicamente
la direccin IP es usada para direccionar un datagrama a una mquina en particular, en el
encabezado del UDP va contenido un nmero correspondiente al puerto de destino que sirve para
enviar el datagrama UDP a la cola de un proceso dentro de la mquina; adems tambin existe un
campo que contiene al puerto remitente que puede ser usado por el proceso receptor para
responder al datagrama del usuario. El formato del datagrama UDP se muestra a continuacin en
la Figura 2.4.
Los puertos remitente y destino se utilizan para definir el punto final del envio de mensajes UDP;
si no se usa, el puerto remitente debe ser cero. La longitud de mensaje sirve para indicar el
nmero de octetos que contiene el datagrama, el valor mnimo que puede contener es 8 ya que es
el nmero de octetos que comprende el encabezado (puerto remitente, puerto destino, longitud de
mensaje y checksum). El campo de checksum es opcional, si no es usado debe contener un cero;
como el protocolo de IP solo protege su encabezado a travs de su checksum, UDP provee
integridad de sus datos al tener su propio checksum.
16
En la industria existen diversos procesos que pueden ser monitoreados por un sistema similar al
anteriormente mencionado. En el caso de este proyecto, se enfoca en la medicin de temperatura,
presin y nivel de solucin dentro de un tanque bulk-mix en el cual se hace una mezcla de
componentes qumicos que despus de varios procesos industriales, pasan a formar un lente
ptico que cumple con ciertas especificaciones. Dichos procesos son realizados dentro de una
empresa llamada Carl Zeiss.
Dentro de este sistema se sustituye el uso de la tarjeta de adquisicin de datos y la computadora
personal con un dispositivo microcontrolador de Freescale MC9S08QE128 el cual se programa
con la tarjeta de desarrollo DEMOQE128 y con el software de desarrollo CodeWarrior Ver.6.0.
El sensor de temperatura es muestreado por el convertidor analgico-digital contenido en el
17
Una vez que el sistema de la Figura 3.2 sea capaz de enviar datos al Internet, el servidor que se
encuentra en el laboratorio de Sistemas Inmersos del CITEDI ser el encargado de recibir toda la
informacin. El servidor HTTP Apache 2.2.0 se encuentra actualmente ejecutndose en una
computadora con Fedora 9 que es una distribucin de Linux basada en Red Hat. El servidor
contiene una base de datos que puede ser accedida y manipulada con SQL. Cuando un paquete
de datos UDP nuevo llega al servidor, hay un proceso que se encarga de recibirlo y colocarlo en
una cola temporal para que otro proceso lo tome, verifique que la informacin est correcta para
finalmente depositarlo en la base de datos. En la verificacin de la informacin, el mismo
proceso se encarga de generar y escribir a un archivo tipo bitcora llamado net.log donde coloca
el dato llegado junto con informacin adicional como la fecha y hora de llegada. El Applet que se
ejecute desde el servidor puede utilizar la informacin directamente de la base de datos en el
servidor o a travs del registro generado.
18
Interfaz SIM.
El bloque referido como ArcBase que se encarga de controlar las funciones del hardware
como el CPU, mdem GPS, entre otros.
La capa de de aplicacin tambin llamada AVL Aplication la cual puede ser configurada
utilizando los comandos GP.
19
Hasta 50 MHz ColdFire V1 CPU arriba de 2.4V, 40 MHz CPU con ms de 2.1V y 20
MHz con 1.8V.
Su desempeo es de 0.91 Dhrystone 2.1 MIPS por MHz corriendo desde la RAM interna
(0.76 DMIPS/MHz desde la memoria flash).
Memoria On-Chip
Dos modos stop con bajo consumo de energa y un modo wait con consumo reducido de
energa.
Dos interfaces I2C que puede alcanzar una tasa de 100 kbps.
20
Cabe mencionar que Freescale ofrece una tarjeta de desarrollo de bajo costo llamada
DEMOQE128 que sirve para programar y depurar los microcontroladores MCF51QE128 y
MC9S08QE128 ya que ofrecen compatibilidad en terminales y perifricos con esta tarjeta se
puede intercambiar fcilmente de un microcontrolador a otro. La tarjeta de desarrollo permite
que la programacin del microcontrolador se pueda realizar mediante un cable USB adems de
utilizarlo como fuente de voltaje. Entre otras caractersticas, el DEMOQE128 como el de la
Figura 3.4 tiene:
Potencimetro de 10 K.
Dimensiones: 3.5 x 4.
Entrada de alimentacin:
22
23
De los cuales los primeros son conocidos como los registros de datos los cuales
pueden ser usados para operaciones de bit, byte, una palabra y una palabra larga,
adems tambin son usados como ndices para el clculo direcciones efectivas. Los
registros de direcciones son usados como punteros a la pila, registros ndices o
registros de base de direcciones. Tambin pueden ser usados para realizar operaciones
de almacenamiento y operaciones de palabra corta y larga. El registro A7 funciona
como puntero a la pila durante llamadas a subrutinas y manejo de excepciones.
Est compuesto por los 5 bits ms bajos de Registro de Estado, lo cual hace que esta
porcin del registro sea la nica disponible en este modo de programacin. Este
registro es afectado por algunas instrucciones de nmeros enteros y el estado de este
registro ayuda a algunas instrucciones de control para realizar sus funciones de
control y flujo de programa.
ColdFire soporta dos registros punteros a pila de 32 bits, solo que la implementacin
en hardware de ambos registros no identifica a un registro como Puntero a la Pila del
Supervisor (SSP) y Puntero a la Pila del Usuario (USP), en vez de eso, el hardware
usa un registro de 32 bits como el A7 activo y el otro como OTHER_A7.
Como se mencion antes, en modo usuario solo se puede acceder a los 5 bits
correspondientes del CCR, en modo supervisor, se tiene control de todos el registro
que adicionalmente contiene la mscara de prioridad de interrupciones as como otros
bits de control.
25
Directo
Indirecto
26
Caracterstica
Voltaje de Alimentacin
Voltaje de Tierra
Voltaje de Referencia Alto
Voltaje de Referencia Bajo
Voltaje de Entrada
Capacitancia de Entrada
Resistencia de Entrada
Resistencia de la fuente
analgica
Frecuencia de reloj de
conversin
Condiciones
Absoluto
Delta a VDD(VDD - VDDAD)
Delta a VSS(VSS - VSSAD)
Modo 12 bits
fADCK > 4 Mhz
fADCK < 4 MHz
Modo 10 bits
fADCK > 4 Mhz
fADCK < 4 MHz
Modo 8 bits (Cualquier fADCK
vlida)
Alta velocidad (ADLPC=0)
Baja potencia (ADLPC=1)
Sm
VDDAD
VDDAD
VSSAD
VREFH
VREFL
VADIN
CADIN
RADIN
RAS
fADCK
Mn Tp1
1.8
--100
0
-100
0
1.8 VDDAD
VSSAD VSSAD
VREFL --4.5
-5
Mx Unidad
3.6
V
+100
mV
+100
mV
VDDAD
V
VSSAD
V
VREFL
V
5.5
pF
7
k
---
---
2
5
---
---
5
10
--
--
10
0.4
0.4
---
8.0
4.0
MHz
Valores tpicos asume VDDAD = 3.0V, Temp = 25C, fADCK = 1.0MHz a menos que se indique lo contrario.
Nota: VDD y VSS corresponden al voltaje de alimentacin y de la tierra del microcontrolador respectivamente.
Tabla 4.1 Condiciones de operacin del ADC.
El sistema de monitoreo est basado en la adquisicin de datos, para sto, el MCF51QE128 tiene
entre sus perifricos un mdulo convertidor analgico digital con el cual se pueden tomar
muestras de una seal analgica, dichas muestras son procesadas en el microcontrolador para ser
enviadas por el puerto serial. Entre las caractersticas ms importantes del ADC est su algoritmo
de aproximaciones sucesivas con 12 bits de resolucin, 28 entradas analgicas, un selector de
longitud de datos de salida (8, 10 y 12 bits), conversin simple o continua, interrupcin y
bandera de conversin completa, disparador asncrono por hardware seleccionable y
comparacin automtica con interrupcin para mayor que, menor que o igual que algn valor
programado. En la Tabla 4.1, se muestran algunas condiciones de operacin del ADC.
27
Sm Mn Tp1 Mx Unidad
IDDAD
--
120
--
IDDAD
--
202
--
IDDAD
--
288
--
IDDAD
--
0.532
--
mA
IDDAD
-- 0.007 0.8
2
3.3
5
1.5
2
3.3
fADACK
--
20
--
--
40
--
--
3.5
--
--
23.5
--
--
1.5
--
--
0.5 1.5
Modo 8 bits
--
0.5 0.5
Modo 12 bits
--
1.0
--
--
0.5
Modo 8 bits
--
0.5 0.5
Modo 12 bits
--
-1 a 0
--
--
--
0.5
--
--
0.5
tADC
tADS
Modo 12 bits
Error de escala cero
Modo 10 bits
EZS
Error de cuantizacin
EFS
EQ
Modo 10 bits
Modo 8 bits
MHz
Ciclos
ADCK
(Ver [4])
Ciclos
ADCK
(Ver [4])
LSB2
LSB2
LSB2
Valores tpicos asume VDDAD = 3.0V, Temp = 25C, fADCK = 1.0MHz a menos que se indique lo
contrario.
2
1 LSB = (VREFH VREFL)/2N
Tabla 4.2 Caractersticas elctricas del ADC.
El mdulo ADC requiere algunas conexiones externas como son los canales de entrada
analgicos, voltajes de referencia, fuente de volaje y tierra analgicas. Los voltajes de referencia
28
El ADC utiliza dos disparadores para comenzar el proceso de conversin; uno por software, en el
cual al escribir un valor vlido de canal en el Registro de Estado y Control 1 (Figura 4.3) en los 5
29
30
ADTRG (Conversion Trigger Select): Selecciona entre disparo por hardware o software.
ADIV (Clock Divide Select): Configura el divisor del reloj para general el reloj interno
del ADC.
ADLSMP (Long Sample Time Configuration): Selecciona entre tiempo de muestreo largo
o corto.
ADICLK(Input Clock Select): Selecciona la fuente de reloj para generar el reloj interno
del ADC.
Ya que despus de un reset el registro de configuracin contiene en todos sus campos ceros
31
Contador de 8 bits
Tres fuentes de reloj seleccionables para el prescalador con valores binarios y decimales
seleccionables.
Reloj Externo.
La configuracin de este mdulo es bastante simple ya que consiste en solo tres registros: el
registro de estado y control, el registro contador y el de mdulo. Cuando ocurre un reset en el
microcontrolador el registro contador y el de mdulo obtienen los valores de 0x00, en cuanto al
registro de estado y control, queda de tal forma que el oscilador interno de 1KHz este
seleccionado y el prescalador tambin adquiere un valor de 0x00 que es interpretado como
prescalador apagado.
Cuando el registro de estado y control se le asignan valores a sus bits de configuracin, es
posible cambiar la fuente de reloj para el RTC as como el valor prescalador a uno como los que
32
RTCPS Reloj interno 1 kHz Reloj externo 1 Mhz Reloj interno 32 kHz Reloj interno 32 kHz
(RTCLKS = 00)
(RTCLKS = 00)
(RTCLKS = 00)
(RTCLKS = 00)
0000
Apagado
Apagado
Apagado
Apagado
0001
8 ms
1.024 ms
250 s
32 ms
0010
32 ms
2.048 ms
1 ms
64 ms
0011
64 ms
4.096 ms
2 ms
128 ms
0100
128 ms
8.192 ms
4 ms
256 ms
0101
256 ms
16.4 ms
8 ms
512 ms
0110
512 ms
32.8 ms
16 ms
1.024 ms
0111
1.024 s
65.5 ms
32 ms
2.048 ms
1000
1 ms
1 ms
31.25 s
31.25 ms
1001
2 ms
2 ms
62.5 s
62.5 ms
1010
4 ms
5 ms
125 s
156.25 ms
1011
10 ms
10 ms
312.5 s
312.5 ms
1100
16 ms
20 ms
0.5 ms
0.625 s
1101
0.1 s
50 ms
3.125 ms
1.5625 s
1110
0.5 s
0.1 s
15.625 ms
3.125 s
1111
1s
0.2 s
31.25 ms
6.25 s
Tabla 4.3 Periodo del Prescalador
El registro de mdulo puede contener un valor entre 0x00 y 0xFF los cuales sirven para
comparar el conteo que se lleva en el registro contador y su taza de cambio depender del
prescalador seleccionado. Cuando el valor contenido en el registro de mdulo coincide con el
valor contenido en el registro de conteo, entonces el RTC provoca una peticin de interrupcin
activando la bandera de interrupcin en el registro de estado y control.
En este mdulo solo se escribe al registro de estado y control como el que se muestra en la
Figura 4.6 primeramente para elegir al reloj interno de 1KHz y obtener un conteo con un periodo
de 0.1 segundos.
33
RTIF (Real-Time Interrupt Flag): Bandera que indica que el registro contador, tiene el
mismo valor que el registro de mdulo.
RTCLKS (Real-Time Clock Source Select): Selector de fuentes de reloj para el RTC.
RTCPS (Real-Time Clock Prescaler Select): Selector de valores divisorios para la fuente
de reloj.
Una caracterstica muy importante del contador de tiempo real es que el reloj interno de 1KHz
que puede ser programada como fuente de reloj, est disponible en el modo de bajo consumo de
energa, lo cual significa que el microcontrolador puede mantenerse en ese estado y regresar a su
estado normal cada vez que el RTC provoque una peticin de interrupcin.
Generador de paridad.
Caracterstica
Baud Rate
Bits de datos
Paridad
Bits de paro
Control de flujo
Valor
57600
8
ninguno
1
ninguno
35
Con los valores predefinidos, el microcontrolador nos ofrece como fuente de reloj la salida del
FLL controlado con una referencia interna de reloj. Los rangos de frecuencia son elegidos con
tres Osciladores Digitalmente Controlados (DCO) que se encuentran internamente en el FLL.
Con estas caractersticas se obtiene una frecuencia de reloj del sistema de 16MHz y dividido
entre dos que es el valor seleccionado en uno de los registros de ICS (BDIV), entonces se obtiene
una frecuencia de bus de 4MHz. Modificando los registros de este mdulo se pueden conseguir
12MHz de frecuencia de bus con la cual se logra alcanzar el baud rate especificado en la gua de
inicio del Starlert ST-1.
36
En la Figura 4.8 se observa el Registro de Control 1 del ICS con la nomenclatura de cada bit que
se detalla a continuacin:
IRCLKEN (Internal Reference Clock Enable): Habilita la referencia de reloj interna para
ser usada como seal ICSIRCLK (Internal Clock Source Internal Reference Clock).
Para este proyecto los nicos bits que deben estar activados son los que habilitan a la referencia
de reloj interna para controlar el FLL del microcontolador (IREFS y IRCLKEN). Adems
CLKS[7:6] deben tener el valor de 00 para seleccionar al FLL como salida de reloj.
El Registro de Control 2 del ICS se muestra en la Figura 4.9.
BDIV (Bus Frequency Divider): Selecciona la cantidad para dividir a la fuente de reloj
elegida por CLKS.
HGO (High Gain Oscilator Select): Controla el modo de operacin del oscilador externo.
37
LP (Low Power Select): Controla si el FLL es deshabilitado en los modos bypass del
FLL.
ERCLKEN (External Reference Enable): Habilita la referencia de reloj externa para ser
usada como seal ICSIRCLK (Internal Clock Source Internal Reference Clock).
Para este registro en los bits BDIV[7:6] se selecciona el divisor de reloj por 2 escribiendo 01 a
estos bits.
El rango de frecuencia del FLL del microcontrolador es controlado mediante el registro de estado
y control del ICS y se muestra a continuacin, en la Figura 4.10
OSCINT (OSC Initialization): Si es seleccionado la referencia externa del reloj, este bit
es puesto en nivel alto despus de que haya sido completado los ciclos de inicializacin
del reloj del oscilador externo.
Para este registro solo se actualizan los valores de DRS y DMX32 y siguiendo la tabla 4.5
obtenemos una frecuencia de 50MHz.
LOOPS (Loop Mode Select): Selecciona entre el modo loop-back (la salida del transmisor
es conectado internamente a la entrada del receptor) y el modo normal full-duplex de 2
pines.
SCISWAI (SCI Stops in Wait Mode): Selecciona si el reloj del SCI continua en operacin
o se congela mientras el microcontrolador esta en modo de espera.
39
RSRC (Receiver Source Select): Este pin solo sirve si LOOPS = 1 y determina si es usado
o no el pin RxD.
M (9-Bit or 8-Bit Mode Select): Selecciona entre modo de 8 bits o 9 bits de datos.
WAKE (Receiver Wakeup Method Select): Selecciona entre Idle-line wakeup y Addressmark wakeup (para ms detalles consulte el manual de referencia [4]).
ILT (Idle Line Type Select): Selecciona si el contador de bits de caracter incativo
comienza despus del bit de inicio o despus del bit de parada.
En este registro solo interesa configurar el SCI en modo de 8 bits y con el bit de paridad
deshabilitado.
El registro mostrado en la Figura 4.12 es el registro de control 2 del SCI.
ILIE (Idle Line Interrupt Enable): Habilita la interrupcin por hardware de IDLE (Idle
Line Flag).
SBK (Send Break): Pone en cola un break character en la cadena de datos del transmisor.
R8 (Ninth Data Bit for Receiver): Cuando es configurado el SCI para datos de 9 bits, R8
se considera como el noveno bit del dato recibido.
T8 (Ninth Data Bit for Transmitter): Cuando es configurado el SCI para datos de 9 bits,
R8 se considera como el noveno bit del dato a transmitir.
TXDIR (TxD Pin Direction in Single-Wire Mode): Cuando el SCI es configurado para
operar como half-duplex con un solo cable, este bit determina la direccin del dato al pin
TxD.
TXINV (Transmit Data Inversion): Invierte la polaridad a los datos que se desean
transmitir.
NEIE (Noise Error Interrupt Enable): Habilita la bandera de error de recepcin por ruido
para generar peticiones de interrupcin por hardware.
FEIE (Framing Error Interrupt Enable): Habilita la bandera de error en la trama de bits
para generar peticiones de interrupcin por hardware.
PEIE (Parity Error Interrupt Enable): Habilita la bandera de error de paridad para
generar peticiones de interrupcin por hardware.
A continuacin se debe configurar el baud rate siguiendo la frmula tomada del manual de
referencia del microcontrolador:
41
El vector de bits SBR12:SBR0 se encuentran en dos registros del mdulo SCI como se ilustra en
la Figura 4.14.
Figura 4.14: Registro de Baud Rate del SCI. Arriba: SCIxBDH. Abajo:
SCIxBDL
LBKDIE (LIN Break Detect Interrupt Enable): Habilita la interrupcin por hardware para
la bandera LBKDIF (para ms detalles consulte el manual de referencia [4]).
RXEDGIE (RxD Input Active Edge Interrupt Enable): Habilita la interrupcin por
hardware para la bandera RXEDGIF (para ms detalles consulte el manual de referencia
[4]).
SBR (Baud Rate Modulo Divisor): Fija el mdulo divisor para el generador de baud rate
del SCI.
Escribiendo a los bits SBR el valor hexadecimal 0x0E que equivale a 14 decimal se obtiene el
baud rate requerido por el mdem Starlert ST-1:
Una vez que el baud rate ha sido configurado correctamente, entonces es posible enviar datos al
Starlert-ST1. Para lograr un envio de datos satisfactorio, primero se debe verificar que el registro
de datos del puerto serie este listo para un dato nuevo y que no haya ningn envio en proceso; el
dato que se requiera ser enviado a travs del puerto serie, debe de almacenarse en el registro de
datos del SCI o SCI Data Register (SCIxD). El mdulo SCI tambin cuenta con un registro de
corrimiento de transmisin, cuando el SCI esta configurado para enviar datos de 8 bits, el
42
43
CodeWarrior, mostrado en la Figura 4.15, no solo permite usar su interfaz para escribir cdigo
fuente en C/C++ y ensamblador; tambin ofrece la capacidad de depurar proyectos de manera
grfica, visualizando el cdigo desensamblado, datos en memoria y en los registros de propsito
especfico y general. Entre las caractersticas ms importantes de esta versin tenemos:
Ensamblador ilimitado
44
primitive.h
bithandler.h)
corresponden
los
perifricos
usados
del
microcontrolador. Se utiliza un archivo de cdigo fuente C para cada perifrico y a cada uno le
corresponde un archivo de cabecera H. Los archivos de cabecera con terminacin .h que
corresponden a cada perifrico utilizado, contiene varias re-definiciones de los registros internos
as como algunas constantes y los prototipos de las funciones que se encuentran definidas en los
archivos fuente .c.
bithandler.h contiene algunas macros que pueden ser de utilidad para asignar valores a registros
completos o a un solo bit de algn registro.
BITTOGGLE(REGISTER, BIT) Cambia el estado actual del bit 'BIT' del registro
'REGISTER' a su estado opuesto.
REGSET(REGISTER, MASK) Pone en nivel alto los bits seleccionados con 'MASK'
del registro 'REGISTER'.
REGCLR(REGISTER, MASK) Pone en nivel bajo los bits seleccionados con 'MASK'
del registro 'REGISTER'.
adc.c acta como manejador del convertidor analgico digital del MCF51QE128.
adc_init Esta funcin escribe a los registros del convertidor A/D los datos necesarios
para configurarlo de acuerdo a las caractersticas mostradas en la tabla 4.6:
Caracterstica
Reloj de Entrada
Divisor de Reloj del ADC
Resolucin
Canal Activo
Disparador de conversin
Valor
Bus Clock
8
10 bits
Canal 0
Hardware
Para este microcontrolador la seal ADHWT depende del Real-Time Counter, es decir, cuando es
seleccionado el disparador por hardware del ADC con el bit ADTRG del registro de status y
control 2 (ADCSC2), el ADC es disparado cada vez que el registro de conteo del Real-Time
Counter RTCCNT iguala al valor contenido en el registro del mdulo RTCMOD.
rtc.c sirve para configurar los registros del mdulo contador de tiempo real.
46
rtc_init Realiza la configuracin inicial del Real-Time Counter para que ste provoque
interrupciones cada 100 ms.
serial.c configura y realiza las funciones de escritura y lectura al puerto serie del
microcontrolador.
serial_init Configura al puerto serie de tal forma que cumpla con lo requerido en la
Tabla 4.4.
send Se encarga de enviar mensajes a travs por el pin TxD del puerto serie. La
variable de entrada es un apuntador hacia la cadena de datos que se enviar:
Espera.
Espera.
Se incrementa el apuntador.
receive Los mensajes que llegan al pin TxD son almacenados en un buffer
preestablecido. Esta funcin es proveda con la direccin al primer elemento del buffer y
a partir de ah empieza a guardar los datos que llegan al microcontrolador:
Hacer, mientras el contenido del elemento actual del buffer sea diferente a un salto de
lnea:
Espera.
47
registro_RX Interrupt Service Routine del puerto serie que se encarga de leer el octeto
recin llegado al microcontrolador y borra la bandera que indica que el registro de datos
contiene un dato nuevo.
cpu_init Esta subrutina escribe a los registros relacionados con el CPU y su fuente de
reloj de forma que el perro guardin queda deshabilitado as como el modo wait, el pin de
Reset queda habilitado y de la misma forma el modo stop queda habilitado para que al
hacer un llamado a la macro que pone al microcontrolador en algunos de los modos de
bajo consumo de energa, ste responda de la forma que debe. Esta funcin hace el
llamado a otras dos funciones: InternalClockSource_init() y activateBusClock ().
Se selecciona la fuente la salida del FLL como fuente de reloj y a su vez se selecciona
al reloj interno como fuente para el FLL.
Espera ya que el microcontrolador necesita realizar una sincrona con las seales
al hacer un cambio de referencia lo cual puede tomar un tiempo.
Espera.
activateBusClock Esta funcin hace uso de una de las caractersticas importantes del
microcontrolador que es la habilitacin y deshabilitacin de fuente de reloj del bus para
los perifricos a travs de los dos registros asignados para esta propiedad, de modo que
solo los perifricos seleccionados en la entrada de esta funcin (cpu.h contiene los
nombres vlidos de los perifricos) utilicen los recursos del microcontrolador ahorrando
48
Llama a las rutinas de inicializacin del CPU, del convertidor A/D, del contador de
tiempo real, de los puertos de E/S y del puerto serial.
Habilita las interrupciones de todo el sistema; al hacer esto, el contador de tiempo real
comienza a generar interrupciones
Espera el mensaje del ST-1 que indique que se realiz una conexin satisfactoria
con la red GSM/GPRS.
Cuando se escribe a los bits de seleccin de canal del ADC el valor del canal
activo, entonces las interrupciones del contador de tiempo real le sirven al ADC
como disparador y empezar a convertir datos analgicos en digitales.
Se enva a travs del puerto serie el valor ASCII obtenido seguido de un retorno
de carro.
El dato que se proporciona a esta funcin es de tipo int, de esta forma, se realiza el
casting del dato al tipo double.
Se realiza otro casting pero ahora con el valor resultante y al tipo float.
Finalmente, se transforma el dato tipo float a un dato tipo ASCII con 3 decimales.
50
5. Resultados
Con el fin de lograr los objetivos propuestos en la Introduccin de este trabajo, se hicieron una
serie de pruebas a todo el sistema, sin embargo, an existen pruebas que se requieren realizar de
forma que el sistema tenga como resultado un prototipo que cumpla con las funciones descritas
en esta tesina, dichas pruebas se pueden realizar conforme se le d continuidad al proyecto actual
tomando como referencia los puntos que se revisan en el apartado de Trabajo Futuro.
En el trabajo de Tesis de S. Casillas [14] se logr establecer la configuracin y el funcionamiento
correcto con del mdem transceptor conectado a travs del puerto serie a una computadora
funcionando como Terminal Serial. Existe software que puede realizar la funcin de terminal,
como PuTTY, HyperTerminal o Starlert Admin que, adems, tambin puede ser utilizado para
programar firmware nuevo cuando haya alguno disponible.
Las primeras pruebas consistieron en comprobar el funcionamiento del Starlert ST-1 antes de
interfazarlo con el dispositivo microcontrolador. Utilizamos la computadora de la Figura 5.1
funcionando como Terminal Serial para recibir todos las cadenas de caracteres ASCII que enva
el ST-1 desde que es alimentado hasta que se conecta a la red GSM/GPRS, y as enviar al
servidor mensajes en cdigo ASCII que pueden ser introducidos desde el teclado de la Terminal.
El objetivo principal de dichas pruebas es detectar los eventos que deben transcurrir antes de
51
Resultados
empezar a enviar cadenas de caracteres del microcontrolador al Starlert ST-1. Los eventos son
generados por el ST-1 cuando el GPS y otros elementos dentro del ST-1 detectan actividad. Un
ejemplo de evento puede ser el GPRS Registration True que se genera cuando un registro GPRS
esta disponible desde el mdem, si se genera un evento GPRS Registration False significa que el
mdem ha perdido su registro GPRS.
En las primeras pruebas de observacin del comportamiento del Starlert ST-1, como se ilustra en
la Figura 5.1, se usa el PuTTY para identificar las siguientes cadenas como indicadores de que se
ha realizado conexin con la red GSM/GPRS:
<AVL> GPRS Event (00000001 00000000) - <AVL> GPRS Registration 1
<AVL> GPRS Event (00000001 00000000) - <AVL> GSM Registration 1 (was 1)
Una vez ledas estas cadenas se pueden enviar paquetes de datos a travs de la red hasta el
servidor. En el PuTTY, con el teclado, introducimos la cadena Prueba 1 y el ST-1 regres las
siguientes cadenas a manera de confirmacin:
<AVL>
<AVL>
Done
<AVL>
<AVL>
El servidor del cual se hizo una breve mencin en el Captulo 3, captura la informacin de
recepcin de datos y son guardados al archivo net.log que es generado por el servidor. Para
accesar a este archivo volvemos a utilizar PuTTY ya que adems de poder actuar como terminal
para el puerto serie, es posible realizar una conexin SSH con el servidor desde la computadora.
De acuerdo a la misma cadena Prueba 1 que se envi, el archivo net.log muestra en su
contenido la siguiente informacin:
Mar 23, 2009 9:56:46 PM UDPNetworkReceive runINFO: UDP packet received from: /
200.95.162.54:45934 at 1224552959 milliseconds Mar 23, 2009 9:56:46 PM
UDPNetworkReceive runINFO: 992008Prueba 1
De tal forma, podemos ver que el Starlert ST-1 realiza correctamente las funciones de captura y
envo de caracteres ASCII al servidor. Las cadenas de caracteres que enva el ST-1 hacia la
52
Resultados
terminal pueden utilizarse como indicadores para el microcontrolador, de modo que sea posible
identificar ciertos eventos que ocurren en el mdulo transceptor. Las cadenas que se acaban de
mostrar son suficientes para conocer la informacin que necesitamos acerca del ST-1 ya que una
vez que el microcontrolador sea capaz de muestrear el voltaje de salida del LM-35, debe de
poder enviar dicha informacin a travs del puerto serie pero solo cuando el ST-1 se conecte a la
red GSM/GPRS y configurado apropiadamente.
Antes de utilizar la informacin recin dada, primero fue necesario programar los perifricos que
se mencionaron en el Captulo 4. Los perifricos se configuraron, primeramente, de manera
separada para comprobar el funcionamiento correcto de los mismos.
53
Resultados
incremento en el valor hexadecimal contenido en el registro resultante o ADR, se traduce en un
incremento de voltaje de 0.012890625 V, entonces, si se observa la Figura 5.2, se puede
distinguir en los LED's del DEMOQE128 un valor binario de 01100010 o 98 decimal, de tal
forma que al multiplicarlo por el valor del incremento de voltaje en el ADC, se obtiene
1.26328125 V. Se concluye que el mdulo ADC realiza correctamente la conversin ya que en la
fuente de voltaje, se tiene un valor de 1.19 V lo cual es muy cercano al obtenido despus de la
conversin.
Resultados
frecuencia del bus. En el Captulo 4 de este trabajo, se mencionan los registros utilizados para
conseguir las caractersticas necesarias para generar la frecuencia de bus que requera la
especificacin, al programar dichos registros, fue posible alcanzar el baud rate de 57600.
Ya que se haban conseguido los primeros objetivos de esta aplicacin, lo siguiente era integrar
todas las partes que se programaron y hacerlas funcionar en conjunto, primeramente, con la
terminal del puerto serie de la computadora para que de esta manera, se pudiera comprobar que
los mensajes del Starlert ST-1 y los provenientes del microcontrolador sean coherentes para la
terminal, lo cual implicara que ambos dispositivos tienen las mismas caractersticas de
comunicacin y as, al conectarlos a travs de la interfaz RS-232, pudieran mantener
comunicacin entre ambos. En la Figura 5.3 se puede observar al microcontrolador enviando
cadenas de caracteres ASCII a la terminal del puerto serie en la computadora.
55
Resultados
Establecida la comunicacin entre el microcontrolador y la terminal, lo siguiente fue conectar el
microcontrolador con el Starlert ST-1. Anteriormente se hizo mencin acerca de las eventos que
enva el Starlert ST-1 a la terminal del puerto serie, las cuales son importantes ya que el
transceptor al proveerle voltaje no se conecta de forma instantnea a la red GPRS, entonces a
travs de los mensajes mostrados, es posible determinar el momento en el que el
microcontrolador puede comenzar a enviar datos al ST-1; otra ventaja de tener este parmetro
como indicador es que tambin podemos evitar que el microcontrolador enve informacin sin
que el mdem este conectado a la red lo cual puede ocurrir si la tarjeta SIM no est
apropiadamente insertada o ausente, o si no ha sido cubierta la cuota con el proveedor de
servicios de datos GPRS, en este caso, Telcel.
El monitoreo de temperatura se realiza con un sensor LM-35 de National Semiconductor
conectado al convertidor A/D del microcontrolador a travs de un amplificador operacional
TL081 configurado como seguidor de voltaje, que como ya es sabido, sirve para acoplar
impedancias ya que al hacer la conexin directa, se perda el voltaje de salida del sensor. En el
Apndice C se encuentra contenido el diagrama esquemtico del sistema donde se puede
observar lo descrito as como en la Figura 5.4 se observa de manera fsica el sistema.
Ahora que funciona correctamente el sistema conformado por el sensor de temperatura LM-35,
microcontrolador MCF51QE128 y el mdem transceptor Starlert ST-1, es posible enviar todo
tipo de datos en hacia el servidor a travs de la red GSM/GPRS, para esta aplicacin, enviamos
56
Resultados
caracteres ASCII que representan una medida de temperatura en grados centgrados con punto
flotante y dos decimales de precisin. El envo de caracteres se hace en intervalos de 5 minutos
una vez que el mdem ha establecido comunicacin correcta con la red GSM/GPRS.
librera
externa
llamada
JFreeChart
disponible
en
el
sitio
web
desde
el
navegador,
se
accede
la
pgina
web
del
servidor,
57
Resultados
58
6. Conclusiones
Durante el desarrollo del sistema de monitoreo se tuvo la oportunidad de implementar
tecnologas del rea de las comunicaciones y de la informacin. El mdem GPS/GSM Starlert
ST-1 tiene como base un microcontrolador 8051 que controla las funciones de localizacin por
satlite GPS, adems tambin realiza el control de las funciones de transmisin de datos GPRS
dentro de la misma unidad. El DEMOQE128 es un mdulo de desarrollo que trae varios
dispositivos perifricos interfazados al microcontrolador MCF51QE128, lo cual facilita y agiliza
la implementacin de numerosas aplicaciones. Adems, el sistema tambin cuenta con un
servidor que se encuentra fsicamente en el laboratorio de Sistemas Inmersos que fue utilizado
para almacenar la informacin enviada por el ST-1, los archivos de la pgina Web y la clase que
contiene el Applet.
Un problema tcnico que se present fue en la comunicacin serial entre el microcontrolador y el
ST-1 ya que la tasa de transmisin de bauds que el microcontrolador poda alcanzar con la
frecuencia de bus predefinida no era suficiente para sincronizarse con el Starlert ST-1 para
comunicarse; el mdulo serial solo provee un registro para modificar el valor correspondiente al
baud rate as que fue necesario modificar los registros del CPU, principalmente el mdulo que
controla la fuente de reloj interna del sistema a travs del cual se increment la frecuencia. En lo
que respecta a la programacin y configuracin del microcontrolador, no hubo mayor
inconveniente, debido a la amplia documentacin que existe en Internet y a la experiencia previa
con el uso de microcontroladores muy similares as como sus herramientas.
El desarrollo del Applet podra considerarse como la parte ms compleja de alcanzar dentro de
este proyecto ya que la experiencia personal en programacin orientada a objetos as como con el
lenguaje Java era muy escasa, as que tomo un poco mas del tiempo planeado encontrar la mejor
manera de realizar la programacin y encontrar las libreras adecuadas para concluir con el
objetivo dado.
En esta Tesina se menciona el uso de varias tecnologas y es importante destacar el las
herramientas de software necesarias para la implementacin, evaluar diferentes opciones y
compararlas entre s. La que se utiliz en su mayor parte fue la herramienta de programacin
Freescale CodeWarrior para el microcontrolador MCF51QE128 que en su versin gratuita
59
Conclusiones
ofrece los componentes necesarios para programacin y depuracin de cdigo. El diseo de
pginas Web ha resultado muy popular debido al crecimiento del nmero de usuarios de Internet
que se ha presentado en la ltima dcada que en la actualidad, tan solo en Mxico, es de
23,700,000 habitantes de acuerdo al Internet World Stats (http://www.internetworldstats.com/),
por consiguiente, existen muchas herramientas que cumplen dicha funcin como DreamWeaver
de Adobe, FrontPage de Microsoft y para nuestra aplicacin dado el nivel de complejidad de la
pgina Web desarrollada, se utiliz el Composer de Mozilla que es parte del conjunto de
aplicaciones de Internet conocido como SeaMonkey que adems del editor de HTML tambin
cuenta con un navegador de Internet, gestor de correo electrnico y grupo de noticias, entre otras
aplicaciones. Un editor HTML a diferencia de un editor de texto comn, nos permite visualizar la
pgina Web y auto-generar las etiquetas apropiadas para que puedan ser interpretadas por el
navegador de Internet y as mostrar la pgina como se especifique. Las herramientas potenciales
para la programacin del Applet son diversas, desde un simple editor de texto como Notepad, o
alguno otro ms complejo como el SciTE que sin ser un ambiente de desarrollo pueden
compilarse y ejecutarse los cdigos de C/C++ o Java especificando en la variable de ambiente
PATH la ubicacin del compilador; otros programas que entran dentro de la categora de IDE
(como el CodeWarrior) para programar en Java que existen pueden ser NetBeans IDE y Eclipse
IDE; estos dos al parecer son los ms utilizados para realizar esta tarea, ambos gratuitos, de
cdigo abierto y multiplataforma que facilitan la creacin de cdigo y el manejo de proyectos
extensos, as como el uso de libreras externas y depuracin de cdigo, una caracterstica que
llama la atencin es la revisin de sintaxis en tiempo real que a la vez, cuando es detectado algn
error, proporcionan sugerencias al programador para corregir errores en el cdigo; NetBeans, de
manera predeterminada, ofrece la opcin de programacin utilizando herramientas visuales,
Eclipse ofrece algo similar solo que se instala como complemento del software llamado Visual
Editor. Basado en experiencias de otros programadores, Eclipse parece imponerse sobre
NetBeans, ambos soportan el uso de gran cantidad de tecnologas (Java, bases de datos, C/C++,
etc.), pero Eclipse IDE ofrece ms soluciones orientadas al desarrollo de aplicaciones embebidas,
as que posiblemente sea por eso por lo que es ms utilizado, por lo menos en el rea de los
sistemas embebidos.
En conclusin, es posible desarrollar un sistema completo de monitoreo que puede ser aplicable
dentro de la industria u otra rea, adquiriendo los conocimientos adecuados acerca de las
60
Conclusiones
tecnologas que existen en la actualidad y que cada da resultan ms accesibles. Es importante
comprender estas tecnologas y seguir capacitando gente para alcanzar sistemas ms complejos
que ayuden a las diferentes ramas del desarrollo humano.
Optimizacin de cdigo fuente C del microcontrolador para reducir el tamao del mismo
y mejorar tiempos de ejecucin.
Actualizacin del Applet cada hora o en cada intervalo de tiempo ya sea leyendo
automticamente el archivo net.log generado por el servidor o acceder por medio de
consultas a la base de datos del servidor.
Crear un marco en el Applet para visualizar los valores de forma tabular y sea un marco
junto a la grfica o generar una pestaa para cada tipo de visualizacin.
Diseo y construccin de prototipo del sistema con el fin de que pueda presentarse como
un producto final para comercializarse.
61
Referencias
[1] AgriNET. Complete Hardware and Software systems. http://www.agrinet.us/ (Recuperado el
17 de Febrero de 2009).
[2] AMD Telemedicine. AMD Telemedicine Products. http://www.amdtelemedicine.com/
products.cfm (Recuperado el 17 de Febrero de 2009).
[3] Bates, Regis J. GPRS (General Packet Radio Service). McGraw-Hill, 2002.
[4] Freescale Semiconductor, ColdFire Family Programmer's Reference Manual. Rev. 3. 2005
[5] Freescale Semiconductor, MCF51QE128 MCF51QE64 MCF51QE32 Reference Manual.
Rev. 3. 2007.
[6] Freescale Semiconductor, MCF51QE128 Series Data Sheet: Technical Data. Rev. 6. 2008.
[7] Freescale Semiconductor, QE128 Quick Reference User Guide. Rev. 1.0. 2007.
[8] GSM Association, 2008 Corporate Brochure, 2008.
[9] Heine, Gunnar. GSM Networks: Protocols, Terminology, and Implementation. Artech House
Inc., 1999.
[10]Intel Corporation, GPRS Technology: Increasing productivity using packet-based data
service over the moble telephone network, 2002.
[11]OnStar by GM. Demonstration of OnStar Services. http://www.onstar.com/us_english/jsp/
services/index.jsp?make=onstar&model=homepage&deepLink=overview (Recuperado el 17
de Febrero de 2009).
[12]P&E Microcomputer Systems, Inc., DEMOQE128 User Manual. Rev 1.03. 2007.
[13]R. Herrera et. al., Rastreo de mviles con GSM/GPRS y GPS, CITEDI, 2007.
[14]S. Casillas et. al., Sistema de telemetra utilizando las redes GPS, GPRS e Internet, CITEDI,
2008.
[15]Starlert, Starlert Getting Starter Guide, Archetype Inc., 2006.
[16]Tisal, Joachim. The GSM Network. GPRS Evolution: One Step Towards UMTS. John Wiley
& Sons, Ltd., 2001.
[17]Wilder, Floyd. A Guide To The TCP/IP Protocol Suite. Artech House Inc., 1998.
62
Apndice A
En este apartado se localiza todo el cdigo fuente en lenguaje de programacin C que se utiliz
para programar al microcontrolador:
/*
* main.c
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define
#define
#define
#define
char
char
char
char
char
char
char
char
100
0
1
7
63
Apndice A
rtc_init();
// inicializa el puerto paralelo
gpio_init();
// inicializa al puerto serie
serial_init();
EnableInterrupts;
for(;;) {
// Esperar hasta que el ST-1 pueda enviar paquetes UDP al servidor
wait_for_GPRS_connection();
// Habilita el ADC y selecciona el canal 0 de entrada
ADC_CHANNEL = AD0;
// Cuando el ADC quede deshabilitado el valor de
// temperatura estara listo para ser enviado
while(ADC_ENABLED)
;
// Convierte el valor obtenido del ADC a temperatura
volt2temp(adcResult, textBuffer);
// Envia temperatura
send(textBuffer);
send("\r");
// Parpadeo del indicador de datos enviados
led_blink(DATA_SENT_LED, 3);
}
}
/*
* funcion de voltaje a temperatura en grados centrigrado
* usando las especificaciones del sensor de temperatura LM-35.
*/
void volt2temp (int volt, char* t) {
double temp;
float x;
temp = (double) volt;
temp = temp * 0.0007342;
temp = temp * 100;
x = (float) temp;
ftoa(x, 3, t);
}
/*
* funcion que recibe los mensajes del ST-1 hasta que
*
el mensaje recibido indique que el MCU puede comenzar
* a enviar el valor de la temperatura convertido a ASCII
*/
void wait_for_GPRS_connection (void) {
64
Apndice A
int i = 0;
for(;;) {
receive(textBuffer);
if (textBuffer[1] == '<') {
do {
i++;
textBuffer[i - 1] = textBuffer[i];
} while(textBuffer[i] != '\0');
i = 0;
}
if (strcmp(textBuffer, gprsReady) == 0) {
led_off(UNKNOWN_STR_LED);
led_off(GPRS_OK_LED);
delay(100);
led_on(GPRS_OK_LED);
break;
}
else
if (strcmp(textBuffer, gprsReady2) == 0) {
led_off(UNKNOWN_STR_LED);
led_off(GPRS_OK_LED);
delay(100);
led_on(GPRS_OK_LED);
break;
}
else {
led_off(GPRS_OK_LED);
led_off(UNKNOWN_STR_LED);
delay(100);
led_on(UNKNOWN_STR_LED);
}
}
}
/*
* Prende y apaga el LED indicado en el DEMOQE128 un numero
*
num de veces con un retardo entre cada evento de
*
aproximadamente 50 ms
*/
void led_blink(unsigned char led, unsigned char num) {
unsigned char i;
for(i = 0; i <= num; i++) {
led_off(led);
delay(50);
led_on(led);
delay(50);
}
led_off(led);
}
65
Apndice A
/*
* cpu.h
*/
#ifndef CPU_H
#define CPU_H
/* Includes */
#include "derivative.h"
/* Modos del DCO */
#define HIGH_RANGE 2
#define MID_RANGE
1
#define LOW_RANGE
0
/* Mascaras para seleccionar busclock a perifericos */
#define ADC_BUSCLK SCGC1_ADC_MASK
// Mascara de bits para
// clock al ADC
#define SCI1_BUSCLK SCGC1_SCI1_MASK
// Mascara de bits para
// clock al SCI1
#define TIMER_BUSCLK SCGC2_TPM1_MASK
// Mascara de bits para
// clock al Timer 1
#define RTC_BUSCLK SCGC2_RTC_MASK
// Mascara de bits para
// clock al RTC
/* Redefiniciones */
#define INTERNAL_REFERENCE_SELECTED
#define DCO_RANGE
#define ENABLE_WAIT_MODE
#define ENABLE_STOP_MODE
ICSSC_IREFST
ICSSC_DRST_DRS
SOPT1_WAITE
SOPT1_STOPE
/* Macros */
#define DISABLE_WATCHDOG
#define ENABLE_RESET_PIN
SOPT1_COPE = 0
SOPT1_RSTPE = 1
/* Prototipos de funciones */
void CPU_init(void);
void InternalClockSource_init(void);
void activateBusClock(int peripherals1, int peripherals2);
#endif
66
activar bus
activar bus
activar bus
activar bus
Apndice A
/*
*
*/
#include "cpu.h"
/*
*
CPU_init - Subrutina que deshabilita el watchdog, la frecuencia del bus de
datos se
*
cambia a 12Mhz y se habilita el bus clock para los perifericos
seleccionados.
*/
void CPU_init(void) {
DISABLE_WATCHDOG;
ENABLE_RESET_PIN;
ENABLE_WAIT_MODE = 0;
asm(nop);
ENABLE_STOP_MODE = 1;
InternalClockSource_init();
peripheral_clk_sel(ADC_BUSCLK|SCI1_BUSCLK,RTC_BUSCLK);
}
/*
*
InternalClockSource_init - Inicializacion de la fuente de reloj interna para el
*
reloj del sistema.
*/
void InternalClockSource_init(void) {
ICSC1 = 0x06;
// La fuente de reloj del sistema es la salida del FLL
// Referencia de reloj interna seleccionada como fuente para el FLL
ICSC2 = 0x00;
// Dividir el reloj seleccionado por 1
while(!INTERNAL_REFERENCE_SELECTED)
;
ICSSC = (byte)0x80;
// Rango alto de frecuencia seleccionado para la salida del FLL
// DCO tiene un rango del 25% (48 - 60 MHz)
while(DCO_RANGE != HIGH_RANGE)
;
}
/*
*
activateBusClock - Subrutina que habilita el bus clock para los perifericos
*
seleccionados.
*/
void activateBusClock(int peripherals1, int peripherals2) {
/* Deshabilitando bus clock para todos los perifericos*/
SCGC1 = 0;
SCGC2 = 0;
/* Habilitando bus clock para los perifericos seleccionados */
SCGC1 |= peripherals1;
SCGC2 |= peripherals2;
}
67
Apndice A
/* gpio.h */
#ifndef GPIO_H
#define GPIO_H
#include "derivative.h"
#include "bithandler.h"
#define ALL_LEDS
13
void gpio_init(void);
void led_on(unsigned char x);
void led_off(unsigned char x);
#endif
/* gpio.c */
#include "gpio.h"
void gpio_init(void) {
PTCDD = 0x3F;
PTEDD = 0xC0;
PTCD = 0x3F;
PTED = 0xC0;
}
void led_on(unsigned char x) {
unsigned char temp;
if(x == ALL_LEDS) {
PTCD = 0x00;
PTED = 0x00;
} else {
temp = (unsigned char) ~(0x01 << x);
PTED = (unsigned char) (temp & PTED);
PTCD = (unsigned char) (temp & PTCD);
}
}
void led_off(unsigned char x)
unsigned char temp;
if(x == ALL_LEDS) {
PTCD = 0x3F;
PTED = 0xC0;
} else {
temp = (unsigned
PTED = (unsigned
PTCD = (unsigned
}
}
68
Apndice A
/*
*
*/
rtc.h
#ifndef RTC_H
#define RTC_H
#include "derivative.h"
#include "serial.h"
#include "adc.h"
#define
#define
#define
#define
REAL_TIME_INTERRUP_FLAG
REAL_TIME_CLOCK_SOURCE
RTC_INTERRUPT_ENABLE
REAL_TIME_PRESCALER_SELECTOR
RTCSC_RTIF
RTCSC_RTCLKS
RTCSC_RTIE
RTCSC_RTCPS
#define
#define
#define
#define
LOW_POWER_OSC
EXTERNAL_CLOCK
INTERNAL_CLOCK_1
INTERNAL_CLOCK_2
0
1
2
3
void rtc_init(void);
#endif
/*
*
*/
rtc.c
#include "rtc.h"
void rtc_init(void) {
REAL_TIME_CLOCK_SOURCE = LOW_POWER_OSC;
}
void interrupt VectorNumber_Vrtc rtc_isr(void) {
REAL_TIME_INTERRUP_FLAG = 1;
// Borra la bandera de interrupcion
}
69
Apndice A
/*
*
*/
serial.h
#ifndef SERIAL_H
#define SERIAL_H
#include "derivative.h"
#include "bithandler.h"
#define
#define
#define
#define
#define
#define
DATA_REGISTER_READY
TRANSMISSION_COMPLETE
FULL_DATA_REGISTER_FLAG
DATA_REGISTER
BAUDRATE_REGISTER_HIGH
BAUDRATE_REGISTER_LOW
SCI1S1_TDRE
SCI1S1_TC
SCI1S1_RDRF
SCI1D
SCI1BDH
SCI1BDL
SCI1BDH_RXEDGIE
SCI1BDH_LBKDIE
SCI1C1_PT_MASK
SCI1C1_PE_MASK
SCI1C1_ILT_MASK
SCI1C1_WAKE_MASK
SCI1C1_M_MASK
SCI1C1_RSRC_MASK
SCI1C1_SCISWAI_MASK
SCI1C1_LOOPS_MASK
SCI1C2_SBK_MASK
SCI1C2_RWU_MASK
SCI1C2_RE_MASK
SCI1C2_TE_MASK
SCI1C2_ILIE_MASK
SCI1C2_RIE_MASK
SCI1C2_TCIE_MASK
SCI1C2_TIE_MASK
SCI1C3_PEIE_MASK
SCI1C3_FEIE_MASK
SCI1C3_NEIE_MASK
SCI1C3_ORIE_MASK
SCI1C3_TXINV_MASK
SCI1C3_TXDIR_MASK
SCI1C3_T8_MASK
SCI1C3_R8_MASK
void serial_init(void);
void send (unsigned char *buffer);
int receive(unsigned char *buffer);
#endif
70
Apndice A
/*
*
*/
serial.c
#include "serial.h"
char serialBuffIn[80];
/*
*
serial_init - Rutina de configuracion del modulo SCI para intercambio de datos de
8
*
bits con un bit de inicio, uno de paro y
*
y no se utilizan bits de paridad. Se habilita la interrupcion generada por el
*
receptor, las demas interrupciones
*
son deshabilitadas. El baud rate se configura a 57600 bauds.
*
Registros usados:
*
Registro de control 1 (SCI1C1) *
- Conecta internamente la salida del transmisor a la entrada del
receptor.
*
- El reloj del puerto serie se congela cuando el CPU entra en "Wait
Mode".
*
- Modo 8-bit o 9-bit.
*
- Habilita Paridad y tipo de paridad.
*
Registro de control 2 (SCI1C2) *
- Habilita o deshabilita interrupciones causadas por: transmisor listo,
*
transmision terminada, datos recibidos, idle line.
*
- Habilita o deshabilita el receptor y transmisor.
*
Registro de control 3 (SCI1C3) *
- Habilita o deshabilita interrupciones causadas por errores en
recepcion
*
Registros de Baud Rate (SCI1BDH, SCI1BDL) - Contienen los bits [SBR12:SBR0] que
*
determinan el prescaler que genera el baud rate que utilizara el puerto
serie
*
para comunicarse.
*
*
BUSCLK
23.90MHz
*
Baud rate = -------------------- = ------------ = 57600bps
*
[SBR12:SBR0] X 16
27 X 16
*
* NOTA: El valor de SCI1BDH no cambia hasta que se escribe a SCI1BDL.
*/
void serial_init (void) {
BITWRITE(SCI1C1, DATA_MODE, 0); // 8-bit mode selected , no parity
REGSET(SCI1C2,RECEIVER_ENABLE|TRANSMITTER_ENABLE|RECEIVER_IRQ_ENABLE);
REGCLR(SCI1C3, FULL_REG);
// Disable all errors interrupts
REGWRITE(BAUDRATE_REGISTER_HIGH, 0);
REGWRITE(BAUDRATE_REGISTER_LOW, 0x1B); // Baud Rate = 57600
}
/* send - Envio mensaje en el buffer a traves del puerto serie */
void send(unsigned char *buffer) {
while(*buffer != '\0') {
while(!DATA_REGISTER_READY)
;
DATA_REGISTER = *buffer;
while(!TRANSMISSION_COMPLETE)
71
Apndice A
;
buffer++;
}
}
/* receive - Recibe mensajes del puerto serie y los almacena en el buffer */
int receive(unsigned char *buffer) {
do {
while(!DATA_AVAILABLE)
;
*buffer = DATA_REGISTER;
} while((*buffer++ != '\n'));
*buffer = '\0';
}
/*
*
registro_RX - Subrutina que da servicio a la interrupcion generada por el
*
receptor del puerto serie cada vez que el registro de datos reciba un dato nuevo.
*/
void interrupt VectorNumber_Vsci1rx registro_RX(void) {
unsigned char c;
DATA_AVAILABLE = 0;
c = DATA_REGISTER;
while(!DATA_REGISTER_READY)
;
DATA_REGISTER = c;
led_on(4);
}
72
Apndice A
/*
* adc.h
*/
#ifndef ADC_H
#define ADC_H
#include "derivative.h"
#include "serial.h"
#include "bithandler.h"
#define
#define
#define
#define
#define
#define
ADC_DISABLED
ADC_CHANNEL
ADC_ENABLED
ADC_CLK_DIVIDE
ADC_RESOLUTION
ADC_INPUT_CLK
31
ADCSC1_ADCH
ADC_CHANNEL != ADC_DISABLED
ADCCFG_ADIV
ADCCFG_MODE
ADCCFG_ADICLK
#define CONTINUOS_CONVERSION_ENABLE
#define ADC_IRQ_ENABLE
#define CONVERSION_COMPLETE_FLAG
ADCSC1_ADCO_MASK
ADCSC1_AIEN_MASK
ADCSC1_COCO_MASK
#define
#define
#define
#define
ADCSC2_ACFGT_MASK
ADCSC2_ACFE_MASK
ADCSC2_ADTRG_MASK
ADCSC2_ADACT_MASK
COMPARE_GEATER_THAN_ENABLE
COMPARE_FUNCTION_ENABLE
CONVERSION_TRIGGER_SELECT
CONVERSION_ACTIVE_FLAG
#define CONVERTED_DATA
ADCR;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
BUS_CLK
BUS_CLK_DIV_2
ALTERNATE_CLK
ASYNCHRONOUS_CLK
RES_8BIT
RES_12BIT
RES_10BIT
INPUT_CLK_DIV_1
INPUT_CLK_DIV_2
INPUT_CLK_DIV_4
INPUT_CLK_DIV_8
SAMPLE_TIME_CONFIG
LOW_POWER_CONFIG
0
1
2
3
0
1
2
0
1
2
3
ADCCFG_ADLSMP_MASK
ADCCFG_ADLPC_MASK
#define
#define
#define
#define
#define
#define
#define
#define
PIN_0
PIN_1
PIN_2
PIN_3
PIN_4
PIN_5
PIN_6
PIN_7
APCTL1_ADPC0_MASK
APCTL1_ADPC1_MASK
APCTL1_ADPC2_MASK
APCTL1_ADPC3_MASK
APCTL1_ADPC4_MASK
APCTL1_ADPC5_MASK
APCTL1_ADPC6_MASK
APCTL1_ADPC7_MASK
/*
* Se pueden utilizar las siguientes definiciones
*
para seleccionar el canal del ADC
*/
73
Apndice A
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD8
AD9
AD10
AD11
AD12
AD13
AD14
AD15
AD16
AD17
AD18
AD19
AD20
AD21
AD22
AD23
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define MAX_CONV
10
74
Apndice A
BITSET(APCTL1,chan);
else
if (chan < 16)
BITSET(APCTL2,chan - 8);
else
if (chan >= 16)
BITSET(APCTL3,chan - 16);
}
adcResult = 0;
conversionCounter = 0;
}
/* adc_isr - Interrupt Service Request del ADC */
void interrupt VectorNumber_Vadc adc_isr(void) {
adcResult += (int) CONVERTED_DATA;
conversionCounter++;
if (conversionCounter == MAX_CONV) {
adcResult = adcResult / MAX_CONV;
conversionCounter = 0;
ADC_CHANNEL = ADC_DISABLED;
}
}
75
Apndice A
/* timer.h */
#ifndef TIMER_H
#define TIMER_H
#include "derivative.h"
#include "bithandler.h"
#define COUNTER_OVERFLOW
(TPM1SC_TOF == 1)
#define TIMER_CLK_SOURCE
#define TIMER_PRESCALER
#define TIMER_IRQ_ENABLED
TPM1SC_CLKSx
TPM1SC_PS
TPM1SC_TOIE
#define COUNTER_MODULO
#define CURRENT_COUNT
TPM1MOD
TPM1CNT
#define TIMER_OVERFLOW_FLAG
1
2
3
#define
#define
#define
#define
#define
#define
#define
#define
0
1
2
3
4
5
6
7
DIVIDE_BY_1
DIVIDE_BY_2
DIVIDE_BY_4
DIVIDE_BY_8
DIVIDE_BY_16
DIVIDE_BY_32
DIVIDE_BY_64
DIVIDE_BY_128
void timer_init(void);
void delay(unsigned int t);
#endif
76
Apndice A
77
Apndice A
BITHANDLER_H
FULL_REG
BITSET(REGISTER, BIT)
BITCLR(REGISTER, BIT)
BITTOGGLE(REGISTER, BIT)
BITWRITE(REGISTER, MASK, F)
0xFF
((REGISTER) |= (unsigned char)(1 << (BIT)))
((REGISTER) &= (unsigned char)(~(1 << (BIT))))
((REGISTER) ^= (unsigned char)(1 << (BIT)))
((REGISTER) = (unsigned char)((F)?((REGISTER)|
(MASK)) : ((REGISTER) & ~(MASK))))
((REGISTER) |= (unsigned char)(MASK))
((REGISTER) &= (unsigned char)(~(MASK)))
((REGISTER) = (unsigned char)(MASK))
#endif
78
Apndice B
A continuacin se muestra el cdigo escrito en Java utilizado para la programacin del Applet
seguido del cdigo en HTML para mostrar el Applet en http://movil.citedi.mx/~minguez/.
import
import
import
import
import
import
import
import
import
import
import
import
java.awt.BorderLayout;
javax.swing.JPanel;
javax.swing.JApplet;
org.jfree.chart.ChartFactory;
org.jfree.chart.ChartFrame;
org.jfree.chart.ChartPanel;
org.jfree.chart.JFreeChart;
org.jfree.data.time.Day;
org.jfree.data.time.Hour;
org.jfree.data.time.Minute;
org.jfree.data.time.TimeSeries;
org.jfree.data.time.TimeSeriesCollection;
79
Apndice B
private ChartPanel getTSChartPane() {
Day hoy = new Day();
Hour hora = new Hour();
TimeSeries series = new TimeSeries("Temperatura", Minute.class);
series.add(new Minute(0, hora), 1.0);
series.add(new Minute(5, hora), 2.3);
series.add(new Minute(10, hora), 1.8);
series.add(new Minute(15, hora), 9.8);
series.add(new Minute(20, hora), 10.3);
series.add(new Minute(25, hora), 5.3);
series.add(new Minute(30, hora), 9.5);
series.add(new Minute(35, hora), 8);
series.add(new Minute(40, hora), 4.5);
series.add(new Minute(45, hora), 4.9);
series.add(new Minute(50, hora), 10.5);
series.add(new Minute(55, hora), 7.7);
// Add the series to your data
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(series);
// Generate the graph
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Grafica de Temperatura " + hoy.getDayOfMonth() + "/"
+ hoy.getMonth() + "/" + hoy.getYear(),
"Tiempo (hrs)",
"Temperatura (^C)",
dataset,
true,
true,
false
);
ChartFrame frame = new ChartFrame("Temperatura", chart);
frame.pack();
//frame.setVisible(true);
ChartPanel chartPane = new ChartPanel(chart);
return chartPane;
}
}
80
Apndice B
<html>
<head>
<meta name="Author" content="Daniel Minguez">
<meta name="Description" content="Grafica de Temperatura">
<meta name="Keywords" content="telemetry, GSM, GPRS, Telemetria">
<title>Grafica de Temperatura</title>
<style type="text/css">
body {
background: #ffe url("background.png");
margin: 40px 0px;
padding: 0;
}
h1 {
font-family: Verdana, Helvetica, Arial, sans-serif;
color: #ffe;
border-bottom: 2px solid #ffe;
border-top: 2px solid #ffe;
margin: 10px 0px;
padding: 0;
text-align: center;
}
div {
font-family: Tahoma, Arial, sans-serif;
top: 2px;
bottom: 2px;
color: #ffe;
margin: 10px 0px;
}
#info {
font-size: 0.7em;
background-color: #96dc00;
color: #ffe;
text-align: center;
}
#main{
background-color: #ff7f2a;
border: 4px solid #96dc00;
margin: 0 auto;
padding:20px;
text-aling: left;
width: 800px;
text-align: justify;
}
</style>
</head>
<body>
<div id="main">
<h1><span style="font-weight: bold;">Sistema
de Telemetría</span></h1>
<div>El Applet que se muestra a
continuación fue desarrollado para mostrar el
funcionamiento del Sistema de Telemetría presentado en el
trabajo de Tesina dentro de la Especialidad de Sistemas Inmersos
en el Centro de Investigación y Desarrollo de
Tecnología Digital del Instituto Politécnico
81
Apndice B
Nacional.<br>
<br>
Las gráfica contenida en el Applet, es una
representación
del muestreo de una señal producida por un sensor de
temperatura LM-35, la escala mostrada es grados Celsiuis y la
diferencia de tiempo entre una y otra muestra es de 5
minutos.<br>
</div>
<hr>
<center><!--"CONVERTED_APPLET"--><!-- HTML CONVERTER -->
<script language="JavaScript" type="text/javascript"><!-var _info = navigator.userAgent; var _ns = false; var _ns6 = false;
var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0 &&
_info.indexOf("Windows 3.1") < 0);
//--></script><comment>
<script language="JavaScript1.1" type="text/javascript"><!-var _ns = (navigator.appName.indexOf("Netscape") >= 0 &&
((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0 &&
java.lang.System.getProperty("os.version").indexOf("3.5") < 0) ||
(_info.indexOf("Sun") > 0) || (_info.indexOf("Linux") > 0)));
var _ns6 = ((_ns == true) && (_info.indexOf("Mozilla/5") >= 0));
//--></script></comment>
<script language="JavaScript" type="text/javascript"><!-if (_ie == true) document.writeln('<OBJECT
classid="clsid:E19F9331-3110-11d4-991C-005004D3B3DB" WIDTH = 700 HEIGHT = 500
codebase="http://java.sun.com/products/plugin/1.3.0_02/jinstall-130_02win32.cab#Version=1,3,0,2"><NOEMBED><XMP>');
else if (_ns == true && _ns6 == false) document.writeln('<EMBED
type="application/x-java-applet;jpi-version=1.3.0_02" CODE =
graficaDatosTS.class ARCHIVE = "jcommon-1.0.15.jar,jfreechart-1.0.12.jar"
WIDTH = 700 HEIGHT = 500 scriptable=false
pluginspage="http://java.sun.com/
products/plugin/1.3.0_02/plugin-install.html"><NOEMBED><XMP>');
//--></script><applet
code="graficaDatosTS.class"
archive="jcommon-1.0.15.jar,jfreechart-1.0.12.jar" height="500"
width="700"><param name="CODE" value="graficaDatosTS.class"><param
name="ARCHIVE" value="jcommon-1.0.15.jar,jfreechart-1.0.12.jar"><param
name="type" value="application/x-java-applet;jpi-version=1.3.0_02"><param
name="scriptable" value="false"></applet><!-<APPLET CODE = graficaDatosTS.class ARCHIVE =
"jcommon-1.0.15.jar,jfreechart-1.0.12.jar" WIDTH = 200 HEIGHT = 200>
</APPLET>
--><!--"END_CONVERTED_APPLET"--></center>
<hr>
<div id="info">
Creado por: <br>
Daniel Isaías Mínguez Vital<br>
Tijuana, B.C. - Abril 2009<br>
</div>
</div>
</body>
</html>
82
Apndice C
El diagrama esquemtico del sistema se muestra a continuacin:
83
Apndice D
Hoja de datos del LM35.
84
Apndice D
85