Você está na página 1de 97

INSTITUTO POLITCNICO NACIONAL

CENTRO DE INVESTIGACIN Y DESARROLLO


DE TECNOLOGA DIGITAL

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 :

DANIEL ISAAS MNGUEZ VITAL

BAJO LA DIRECCIN DE:


DR. ROBERTO HERRERA CHARLES

FEBRERO 2009

TIJUANA, B.C., MXICO

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.

Monitoreo de Parmetros a travs de un Sistema de Telemetra


Resumen
En este trabajo se presenta un sistema de monitoreo que realiza la lectura de parmetros de
temperatura y enviarlos a un servidor para visualizarlos a travs de un Applet generado en Java.
El sistema presentado hace uso de varias tecnologas de transmisin de datos que en los ltimos
aos a han evolucionado de manera importante. El sistema comienza con el uso de un sistema
embebido o microcontrolador para el muestreo de datos tomados de la salida de un sensor de
temperatura, el microcontrolador tambin se encarga de la comunicacin serial bajo el estndar
RS-232, con un dispositivo transceptor (Starlert ST-1) el cual usa el protocolo de paquetes UDP
para realizar el envo de datos a travs de la red de Internet por medio de la red celular GSM
utilizando el servicio de paquetes GPRS. La informacin es almacenada en un servidor Web
Apache que genera un archivo de datos el cual sirve para introducirlos a un Applet programado
en Java y utilizando sus elementos visuales poder observar el comportamiento de los parmetros
introducidos al microcontrolador.
Una caracterstica sobresaliente de este trabajo es el uso de dispositivos de alto rendimiento que
conjuga tecnologas de comunicaciones, procesamiento e Internet utilizando las herramientas
adquiridas en el curso de especialidad para desarrollar un sistema que puede ser llevado a
muchas aplicaciones para la mejora de procesos industriales, sistemas de cultivo, dispositivos de
seguridad, servicios de salud, entre otros, que cabe mencionar que al contar con un control
supervisorio, se puede automatizar procesos, accesar a la informacin de manera remota y
reducir la carga de trabajo de los recursos humanos lo cual puede resultar en un mejor
rendimiento de los mismos.

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

3. Descripcin del sistema....................................................................17


3.1. Caractersticas de los dispositivos................................................................................18
3.1.1. Sensor de Temperatura LM-35...............................................................................19
3.1.2. Starlert ST-1...........................................................................................................19
3.1.3. Microcontrolador Freescale MCF51QE128..........................................................20

4. Configuracin y Programacin del microcontrolador ColdFire.....23


4.1. Arquitectura V1 ColdFire.............................................................................................23
4.1.1. Modos de Direccionamiento..................................................................................26
4.1.2. Procesamiento de Excepciones..............................................................................26
4.2. Programacin del microcontrolador.............................................................................26
4.2.1. Convertidor Analgico Digital...............................................................................26
4.3. Contador de Tiempo Real.............................................................................................32
4.3.1. Puerto Serie............................................................................................................34
4.4. Estructura del Proyecto en Code Warrior.....................................................................43

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

Acrnimos en ingls utilizados en la Tesina


3GSM

Third-generation Services for GSM (Servicios de Tercera generacin para GSM)

ADC

Analog-to-Digital Converter (Convertidor Analgico Digital)

A-GPS

Assited GPS (GPS Asistido)

APN

Access Point Name (Nombre del Punto de Acceso)

ARP

Address Resolution Protocol (Protocolo de Resolucin de Direcciones)

ASCII

American Standard Code for Information Interchange (Cdigo Estadounidense


Estandarizado para el Intercambio de Informacin)

AuC

Authentication Center (Centro de Autenticacin)

AVL

Automatic Vehicle Location (Localizacin Automtica Vehicular)

BSC

Base Station Controller (Controlador de Estaciones Base)

BSS

Base Station Subsystem (Sub-sistema de Estaciones Base)

BTS

Base Trasceiver Station (Estacion Base)

CEPT

Confrence Europenne des Postes et Tlcommunications (Organizacin de


estandarizacin Europea)

CDMA

Code Division Multiple Access (Acceso Mltiple por Divisin de Cdigo)

CDPD

Cellular Digital Packet Data (Paquetes de Datos Celular Digital)

DCS 1800

Digital Cellular System 1800 (Sistema Celular Digital 1800)

DCO

Digitally Controlled Oscilators (Osciladores Digitalmente Controlados)

DNS

Domain Name System (Sistema de Nombre de Dominio)

DMIPS

Dhrystone Million Instruction per Second (Millones de Instrucciones por


Segundos Dhrystone)

EDGE

Enhanced Data for a Global Enviroment (Datos Mejorados para un Ambiente


Global)

FIFO

First In, First Out (Primero en entrar, primero en salir)

FLL

Frequency-locked Loop (Lazo Enganchado por Frecuencia)

FTP

File Transfer Protocol (Protocolo de Transferencia de Archivos)

GGSN

Gateway GPRS Support Node (Puerta de Enlace del Nodo de Soporte GPRS)

GPRS

General Packet Radio Service (Servicio General de Paquetes por Radio)

GPS

Global Positioning System (Sistema de Posicionamiento Global)

GSM

Global System for Mobile Communications (Sistema Global de Comuniaciones


Mviles)

GSMA

GSM Association (Asociacin GSM)

HLR

Home Location Register (Registro de Localizacin de usuarios Locales)

HSCSD

High Speed Circuit Switched Data (Datos Conmutados por Circuitos de Alta
Velocidad)

HSPA

High Speed Packet Access (Acceso a Paquetes de Alta Velocidad)

HTTP

Hypertext Transfer Protocol (Protocolo de Transferencia de Hiper-texto)

I2C

Inter-Integrated Circuit (Circuitos Inter-integrados)

ICMP

Internet Control Message Protocol (Protocolo de Mensajes de Control de Internet)

ICS

Internal Clock Source (Fuente de Reloj Interna)

IDE

Integrated Development Enviroment (Ambiente Integrado de Desarrollo)

IGMP

Internet Group Management Control (Control de Manejo del Grupo de Internet )

IP

Internet Protocol (Protocolo de Internet)

ISDN

Integrated Services Digital Network (Red Digital de Servicios Digitales)

LAN

Local Area Network (Red de rea Local)

LIN

Local Interconnect Network (Red de Interconexin Local)

M2M

Machine-to-Machine (Mquina a Mquina)

MoU

Memorndum of Understandig (Recordatorio de Entendimiento)

MS

Mobile Station (Estacin Mvil)

MSC

Mobile services Switching Center (Centro de Conmutacin y servicios Mviles)

NRZ

Non-return to Zero (Sin Retorno a Cero)

PAN

Personal Area Network (Red de rea Personal)

PCS 1900

Personal Communication System 1900 (Sistema de Comunicacin Personal 1900)

PLMN

Public Land Mobile Network (Red Mvil Pblica Terrestre)

PPP

Point-to-Point Protocol (Protocolo Punto a Punto)

PSTN

Public Switched Telephone Network (Red de Telefona Pblica Conmutada)

RARP

Reverse Address Resolution Protocol (Protocolo Inverso de Resolucin de


Direcciones)

RF

Radio Frequency (Radio frecuencia)

RTC

Real-Time Counter (Contador en tiempo real)

SCI

Serial Communications Interface (Interfaz Serial de Comunicaciones)

SGSN

Serving GPRS Support Node (Servidor del Nodo de Soporte GPRS)

SIM

Subscriber Identity Module (Mdulo de Identidad de Usuario)

SMS

Short Message Service (Servicio de Mensajes Cortos)

SMTP

Simple Mail Transfer Protocol (Protocolo de Transferencia de Correos Simple)

SPI

Serial Peripheral Interface (Interfaz Serial de Perifricos)

SQL

Structured Query Language (Lenguaje de Consulta Estructurado)

SSH

Secure Shell (Intrprete de comandos Seguro)

TCP

Transfer Control Protocol (Protocolo de Control de Transferencia)

TDMA

Time Division Multiple Access (Acceso Mltiple por Divisin de Tiempo)

TELNET

Telecommunication Network (Red de Telecomunicaciones)

TFTP

Trivial File Transfer Protocol (Protocolo de Transferencias de Archivos Triviales)

TRAU

Transcoder Rate and Adaptation Unit (Unidad de Adaptacin y Rango de Transcodificacin)

UDP

User Datagram Package (Paquete de Datagrama de Usuario)

UMTS

Universal Mobile Telephone System (Sistema de Telefona Mvil Universal)

USB

Universal Serial Bus (Bus Universal en Serie)

VLR

Visitor Location Register (Registro de Localizacin de usuarios Visitantes)

WAN

Wide Area Network (Red de rea mplia)

W-CDMA

Wideband Code Division Multiple Access (Mltiple Acceso por Divisin de


Cdigo de Banda Ancha)

WPAN

Wireless Personal Area Network (Red de rea Personal Inalmbrica)

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.

Figura 1.1: Proceso de Telemetra

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.

1.1. Aplicaciones de los Sistemas de Telemetra


Los sistemas de telemetra han logrado un aporte importante dentro de nuestra sociedad, y la
funcionalidad que ofrecen ha hecho que sea ms fcil y rpido introducirlos a diversas reas de
estudio y es por ello que cada vez es mas comn encontrarlos a nuestro alrededor al grado que la
mayor parte del tiempo pasan desapercibidos siendo que en realidad convivimos con muchos de
ellos durante la vida cotidiana. Algunas reas de en las que se han introducido estos sistemas son
la medicina (telemedicina), agricultura y la automotriz.
Como ejemplo, la empresa AgriNET ofrece soluciones para el monitoreo y control de recursos
utilizados en la agricultura. Existen muchas ventajas que un sistema de telemetra puede aportar
a este campo. Una red de sensores de humedad o una base meteorolgica ofrecen mejoras en la
obtencin de cultivos al tener un monitoreo completo de los mismos. El uso apropiado de
recursos para producir nuevas reas de explotacin agrcola tambin representa una mejora
significativa, por ejemplo, si se tiene controlada la cantidad de fertilizante disponible y adems

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.

Figura 1.2: Sistema de RF de AgriNET [1]

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

Figura 1.4: Estetoscopio


Electrnico Digital de AMD
Telemedicine [2]

As como los mencionados aqu, existen otros ejemplos ms en la actualidad (tratamiento y


distribucin de gas, distribucin de agua potable, control de incendios forestales, solo por
mencionar algunos) que poco a poco estn ayudando a mejorar diversos procesos, acortando
distancias significativamente, reduciendo costos, mejorando tiempos y otros factores ms que
estn involucrados en este intercambio de informacin a larga distancia. Y una de las cosas ms
importantes que cabe resaltar es el hecho de que somos capaces de implementar usos nuevos a
tecnologas existentes y, por lo tanto, mejorarla.

1.2. Objetivos del proyecto.


1.2.1. Objetivo General.
Desarrollar un sistema de adquisicin de datos que puedan ser enviados a travs de un mdem
GSM/GPS usando el servicio de datos GPRS hacia un servidor y monitorearlos desde una
computadora con acceso a Internet.

1.2.2. Objetivos especficos.


1. Comprender el funcionamiento del sistema actual de telemetra [14].
6

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.

1.2.3. Organizacin de la Tesina.


Esta Tesina esta dividida principalmente en 6 captulos. El presente captulo fue una introduccin
acerca de los sistemas de telemetra, desde su definicin hasta algunos ejemplos existentes en la
actualidad, adems se presentan los objetivos de la Tesina. El captulo 2 explica brevemente la
red de telefona inalmbrica GSM, as como algunos de sus componentes entre los que destaca el
GPRS del cual tambin se hace mencin finalizando con una descripcin del protocolo UDP. En
el captulo 3 detalla las caractersticas de los componentes que conforman al sistema presentado
en este trabajo, as como su participacin dentro del mismo. El captulo 4 se centra en el
microcontrolador MCF51QE128 comenzando por la arquitectura V1 ColdFire y explicando los
perifricos usados, sus caractersticas, registros internos y la programacin de los mismos. Los
resultados obtenidos y el desarrollo de las pruebas se detallan en el captulo 5. Por ltimo, las
conclusiones y trabajo futuro propuesto para este proyecto se mencionan en el captulo 6.

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.

2.1. Sistema Global de Comunicaciones Mviles (GSM)


GSM es un estndar a nivel internacional en las comunicaciones digitales a travs de la telefona
celular; por medio de los servicios que provee, es capaz de realizar la transmisin de voz y datos
entre dispositivos mviles a velocidades de hasta 9.6 kbit/s. Al ser reconocida como estndar en
la mayor parte del mundo, ofrece acceso a todos sus servicios fuera del territorio donde un
usuario radica como si estuviera en casa. De acuerdo al GSM Brochure expedido por la GSM
Asssociation, para Septiembre del 2007 ya haban ms de 2,500 millones de suscriptores GSM,
cifra que representa el 85% del mercado mvil a nivel mundial. Hoy en da, la familia de
tecnologas GSM est formada por GSM, Servicio de Paquetes por Radio (GPRS), Tasas de
Datos Mejoradas para la Evolucin GSM (EDGE), y servicios de tercera generacin (3GSM)
tambin conocido como Mltiple Acceso por Divisin de Cdigo de Banda Ancha (W-CDMA) y
su evolucin mvil de banda ancha, HSPA (High Speed Packet Access) [13].

2.1.1. Historia de GSM


Aunque la idea de un sistema radio mvil de comunicaciones basado en clulas surgi en los
laboratorios Bell en los aos 70's, fue hasta 1982 cuando gracias al Confrence Europenne des
Postes et Tlcommunications (CEPT) se form el Groupe Spcial Mobile (nombre original de
GSM) para desarrollar un sistema mvil celular estandarizado que pudiera funcionar en el rango
de 900 MHz.
La causa principal de la necesidad de formar un estndar fue que cuando comenzaron a
desarrollarse diferentes sistemas de telefona celular para cada pas dentro de Europa, lo cual
resultaba problemtico, principalmente porque los equipos se diseaban con una especificacin
8

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.

2.1.2. Arquitectura GSM


La estructura de una red de telefona celular ofrece una caracterstica muy importante sobre
estructuras basadas en radio bases de alta potencia y largo alcance:

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:

Entre mayor es el nmero de clulas instaladas, mayor es el costo de la infraestructura y


lneas de acceso.

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].

Figura 2.1: Reuso de Frecuencias

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.

Figura 2.2: Arquitectura de una red GSM

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.

2.2. Servicio General de Paquetes por Radio (GPRS)


GPRS es un servicio de intercambio de datos en forma de paquetes por radio que aparece en la
especificacin de la Fase 2+ de los servicios de GSM. Los usuarios TDMA tambin cuentan con
el servicio GPRS. Su aparicin ocurre entre los aos de 1999 y 2000 usando la misma
infraestructura de la red GSM ya existente; las soluciones ofrecidas por este nuevo servicio

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

componentes adicionales necesarios para agregar el servicio GPRS a la red GSM.


El SGSN fundamentalmente se encarga de rastrear la posicin del usuario GPRS dentro de la
red, de esta manera el SGSN debe de ser capaz de almacenar informacin del usuario, el estado
del mvil, la identidad del equipo mvil, la informacin de la celda dentro de la que se encuentra
el usuario y el nmero del VLR que sirve a la estacin mvil.
La GGSN como su nombre lo indica, sirve de puerta de enlace entre la red GPRS y otras redes
de paquetes de datos, como el Internet por ejemplo. Para cada red existe un Nombre del Punto de
Acceso (APN) que sirve al usuario de la red GPRS para enlazarlo, y de esa manera, intercambiar
paquetes de datos con la red de destino.
El servicio GSM/GPRS no es el nico servicio que ofrece voz y datos en el mercado, existen
otros competidores proveedores de redes WAN, de los cuales se enuncian algunos a
continuacin:

Lneas Telefnicas usando mdems. El acceso es limitado a zonas donde existan


conectores de telfono, la tasa de transmisin de datos alcanzada es de 56 kbps y la
conexin se realiza por marcado, adems se cobra por la duracin de la conexin.

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.

Acceso Mltiple por Divisin de Cdigo (CDMA). A diferencia de GSM/GPRS, CDMA


no asigna un canal especfico al usuario, sino todo el espectro disponible, las velocidades
son muy parecidas a las ofrecidas por GPRS, pero su limitada cobertura hace que este
sistema no ofrezca el mismo roaming que su contraparte de origen europeo.

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.

2.3. Protocolo de Datagrama de Usuario (UDP)


La arquitectura del Internet est compuesta por tres grupos de servicios. El primero es la IP que
es un servicio de entrega, le sigue la capa de transporte que utiliza el servicio IP y por ltimo en
el nivel ms alto esta la capa de aplicacin. De esta manera, la capa fsica/enlace forma un
paquete de datos con el encabezado y el mensaje que se quiere enviar. La capa de transporte
pone, entonces, su mensaje en el campo de datos del IP. De la misma forma, la capa de
aplicacin utiliza la seccin de datos de la capa de transporte para colocar sus datos.

Figura 2.3: Internet y sus protocolos

En teora, al tener un diseo basado en capas, es posible realizar modificaciones o cambiar la


tecnologa en cada capa sin afectar otras; la realidad es que durante la implementacin del
Internet no se estableci independencia completa entre cada capa. En la Figura 2.3 se muestran
los protocolos utilizados en Internet as como sus respectivas capas.
En teora cualquier protocolo de la capa de aplicacin puede funcionar con el protocolo UDP y
TCP, ambos se encuentran en la capa de transporte y su distincin reside en la confiabilidad de

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.

Figura 2.4: Paquete de datos UDP

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

3. Descripcin del sistema


En el trabajo presentado por R. Herrera [13] se muestra el desarrollo de un sistema de rastreo y
control de unidades remotas mviles. En este sistema se hace uso de un mdem GSM/GPS
Starlert ST-1 para establecer comunicacin con la red celular GSM y por medio del sistema
GPRS envi paquetes UDP a un servidor que contiene programas de comunicacin, seguimiento
y almacenamiento. Este mismo sistema es retomado en el trabajo de tesis de S. Casillas [14] en
el cual se aade una tarjeta de adquisicin de datos NI USB-6009 de National Instruments
conectada a una computadora personal con el software LabView que a su vez se comunica con el
Starlert ST-1 mediante el estndar RS-232, con el objeto de medir seales de un dispositivo
electrocardiograma y que stas puedan ser transmitidas al servidor antes mencionado como se
muestra en la Figura 3.1.

Figura 3.1: Transmisin de datos al servidor

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

Descripcin del sistema


microcontrolador. Una vez procesados los datos, se envan a travs del Puerto Serial de
Comunicaciones (SCI) siguiendo el estndar RS-232 para interfazarse con el mdem Starlert
ST-1 (Figura 3.2). El proceso de envo de datos a travs del Internet hacia el servidor es el mismo
que se implement en el sistema descrito anteriormente.

Figura 3.2: DEMOQE128 y Starlert ST-1

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.

3.1. Caractersticas de los dispositivos


El sistema se divide en varias etapas las cuales son realizadas por diferentes sub-sistemas. La
adquisicin comienza con el sensor de temperatura LM-35 que se encuentra a la entrada del
convertidor analgico digital del microcontrolador MCF51QE128 el cual lleva a cabo cierto
procesamiento para ms adelante enviar los datos obtenidos a travs de la interfaz RS-232 hacia
el mdem GPS/GSM Starlert ST-1. Las caractersticas ms importantes se resaltan a
continuacin.

18

Descripcin del sistema

3.1.1. Sensor de Temperatura LM-35


El LM-35 es un sensor de temperatura de precisin cuya salida en voltaje es directamente
proporcional a una temperatura en grados centigrados. No es necesario calibracin externa para
proveer una precisin de C a temperatura dentro de una habitacin y C en un rango de
temperaturas de 55 a +150 C, el sensor LM-35 nos da a la salida un factor lineal de + 10.0
Vm/C y opera en el rango de 4 a 30 volts. Para ms detalles consulte el Apndice D.

3.1.2. Starlert ST-1


El mdulo Starlert ST-1 es un dispositivo GPS/GSM de rastreo desarrollado para aplicaciones
mquina a mquina (M2M) las cuales proveen soluciones de bajo costo para el rastreo y
monitoreo de bienes en zonas amplias. El ST-1 est basado en la plataforma Siemens MC55/56
y adems contiene un chipset GPS/A-GPS Marlin y dos antenas internas omnidireccionales que
sirven para conectarse a las redes GSM/GPRS y GPS. Las bandas GSM/GPRS en las que
funciona son 900/1800/1900 y 850/1800/1900. Admite los protocolos UDP y TCP/IP de
comunicacin a travs del Internet. Algunas caractersticas del dispositivo son las siguientes:

Conector de dos pines de alimentacin de 11 a 30 VDC.

Interfaz RS-232 de 6 pines.

Conector GPIO de 10 pines.

Interfaz SIM.

Compartimiento para batera.

El firmware del Starlert ST-1 esta dividido en tres bloques de software :

El bootloader y self-test tambin conocido como ArcFlash.

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

Descripcin del sistema

3.1.3. Microcontrolador Freescale MCF51QE128


El microcontrolador MCF51QE128 de Freescale es un microcontrolador de 32 bits de bajo costo
y bajo consumo de energa, utiliza el ncleo V1 ColdFire y puede alcanzar hasta 50 MHz en
ciclos de reloj de CPU. Es utilizado en aplicaciones donde el ahorro de energa y el alto
desempeo sean especificaciones requeridas. Algunas caractersticas del microcontrolador
(Figura 3.3) se mencionan a continuacin:

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.

Tpicamente le toma 6 s recuperarse de los modos stop.

Reset del watch dog.

Detector de voltajes bajos.

Detector de cdigo de operacin y direccin ilegal.

Convertidor A/D de 24 canales y 12 bits de resolucin.

Dos comparadores analgicos.

Dos puertos seriales con full-duplex NRZ.

Dos interfaces SPI con full-duplex.

Dos interfaces I2C que puede alcanzar una tasa de 100 kbps.

Un temporizador de 6 canales y dos de 3 canales con input capture, output compare en


cada canal.

Contador de tiempo real de 8 bits con prescalador (prescaler) decimal y binario.

70 E/S de propsito general, 16 interrupciones de teclado y 16 bits de E/S rpidos de


propsito general conectado al bus local del CPU de alta velocidad.

20

Descripcin del sistema

Figura 3.3: Microcontrolador Flexis 32-bit ColdFire

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:

Puerto serial RS232 con conector DB9.

Switch de encendido y apagado con LED indicador.

Botn de Reset y LED indicador con habilitador.

Circuitera para un oscilador externo.

Acelermetro de 3 ejes con habilitador.

8 LED para usuario.


21

Descripcin del sistema

4 botones de presin para usuario.

1 zumbador con habilitador.

Potencimetro de 10 K.

Dimensiones: 3.5 x 4.

Entrada de alimentacin:

Cable USB: 5VDC, 500 mA.

Conector de DC: conector de 2.5/5.5mm tipo barril, 5VDC a 12 VDC.

Dos bateras tipo AAA.

Figura 3.4: DEMOQE128 [12]

22

4. Configuracin y Programacin del


microcontrolador ColdFire
El microcontrolador MCF51QE128 es parte de la familia QE de microcontroladores de Freescale
que se caracterizan por su bajo costo, bajo consumo de potencia y alto desempeo; adems, junto
con las familias de microcontroladores JM y AC forman parte de la serie Flexis la cual ofrece
microcontroladores de 8 bits y 32 bits compatibles en pines, perifricos y herramientas. Esto
significa que las aplicaciones desarrolladas para el microcontrolador de 8 bits S08QE128 pueden
ser totalmente migradas al microcontrolador de 32 bits MCF51QE128 con el fin de agregar
mayor velocidad y desempeo.
El MCF51QE128 utiliza el ncleo mejorado V1 ColdFire que es una versin simplificada del V2
ColdFire cuya arquitectura est basada en la M68000 de Motorola. El reloj del CPU para este
microcontrolador puede alcanzar los 50.33MHz y sus perifricos operan hasta 25.165MHz.

4.1. Arquitectura V1 ColdFire


El ncleo del ColdFire tiene como principal caracterstica su organizacin formada por dos
bloques independientes de segmentos separados por un buffer de instrucciones. El primer bloque
es el instruction fetch pipeline (IFP) que sirve para pre-cargar instrucciones, las cuales son
pasadas al operand execution pipeline (OEP) que se encarga de decodificar las instrucciones,
traer al operando y ejecutar la funcin requerida. El buffer que separa los dos segmentos sirve
como una FIFO, lo cual facilita al IFP traer instrucciones antes de ser usadas por el OEP y de
este modo minimizar el tiempo de espera de instrucciones.
Las etapas de los segmentos del V1 ColdFire, que se muestran en la Figura 4.1, son las
siguientes:

IFP de dos etapas con un buffer de instrucciones opcional:

Generador de direccin de instruccin (IAG)

Ciclo de pre-carga de instruccin (IC)

Buffer de Instrucciones (IB)

OEP de dos etapas:

23

Configuracin y Programacin del microcontrolador ColdFire

Decodifica y selecciona / Ciclo de pre-carga del Operando (DSOC)

Generador de Direcciones / Ciclo de Ejecucin (AGEX)

Figura 4.1: Segmentos del V1 ColdFire [5]

El ColdFire cuenta con dos modelos de programacin: el usuario y el supervisor. El modo de


programacin es elegido a travs del bit S del Registro de Estado del procesador.
El modelo de usuario esta basado en la arquitectura de la familia de procesadores M68000 y
contiene los siguientes registros:

16 Registros de propsito general de 32 bits (D0 D7, A0 A7).

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.

Registro Contador de Programa (PC).

Que contiene la direccin de la instruccin en ejecucin y el procesador


24

Configuracin y Programacin del microcontrolador ColdFire


automticamente incrementa el contenido de este registro.

Registro de Cdigo de Condiciones (CCR).

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.

Registro Puntero a la Pila del Usuario/Supervisor (A7 y OTHER_A7).

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.

El modelo de programacin de supervisor es usado para funciones de sistemas operativos. Los


accesos que afectan las caractersticas de control del ColdFire deben ser efectuados en el modo
de supervisor. El modo supervisor comprende los mismos registros del modo de usuario junto
con los que a continuacin se describen:

Registro de Estado (SR) de 16 bits.

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.

Registro de base de vector (VBR) de 32 bits.

Este registro contiene la direccin base del vector de excepciones en la memoria. El


VBR puede, tambin, trasladar al vector de excepciones a otra localidad diferente a la
pre-definida en la memoria.

Registro de Configuracin del CPU (CPUCR) de 32 bits.

Este registro provee configuraciones del modo de supervisor para la funcionalidad de


un ncleo especfico.

25

Configuracin y Programacin del microcontrolador ColdFire

4.1.1. Modos de Direccionamiento


El ncleo V1 ColdFire cuenta con 12 modos de direccionamiento y se listan a continuacin:

Directo

Indirecto

Indirecto con pos-incremento

Indirecto con pre-incremento

Indirecto con desplazamiento

Indirecto con ndice escalado y desplazamiento

Indirecto al Contador de Programa con desplazamiento

Indirecto al Contador de Programa con ndice escalado y desplazamiento

Direccionamiento absoluto corto

Direccionamiento absoluto largo

Inmediato de Byte y una palabra

Inmediato de entero largo

4.1.2. Procesamiento de Excepciones


El procesamiento de excepciones est definido como condiciones detectadas por el procesador
que provocan que la instruccin en proceso sea interrumpida debido al programa o un error de
sistema, como una llamada de programa, una peticin de interrupcin o depuracin de programa.

4.2. Programacin del microcontrolador


Con el fin de realizar las funciones deseadas con el microcontrolador, se realiza la programacin
de algunos de sus perifricos como se ver a continuacin. Para la programacin del
microcontrolador se utiliza el software Freescale CodeWarrior del cual tambin se mencionan
algunas de sus caractersticas.

4.2.1. Convertidor Analgico Digital


Es comnmente sabido que los convertidores analgico digital (ADC) son usados en
aplicaciones donde es necesario realizar algn tipo de procesamiento de manera digital.
Bsicamente la entrada de un ADC esta conectada con una fuente acondicionada de tal forma
cumpla con los requerimientos del ADC, esta seal analgica, de acuerdo al rango de voltajes del

26

Configuracin y Programacin del microcontrolador ColdFire


ADC, tendr un equivalente digital y dependiendo de la resolucin del ADC, ser la precisin
que obtendremos de los datos adquiridos a travs del ADC. Se pueden clasificar los ADC de
acuerdo a la tcnica de conversiones que realizan de la siguiente forma: aproximaciones
sucesivas, escalera, delta-sigma, entre otros.

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

Configuracin y Programacin del microcontrolador ColdFire


Caracterstica
Condiciones
Corriente de Alimentacin
ADLPC = 1
ADLSMP = 1
ADCO = 1
Corriente de Alimentacin
ADLPC = 1
ADLSMP = 0
ADCO = 1
Corriente de Alimentacin
ADLPC = 0
ADLSMP = 1
ADCO = 1
Corriente de Alimentacin
ADLPC = 0
ADLSMP = 0
ADCO = 1
Corriente de Alimentacin Stop, Reset, Mdulo apagado
Alta velocidad (ADLPC=0)
Fuente de reloj asncrona
Baja potencia (ADLPC=1)
Tiempo de conversin
(incluye tADS)
Tiempo de muestreo

Muestreo corto (ADLSMP=0)

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

Muestreo largo (ADLSMP=1)


Muestreo corto (ADLSMP=0)
Muestreo largo (ADLSMP=1)

tADC
tADS

Modo 12 bits
Error de escala cero

Modo 10 bits

EZS

Error de escala completa Modo 10 bits

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

Configuracin y Programacin del microcontrolador ColdFire


alto y bajo estn internamente conectados a la fuente de voltaje y tierra respectivamente, a su
vez, las seales de fuente de voltaje del ADC, estn internamente conectada a la fuente de voltaje
del microcontrolador. Debido a que el MCF51QE128 est integrado en la tarjeta de desarrollo
DEMOQE128, el voltaje que se conecta a la alimentacin es de 3V, lo cual significa que
cualquier seal que se requiera conectar al microcontrolador a travs del ADC, su voltaje de
salida no debe de superar al voltaje de alimentacin. En la Tabla 4.2, se pueden observar algunas
caractersticas elctricas del ADC. Las especificaciones que cumple el convertidor para funcionar
dentro del sistema es la longitud de datos de 10 bits. Esta entre otras caractersticas son
modificables en los registros correspondientes al mdulo ADC. Este mdulo contiene dos
registros de estado y control, uno de configuracin, dos de datos y dos de comparacin.

Figura 4.2: Diagrama a Bloques del Convertidor A/D [5]

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

Configuracin y Programacin del microcontrolador ColdFire


bits referentes al ADCH (Canal del ADC); el otro disparador que se puede elegir es por
hardware, y depende de la seal interna del mdulo llamada ADHWT que se ilustra en la Figura
4.2, cuando se presenta un flanco de subida en esta seal el ADC comienza las conversiones,
para provocar este flanco de subida, se utiliza al mdulo Real-Time Counter (RTC). Cuando el
registro contador y el registro de mdulo igualan sus valores, el RTC puede generar la condicin
recin descrita para iniciar conversiones en el ADC.
El la Figura 4.3 se ilustra el registro de estado y control 1, al escribir un valor diferente de 0x1F
en el campo ADCH, se elige uno de los canales de entrada del ADC, adems, se aborta cualquier
conversin en proceso y se inicia una nueva conversin si el ADC se encontraba inactivo. Para
esta aplicacin con este registro se habilita la interrupcin de conversin completa, tambin se
selecciona el canal 0 de entrada y se deshabilita la conversin continua, de esta forma cada vez
que ocurra un disparo de conversin solo realice una conversin, el mdulo RTC acta como
disparador de conversin.

Figura 4.3: Registro de Estado y Control 1 (ADCSC1)

COCO (Conversion Complete Flag): Si est deshabilitada la opcin de comparacin la


bandera se enciende cuando una conversin se termina, de otra forma, se enciende
cuando se completa la conversin y el resultado de la comparacin es verdadero.

AIEN (Interrupt Enable ): Habilita y deshabilita la interrupcin de conversin completa.

ADCO (Continuous Conversion Enable): Selecciona entre una conversin o varias


conversiones despus del disparo de conversin.

ADCH (Input Channel Select): Selector de uno de los canales de entrada.

El registro de estado y control 2 controla la funcin de comparacin, el disparo de conversin y


conversin activa del mdulo ADC. Para que el contador de tiempo real pueda disparar al ADC
para convertir se escribe sobre el bit que configura esta opcin como se muestra en la Figura 4.4.

30

Configuracin y Programacin del microcontrolador ColdFire

Figura 4.4: Registro de Estado y Control 2 (ADCSC2)

ADACT (Conversion Active): Indica si una conversin est en proceso.

ADTRG (Conversion Trigger Select): Selecciona entre disparo por hardware o software.

ACFE (Compare Function Enable): Habilita y deshabilita la funcin de comparacin.

ACFGT (Compare Function Greater Than Enable): Configura la funcin de comparacin


para disparar cuando el resultado de la conversin de entrada es mayor que o igual al
valor comparado.

Con el registro de configuracin del ADC se configura el uso de la configuracin de bajo


consumo de energa y la opcin de muestreado largo. La estructura de este registro se observa en
la Figura 4.5.

Figura 4.5: Registro de Configuracin (ADCCFG)

ADLPC (Low-Power Configuration): Controla la velocidad y potencia del convertidor.

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.

MODE (Conversin Mode Selection): Selecciona entre el formato de 12, 10 u 8 bits de


salida.

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

Configuracin y Programacin del microcontrolador ColdFire


lgicos, los bits que permanecen sin cambiar su estado indican que para generar el reloj interno
del ADC se toma el reloj del bus y se divide entre uno. De esta forma la frecuencia del reloj
interno del ADC es de 12 Mhz.

4.3. Contador de Tiempo Real


Otro de los perifricos necesarios para el funcionamiento de todo el sistema es el Contador de
tiempo real o Real-Time Counter (RTC). Este mdulo comprende un contador de 8 bits, un
comparador de 8 bits, varios prescaladores binarios y decimales, tres fuentes de reloj y una
interrupcin peridica programable. Como se hizo mencin anteriormente, la funcin de este
mdulo es actuar como disparador para el convertidor analgico digital y este ltimo comience a
realizar conversiones que se considera como la primera tarea del microcontrolador.
Las caractersticas generales del contador de tiempo real contienen:

Contador de 8 bits

Mdulo de 8 bits para lmite de coincidencia

Interrupcin en coincidencia peridica controlada por software.

Tres fuentes de reloj seleccionables para el prescalador con valores binarios y decimales
seleccionables.

Oscilador interno de bajo consumo de potencia de 1 kHz.

Reloj Externo.

Reloj Interno de 32 kHz.

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

Configuracin y Programacin del microcontrolador ColdFire


se muestran en la tabla 4.3.

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.

Figura 4.6: Registro de Estado y Control del Contador de Tiempo Real


(RTCSC)

33

Configuracin y Programacin del microcontrolador ColdFire

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.

RTIE (Real-Time Interrupt Enable): Habilita y deshabilita la interrupcin del RTIE.

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.

4.3.1. Puerto Serie


Los datos que son digitalizados por el ADC son usados por la unidad de proceso para aplicarles
algn procesamiento y puedan ser utilizados para alguna causa, la cual es tan importante en un
sistema de monitoreo como el procesamiento mismo, es decir, estos datos necesitan ser
transferidos hacia otro dispositivo fuera del microcontrolador por diversas razones, las ms
comunes suelen ser el despliegue de la informacin procesada o el almacenamiento de datos.
Efectivamente en la parte final del proceso que desarrolla esta aplicacin tiene como objetivo la
visualizacin de datos y almacenamiento de los mismos en una base de datos. Ya que el sistema
embebido del que se hace uso en este proyecto no cuenta con las caractersticas necesarias para
establecer comunicacin con el servidor Linux instalado en el laboratorio de Sistemas Inmersos,
como se explic antes, se utiliza el Starlert ST 1.
En la actualidad, existen diversos protocolos que son usados para conectar dos o ms
dispositivos. Algunos pueden ser muy robustos y contar con perfiles dependiendo del tipo de
dispositivo con el que se realice la interfaz y otros tan simples como enviar cadenas de 8 bits en
una linea de datos con o sin sincronizacin. Ha habido mucho auge en los protocolos basados en
la serializacin de datos ya que representan mayor ahorro de espacio fsico aunque sacrifican un
poco la velocidad de transferencia en comparacin a su contraparte: datos en paralelo. Aunque
este mismo auge ha hecho que las tazas de transferencia no sean mucho problema para los
protocolos seriales alcanzando velocidades muy altas. Ejemplos de estos protocolos seriales que
34

Configuracin y Programacin del microcontrolador ColdFire


pueden encontrarse implementados en microcontroladores fabricados por Freescale son Serial
Communications Interface (SCI), Serial Peripheral Interface (SPI), Inter-integrated Circuit
(I2C), Universal Serial Protocol (USB), entre otros.
A continuacin se enuncian las caractersticas incluidas en el mdulo de comunicaciones
serializadas SCI:

Full-duplex con formato estndar sin regreso a cero (NRZ).

Transmisor y receptor con habilitadores separados.

Baud Rates programables.

Operacin de interrupciones o por poleo para:

Registro de transmisin vaco y transmisin completa.

Registro de datos del receptor lleno.

Receptor sobrescrito, error de paridad, error de ruido.

Receptor inactivo detectado.

Flanco activo en el pin del receptor.

Detector de caracter break con soporte a LIN.

Generador de paridad.

Longitud de caracter de 8 y 9 bits programable.

Polaridad de salida del transmisor seleccionable.

En la Figura 3.2 se muestra el esquema de comunicaciones entre el DEMOQE128 y el mdem


Starlert ST-1 y se observa la interfaz de comunicacin serial RS-232. Para establecer una
comunicacin satisfactoria, el perifrico SCI del microcontrolador se debe configurar con las
caractersticas que de acuerdo al Starlert ST-1 Getting Started se listan en la Tabla 4.4:

Caracterstica
Baud Rate
Bits de datos
Paridad
Bits de paro
Control de flujo

Valor
57600
8
ninguno
1
ninguno

Tabla 4.4 Propiedades del puerto serial del ST-1.

35

Configuracin y Programacin del microcontrolador ColdFire

En la configuracin de reloj que el MCF51QE128 tiene de forma predeterminada, no se puede


obtener este baud rate, para conseguirlo, es necesario establecer una nueva frecuencia de reloj
para los perifricos que est derivada de la frecuencia con la que trabaja todo el sistema. La
generacin del reloj ocurre en el mismo chip y depende del mdulo de Fuente de Reloj Interna
(ICS). La Fuente de Reloj Interna, como se muestra en la Figura 4.7, se encarga de proveer todas
las fuentes de reloj usadas en el microcontrolador. Este mdulo contiene un Lazo Enganchado
por Frecuencia (FLL) el cual es controlable ya sea por una referencia de reloj interna o externa.
Se pueden elegir una de tres fuentes de reloj para que sirve como reloj del sistema del
microcontrolador: el reloj generado por el FLL, una fuente de reloj interna o una externa.

Figura 4.7: Distribucin interna de la fuente de Reloj

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

Configuracin y Programacin del microcontrolador ColdFire

Figura 4.8: Registro de Control 1 del ICS (ICSC1)

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:

CLKS (Clock Source Select): Selector de la fuente de reloj.

RDIV (Reference Divider): La cantidad para dividir a la referencia de reloj externa.

IREFS (Internal Reference Select): Selector de fuente de reloj para el FLL.

IRCLKEN (Internal Reference Clock Enable): Habilita la referencia de reloj interna para
ser usada como seal ICSIRCLK (Internal Clock Source Internal Reference Clock).

IREFSTEN (Internal Reference Stop Enable): Controla si la referencia de reloj interna


permanece habilitada cuando el ICS entra en modo stop.

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.

Figura 4.9: Registro de Control 2 del ICS(ICSC2)

BDIV (Bus Frequency Divider): Selecciona la cantidad para dividir a la fuente de reloj
elegida por CLKS.

RANGE (Frequency Range Select): Selecciona el rango de frecuencia del oscilador


externo.

HGO (High Gain Oscilator Select): Controla el modo de operacin del oscilador externo.

37

Configuracin y Programacin del microcontrolador ColdFire

LP (Low Power Select): Controla si el FLL es deshabilitado en los modos bypass del
FLL.

EREFS (External Reference Select): Selecciona la fuente para la referencia de reloj


externa.

ERCLKEN (External Reference Enable): Habilita la referencia de reloj externa para ser
usada como seal ICSIRCLK (Internal Clock Source Internal Reference Clock).

EREFSTEN (External Reference Stop Enable): Controla si la referencia de reloj externa


permanece habilitada cuando el ICS entra en modo stop.

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

Figura 4.10: Registro de Estado y Control del ICS (ICSSC)

DRST/DRS (DCO Range Status/Select): Selecciona el rango de frecuencia de la salida


del FLL.

DMX32 (DCO Maximum Frequency with 32.768kHz Reference): Controla el rango de


frecuencia del DCO de forma que sea reducido a su frecuencia mxima con una
referencia de 32.768kHz.

IREFST (Internal Reference Status): Indica al fuente actual de referencia de reloj.

CLKST (Clock Mode Status): Indica el modo actual de reloj.

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.

FTRIM (ICS Fine Trim): Controla el ajuste ms pequeo de la frecuencia de reloj de la


referencia interna.
38

Configuracin y Programacin del microcontrolador ColdFire

Para este registro solo se actualizan los valores de DRS y DMX32 y siguiendo la tabla 4.5
obtenemos una frecuencia de 50MHz.

DRS DMX32 Rango de Referencia


0
31.25 39.0625 kHz
00
1
32.768 kHz
0
31.25 39.0625 kHz
01
1
32.768 kHz
0
31.25 39.0625 kHz
10
1
32.768 kHz
11
Reservado

Factor del FLL


512
608
1024
1216
1536
1824

Factor del DCO


16 20 MHz
19.92 MHz
32 40 MHz
39.85 MHz
48 60 MHz
59.77 MHz

Tabla 4.5 Rango de Frecuencia del DCO

Manipulando los registros mencionados se puede obtener la frecuencia de bus de 12MHz y es


posible cumplir con los requerimientos mencionados para la comunicacin satisfactoria del
microcontrolador y el Starlert ST-1.
El mdulo Serial Communications Interface (SCI) es el que controla las caractersticas de
comunicacin siguiendo el protocolo RS-232. Para su configuracin, este mdulo contiene tres
registros de control y uno para seleccionar el baud rate.
El registro de control 1 del SCI se muestra en la Figura 4.11 con la nomenclatura de cada bit.

Figura 4.11: Registro de Control 1 del puerto serie (SCIxC1)

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

Configuracin y Programacin del microcontrolador ColdFire

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.

PE (Parity Enable): Habilita la generacin y revisin del bit de paridad en hardware.

PT (Parity Type): Selecciona entre paridad par y paridad impar.

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.

Figura 4.12: Register de Control 2 del Puerto Serie (SCIxC2)

TIE (Transmitter Interrupt Enable): Hablita la interrupcin por hardware de TDRE


(Transmitter Data Register Empty Flag).

TCIE (Transmission Complete Interrupt Enable): Habilita la interrupcin por hardware


de TC (Transmission Complete Flag).

RIE (Receiver Interrupt Enable): Habilita la interrupcin por hardware de RDRF


(Receive Data Register Full Flag).

ILIE (Idle Line Interrupt Enable): Habilita la interrupcin por hardware de IDLE (Idle
Line Flag).

TE (Transmitter Enable): Enciende o apaga el transmisor.

RE (Receiver Enable): Enciende o apaga el receptor.

RWU (Receiver Wakeup Control): Pone al receptor en standby a la espera de una


condicin de wakeup.
40

Configuracin y Programacin del microcontrolador ColdFire

SBK (Send Break): Pone en cola un break character en la cadena de datos del transmisor.

Para efectuar el intercambio de datos entre el Starlert ST-1 y el microcontrolador, se deben


habilitar tanto el transmisor y el receptor en el DEMOQE128, as como la interrupcin del
receptor cuando el registro de datos contiene un dato nuevo. En el registro de control 3
simplemente mantenemos desactivadas las dems interrupciones por hardware que pudiera
ocurrir en las condiciones descritas en los bits de este registro que se observa en la Figura 4.13.

Figura 4.13: Registro de Control 3 del Puerto Serie (SCIxC3)

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.

ORIE (Overrun Interrup Enable): Habilita la bandera de sobreescritura para generar


peticiones de interrupcin por hardware.

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

Configuracin y Programacin del microcontrolador ColdFire

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

Configuracin y Programacin del microcontrolador ColdFire


registro de corrimiento contendr un bit de inicio, los ocho bits de datos y un bit de paro. Cuando
el registro de corrimiento esta listo para transmitir un dato, transfiere el dato del registro SCIxD
de forma sincronizada con el baud rate predefinido en la configuracin y con la bandera de
estado transmt data register empty (TDRE) en nivel lgico alto que indica que se puede escribir
datos al registro de transmisin SCIxD.
Toda la informacin adicional acerca de los perifricos del microcontrolador se pueden encontrar
en el manual de referencia del MCF51QE128 [4].

4.4. Estructura del Proyecto en Code Warrior


Freescale CodeWarrior es un ambiente de desarrollo integrado (IDE) que sirve para crear e
implementar diseos en los sistemas desarrollados por Freescale. Esta versin en particular est
diseada para trabajar con microcontroladores Freescale basados en las arquitecturas RS08,
HC(S)08 y ColdFire V1. Existen tambin diferentes versiones de suites que dependiendo de las
herramientas que contenga, cambia el costo del software; para este proyecto se utiliz el Special
Suite gratuita incluido con el microcontrolador.

Figura 4.15: CodeWarrior para microcontroladores

43

Configuracin y Programacin del microcontrolador ColdFire

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

Compilador C limitado en tamao de cdigo objeto a 32KB para RS08/HC(S)08 y 64KB


para ColdFire V1. Para C++ limitado a 1KB.

Inicializacin de dispositivos para ensamblador y C.

Processor Expert con Basic Beans.

Visualizacin de datos / Estimulacin E/S permitido para 1 componente con 3


instrumentos.

Programador de la memoria Flash HIWAVE.

Figura 4.16: Cdigo


fuente implementado en
el microcontrolador.

44

Configuracin y Programacin del microcontrolador ColdFire


Existen algunos archivos que se agregan al generar el proyecto con el wizard que incluye el
CodeWarrior y sirven para inicializar el microcontrolador. Entre los archivos que ms conciernen
en la creacin de nuevo cdigo est el archivo de cabecera MCF51QE128.h el cual contiene
todas las declaraciones de variables que en memoria corresponden a los registros de
configuracin de todos los perifricos incluidos en el microcontrolador. La estructura que se
utiliz es la que se muestra en la Figura 4.16.
CodeWarrior tambin genera otro archivo por el cual el desarrollador suele empezar a escribir
cdigo que es el main.c. Los dems archivos dentro de la carpeta de Sources (a excepcin de
primitive.c,

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.

BITSET(REGISTER, BIT) Escribe un '1' lgico en el bit 'BIT' del registro


'REGISTER'.

BITCLR(REGISTER, BIT) Escribe un '0' lgico en el bit 'BIT' del registro


'REGISTER'.

BITTOGGLE(REGISTER, BIT) Cambia el estado actual del bit 'BIT' del registro
'REGISTER' a su estado opuesto.

BITWRITE(REGISTER, MASK, F) Escribe al registro 'REGISTER' una mscara de


bits 'MASK', todos '1' o '0' dependiendo del valor de 'F'.

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'.

REGWRITE(REGISTER, MASK) Escribe el valor 'MASK' al registro 'REGISTER'.


45

Configuracin y Programacin del microcontrolador ColdFire

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

Tabla 4.6 Configuracin del ADC

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.

adc_isr Subrutina que da servicio a la interrupcin del Convertidor analgico digital:

Leer las muestras obtenidas que estn contenidas en el registro de datos.


Para mostrar el dato en los 8 LED's del DEMOQE128 se desechan 2 bits menos
significativos y se guarda el resultado en los bits correspondientes de cada LED en los
puertos E y C.

La muestra leda se acumula en un acumulador.

Un contador de conversiones se incrementa.

Si el contador de conversiones alcanz un nmero preestablecido

El acumulador se divide entre el nmero de conversiones para obtener su


promedio.

Se regresa el contador de conversiones a cero

Se deshabilita el convertidor A/D escribiendo un valor predefinido a los bits que


seleccionan el canal activo.

rtc.c sirve para configurar los registros del mdulo contador de tiempo real.
46

Configuracin y Programacin del microcontrolador ColdFire

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:

Mientras el buffer no apunte hacia el carcter de fin de cadena,

Mientras que el registro de datos no este listo para ser escrito,

Se escribe el carcter al que apunta la variable de entrada.

Mientras la transmisin no este completa,

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:

Mientras no exista un dato disponible en el registro de datos del puerto serie,


entonces

Espera.

Transfiere el caracter en el registro de datos a la direccin del buffer.

Incrementa el apuntador del buffer.

Guardar un fin de cadena en el buffer.

47

Configuracin y Programacin del microcontrolador ColdFire

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.c contiene funciones relacionadas al funcionamiento de todo el sistema.

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 ().

InternalClockSource_init Esta funcin asigna valores a los registros del mdulo de


seleccin de la fuente de reloj interno del sistema que necesita ser modificada dado que,
como se explic anteriormente, con los valores predefinidos la interfaz de
comunicaciones seriales no puede alcanzar la velocidad de 57600 bauds:

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.

El reloj seleccionado se divide entre 1.

Mientras la referencia interna de reloj no este seleccionada,

Espera ya que el microcontrolador necesita realizar una sincrona con las seales
al hacer un cambio de referencia lo cual puede tomar un tiempo.

Se modifica al DCO de modo que tenga un rango de frecuencias alto de 48 60 MHz.

Mientras el rango del DCO no haya cambiado a alto,

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

Configuracin y Programacin del microcontrolador ColdFire


energa de la fuente de alimentacin.
gpio.c tiene la sola funcin de usar los LEDs del DEMOQE128 que estn conectados al puerto C
y al puerto D, entonces, solo modifica los registros de direccin y los bits correspondientes a los
LED's se configuran como salidas y despus escribiendo valores altos a los bits de cada LED de
los registros de datos se apagan los LED's.
main.c es el cdigo que contiene la rutina principal del microcontrolador y es donde manda a
llamar las funciones dentro de los dems archivos que se acaban de describir.

main Rutina principal del proyecto:

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

Hacer de manera indefinida lo siguiente:

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.

Mientras el ADC sigue habilitado:

Espera hasta que en la rutina de servicio de interrupcin del ADC vuelva a


deshabilitar al ADC.

Convierte el dato en la variable que contiene el dato promediado del ADC en un


valor ASCII.

Se enva a travs del puerto serie el valor ASCII obtenido seguido de un retorno
de carro.

volt2temp De acuerdo con lo especificado en la hoja de datos del sensor de


temperatura LM-35, esta funcin utiliza un factor multiplicativo para realizar la
conversin de los datos recibidos en el puerto serie a un valor ASCII que represente la
49

Configuracin y Programacin del microcontrolador ColdFire


temperatura.

El dato que se proporciona a esta funcin es de tipo int, de esta forma, se realiza el
casting del dato al tipo double.

El dato se multiplica por el valor correspondiente al voltaje de un paso de conversin


del ADC, esto es:

Tomando en cuenta que por cada 10 mV de incremento corresponde a 1C, entonces,


el dato obtenido de la multiplicacin pasada se multiplica ahora por 100.

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.

wait_for_GPRS_connection Esta funcin contiene un bucle infinito dentro del cual


recibe una cadena del puerto serie y posteriormente las compara con unas cadenas
establecidas dentro de la memoria del microcontrolador, cuando la cadena recibida
coincida con alguna de las cadenas que indican que se pueden enviar paquetes UDP a la
red GSM/GPRS, entonces se termina el loop y continua el programa principal.

led_blink Utiliza el retardo generado con el temporizador del microcontrolador entre


cada cambio de estado del LED seleccionado en la entrada de esta funcin, el nmero de
veces indicado tambin en la entrada de esta funcin. Esta subrutina sirve para visualizar
eventos ocurridos durante la ejecucin del programa principal: conexin GSM/GPRS
confirmada, conexin fallida con red GSM/GPRS y envo de datos del puerto serie al
ST-1 completo.

En el Apndice A se puede observar con mayor detalle el cdigo generado.

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.

Figura 5.1: Computadora Personal y Starlert ST-1

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>

Serial Data: 992008Prueba 1


Sending ... Length 17 Buffer 992008Prueba 1
UDP Message Sent Waiting For Write Complete
GPRS Event (81001424 00000000) - <AVL> Write Complete

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.

5.1. Programacin del Convertidor Analgico Digital.


El inicio de conversiones del ADC depende de los flancos de subida en la seal ADHWT (ver
Figura 4.5) que son provocados por el RTC, as que primeramente, para comprobar el
funcionamiento del RTC, se realiz un programa que genera interrupciones cada segundo
escribiendo 1's y 0's lgicos al puerto que est interfazado con los LED's del DEMOQE128.
El convertidor analgico digital se program para utilizarlo con una fuente de poder y as poder
simular la salida de voltaje del LM-35 con una relacin de 10 mV/C y utilizando los LED's
incluidos en la tarjeta de desarrollo DEMOQE128 se observ la forma digital leda por el
convertidor. La siguiente prueba consista en hacer que el ADC del microcontrolador tomara
muestras de la fuente de voltaje y presentarlas en los diodos LED's con una periodicidad de un
segundo por medio de las interrupciones generadas por el RTC. En la Figura 5.2 se puede
observar con detalle la prueba recin descrita, la computadora personal ejecuta el CodeWarrior,
que como ya se mencion, se utiliza para programar y depurar el cdigo implementado en el
microcontrolador, y para realizar dichas funciones, se tiene un cable USB conectado
directamente al microcontrolador. En la parte inferior de la tarjeta de desarrollo, se encuentra el
conector llamado MCU_PORT en el cual se tiene acceso a varios pines del microcontrolador, de
esta forma, la fuente se conecta al canal 0 del ADC del microcontrolador. Para esta prueba, el
mdulo ADC del microcontrolador fue configurado con una resolucin de 8 bits; si se toma en
cuenta que el voltaje de alimentacin del microcontrolador es de 3.3 V, se tiene que por cada

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.

Figura 5.2: Prueba del Convertidor A/D

5.2. Programacin del Puerto Serie


Despus de haber logrado la variacin del voltaje y el muestreo de los cambios en el
microcontrolador en los tiempos indicados, lo que segua era la configuracin del puerto serie ya
que por medio del mismo se hizo la comunicacin con el mdulo ST-1. El primer problema se
present en este punto ya que el microcontrolador con la programacin predefinida se tena una
frecuencia de bus de 4 MHz, y dadas las caractersticas del puerto serie, no era posible alcanzar
el baud rate de 57600 que es el especificado en la informacin referente al Starlert ST-1. De
forma que fue necesario re-configurar los registros de la fuente de reloj interna (o, Internal Clock
Source) para obtener una frecuencia de bus mayor y de esta forma lograr la velocidad de
transmisin requerida ya que como se mencion anteriormente, el baud rate depende de la
54

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.

Figura 5.3: Envo de caracteres a la Terminal Serial

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.

Figura 5.4: Sistema Completo

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.

5.3. Programacin del Applet en Java.


Para observar de manera grfica los cambios de temperatura en los intervalos marcados con
cualquier cliente web se plante el desarrollo de un Applet en Java. Se utiliz Eclipse IDE y un
complemento del mismo llamado Visual Editor para simplificar la programacin del Applet en
Java con el fin de generar el panel donde se despliega la grfica, que para generarla, se utiliz
una

librera

externa

llamada

JFreeChart

disponible

en

el

sitio

web

http://www.jfree.org/jfreechart/. El proceso de despliegue de una grfica con JFreeChart es


relativamente sencillo; se debe crear una coleccin de valores que representan todos los puntos
de la grfica y se genera la grfica creando una instanciacin de la clase JFreeChart, donde se
agregan los nombres de los ejes as como el de la grfica y la coleccin recin creada; para este
Applet se instanca un objeto de clase ChartPanel que se utiliza para colocar la grfica generada y
poder desplegarla en el panel principal del Applet.
Aunque an queda desarrollo para el Applet, se puede acceder en cualquier navegador de Internet
que tenga instalado el complemento necesario para ejecutar la mquina virtual de Java.
Bsicamente

desde

el

navegador,

se

accede

la

pgina

web

del

servidor,

http://movil.citedi.mx/~minguez y dependiendo del navegador, har una peticin para ejecutar la


clase perteneciente al Applet, y el resultado se debera de observar como en la Figura 5.5. Como
se ilustra, el Applet puede graficar con los valores indicados en la clase y en la escala de tiempo
descrita con intervalos de 5 minutos, los valores que se deben de tomar para la clase son los
contenidos en el archivo net.log que genera el servidor, los cuales son introducidos manualmente
en el cdigo de la clase; la escala de tiempo se actualiza cada hora as como la fecha dada en el
ttulo de la grfica. El cdigo escrito para el Applet as como el utilizado en la pgina web se
encuentran en el Apndice B.

57

Resultados

Figura 5.5: Visualizacin de grfico de temperatura en Internet

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.

6.1. Trabajo Futuro


Los puntos que a continuacin se enuncian, se consideran como caractersticas que pueden
complementarse al trabajo presentado que como cualquier otro proyecto, el desarrollo va
evolucionando conforme se avanza y se pueden proponer nuevas caractersticas tambin
dependiendo de la forma en la que evolucionan las tecnologas as como el mercado al que va
dirigido; en este apartado se consideran las ms factibles a corto y mediano plazo:

Envo de comandos GP al Starlert ST-1 para configurar automticamente la capa AVL


Aplication.

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.

Imagen de salida generada por el Applet del grfico en pantalla.

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

"primitive.h" // library for C procedures


<string.h>
<stdlib.h>
<stdio.h>
<hidef.h>
// constantes simbolicas y macros generadas por CodeWarrior
"derivative.h" // macros, estuctura de datos, constantes simbolicas, etc
// para el microcontrolador MC9S08QE128k
"serial.h"
// para funciones del puerto serie
"adc.h"
// para funciones del convertidor analogico digital
"gpio.h"
// para funciones de los puertos paralelos
"timer.h"
// para funciones relacionadas a los temporizadores
MAX_BUF_SIZE
GPRS_OK_LED
DATA_SENT_LED
UNKNOWN_STR_LED

100
0
1
7

gprsError[28] = "<AVL> No GPRS Registration\r\n";


gsmError[27] = "<AVL> No GSM Registration\r\n";
udpDisconnected[46] = "<AVL> UDP Connection Disconnected\r\n";
gprsNoRegEvent[71] = "<AVL> GPRS Event (00000000 00000000) - <AVL> GPRS
Registration 0\r\n";
gsmNoRegEvent[73] = "<AVL> GPRS Event (00000000 00000000) - <AVL> GSM
Registration 0 (was 0)\r\n";
gprsReady[71] = "<AVL> GPRS Event (00000001 00000000) - <AVL> GPRS Registration
1\r\n";
gprsReady2[73] = "<AVL> GPRS Event (00000001 00000000) - <AVL> GSM Registration
1 (was 1)\r\n";
textBuffer[MAX_BUF_SIZE];

void wait_for_GPRS_connection (void);


void volt2temp (int volt, char* t);
void led_blink(unsigned char led, unsigned char num);
void main(void) {
// inicializa el CPU
CPU_init();
// inicializa el timer para realizar la funcion de delay
timer_init();
// configura al convertidor A/D pero se mantiene deshabilitado
adc_init(ADC_DISABLED);
// inicializa al contador en tiempo real

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
/*
*
*/

cpu.c - Subrutinas para la incializacion del sistema.

#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
}
}

char) (0x01 << x);


char) (PTED | temp);
char) (PTCD | temp);

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;

// El oscilador de baja potencia


// de 1KHz seleccionado como
// fuente de reloj de tiempo
RTC_INTERRUPT_ENABLE = 1;
// Peticiones de interrupcion de tiempo real
// son habilitadas
REAL_TIME_PRESCALER_SELECTOR = 0xD;
// El valor divisorio del prescaler es
// de 10^2, entonces, el valor del
// real-time counter se incrementa cada
// 100ms
RTCMOD = 1;
// Con la configuracion anterior y el modulo del contador
// en 1 decimal, se genera una peticion de interrupcion
// cada 100ms

}
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

// SCI Baud Rate Register


#define RX_INPUT_ACTIVE_EDGE_INTERRUPT_ENABLE
#define LIN_BREAK_INTERRUPT_ENABLE

SCI1BDH_RXEDGIE
SCI1BDH_LBKDIE

// SCI Control Register 1


#define PARITY_TYPE
#define PARITY_ENABLE
#define IDLE_LINE_TYPE
#define WAKE_UP_METHOD
#define DATA_MODE
#define RECEIVER_SOURCE
#define SCI_STOPS_ON_WAIT_MODE
#define LOOP_MODE

SCI1C1_PT_MASK
SCI1C1_PE_MASK
SCI1C1_ILT_MASK
SCI1C1_WAKE_MASK
SCI1C1_M_MASK
SCI1C1_RSRC_MASK
SCI1C1_SCISWAI_MASK
SCI1C1_LOOPS_MASK

// SCI Control Register 2


#define SEND_BREAK
#define RECEIVER_WAKEUP_CTRL
#define RECEIVER_ENABLE
#define TRANSMITTER_ENABLE
#define IDLE_LINE_IRQ_ENABLE
#define RECEIVER_IRQ_ENABLE
#define TRANSFER_COMPLETE_IRQ_ENABLE
#define TRANSMIT_IRQ_ENABLE

SCI1C2_SBK_MASK
SCI1C2_RWU_MASK
SCI1C2_RE_MASK
SCI1C2_TE_MASK
SCI1C2_ILIE_MASK
SCI1C2_RIE_MASK
SCI1C2_TCIE_MASK
SCI1C2_TIE_MASK

// SCI Control Register 3


#define PARITY_ERROR_IRQ_ENABLE
#define FRAMMING_ERROR_IRQ_ENABLE
#define NOISE_ERROR_IRQ_ENABLE
#define OVERRUN_IRQ_ENABLE
#define TRANSMIT_DATA_INVERSION
#define TX_PIN_DIRECTION
#define NINTH_BIT_TRANSMITTER
#define NINTH_BIT_RECEIVER

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

void adc_init (unsigned char chan);


extern int adcResult;
#endif
/* adc.c - Subrutinas para el funcionamiento del Analog-to-Digital Converter */
#include "adc.h"
int adcResult;
unsigned char conversionCounter;
/* ADC_init - Esta funcion realiza la configuracion del convertidor analogico-digital
*/
void adc_init (void) {
ADC_INPUT_CLK = BUS_CLK;
ADC_CLK_DIVIDE = INPUT_CLK_DIV_8;
ADC_RESOLUTION = RES_10BIT;
// Long sample time and low power configuration selected
REGSET(ADCCFG, LOW_POWER_CONFIG|SAMPLE_TIME_CONFIG);
// Hardware trigger selected, compare function disabled
REGSET(ADCSC2, CONVERSION_TRIGGER_SELECT);
REGSET(ADCSC1, ADC_IRQ_ENABLE); // Conversion Complete interrupt enabled
REGCLR(ADCSC1, CONTINUOS_CONVERSION_ENABLE);
// Single conversion
ADC_CHANNEL = chan;
if (chan != ADC_DISABLED) {
if (chan <
8)
// Deshabilita el control del puerto E/S de los

74

Apndice A
BITSET(APCTL1,chan);

// pines del MCU usados como entradas analogicas

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

// Este valor en la fuente del reloj deshabilita el timer


#define TIMER_DISABLED
0
#define BUS_RATE_CLK
#define FIXED_SYS_CLK
#define EXTERNAL_SCR

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

/* timer.c - Subrutinas para realizar funciones con el temporizador */


#include "timer.h"
void timer_init(void) {
COUNTER_MODULO = 752;
TIMER_CLK_SOURCE = BUS_RATE_CLK;
TIMER_PRESCALER = TIMER_DISABLED;
}
/*
* funcion de retardo de aproximadamente 1 mS por cada entero introducido
*/
void delay(unsigned int t) {
unsigned int i;
CURRENT_COUNT = 0;
TIMER_PRESCALER = DIVIDE_BY_32;
for(i = 0; i <= t; i++) {
while(!COUNTER_OVERFLOW)
;
// Antes de escribir un '0' a la bandera TIMER_OVERFLOW_FLAG, es
// necesario leer primero el registro TPM1SC. Si no se hace esto,
// entonces, TIMER_OVERFLOW_FLAG continuara en '1' indicando que
// ya ocurrio un sobreflujo en el contador.
TPM1SC;
BITCLR(TPM1SC, TIMER_OVERFLOW_FLAG);
}
}

77

Apndice A

/* bithandler.h - macros for bit manipulation on registers */


#ifndef
#define
#define
#define
#define
#define

BITHANDLER_H
FULL_REG
BITSET(REGISTER, BIT)
BITCLR(REGISTER, BIT)
BITTOGGLE(REGISTER, BIT)
BITWRITE(REGISTER, MASK, F)

#define REGSET(REGISTER, MASK)


#define REGCLR(REGISTER, MASK)
#define REGWRITE(REGISTER, MASK)

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;

public class graficaDatosTS extends JApplet {


private static final long serialVersionUID = 987654321123456789L;
private JPanel jContentPane = null;
/**
* This is the default constructor
*/
public graficaDatosTS() {
super();
}
/**
* This method initializes this
*
* @return void
*/
public void init() {
this.setSize(640, 480);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getTSChartPane(), getTSChartPane().getName());
}
return jContentPane;
}

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&iacute;a</span></h1>
<div>El Applet que se muestra a
continuaci&oacute;n fue desarrollado para mostrar el
funcionamiento del Sistema de Telemetr&iacute;a presentado en el
trabajo de Tesina dentro de la Especialidad de Sistemas Inmersos
en el Centro de Investigaci&oacute;n y Desarrollo de
Tecnolog&iacute;a Digital del Instituto Polit&eacute;cnico

81

Apndice B
Nacional.<br>
<br>
Las gr&aacute;fica contenida en el Applet, es una
representaci&oacute;n
del muestreo de una se&ntilde;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&iacute;as M&iacute;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

Você também pode gostar