TESINA QUE PARA OBTENER LA

INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN Y DESARROLLO DE TECNOLOGÍA DIGITAL “MONITOREO DE PARÁMETROS A TRAVÉS DE UN SISTEMA DE TELEMETRÍA” TESINA QUE PARA OBTENER LA ESPECIALIDAD EN SISTEMAS INMERSOS P R E S E N TA : DANIEL ISAÍAS MÍNGUEZ VITAL BAJO LA DIRECCIÓN DE: DR. ROBERTO HERRERA CHARLES FEBRERO 2009 TIJUANA, B.C., MÉXICO Dedicatoria A mis padres, Daniel I. Mínguez Rodríguez 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 inspiración a lo largo de mi preparación 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. Mínguez 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 cariño, su apoyo y su alegría. Agradecimientos Al Dr. Roberto Herrera Charles quien como profesor, consejero y director de Tesina me ayudó durante la Especialidad desde su inicio hasta la terminación del proyecto de Tesina. A mis revisores el Dr. Jesús Francisco Córdoba, M.C. Adolfo Esquivel y Esp. Eduardo Barba por sus observaciones y consejos. Al cuerpo académico 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 compañeros de especialidad Mizael López-Lucho, Aryán Serrano y Branko Ivankovic; a Óscar Muñoz, Rodolfo Jiménez, Carlos Hernández y Sonia Casillas por compartir sus experiencias, aportar sus ideas para la realización 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 través 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 través de la beca de programas inscritos en el PNPC; a los proyectos de investigación SIP-20071264, “Sistema de control de unidades remotas móviles” SIP-20080851 del IPN y “Creación 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 Parámetros a través de un Sistema de Telemetría Resumen En este trabajo se presenta un sistema de monitoreo que realiza la lectura de parámetros de temperatura y enviarlos a un servidor para visualizarlos a través de un Applet generado en Java. El sistema presentado hace uso de varias tecnologías de transmisión de datos que en los últimos años 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 también se encarga de la comunicación serial bajo el estándar RS-232, con un dispositivo transceptor (Starlert ST-1) el cual usa el protocolo de paquetes UDP para realizar el envío de datos a través de la red de Internet por medio de la red celular GSM utilizando el servicio de paquetes GPRS. La información 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 parámetros introducidos al microcontrolador. Una característica sobresaliente de este trabajo es el uso de dispositivos de alto rendimiento que conjuga tecnologías 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 información 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. Introducción........................................................................................1 1.1. Aplicaciones de los Sistemas de Telemetría...................................................................3 1.2. Objetivos del proyecto....................................................................................................6 1.2.1. Objetivo General......................................................................................................6 1.2.2. Objetivos específicos...............................................................................................6 1.2.3. Organización de la Tesina........................................................................................7 2. Antecedentes Teóricos..........................................................................8 2.1. Sistema Global de Comunicaciones Móviles (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. Descripción del sistema....................................................................17 3.1. Características 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. Configuración y Programación 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. Programación del microcontrolador.............................................................................26 4.2.1. Convertidor Analógico 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. Programación del Convertidor Analógico Digital........................................................53 5.2. Programación del Puerto Serie......................................................................................54 5.3. Programación del Applet en Java..................................................................................57 6. Conclusiones......................................................................................59 6.1. Trabajo Futuro...............................................................................................................61 Referencias.............................................................................................62 Apéndice A.............................................................................................63 Apéndice B.............................................................................................80 Apéndice C.............................................................................................85 Apéndice D.............................................................................................86 Índice de figuras Figura 1.1: Proceso de Telemetría................................................................................................1 Figura 1.2: Sistema de RF de AgriNET [1]..................................................................................4 Figura 1.3: Diagnóstico de servicio de un automóvil vía e-mail brindado por OnStar [11]. . .5 Figura 1.4: Estetoscopio Electrónico 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: Transmisión 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 Configuración (ADCCFG)..................................................................31 Figura 4.6: Registro de Estado y Control del Contador de Tiempo Real (RTCSC)..............33 Figura 4.7: Distribución 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: Código 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: Envío de caracteres a la Terminal Serial...............................................................55 Figura 5.4: Sistema Completo.....................................................................................................56 Figura 5.5: Visualización de gráfico de temperatura en Internet...........................................58 Acrónimos en inglés utilizados en la Tesina 3GSM Third-generation Services for GSM (Servicios de Tercera generación para GSM) ADC Analog-to-Digital Converter (Convertidor Analógico Digital) A-GPS Assited GPS (GPS Asistido) APN Access Point Name (Nombre del Punto de Acceso) ARP Address Resolution Protocol (Protocolo de Resolución de Direcciones) ASCII American Standard Code for Information Interchange (Código Estadounidense Estandarizado para el Intercambio de Información) AuC Authentication Center (Centro de Autenticación) AVL Automatic Vehicle Location (Localización Automática 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 Conférence Européenne des Postes et Télécommunications (Organización de estandarización Europea) CDMA Code Division Multiple Access (Acceso Múltiple por División de Código) 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 Móviles) GSMA GSM Association (Asociación GSM) HLR Home Location Register (Registro de Localización 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 Interconexión Local) M2M Machine-to-Machine (Máquina a Máquina) MoU Memorándum of Understandig (Recordatorio de Entendimiento) MS Mobile Station (Estación Móvil) MSC Mobile services Switching Center (Centro de Conmutación y servicios Móviles) 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 Comunicación Personal 1900) PLMN Public Land Mobile Network (Red Móvil Pública Terrestre) PPP Point-to-Point Protocol (Protocolo Punto a Punto) PSTN Public Switched Telephone Network (Red de Telefonía Pública Conmutada) RARP Reverse Address Resolution Protocol (Protocolo Inverso de Resolución 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 (Módulo 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 Periféricos) SQL Structured Query Language (Lenguaje de Consulta Estructurado) SSH Secure Shell (Intérprete de comandos Seguro) TCP Transfer Control Protocol (Protocolo de Control de Transferencia) TDMA Time Division Multiple Access (Acceso Múltiple por División 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 Adaptación y Rango de Transcodificación) UDP User Datagram Package (Paquete de Datagrama de Usuario) UMTS Universal Mobile Telephone System (Sistema de Telefonía Móvil Universal) USB Universal Serial Bus (Bus Universal en Serie) VLR Visitor Location Register (Registro de Localización de usuarios Visitantes) WAN Wide Area Network (Red de Área Ámplia) W-CDMA Wideband – Code Division Multiple Access (Múltiple Acceso por División de Código de Banda Ancha) WPAN Wireless Personal Area Network (Red de Área Personal Inalámbrica) 1. Introducción La introducción de nuevas tecnologías ha sido crucial en el desarrollo del hombre, han simplificado infinidad de labores donde era necesario contar con numerosos procesos antes de obtener algún resultado. La observación y control de estos procesos es una tarea muy importante para la obtención de resultados más precisos y puede ser más eficiente si se realiza de forma automática y sin tener que contar con recursos humanos de manera presencial en el lugar donde se realiza este proceso. Aquí es donde la telemetría nos ofrece una solución para esta clase de problemas. La telemetría nos permite realizar mediciones de parámetros físicos 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 ilustración, un sistema de telemetría básico puede ser muy simple, y sin embargo, efectivo; se pueden nombrar varios ejemplos, desde una persona midiendo el tamaño de muestras defectuosas en un lote de producción y enviando los resultados a la persona encargada del área, hasta un sistema controlando una red inalámbrica de sensores monitoreando una zona forestal para detectar posibles incendios y enviando reportes periódicos al guardabosques en turno. Sea el caso de estudio, los componentes de un sistema de telemetría no varían en gran proporción. Figura 1.1: Proceso de Telemetría El objeto de observación puede ser cualquier parámetro físico o químico, los cuales son sensados para obtener finalmente ya sea un nivel de voltaje, una variación en frecuencia de alguna señal o incluso datos serializados que cumplan con algún estándar de comunicaciones. Cuando se trata con señales eléctricas analógicas es necesario acondicionarlas y digitalizarlas para convertirse en entrada de un procesador y realizar las operaciones necesarias para colocar 1 Introducción los datos en el medio de transmisión. Se puede considerar, por ejemplo, la actividad eléctrica del corazón medida en un intervalo de tiempo y es sensada con electrodos. El proceso de transmisión de datos es muy parecido a un codificador de información. Los datos que se requieren enviar a través del medio de transmisión deben de cumplir con ciertas características para que puedan utilizar el canal de transmisión; si se envía en forma de paquetes, puede ser requerida información adicional como la del destinatario o el método de envío que se necesita usar; otro ejemplo puede ser cuando la cantidad de información que se envía excede las capacidades del medio de transmisión (como el ancho de banda), entonces, es necesario utilizar algoritmos de compresión o disminuir la tasa de transmisión. El medio de transmisión de datos puede realizarse a través de cables o inalámbricamente. La cantidad de protocolos de comunicación existentes es infinita, y cada uno se ha adaptado de acuerdo a las características presentadas por el ambiente que rodea al medio de transmisión. A través de un medio cableado, se añade a los datos mayor seguridad, integridad e inmunidad al ruido comparado con los medios inalámbricos, además existen topologías diferentes para cumplir con requerimientos de velocidad, acceso y otras características; los medios cableados ofrecen al diseñador una rápida implementación y además sencilla como es el caso del estándar RS-232, aunque para obtener mejores tasas de transmisión 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 científico se desarrollen sistemas muy complejos de codificación y compresión haciendo uso de protocolos robustos como 802.11 y Bluetooth, aunque también existen otros menos complejos como 802.15.4, que es la base de la especificación de Zigbee, que a cambio del uso de perfiles y altas tasas de transmisión, ofrece un alcance muy amplio en áreas abiertas así como un bajo consumo de potencia y así se vuelve una solución altamente eficaz para formar redes de área personal inalámbricas 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 característica importante es el reuso de la infraestructura ya establecida, como es el caso de este trabajo, en el que se utiliza la red móvil GSM/GPRS a través del dispositivo transceptor Starlert ST-1 que realiza el envío de paquetes para hacerlos llegar al servidor. Los medios de transmisión inalámbricos están en constante evolución, cada vez ofrecen 2 Introducción mayor confiabilidad y tasas de transmisión tan altas que ahora vemos como un hecho el poder realizar el envío de señales de video en tiempo real por donde hasta hace apenas algunos años solo era posible transmitir voz. La recepción de datos es similar a la transmisión en el sentido que se tienen que cumplir con los mismos requerimientos de comunicación que están dados por el medio de transmisión, el subsistema que recibe la información enviada por el transmisor, debe ser capaz de interpretar el protocolo utilizado. En esta parte, si existiera alguna codificación en el envío de datos, el dispositivo encargado de la recepción debe ser capaz de decodificarlos y almacenarlos para más adelante se puedan visualizar como datos numéricos de manera tabular o con gráficos. La visualización de datos puede estar relacionada con el sub-sistema que recibe los datos, ya que un proceso puede estar encargado de la recepción y otro del despliegue de la información que se reproduce en el dispositivo local visualizador. En el caso de la aplicación que se presenta en esta Tesina, el proceso de despliegue está almacenado en el servidor y se ejecuta en la máquina virtual de Java instalada en el cliente. 1.1. Aplicaciones de los Sistemas de Telemetría Los sistemas de telemetría han logrado un aporte importante dentro de nuestra sociedad, y la funcionalidad que ofrecen ha hecho que sea más fácil y rápido introducirlos a diversas áreas de estudio y es por ello que cada vez es mas común 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 telemetría puede aportar a este campo. Una red de sensores de humedad o una base meteorológica ofrecen mejoras en la obtención de cultivos al tener un monitoreo completo de los mismos. El uso apropiado de recursos para producir nuevas áreas de explotación agrícola también representa una mejora significativa, por ejemplo, si se tiene controlada la cantidad de fertilizante disponible y además 3 Introducción se puede tener acceso a esta información de manera remota por medio de bases de RF de control (Figura 1.2) combinado con tecnologías como el Internet. Figura 1.2: Sistema de RF de AgriNET [1] Otro ejemplo muy común que demuestra la importancia del uso de sistemas de telemetría se puede observar en los sistemas de seguridad vehicular como los que desarrolla una compañía llamada OnStar desarrollada por General Motors. El objetivo de OnStar es ofrecer a sus usuarios gran rapidez de respuesta en caso de accidentes automovilísticos ya sean a causa de siniestros o robo del vehículo. Los usuarios de vehículos equipados con este sistema como el de la Figura 1.3 pueden obtener de manera automática, por e-mail, diagnósticos mensuales, servicio de navegación a través de voz, respuesta automática 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 vehículo. Todas los servicios mencionados con anterioridad son posibles gracias al uso de un sistema que combina el monitoreo constante del automóvil con tecnología GPS para la localización del vehículo así como el uso de redes celulares. Básicamente el usuario puede contactar directamente a un asesor de OnStar haciendo uso de los componentes básicos de un teléfono celular, es decir, un micrófono integrado, una antena celular y la red celular; mientras tanto el asesor del servicios localiza al vehículo utilizando el sistema de localización GPS. En otro caso, cuando las bolsas de 4 Introducción aire del vehículo son desplegadas, un mensaje es enviado al sistema de telemetría del vehículo equipado el cual se comunica al centro de servicios utilizando la misma red celular. Figura 1.3: Diagnóstico de servicio de un automóvil vía 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 población en el mundo, mayor es el número de gente que necesita tratamientos médicos 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 kilómetros para poder tratar sus enfermedades lo cual se traduce en gastos muy grandes. La habilidad de la telemedicina para proveer cuidado médico interactivo utilizando tecnología moderna y las telecomunicaciones es fundamental para resolver este tipo de problemas que nuestra sociedad enfrenta. Ya sea atención médica 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 opción. La empresa AMD Telemedicine es líder a nivel mundial como proveedor de instrumentos médicos (Figura 1.4) usados en telemedicina. Los instrumentos médicos que esta empresa provee pueden ser utilizados para distintas áreas del cuidado de la salud como son la cardiología, odontología, dermatología, otorrinolaringología, oftalmología, patología, pediatría, tratamientos de emergencia, salud de la mujer, cuidados primarios, radiología, ultrasonidos y monitoreo de signos vitales. 5 Introducción Figura 1.4: Estetoscopio Electrónico Digital de AMD Telemedicine [2] Así como los mencionados aquí, existen otros ejemplos más en la actualidad (tratamiento y distribución de gas, distribución de agua potable, control de incendios forestales, solo por mencionar algunos) que poco a poco están ayudando a mejorar diversos procesos, acortando distancias significativamente, reduciendo costos, mejorando tiempos y otros factores más que están involucrados en este intercambio de información a larga distancia. Y una de las cosas más importantes que cabe resaltar es el hecho de que somos capaces de implementar usos nuevos a tecnologías existentes y, por lo tanto, mejorarla. 1.2. Objetivos del proyecto. 1.2.1. Objetivo General. Desarrollar un sistema de adquisición de datos que puedan ser enviados a través de un módem GSM/GPS usando el servicio de datos GPRS hacia un servidor y monitorearlos desde una computadora con acceso a Internet. 1.2.2. Objetivos específicos. 1. Comprender el funcionamiento del sistema actual de telemetría [14]. 6 Introducción 2. Configurar el módulo convertidor analógico digital del microcontrolador. 3. Configurar el módulo serial del microcontrolador. 4. Acoplamiento del sensor de temperatura al microcontrolador. 5. Enviar datos del microcontrolador al módem ST-1. 6. Desarrollar un Applet en Java para la visualización de datos en el servidor. 1.2.3. Organización de la Tesina. Esta Tesina esta dividida principalmente en 6 capítulos. El presente capítulo fue una introducción acerca de los sistemas de telemetría, desde su definición hasta algunos ejemplos existentes en la actualidad, además se presentan los objetivos de la Tesina. El capítulo 2 explica brevemente la red de telefonía inalámbrica GSM, así como algunos de sus componentes entre los que destaca el GPRS del cual también se hace mención finalizando con una descripción del protocolo UDP. En el capítulo 3 detalla las características de los componentes que conforman al sistema presentado en este trabajo, así como su participación dentro del mismo. El capítulo 4 se centra en el microcontrolador MCF51QE128 comenzando por la arquitectura V1 ColdFire y explicando los periféricos usados, sus características, registros internos y la programación de los mismos. Los resultados obtenidos y el desarrollo de las pruebas se detallan en el capítulo 5. Por último, las conclusiones y trabajo futuro propuesto para este proyecto se mencionan en el capítulo 6. 7 2. Antecedentes Teóricos Para la realización de este proyecto se hace uso de tecnologías desarrolladas para los sistemas de telecomunicaciones; la red de telefonía 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 transmisión inalámbrica de información con el desempeño de conexiones cableadas. Además, también se hace mención al Protocolo de Datagrama de Usuario (UDP) que es el protocolo utilizado por el Starlert ST-1 para enviar sus datos a través de Internet. 2.1. Sistema Global de Comunicaciones Móviles (GSM) GSM es un estándar a nivel internacional en las comunicaciones digitales a través de la telefonía celular; por medio de los servicios que provee, es capaz de realizar la transmisión de voz y datos entre dispositivos móviles a velocidades de hasta 9.6 kbit/s. Al ser reconocida como estándar 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 habían más de 2,500 millones de suscriptores GSM, cifra que representa el 85% del mercado móvil a nivel mundial. Hoy en día, “la familia de tecnologías GSM está formada por GSM, Servicio de Paquetes por Radio (GPRS), Tasas de Datos Mejoradas para la Evolución GSM (EDGE), y servicios de tercera generación (3GSM) también conocido como Múltiple Acceso por División de Código de Banda Ancha (W-CDMA) y su evolución móvil de banda ancha, HSPA (High Speed Packet Access)” [13]. 2.1.1. Historia de GSM Aunque la idea de un sistema radio móvil de comunicaciones basado en células surgió en los laboratorios Bell en los años 70's, fue hasta 1982 cuando gracias al Conférence Européenne des Postes et Télécommunications (CEPT) se formó el Groupe Spécial Mobile (nombre original de GSM) para desarrollar un sistema móvil celular estandarizado que pudiera funcionar en el rango de 900 MHz. La causa principal de la necesidad de formar un estándar fue que cuando comenzaron a desarrollarse diferentes sistemas de telefonía celular para cada país dentro de Europa, lo cual resultaba problemático, principalmente porque los equipos se diseñaban con una especificación 8 Antecedentes Teóricos funcional solo para el país donde se desarrollaban, de tal forma que éstos solo funcionaban dentro de las fronteras del mismo. Poco después, 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 países se logró fundar el primer sistema celular digital a través de Europa que más adelante se convertiría en la Asociación GSM (GSMA). En la actualidad, la asociación representa a más de 740 operadores GSM a través de 219 países y territorios del mundo y sirve a más 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 acrónimo GSM cambio a Sistema Global para Comunicaciones Móviles. En ese mismo año se dio a conocer el Sistema Celular Digital 1800 (DCS 1800) que básicamente 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 sería llamado Sistema de Comunicación Personal 1900 (PCS 1900). Durante el siguiente año muchos operadores europeos ya contaban con redes de comunicaciones basados en el sistema GSM el cual captaría la atención a nivel mundial y lograría establecerse en esa índole provocando un éxito comercial para los proveedores del sistema. 2.1.2. Arquitectura GSM La estructura de una red de telefonía celular ofrece una característica 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 señal 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 estación 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 células puedan hacer uso de la misma frecuencia, necesitan estar separadas por una o más células con el fin de evitar interferencias. El reuso eficiente de frecuencias es una característica muy importante ya que el espectro de frecuencias es 9 Antecedentes Teóricos un recurso bastante limitado. A pesar de que el reuso de frecuencias es una ventaja sobresaliente, las redes celulares también tienen algunas desventajas: ● Entre mayor es el número de células instaladas, mayor es el costo de la infraestructura y líneas de acceso. ● Todas las redes celulares necesitan que conforme se mueve una estación móvil, la llamada activa esté pasando de una célula a otra. ● La red debe de estar pendiente de la posición de la estación móvil, 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 móvil que controla el equipo o Estación Móvil (MS) que lo conecta a la infraestructura de la red; dicha conexión se establece mediante el Sub-sistema de Estaciones Móviles (BSS); y por último, el Centro de Conmutación y servicios Móviles 10 Antecedentes Teóricos (MSC) que se encarga de manejar los servicios móviles así como la conmutación de llamadas entre usuarios móviles y otros usuarios móviles o fijos. La estación móvil es el equipo físico que conecta al usuario GSM a la red, este equipo debe de ser portátil y se presenta en varias formas y con distintas potencias. Para establecer una buena comunicación con la red GSM es necesario realizar una autenticación por medio de un Módulo de Identidad del Suscriptor (SIM) el cual es un chip que es insertado en el equipo móvil del usuario con la finalidad de realizar llamadas así como recibirlas, y además, 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 Estación Base (BTS), de acuerdo a su rango de alcance, define el área ocupada de la célula dentro del área de cobertura en la zona donde esta ubicada. Básicamente se trata de un dispositivo transceptor, cuya función es proveer la conectividad entre la red y la estación móvil a través de la interfaz de radio Um. El tamaño de la celda formada por la BTS es inversamente proporcional a la densidad de población 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 operación y telecomunicaciones como el manejo de las llamadas cuando atraviesan más de una celda, la 11 Antecedentes Teóricos configuración de los canales de radio y la conmutación entre frecuencias también conocido como frequency hopping. Entre una o más BTS y el BSC, se forma el BSS el cual utiliza la interfaz Abis para formar esta conexión. Un elemento importante que se considera dentro del BSS o como parte del MSC es la Unidad de Adaptación y Rango de Trans-codificación (TRAU) que sirve para agregarle eficiencia al uso de las frecuencias realizando una compresión de datos con el fin de tener un buen número de llamadas en cierto ancho de banda. El conmutador MSC está basado en el diseño de un ISDN o un PSTN adaptado para brindar funcionalidad extra para redes celulares, como registro, autenticación, ruteo de llamadas, transferencia inter-celdas, entre otros. El MSC se encarga de conectar a la red de radio-teléfonos a la red de teléfonos pública; además, da acceso a la base de datos de la red y al Centro de Autenticación (AuC) el cual verifica los permisos de acceso del suscriptor. Dentro de la red GSM también existe otro sub-centro llamado Registro de Localización de usuarios Locales (HLR) el cual es una base de datos que almacena la información administrativa de los suscriptores, por cada red GSM debe de existir como mínimo una HLR. El Registro de Localización de usuarios Visitantes (VLR) fue ideada con el fin de evitar la sobrecarga de información en el HLR; el VLR también contiene una base de datos con información 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 petición para borrar la información 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 Localización de usarios locales, el Registro de Localización de usuario Visitantes y el Centro de Conmutación y servicios Móviles 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 especificación de la Fase 2+ de los servicios de GSM. Los usuarios TDMA también cuentan con el servicio GPRS. Su aparición ocurre entre los años de 1999 y 2000 usando la misma infraestructura de la red GSM ya existente; las soluciones ofrecidas por este nuevo servicio 12 Antecedentes Teóricos marcó un paso más hacia las redes de tercera generación, también 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 móviles, sobrepasando a las computadoras personales que han estado presentes desde antes. GPRS permite acceso a los servicios de Internet con una tasa de transmisión de hasta 115 kbps usando hasta ocho canales de radio los cuales son asignados a un usuario o compartido por varios usuarios. La aceptación 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 información en casi cualquier lugar. Otra ventaja de este servicio es que la conexión de los usuarios GPRS con la red es de manera permanente de modo que el acceso a la información sea instantánea, y así, aumentar su productividad. Para implementar el servicio GPRS en la red de GSM no es necesario realizar una inversión muy grande para las compañías que proveen de estos servicios ya que GPRS fue diseñado para coexistir con la Red Móvil Pública 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 envío de SMS a través de GPRS. Con la introducción de GPRS y el Protocolo de Internet (IP) a las redes móviles, los usuarios pueden disfrutar mayor rapidez y tasas de transmisión de datos; además, GPRS permite realizar llamadas de datos y de voz simultáneamente. Los usuarios que reciben estos servicios tienen la capacidad de estar conectados siempre a Internet de tal forma que puedan enviar correos electrónicos con archivos adjuntos grandes, contar con el servicio de oficina móvil, navegar por Internet de manera rápida y telemetría. Como se mencionó, la implementación de GPRS en los sistemas de GSM no implican cambios 13 Antecedentes Teóricos muy drásticos en la red existente; para tal fin, se introducen dos nuevos elementos en la red y modificaciones mínimas 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 posición del usuario GPRS dentro de la red, de esta manera el SGSN debe de ser capaz de almacenar información del usuario, el estado del móvil, la identidad del equipo móvil, la información de la celda dentro de la que se encuentra el usuario y el número del VLR que sirve a la estación móvil. 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 continuación: ● Líneas Telefónicas usando módems. El acceso es limitado a zonas donde existan conectores de teléfono, la tasa de transmisión de datos alcanzada es de 56 kbps y la conexión se realiza por marcado, además se cobra por la duración de la conexión. ● Paquetes de Datos Celular Digital (CDPD). Esta tecnología ofrece tasas de transmisión de hasta 19.2 kbps, el costo de implementación es más alto que GPRS, está diseñado para implementarse sobre los servicios celulares analógicos existentes; es confiable cuando hay pocas llamadas analógicas pero pueden haber pérdidas de datos cuando el volumen de llamadas es grande. ● Acceso Múltiple por División de Código (CDMA). A diferencia de GSM/GPRS, CDMA no asigna un canal específico 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 tecnología ofrece 14 Antecedentes Teóricos velocidades de hasta cuatro veces 14.4 kbps. Este servicio no ofrece la característica de conexión 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 más alto esta la capa de aplicación. De esta manera, la capa física/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 aplicación utiliza la sección de datos de la capa de transporte para colocar sus datos. Figura 2.3: Internet y sus protocolos En teoría, al tener un diseño basado en capas, es posible realizar modificaciones o cambiar la tecnología en cada capa sin afectar otras; la realidad es que durante la implementación 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 teoría cualquier protocolo de la capa de aplicación puede funcionar con el protocolo UDP y TCP, ambos se encuentran en la capa de transporte y su distinción reside en la confiabilidad de 15 Antecedentes Teóricos cada uno, de modo que los requerimientos de confiabilidad de la capa de aplicación 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 llegarán a su destino. A través del encabezado del IP se puede identificar el protocolo que se utilizará. Hay aplicaciones que funcionan igualmente con UDP y TCP, aunque también existen aplicaciones que solo podrán utilizar un protocolo u otro. El protocolo UDP es simple, eficiente e ideal para aplicaciones como TFTP y DNS. Básicamente la dirección IP es usada para direccionar un datagrama a una máquina en particular, en el encabezado del UDP va contenido un número correspondiente al puerto de destino que sirve para enviar el datagrama UDP a la cola de un proceso dentro de la máquina; además también 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 continuación 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 número de octetos que contiene el datagrama, el valor mínimo que puede contener es 8 ya que es el número 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 través de su checksum, UDP provee integridad de sus datos al tener su propio checksum. 16 3. Descripción del sistema En el trabajo presentado por R. Herrera [13] se muestra el desarrollo de un sistema de rastreo y control de unidades remotas móviles. En este sistema se hace uso de un módem GSM/GPS Starlert ST-1 para establecer comunicación con la red celular GSM y por medio del sistema GPRS enviá paquetes UDP a un servidor que contiene programas de comunicación, seguimiento y almacenamiento. Este mismo sistema es retomado en el trabajo de tesis de S. Casillas [14] en el cual se añade una tarjeta de adquisición 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 estándar RS-232, con el objeto de medir señales 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: Transmisión 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 medición de temperatura, presión y nivel de solución dentro de un tanque bulk-mix en el cual se hace una mezcla de componentes químicos que después 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 adquisición 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 analógico-digital contenido en el 17 Descripción del sistema microcontrolador. Una vez procesados los datos, se envían a través del Puerto Serial de Comunicaciones (SCI) siguiendo el estándar RS-232 para interfazarse con el módem Starlert ST-1 (Figura 3.2). El proceso de envío de datos a través 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 información. El servidor HTTP Apache 2.2.0 se encuentra actualmente ejecutándose en una computadora con Fedora 9 que es una distribución 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 información esté correcta para finalmente depositarlo en la base de datos. En la verificación de la información, el mismo proceso se encarga de generar y escribir a un archivo tipo bitácora llamado net.log donde coloca el dato llegado junto con información adicional como la fecha y hora de llegada. El Applet que se ejecute desde el servidor puede utilizar la información directamente de la base de datos en el servidor o a través del registro generado. 3.1. Características de los dispositivos El sistema se divide en varias etapas las cuales son realizadas por diferentes sub-sistemas. La adquisición comienza con el sensor de temperatura LM-35 que se encuentra a la entrada del convertidor analógico digital del microcontrolador MCF51QE128 el cual lleva a cabo cierto procesamiento para más adelante enviar los datos obtenidos a través de la interfaz RS-232 hacia el módem GPS/GSM Starlert ST-1. Las características más importantes se resaltan a continuación. 18 Descripción del sistema 3.1.1. Sensor de Temperatura LM-35 El LM-35 es un sensor de temperatura de precisión cuya salida en voltaje es directamente proporcional a una temperatura en grados centigrados. No es necesario calibración externa para proveer una precisión de ±¼ ºC a temperatura dentro de una habitación 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 más detalles consulte el Apéndice D. 3.1.2. Starlert ST-1 El módulo Starlert ST-1 es un dispositivo GPS/GSM de rastreo desarrollado para aplicaciones máquina a máquina (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 además 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 comunicación a través del Internet. Algunas características del dispositivo son las siguientes: ● Conector de dos pines de alimentación de 11 a 30 VDC. ● Interfaz RS-232 de 6 pines. ● Conector GPIO de 10 pines. ● Interfaz SIM. ● Compartimiento para batería. El firmware del Starlert ST-1 esta dividido en tres bloques de software : ● El bootloader y self-test también conocido como ArcFlash. ● El bloque referido como ArcBase que se encarga de controlar las funciones del hardware como el CPU, módem GPS, entre otros. ● La capa de de aplicación también llamada AVL Aplication la cual puede ser configurada utilizando los comandos GP. 19 Descripción 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 energía, utiliza el núcleo V1 ColdFire y puede alcanzar hasta 50 MHz en ciclos de reloj de CPU. Es utilizado en aplicaciones donde el ahorro de energía y el alto desempeño sean especificaciones requeridas. Algunas características del microcontrolador (Figura 3.3) se mencionan a continuación: ● Hasta 50 MHz ColdFire V1 CPU arriba de 2.4V, 40 MHz CPU con más de 2.1V y 20 MHz con 1.8V. ● Su desempeño 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 energía y un modo wait con consumo reducido de energía. ● Típicamente le toma 6 μs recuperarse de los modos stop. ● Reset del watch dog. ● Detector de voltajes bajos. ● Detector de código de operación y dirección ilegal. ● Convertidor A/D de 24 canales y 12 bits de resolución. ● Dos comparadores analógicos. ● 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 propósito general, 16 interrupciones de teclado y 16 bits de E/S rápidos de propósito general conectado al bus local del CPU de alta velocidad. 20 Descripción 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 periféricos con esta tarjeta se puede intercambiar fácilmente de un microcontrolador a otro. La tarjeta de desarrollo permite que la programación del microcontrolador se pueda realizar mediante un cable USB además de utilizarlo como fuente de voltaje. Entre otras características, el DEMOQE128 como el de la Figura 3.4 tiene: ● Puerto serial RS232 con conector DB9. ● Switch de encendido y apagado con LED indicador. ● Botón de Reset y LED indicador con habilitador. ● Circuitería para un oscilador externo. ● Acelerómetro de 3 ejes con habilitador. ● 8 LED para usuario. 21 Descripción del sistema ● 4 botones de presión para usuario. ● 1 zumbador con habilitador. ● Potenciómetro de 10 KΩ. ● Dimensiones: 3.5” x 4”. ● Entrada de alimentación: ○ Cable USB: 5VDC, 500 mA. ○ Conector de DC: conector de 2.5/5.5mm tipo barril, 5VDC a 12 VDC. ○ Dos baterías tipo AAA. Figura 3.4: DEMOQE128 [12] 22 4. Configuración y Programación 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 desempeño; además, 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, periféricos 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 desempeño. El MCF51QE128 utiliza el núcleo mejorado V1 ColdFire que es una versión 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 periféricos operan hasta 25.165MHz. 4.1. Arquitectura V1 ColdFire El núcleo del ColdFire tiene como principal característica su organización 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 función 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 dirección de instrucción (IAG) ○ Ciclo de pre-carga de instrucción (IC) ○ Buffer de Instrucciones (IB) OEP de dos etapas: 23 Configuración y Programación del microcontrolador ColdFire ○ Decodifica y selecciona / Ciclo de pre-carga del Operando (DSOC) ○ Generador de Direcciones / Ciclo de Ejecución (AGEX) Figura 4.1: Segmentos del V1 ColdFire [5] El ColdFire cuenta con dos modelos de programación: el usuario y el supervisor. El modo de programación es elegido a través 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 propósito 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, además también son usados como índices para el cálculo direcciones efectivas. Los registros de direcciones son usados como punteros a la pila, registros índices o registros de base de direcciones. También 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 dirección de la instrucción en ejecución y el procesador 24 Configuración y Programación del microcontrolador ColdFire automáticamente incrementa el contenido de este registro. ● Registro de Código de Condiciones (CCR). ○ Está compuesto por los 5 bits más bajos de Registro de Estado, lo cual hace que esta porción del registro sea la única disponible en este modo de programación. Este registro es afectado por algunas instrucciones de números 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 implementación 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 programación de supervisor es usado para funciones de sistemas operativos. Los accesos que afectan las características 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 continuación 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 máscara de prioridad de interrupciones así como otros bits de control. ● Registro de base de vector (VBR) de 32 bits. ○ Este registro contiene la dirección base del vector de excepciones en la memoria. El VBR puede, también, trasladar al vector de excepciones a otra localidad diferente a la pre-definida en la memoria. ● Registro de Configuración del CPU (CPUCR) de 32 bits. ○ Este registro provee configuraciones del modo de supervisor para la funcionalidad de un núcleo específico. 25 Configuración y Programación del microcontrolador ColdFire 4.1.1. Modos de Direccionamiento El núcleo V1 ColdFire cuenta con 12 modos de direccionamiento y se listan a continuación: ● 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 instrucción en proceso sea interrumpida debido al programa o un error de sistema, como una llamada de programa, una petición de interrupción o depuración de programa. 4.2. Programación del microcontrolador Con el fin de realizar las funciones deseadas con el microcontrolador, se realiza la programación de algunos de sus periféricos como se verá a continuación. Para la programación del microcontrolador se utiliza el software Freescale CodeWarrior del cual también se mencionan algunas de sus características. 4.2.1. Convertidor Analógico Digital Es comúnmente sabido que los convertidores analógico digital (ADC) son usados en aplicaciones donde es necesario realizar algún tipo de procesamiento de manera digital. Básicamente la entrada de un ADC esta conectada con una fuente acondicionada de tal forma cumpla con los requerimientos del ADC, esta señal analógica, de acuerdo al rango de voltajes del 26 Configuración y Programación del microcontrolador ColdFire ADC, tendrá un equivalente digital y dependiendo de la resolución del ADC, será la precisión que obtendremos de los datos adquiridos a través del ADC. Se pueden clasificar los ADC de acuerdo a la técnica de conversiones que realizan de la siguiente forma: aproximaciones sucesivas, escalera, delta-sigma, entre otros. Característica Voltaje de Alimentación Voltaje de Tierra Voltaje de Referencia Alto Voltaje de Referencia Bajo Voltaje de Entrada Capacitancia de Entrada Resistencia de Entrada Resistencia de la fuente analógica Frecuencia de reloj de conversión 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 válida) Alta velocidad (ADLPC=0) Baja potencia (ADLPC=1) Sím VDDAD ΔVDDAD ΔVSSAD VREFH VREFL VADIN CADIN RADIN RAS fADCK Mín Típ1 1.8 --100 0 -100 0 1.8 VDDAD VSSAD VSSAD VREFL --4.5 -5 Máx 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 kΩ MHz 1 Valores típicos asume VDDAD = 3.0V, Temp = 25C, fADCK = 1.0MHz a menos que se indique lo contrario. Nota: VDD y VSS corresponden al voltaje de alimentación y de la tierra del microcontrolador respectivamente. Tabla 4.1 – Condiciones de operación del ADC. El sistema de monitoreo está basado en la adquisición de datos, para ésto, el MCF51QE128 tiene entre sus periféricos un módulo convertidor analógico digital con el cual se pueden tomar muestras de una señal analógica, dichas muestras son procesadas en el microcontrolador para ser enviadas por el puerto serial. Entre las características más importantes del ADC está su algoritmo de aproximaciones sucesivas con 12 bits de resolución, 28 entradas analógicas, un selector de longitud de datos de salida (8, 10 y 12 bits), conversión simple o continua, interrupción y bandera de conversión completa, disparador asíncrono por hardware seleccionable y comparación automática con interrupción para mayor que, menor que o igual que algún valor programado. En la Tabla 4.1, se muestran algunas condiciones de operación del ADC. 27 Configuración y Programación del microcontrolador ColdFire Característica Condiciones Corriente de Alimentación ADLPC = 1 ADLSMP = 1 ADCO = 1 Corriente de Alimentación ADLPC = 1 ADLSMP = 0 ADCO = 1 Corriente de Alimentación ADLPC = 0 ADLSMP = 1 ADCO = 1 Corriente de Alimentación ADLPC = 0 ADLSMP = 0 ADCO = 1 Corriente de Alimentación Stop, Reset, Módulo apagado Alta velocidad (ADLPC=0) Fuente de reloj asíncrona Baja potencia (ADLPC=1) Tiempo de conversión (incluye tADS) Tiempo de muestreo Muestreo corto (ADLSMP=0) Sím Mín Típ1 Máx Unidad IDDAD -- 120 -- μA IDDAD -- 202 -- μA IDDAD -- 288 -- μA IDDAD -- 0.532 -- mA IDDAD -- 0.007 0.8 2 3.3 5 1.5 2 3.3 μA 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 ±1 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 cuantización EFS EQ Modo 10 bits Modo 8 bits MHz Ciclos ADCK (Ver [4]) Ciclos ADCK (Ver [4]) LSB2 LSB2 LSB2 1 Valores típicos 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 – Características eléctricas del ADC. El módulo ADC requiere algunas conexiones externas como son los canales de entrada analógicos, voltajes de referencia, fuente de volaje y tierra analógicas. Los voltajes de referencia 28 Configuración y Programación del microcontrolador ColdFire alto y bajo están internamente conectados a la fuente de voltaje y tierra respectivamente, a su vez, las señales de fuente de voltaje del ADC, están 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 alimentación es de 3V, lo cual significa que cualquier señal que se requiera conectar al microcontrolador a través del ADC, su voltaje de salida no debe de superar al voltaje de alimentación. En la Tabla 4.2, se pueden observar algunas características eléctricas del ADC. Las especificaciones que cumple el convertidor para funcionar dentro del sistema es la longitud de datos de 10 bits. Esta entre otras características son modificables en los registros correspondientes al módulo ADC. Este módulo contiene dos registros de estado y control, uno de configuración, dos de datos y dos de comparación. Figura 4.2: Diagrama a Bloques del Convertidor A/D [5] El ADC utiliza dos disparadores para comenzar el proceso de conversión; uno por software, en el cual al escribir un valor válido de canal en el Registro de Estado y Control 1 (Figura 4.3) en los 5 29 Configuración y Programación del microcontrolador ColdFire bits referentes al ADCH (Canal del ADC); el otro disparador que se puede elegir es por hardware, y depende de la señal interna del módulo llamada ADHWT que se ilustra en la Figura 4.2, cuando se presenta un flanco de subida en esta señal el ADC comienza las conversiones, para provocar este flanco de subida, se utiliza al módulo Real-Time Counter (RTC). Cuando el registro contador y el registro de módulo igualan sus valores, el RTC puede generar la condición recién 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, además, se aborta cualquier conversión en proceso y se inicia una nueva conversión si el ADC se encontraba inactivo. Para esta aplicación con este registro se habilita la interrupción de conversión completa, también se selecciona el canal 0 de entrada y se deshabilita la conversión continua, de esta forma cada vez que ocurra un disparo de conversión solo realice una conversión, el módulo RTC actúa como disparador de conversión. Figura 4.3: Registro de Estado y Control 1 (ADCSC1) ● COCO (Conversion Complete Flag): Si está deshabilitada la opción de comparación la bandera se enciende cuando una conversión se termina, de otra forma, se enciende cuando se completa la conversión y el resultado de la comparación es verdadero. ● AIEN (Interrupt Enable ): Habilita y deshabilita la interrupción de conversión completa. ● ADCO (Continuous Conversion Enable): Selecciona entre una conversión o varias conversiones después del disparo de conversión. ● ADCH (Input Channel Select): Selector de uno de los canales de entrada. El registro de estado y control 2 controla la función de comparación, el disparo de conversión y conversión activa del módulo ADC. Para que el contador de tiempo real pueda disparar al ADC para convertir se escribe sobre el bit que configura esta opción como se muestra en la Figura 4.4. 30 Configuración y Programación del microcontrolador ColdFire Figura 4.4: Registro de Estado y Control 2 (ADCSC2) ● ADACT (Conversion Active): Indica si una conversión está en proceso. ● ADTRG (Conversion Trigger Select): Selecciona entre disparo por hardware o software. ● ACFE (Compare Function Enable): Habilita y deshabilita la función de comparación. ● ACFGT (Compare Function Greater Than Enable): Configura la función de comparación para disparar cuando el resultado de la conversión de entrada es mayor que o igual al valor comparado. Con el registro de configuración del ADC se configura el uso de la configuración de bajo consumo de energía y la opción de muestreado largo. La estructura de este registro se observa en la Figura 4.5. Figura 4.5: Registro de Configuración (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 (Conversión 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 después de un reset el registro de configuración contiene en todos sus campos ceros 31 Configuración y Programación del microcontrolador ColdFire lógicos, 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 periféricos necesarios para el funcionamiento de todo el sistema es el Contador de tiempo real o Real-Time Counter (RTC). Este módulo comprende un contador de 8 bits, un comparador de 8 bits, varios prescaladores binarios y decimales, tres fuentes de reloj y una interrupción periódica programable. Como se hizo mención anteriormente, la función de este módulo es actuar como disparador para el convertidor analógico digital y este último comience a realizar conversiones que se considera como la primera tarea del microcontrolador. Las características generales del contador de tiempo real contienen: ● ● Contador de 8 bits ○ Módulo de 8 bits para límite de coincidencia ○ Interrupción en coincidencia periódica 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 configuración de este módulo es bastante simple ya que consiste en solo tres registros: el registro de estado y control, el registro contador y el de módulo. Cuando ocurre un reset en el microcontrolador el registro contador y el de módulo 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 también 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 configuración, es posible cambiar la fuente de reloj para el RTC así como el valor prescalador a uno como los que 32 Configuración y Programación 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 módulo 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 módulo coincide con el valor contenido en el registro de conteo, entonces el RTC provoca una petición de interrupción activando la bandera de interrupción en el registro de estado y control. En este módulo 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 Configuración y Programación del microcontrolador ColdFire ● RTIF (Real-Time Interrupt Flag): Bandera que indica que el registro contador, tiene el mismo valor que el registro de módulo. ● RTCLKS (Real-Time Clock Source Select): Selector de fuentes de reloj para el RTC. ● RTIE (Real-Time Interrupt Enable): Habilita y deshabilita la interrupción del RTIE. ● RTCPS (Real-Time Clock Prescaler Select): Selector de valores divisorios para la fuente de reloj. Una característica 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 energía, lo cual significa que el microcontrolador puede mantenerse en ese estado y regresar a su estado normal cada vez que el RTC provoque una petición de interrupción. 4.3.1. Puerto Serie Los datos que son digitalizados por el ADC son usados por la unidad de proceso para aplicarles algún 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 más comunes suelen ser el despliegue de la información procesada o el almacenamiento de datos. Efectivamente en la parte final del proceso que desarrolla esta aplicación tiene como objetivo la visualización 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 características necesarias para establecer comunicación 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 más 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 sincronización. Ha habido mucho auge en los protocolos basados en la serialización de datos ya que representan mayor ahorro de espacio físico aunque sacrifican un poco la velocidad de transferencia en comparación 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 Configuración y Programación 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 continuación se enuncian las características incluidas en el módulo de comunicaciones serializadas SCI: ● Full-duplex con formato estándar sin regreso a cero (NRZ). ● Transmisor y receptor con habilitadores separados. ● Baud Rates programables. ● Operación de interrupciones o por poleo para: ○ Registro de transmisión vacío y transmisión 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 módem Starlert ST-1 y se observa la interfaz de comunicación serial RS-232. Para establecer una comunicación satisfactoria, el periférico SCI del microcontrolador se debe configurar con las características que de acuerdo al Starlert ST-1 – Getting Started se listan en la Tabla 4.4: Característica 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 Configuración y Programación del microcontrolador ColdFire En la configuración 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 periféricos que está derivada de la frecuencia con la que trabaja todo el sistema. La generación del reloj ocurre en el mismo chip y depende del módulo 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 módulo 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: Distribución 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 características 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 módulo se pueden conseguir 12MHz de frecuencia de bus con la cual se logra alcanzar el baud rate especificado en la guía de inicio del Starlert ST-1. 36 Configuración y Programación 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 continuación: ● 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 señal 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). Además 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 operación del oscilador externo. 37 Configuración y Programación 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 señal 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 continuación, 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 máxima 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 después de que haya sido completado los ciclos de inicialización del reloj del oscilador externo. ● FTRIM (ICS Fine Trim): Controla el ajuste más pequeño de la frecuencia de reloj de la referencia interna. 38 Configuración y Programación 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 comunicación satisfactoria del microcontrolador y el Starlert ST-1. El módulo Serial Communications Interface (SCI) es el que controla las características de comunicación siguiendo el protocolo RS-232. Para su configuración, este módulo 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 operación o se congela mientras el microcontrolador esta en modo de espera. 39 Configuración y Programación 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 más detalles consulte el manual de referencia [4]). ● ILT (Idle Line Type Select): Selecciona si el contador de bits de caracter incativo comienza después del bit de inicio o después del bit de parada. ● PE (Parity Enable): Habilita la generación y revisión 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 interrupción por hardware de TDRE (Transmitter Data Register Empty Flag). ● TCIE (Transmission Complete Interrupt Enable): Habilita la interrupción por hardware de TC (Transmission Complete Flag). ● RIE (Receiver Interrupt Enable): Habilita la interrupción por hardware de RDRF (Receive Data Register Full Flag). ● ILIE (Idle Line Interrupt Enable): Habilita la interrupción 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 condición de wakeup. 40 Configuración y Programación 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 interrupción del receptor cuando el registro de datos contiene un dato nuevo. En el registro de control 3 simplemente mantenemos desactivadas las demás 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 dirección 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 interrupción por hardware. ● NEIE (Noise Error Interrupt Enable): Habilita la bandera de error de recepción por ruido para generar peticiones de interrupción por hardware. ● FEIE (Framing Error Interrupt Enable): Habilita la bandera de error en la trama de bits para generar peticiones de interrupción por hardware. ● PEIE (Parity Error Interrupt Enable): Habilita la bandera de error de paridad para generar peticiones de interrupción por hardware. A continuación se debe configurar el baud rate siguiendo la fórmula tomada del manual de referencia del microcontrolador: 41 Configuración y Programación del microcontrolador ColdFire El vector de bits SBR12:SBR0 se encuentran en dos registros del módulo 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 interrupción por hardware para la bandera LBKDIF (para más detalles consulte el manual de referencia [4]). ● RXEDGIE (RxD Input Active Edge Interrupt Enable): Habilita la interrupción por hardware para la bandera RXEDGIF (para más detalles consulte el manual de referencia [4]). ● SBR (Baud Rate Modulo Divisor): Fija el módulo 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 módem 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 ningún envio en proceso; el dato que se requiera ser enviado a través del puerto serie, debe de almacenarse en el registro de datos del SCI o SCI Data Register (SCIxD). El módulo SCI también cuenta con un registro de corrimiento de transmisión, cuando el SCI esta configurado para enviar datos de 8 bits, el 42 Configuración y Programación 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 configuración y con la bandera de estado transmt data register empty (TDRE) en nivel lógico alto que indica que se puede escribir datos al registro de transmisión SCIxD. Toda la información adicional acerca de los periféricos 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 diseños en los sistemas desarrollados por Freescale. Esta versión en particular está diseñada para trabajar con microcontroladores Freescale basados en las arquitecturas RS08, HC(S)08 y ColdFire V1. Existen también 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 Configuración y Programación del microcontrolador ColdFire CodeWarrior, mostrado en la Figura 4.15, no solo permite usar su interfaz para escribir código fuente en C/C++ y ensamblador; también ofrece la capacidad de depurar proyectos de manera gráfica, visualizando el código desensamblado, datos en memoria y en los registros de propósito específico y general. Entre las características más importantes de esta versión tenemos: ● Ensamblador ilimitado ● Compilador C limitado en tamaño de código objeto a 32KB para RS08/HC(S)08 y 64KB para ColdFire V1. Para C++ limitado a 1KB. ● Inicialización de dispositivos para ensamblador y C. ● Processor Expert con Basic Beans. ● Visualización de datos / Estimulación E/S permitido para 1 componente con 3 instrumentos. ● Programador de la memoria Flash HIWAVE. Figura 4.16: Código fuente implementado en el microcontrolador. 44 Configuración y Programación 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 más conciernen en la creación de nuevo código está el archivo de cabecera MCF51QE128.h el cual contiene todas las declaraciones de variables que en memoria corresponden a los registros de configuración de todos los periféricos incluidos en el microcontrolador. La estructura que se utilizó es la que se muestra en la Figura 4.16. CodeWarrior también genera otro archivo por el cual el desarrollador suele empezar a escribir código que es el main.c. Los demás archivos dentro de la carpeta de Sources (a excepción de primitive.c, primitive.h y bithandler.h) corresponden a los periféricos usados del microcontrolador. Se utiliza un archivo de código fuente C para cada periférico y a cada uno le corresponde un archivo de cabecera H. Los archivos de cabecera con terminación .h que corresponden a cada periférico 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 algún registro. ● BITSET(REGISTER, BIT) – Escribe un '1' lógico en el bit 'BIT' del registro 'REGISTER'. ● BITCLR(REGISTER, BIT) – Escribe un '0' lógico 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 máscara 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 Configuración y Programación del microcontrolador ColdFire adc.c actúa como manejador del convertidor analógico digital del MCF51QE128. ● adc_init – Esta función escribe a los registros del convertidor A/D los datos necesarios para configurarlo de acuerdo a las características mostradas en la tabla 4.6: Característica Reloj de Entrada Divisor de Reloj del ADC Resolución Canal Activo Disparador de conversión Valor Bus Clock 8 10 bits Canal 0 Hardware Tabla 4.6 – Configuración del ADC Para este microcontrolador la señal 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 módulo RTCMOD. ● adc_isr – Subrutina que da servicio a la interrupción del Convertidor analógico digital: ○ ○ Leer las muestras obtenidas que están 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 leída se acumula en un acumulador. ○ Un contador de conversiones se incrementa. ○ Si el contador de conversiones alcanzó un número preestablecido ■ El acumulador se divide entre el número 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 módulo contador de tiempo real. 46 Configuración y Programación del microcontrolador ColdFire ● rtc_init – Realiza la configuración 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 través 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 carácter de fin de cadena, ■ Mientras que el registro de datos no este listo para ser escrito, ● ■ Se escribe el carácter al que apunta la variable de entrada. ■ Mientras la transmisión no este completa, ● ■ ● Espera. Espera. Se incrementa el apuntador. receive – Los mensajes que llegan al pin TxD son almacenados en un buffer preestablecido. Esta función es proveída con la dirección 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 línea: ■ 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 dirección del buffer. ■ Incrementa el apuntador del buffer. Guardar un fin de cadena en el buffer. 47 Configuración y Programación del microcontrolador ColdFire ● registro_RX – Interrupt Service Routine del puerto serie que se encarga de leer el octeto recién 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 guardián 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 energía, éste responda de la forma que debe. Esta función hace el llamado a otras dos funciones: InternalClockSource_init() y activateBusClock (). ● InternalClockSource_init – Esta función asigna valores a los registros del módulo de selección 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 sincronía con las señales 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 función hace uso de una de las características importantes del microcontrolador que es la habilitación y deshabilitación de fuente de reloj del bus para los periféricos a través de los dos registros asignados para esta propiedad, de modo que solo los periféricos seleccionados en la entrada de esta función (cpu.h contiene los nombres válidos de los periféricos) utilicen los recursos del microcontrolador ahorrando 48 Configuración y Programación del microcontrolador ColdFire energía de la fuente de alimentación. gpio.c tiene la sola función de usar los LEDs del DEMOQE128 que están conectados al puerto C y al puerto D, entonces, solo modifica los registros de dirección y los bits correspondientes a los LED's se configuran como salidas y después escribiendo valores altos a los bits de cada LED de los registros de datos se apagan los LED's. main.c es el código que contiene la rutina principal del microcontrolador y es donde manda a llamar las funciones dentro de los demás archivos que se acaban de describir. ● main – Rutina principal del proyecto: ○ Llama a las rutinas de inicialización 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 conexión satisfactoria con la red GSM/GPRS. ■ Cuando se escribe a los bits de selección 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 analógicos en digitales. ■ Mientras el ADC sigue habilitado: ● Espera hasta que en la rutina de servicio de interrupción 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 envía a través 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 función utiliza un factor multiplicativo para realizar la conversión de los datos recibidos en el puerto serie a un valor ASCII que represente la 49 Configuración y Programación del microcontrolador ColdFire temperatura. ○ El dato que se proporciona a esta función 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 conversión del ADC, esto es: ○ Tomando en cuenta que por cada 10 mV de incremento corresponde a 1°C, entonces, el dato obtenido de la multiplicación 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 función 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 función, el número de veces indicado también en la entrada de esta función. Esta subrutina sirve para visualizar eventos ocurridos durante la ejecución del programa principal: conexión GSM/GPRS confirmada, conexión fallida con red GSM/GPRS y envío de datos del puerto serie al ST-1 completo. En el Apéndice A se puede observar con mayor detalle el código generado. 50 5. Resultados Con el fin de lograr los objetivos propuestos en la Introducción de este trabajo, se hicieron una serie de pruebas a todo el sistema, sin embargo, aún 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 configuración y el funcionamiento correcto con del módem transceptor conectado a través del puerto serie a una computadora funcionando como Terminal Serial. Existe software que puede realizar la función de terminal, como PuTTY, HyperTerminal o Starlert Admin que, además, también 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 envía el ST-1 desde que es alimentado hasta que se conecta a la red GSM/GPRS, y así enviar al servidor mensajes en código 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 módem, si se genera un evento GPRS Registration False significa que el módem ha perdido su registro GPRS. En las primeras pruebas de observación 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 conexión con la red GSM/GPRS: GPRS Event (00000001 00000000) - GPRS Registration 1 GPRS Event (00000001 00000000) - GSM Registration 1 (was 1) Una vez leídas estas cadenas se pueden enviar paquetes de datos a través 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 confirmación: Done Serial Data: 992008Prueba 1 Sending ... Length – 17 Buffer – 992008Prueba 1 UDP Message Sent – Waiting For Write Complete GPRS Event (81001424 00000000) - Write Complete El servidor del cual se hizo una breve mención en el Capítulo 3, captura la información de recepción 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 además de poder actuar como terminal para el puerto serie, es posible realizar una conexión 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 información: 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 envío de caracteres ASCII al servidor. Las cadenas de caracteres que envía 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 módulo transceptor. Las cadenas que se acaban de mostrar son suficientes para conocer la información 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 información a través del puerto serie pero solo cuando el ST-1 se conecte a la red GSM/GPRS y configurado apropiadamente. Antes de utilizar la información recién dada, primero fue necesario programar los periféricos que se mencionaron en el Capítulo 4. Los periféricos se configuraron, primeramente, de manera separada para comprobar el funcionamiento correcto de los mismos. 5.1. Programación del Convertidor Analógico Digital. El inicio de conversiones del ADC depende de los flancos de subida en la señal 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 lógicos al puerto que está interfazado con los LED's del DEMOQE128. El convertidor analógico digital se programó para utilizarlo con una fuente de poder y así poder simular la salida de voltaje del LM-35 con una relación de 10 mV/C y utilizando los LED's incluidos en la tarjeta de desarrollo DEMOQE128 se observó la forma digital leída por el convertidor. La siguiente prueba consistía 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 recién descrita, la computadora personal ejecuta el CodeWarrior, que como ya se mencionó, se utiliza para programar y depurar el código 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 módulo ADC del microcontrolador fue configurado con una resolución de 8 bits; si se toma en cuenta que el voltaje de alimentación 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 módulo ADC realiza correctamente la conversión ya que en la fuente de voltaje, se tiene un valor de 1.19 V lo cual es muy cercano al obtenido después de la conversión. Figura 5.2: Prueba del Convertidor A/D 5.2. Programación del Puerto Serie Después de haber logrado la variación del voltaje y el muestreo de los cambios en el microcontrolador en los tiempos indicados, lo que seguía era la configuración del puerto serie ya que por medio del mismo se hizo la comunicación con el módulo ST-1. El primer problema se presentó en este punto ya que el microcontrolador con la programación predefinida se tenía una frecuencia de bus de 4 MHz, y dadas las características del puerto serie, no era posible alcanzar el baud rate de 57600 que es el especificado en la información 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 transmisión requerida ya que como se mencionó anteriormente, el baud rate depende de la 54 Resultados frecuencia del bus. En el Capítulo 4 de este trabajo, se mencionan los registros utilizados para conseguir las características necesarias para generar la frecuencia de bus que requería la especificación, al programar dichos registros, fue posible alcanzar el baud rate de 57600. Ya que se habían conseguido los primeros objetivos de esta aplicación, 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 implicaría que ambos dispositivos tienen las mismas características de comunicación y así, al conectarlos a través de la interfaz RS-232, pudieran mantener comunicación 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: Envío de caracteres a la Terminal Serial 55 Resultados Establecida la comunicación entre el microcontrolador y la terminal, lo siguiente fue conectar el microcontrolador con el Starlert ST-1. Anteriormente se hizo mención acerca de las eventos que envía 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 instantánea a la red GPRS, entonces a través 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 parámetro como indicador es que también podemos evitar que el microcontrolador envíe información sin que el módem 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 través de un amplificador operacional TL081 configurado como seguidor de voltaje, que como ya es sabido, sirve para acoplar impedancias ya que al hacer la conexión directa, se perdía el voltaje de salida del sensor. En el Apéndice C se encuentra contenido el diagrama esquemático del sistema donde se puede observar lo descrito así como en la Figura 5.4 se observa de manera física 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 módem transceptor Starlert ST-1, es posible enviar todo tipo de datos en hacia el servidor a través de la red GSM/GPRS, para esta aplicación, enviamos 56 Resultados caracteres ASCII que representan una medida de temperatura en grados centígrados con punto flotante y dos decimales de precisión. El envío de caracteres se hace en intervalos de 5 minutos una vez que el módem ha establecido comunicación correcta con la red GSM/GPRS. 5.3. Programación del Applet en Java. Para observar de manera gráfica 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 programación del Applet en Java con el fin de generar el panel donde se despliega la gráfica, que para generarla, se utilizó una librería externa llamada JFreeChart disponible en el sitio web http://www.jfree.org/jfreechart/. El proceso de despliegue de una gráfica con JFreeChart es relativamente sencillo; se debe crear una colección de valores que representan todos los puntos de la gráfica y se genera la gráfica creando una instanciación de la clase JFreeChart, donde se agregan los nombres de los ejes así como el de la gráfica y la colección recién creada; para este Applet se instancía un objeto de clase ChartPanel que se utiliza para colocar la gráfica generada y poder desplegarla en el panel principal del Applet. Aunque aún queda desarrollo para el Applet, se puede acceder en cualquier navegador de Internet que tenga instalado el complemento necesario para ejecutar la máquina virtual de Java. Básicamente desde el navegador, se accede a la página web del servidor, http://movil.citedi.mx/~minguez y dependiendo del navegador, hará una petición para ejecutar la clase perteneciente al Applet, y el resultado se debería 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 código de la clase; la escala de tiempo se actualiza cada hora así como la fecha dada en el título de la gráfica. El código escrito para el Applet así como el utilizado en la página web se encuentran en el Apéndice B. 57 Resultados Figura 5.5: Visualización de gráfico de temperatura en Internet 58 6. Conclusiones Durante el desarrollo del sistema de monitoreo se tuvo la oportunidad de implementar tecnologías del área de las comunicaciones y de la información. El módem GPS/GSM Starlert ST-1 tiene como base un microcontrolador 8051 que controla las funciones de localización por satélite GPS, además también realiza el control de las funciones de transmisión de datos GPRS dentro de la misma unidad. El DEMOQE128 es un módulo de desarrollo que trae varios dispositivos periféricos interfazados al microcontrolador MCF51QE128, lo cual facilita y agiliza la implementación de numerosas aplicaciones. Además, el sistema también cuenta con un servidor que se encuentra físicamente en el laboratorio de Sistemas Inmersos que fue utilizado para almacenar la información enviada por el ST-1, los archivos de la página Web y la clase que contiene el Applet. Un problema técnico que se presentó fue en la comunicación serial entre el microcontrolador y el ST-1 ya que la tasa de transmisión de bauds que el microcontrolador podía alcanzar con la frecuencia de bus predefinida no era suficiente para sincronizarse con el Starlert ST-1 para comunicarse; el módulo serial solo provee un registro para modificar el valor correspondiente al baud rate así que fue necesario modificar los registros del CPU, principalmente el módulo que controla la fuente de reloj interna del sistema a través del cual se incrementó la frecuencia. En lo que respecta a la programación y configuración del microcontrolador, no hubo mayor inconveniente, debido a la amplia documentación que existe en Internet y a la experiencia previa con el uso de microcontroladores muy similares así como sus herramientas. El desarrollo del Applet podría considerarse como la parte más compleja de alcanzar dentro de este proyecto ya que la experiencia personal en programación 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 programación y encontrar las librerías adecuadas para concluir con el objetivo dado. En esta Tesina se menciona el uso de varias tecnologías y es importante destacar el las herramientas de software necesarias para la implementación, evaluar diferentes opciones y compararlas entre sí. La que se utilizó en su mayor parte fue la herramienta de programación Freescale CodeWarrior para el microcontrolador MCF51QE128 que en su versión gratuita 59 Conclusiones ofrece los componentes necesarios para programación y depuración de código. El diseño de páginas Web ha resultado muy popular debido al crecimiento del número de usuarios de Internet que se ha presentado en la última década que en la actualidad, tan solo en México, es de 23,700,000 habitantes de acuerdo al Internet World Stats (http://www.internetworldstats.com/), por consiguiente, existen muchas herramientas que cumplen dicha función como DreamWeaver de Adobe, FrontPage de Microsoft y para nuestra aplicación dado el nivel de complejidad de la página Web desarrollada, se utilizó el Composer de Mozilla que es parte del conjunto de aplicaciones de Internet conocido como SeaMonkey que además del editor de HTML también cuenta con un navegador de Internet, gestor de correo electrónico y grupo de noticias, entre otras aplicaciones. Un editor HTML a diferencia de un editor de texto común, nos permite visualizar la página Web y auto-generar las etiquetas apropiadas para que puedan ser interpretadas por el navegador de Internet y así mostrar la página como se especifique. Las herramientas potenciales para la programación del Applet son diversas, desde un simple editor de texto como Notepad, o alguno otro más complejo como el SciTE que sin ser un ambiente de desarrollo pueden compilarse y ejecutarse los códigos de C/C++ o Java especificando en la variable de ambiente PATH la ubicación del compilador; otros programas que entran dentro de la categoría de IDE (como el CodeWarrior) para programar en Java que existen pueden ser NetBeans IDE y Eclipse IDE; estos dos al parecer son los más utilizados para realizar esta tarea, ambos gratuitos, de código abierto y multiplataforma que facilitan la creación de código y el manejo de proyectos extensos, así como el uso de librerías externas y depuración de código, una característica que llama la atención es la revisión de sintaxis en tiempo real que a la vez, cuando es detectado algún error, proporcionan sugerencias al programador para corregir errores en el código; NetBeans, de manera predeterminada, ofrece la opción de programación 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 tecnologías (Java, bases de datos, C/C++, etc.), pero Eclipse IDE ofrece más soluciones orientadas al desarrollo de aplicaciones embebidas, así que posiblemente sea por eso por lo que es más utilizado, por lo menos en el área de los sistemas embebidos. En conclusión, 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 tecnologías que existen en la actualidad y que cada día resultan más accesibles. Es importante comprender estas tecnologías y seguir capacitando gente para alcanzar sistemas más complejos que ayuden a las diferentes ramas del desarrollo humano. 6.1. Trabajo Futuro Los puntos que a continuación se enuncian, se consideran como características que pueden complementarse al trabajo presentado que como cualquier otro proyecto, el desarrollo va evolucionando conforme se avanza y se pueden proponer nuevas características también dependiendo de la forma en la que evolucionan las tecnologías así como el mercado al que va dirigido; en este apartado se consideran las más factibles a corto y mediano plazo: ● Envío de comandos GP al Starlert ST-1 para configurar automáticamente la capa AVL Aplication.  Optimización de código fuente C del microcontrolador para reducir el tamaño del mismo y mejorar tiempos de ejecución.  Actualización del Applet cada hora o en cada intervalo de tiempo ya sea leyendo automáticamente 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 gráfico en pantalla.  Crear un marco en el Applet para visualizar los valores de forma tabular y sea un marco junto a la gráfica o generar una pestaña para cada tipo de visualización.  Diseño y construcción 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 móviles con GSM/GPRS y GPS, CITEDI, 2007. [14]S. Casillas et. al., Sistema de telemetría 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 Apéndice A En este apartado se localiza todo el código fuente en lenguaje de programación 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 // 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] = " No GPRS Registration\r\n"; gsmError[27] = " No GSM Registration\r\n"; udpDisconnected[46] = " UDP Connection Disconnected\r\n"; gprsNoRegEvent[71] = " GPRS Event (00000000 00000000) - GPRS Registration 0\r\n"; gsmNoRegEvent[73] = " GPRS Event (00000000 00000000) - GSM Registration 0 (was 0)\r\n"; gprsReady[71] = " GPRS Event (00000001 00000000) - GPRS Registration 1\r\n"; gprsReady2[73] = " GPRS Event (00000001 00000000) - 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 Apéndice 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 Apéndice A int i = 0; for(;;) { receive(textBuffer); if (textBuffer[1] == '

13 downloads 206 Views 3MB Size

Recommend Stories


UNIVERSIDAD VERACRUZANA FACULTAD DE MEDICINA TESINA QUE PARA OBTENER EL TITULO DE: MEDICO CIRUJANO PRESENTA: LUISA MARIA DOMINGUEZ CORONA
UNIVERSIDAD VERACRUZANA FACULTAD DE MEDICINA SfNDROME D EL TUNEL DE CARPO COMO ENFERMEDAD LABO RAL (UN ESTUDIO DE CASO EN OPERARIOS DE LA PLANTA POSC

IPN ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN TESINA QUE PARA OBTENER EL TITULO DE:
IPN ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN TESINA QUE PARA OBTENER EL TITULO DE: INGENIERO EN COMUNICACIONES Y ELECTRONI

TESIS QUE PARA OBTENER EL GRADO DE MAESTRÍA EN DOCENCIA
UNIVERSIDAD AUTÓNOMA DE TAMAULIPAS UNIDAD ACADÉMICA MULTIDISCIPLINARIA DE CIENCIAS, EDUCACIÓN Y HUMANIDADES DIVISIÓN DE ESTUDIOS DE POSGRADO E INVESTI

Story Transcript

INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN Y DESARROLLO DE TECNOLOGÍA DIGITAL

“MONITOREO DE PARÁMETROS A TRAVÉS DE UN SISTEMA DE TELEMETRÍA”

TESINA QUE PARA OBTENER LA ESPECIALIDAD EN SISTEMAS INMERSOS

P R E S E N TA :

DANIEL ISAÍAS MÍNGUEZ VITAL

BAJO LA DIRECCIÓN DE: DR. ROBERTO HERRERA CHARLES

FEBRERO 2009

TIJUANA, B.C., MÉXICO

Dedicatoria A mis padres, Daniel I. Mínguez Rodríguez 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 inspiración a lo largo de mi preparación 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. Mínguez 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 cariño, su apoyo y su alegría.

Agradecimientos Al Dr. Roberto Herrera Charles quien como profesor, consejero y director de Tesina me ayudó durante la Especialidad desde su inicio hasta la terminación del proyecto de Tesina. A mis revisores el Dr. Jesús Francisco Córdoba, M.C. Adolfo Esquivel y Esp. Eduardo Barba por sus observaciones y consejos. Al cuerpo académico 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 compañeros de especialidad Mizael López-Lucho, Aryán Serrano y Branko Ivankovic; a Óscar Muñoz, Rodolfo Jiménez, Carlos Hernández y Sonia Casillas por compartir sus experiencias, aportar sus ideas para la realización 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 través 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 través de la beca de programas inscritos en el PNPC; a los proyectos de investigación SIP-20071264, “Sistema de control de unidades remotas móviles” SIP-20080851 del IPN y “Creación 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 Parámetros a través de un Sistema de Telemetría Resumen En este trabajo se presenta un sistema de monitoreo que realiza la lectura de parámetros de temperatura y enviarlos a un servidor para visualizarlos a través de un Applet generado en Java. El sistema presentado hace uso de varias tecnologías de transmisión de datos que en los últimos años 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 también se encarga de la comunicación serial bajo el estándar RS-232, con un dispositivo transceptor (Starlert ST-1) el cual usa el protocolo de paquetes UDP para realizar el envío de datos a través de la red de Internet por medio de la red celular GSM utilizando el servicio de paquetes GPRS. La información 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 parámetros introducidos al microcontrolador. Una característica sobresaliente de este trabajo es el uso de dispositivos de alto rendimiento que conjuga tecnologías 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 información 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. Introducción........................................................................................1 1.1. Aplicaciones de los Sistemas de Telemetría...................................................................3 1.2. Objetivos del proyecto....................................................................................................6 1.2.1. Objetivo General......................................................................................................6 1.2.2. Objetivos específicos...............................................................................................6 1.2.3. Organización de la Tesina........................................................................................7

2. Antecedentes Teóricos..........................................................................8 2.1. Sistema Global de Comunicaciones Móviles (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. Descripción del sistema....................................................................17 3.1. Características 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. Configuración y Programación 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. Programación del microcontrolador.............................................................................26 4.2.1. Convertidor Analógico 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. Programación del Convertidor Analógico Digital........................................................53 5.2. Programación del Puerto Serie......................................................................................54 5.3. Programación del Applet en Java..................................................................................57

6. Conclusiones......................................................................................59 6.1. Trabajo Futuro...............................................................................................................61

Referencias.............................................................................................62 Apéndice A.............................................................................................63 Apéndice B.............................................................................................80 Apéndice C.............................................................................................85 Apéndice D.............................................................................................86

Índice de figuras Figura 1.1: Proceso de Telemetría................................................................................................1 Figura 1.2: Sistema de RF de AgriNET [1]..................................................................................4 Figura 1.3: Diagnóstico de servicio de un automóvil vía e-mail brindado por OnStar [11]. . .5 Figura 1.4: Estetoscopio Electrónico 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: Transmisión 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 Configuración (ADCCFG)..................................................................31 Figura 4.6: Registro de Estado y Control del Contador de Tiempo Real (RTCSC)..............33 Figura 4.7: Distribución 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: Código 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: Envío de caracteres a la Terminal Serial...............................................................55 Figura 5.4: Sistema Completo.....................................................................................................56 Figura 5.5: Visualización de gráfico de temperatura en Internet...........................................58

Acrónimos en inglés utilizados en la Tesina 3GSM

Third-generation Services for GSM (Servicios de Tercera generación para GSM)

ADC

Analog-to-Digital Converter (Convertidor Analógico Digital)

A-GPS

Assited GPS (GPS Asistido)

APN

Access Point Name (Nombre del Punto de Acceso)

ARP

Address Resolution Protocol (Protocolo de Resolución de Direcciones)

ASCII

American Standard Code for Information Interchange (Código Estadounidense Estandarizado para el Intercambio de Información)

AuC

Authentication Center (Centro de Autenticación)

AVL

Automatic Vehicle Location (Localización Automática 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

Conférence Européenne des Postes et Télécommunications (Organización de estandarización Europea)

CDMA

Code Division Multiple Access (Acceso Múltiple por División de Código)

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 Móviles)

GSMA

GSM Association (Asociación GSM)

HLR

Home Location Register (Registro de Localización 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 Interconexión Local)

M2M

Machine-to-Machine (Máquina a Máquina)

MoU

Memorándum of Understandig (Recordatorio de Entendimiento)

MS

Mobile Station (Estación Móvil)

MSC

Mobile services Switching Center (Centro de Conmutación y servicios Móviles)

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 Comunicación Personal 1900)

PLMN

Public Land Mobile Network (Red Móvil Pública Terrestre)

PPP

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

PSTN

Public Switched Telephone Network (Red de Telefonía Pública Conmutada)

RARP

Reverse Address Resolution Protocol (Protocolo Inverso de Resolución 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 (Módulo 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 Periféricos)

SQL

Structured Query Language (Lenguaje de Consulta Estructurado)

SSH

Secure Shell (Intérprete de comandos Seguro)

TCP

Transfer Control Protocol (Protocolo de Control de Transferencia)

TDMA

Time Division Multiple Access (Acceso Múltiple por División 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 Adaptación y Rango de Transcodificación)

UDP

User Datagram Package (Paquete de Datagrama de Usuario)

UMTS

Universal Mobile Telephone System (Sistema de Telefonía Móvil Universal)

USB

Universal Serial Bus (Bus Universal en Serie)

VLR

Visitor Location Register (Registro de Localización de usuarios Visitantes)

WAN

Wide Area Network (Red de Área Ámplia)

W-CDMA

Wideband – Code Division Multiple Access (Múltiple Acceso por División de Código de Banda Ancha)

WPAN

Wireless Personal Area Network (Red de Área Personal Inalámbrica)

1. Introducción La introducción de nuevas tecnologías ha sido crucial en el desarrollo del hombre, han simplificado infinidad de labores donde era necesario contar con numerosos procesos antes de obtener algún resultado. La observación y control de estos procesos es una tarea muy importante para la obtención de resultados más precisos y puede ser más eficiente si se realiza de forma automática y sin tener que contar con recursos humanos de manera presencial en el lugar donde se realiza este proceso. Aquí es donde la telemetría nos ofrece una solución para esta clase de problemas. La telemetría nos permite realizar mediciones de parámetros físicos 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 ilustración, un sistema de telemetría básico puede ser muy simple, y sin embargo, efectivo; se pueden nombrar varios ejemplos, desde una persona midiendo el tamaño de muestras defectuosas en un lote de producción y enviando los resultados a la persona encargada del área, hasta un sistema controlando una red inalámbrica de sensores monitoreando una zona forestal para detectar posibles incendios y enviando reportes periódicos al guardabosques en turno. Sea el caso de estudio, los componentes de un sistema de telemetría no varían en gran proporción.

Figura 1.1: Proceso de Telemetría

El objeto de observación puede ser cualquier parámetro físico o químico, los cuales son sensados para obtener finalmente ya sea un nivel de voltaje, una variación en frecuencia de alguna señal o incluso datos serializados que cumplan con algún estándar de comunicaciones. Cuando se trata con señales eléctricas analógicas es necesario acondicionarlas y digitalizarlas para convertirse en entrada de un procesador y realizar las operaciones necesarias para colocar 1

Introducción los datos en el medio de transmisión. Se puede considerar, por ejemplo, la actividad eléctrica del corazón medida en un intervalo de tiempo y es sensada con electrodos. El proceso de transmisión de datos es muy parecido a un codificador de información. Los datos que se requieren enviar a través del medio de transmisión deben de cumplir con ciertas características para que puedan utilizar el canal de transmisión; si se envía en forma de paquetes, puede ser requerida información adicional como la del destinatario o el método de envío que se necesita usar; otro ejemplo puede ser cuando la cantidad de información que se envía excede las capacidades del medio de transmisión (como el ancho de banda), entonces, es necesario utilizar algoritmos de compresión o disminuir la tasa de transmisión. El medio de transmisión de datos puede realizarse a través de cables o inalámbricamente. La cantidad de protocolos de comunicación existentes es infinita, y cada uno se ha adaptado de acuerdo a las características presentadas por el ambiente que rodea al medio de transmisión. A través de un medio cableado, se añade a los datos mayor seguridad, integridad e inmunidad al ruido comparado con los medios inalámbricos, además existen topologías diferentes para cumplir con requerimientos de velocidad, acceso y otras características; los medios cableados ofrecen al diseñador una rápida implementación y además sencilla como es el caso del estándar RS-232, aunque para obtener mejores tasas de transmisión 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 científico se desarrollen sistemas muy complejos de codificación y compresión haciendo uso de protocolos robustos como 802.11 y Bluetooth, aunque también existen otros menos complejos como 802.15.4, que es la base de la especificación de Zigbee, que a cambio del uso de perfiles y altas tasas de transmisión, ofrece un alcance muy amplio en áreas abiertas así como un bajo consumo de potencia y así se vuelve una solución altamente eficaz para formar redes de área personal inalámbricas 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 característica importante es el reuso de la infraestructura ya establecida, como es el caso de este trabajo, en el que se utiliza la red móvil GSM/GPRS a través del dispositivo transceptor Starlert ST-1 que realiza el envío de paquetes para hacerlos llegar al servidor. Los medios de transmisión inalámbricos están en constante evolución, cada vez ofrecen 2

Introducción mayor confiabilidad y tasas de transmisión tan altas que ahora vemos como un hecho el poder realizar el envío de señales de video en tiempo real por donde hasta hace apenas algunos años solo era posible transmitir voz. La recepción de datos es similar a la transmisión en el sentido que se tienen que cumplir con los mismos requerimientos de comunicación que están dados por el medio de transmisión, el subsistema que recibe la información enviada por el transmisor, debe ser capaz de interpretar el protocolo utilizado. En esta parte, si existiera alguna codificación en el envío de datos, el dispositivo encargado de la recepción debe ser capaz de decodificarlos y almacenarlos para más adelante se puedan visualizar como datos numéricos de manera tabular o con gráficos. La visualización de datos puede estar relacionada con el sub-sistema que recibe los datos, ya que un proceso puede estar encargado de la recepción y otro del despliegue de la información que se reproduce en el dispositivo local visualizador. En el caso de la aplicación que se presenta en esta Tesina, el proceso de despliegue está almacenado en el servidor y se ejecuta en la máquina virtual de Java instalada en el cliente.

1.1. Aplicaciones de los Sistemas de Telemetría Los sistemas de telemetría han logrado un aporte importante dentro de nuestra sociedad, y la funcionalidad que ofrecen ha hecho que sea más fácil y rápido introducirlos a diversas áreas de estudio y es por ello que cada vez es mas común 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 telemetría puede aportar a este campo. Una red de sensores de humedad o una base meteorológica ofrecen mejoras en la obtención de cultivos al tener un monitoreo completo de los mismos. El uso apropiado de recursos para producir nuevas áreas de explotación agrícola también representa una mejora significativa, por ejemplo, si se tiene controlada la cantidad de fertilizante disponible y además

3

Introducción se puede tener acceso a esta información de manera remota por medio de bases de RF de control (Figura 1.2) combinado con tecnologías como el Internet.

Figura 1.2: Sistema de RF de AgriNET [1]

Otro ejemplo muy común que demuestra la importancia del uso de sistemas de telemetría se puede observar en los sistemas de seguridad vehicular como los que desarrolla una compañía llamada OnStar desarrollada por General Motors. El objetivo de OnStar es ofrecer a sus usuarios gran rapidez de respuesta en caso de accidentes automovilísticos ya sean a causa de siniestros o robo del vehículo. Los usuarios de vehículos equipados con este sistema como el de la Figura 1.3 pueden obtener de manera automática, por e-mail, diagnósticos mensuales, servicio de navegación a través de voz, respuesta automática 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 vehículo. Todas los servicios mencionados con anterioridad son posibles gracias al uso de un sistema que combina el monitoreo constante del automóvil con tecnología GPS para la localización del vehículo así como el uso de redes celulares. Básicamente el usuario puede contactar directamente a un asesor de OnStar haciendo uso de los componentes básicos de un teléfono celular, es decir, un micrófono integrado, una antena celular y la red celular; mientras tanto el asesor del servicios localiza al vehículo utilizando el sistema de localización GPS. En otro caso, cuando las bolsas de 4

Introducción aire del vehículo son desplegadas, un mensaje es enviado al sistema de telemetría del vehículo equipado el cual se comunica al centro de servicios utilizando la misma red celular.

Figura 1.3: Diagnóstico de servicio de un automóvil vía 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 población en el mundo, mayor es el número de gente que necesita tratamientos médicos 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 kilómetros para poder tratar sus enfermedades lo cual se traduce en gastos muy grandes. La habilidad de la telemedicina para proveer cuidado médico interactivo utilizando tecnología moderna y las telecomunicaciones es fundamental para resolver este tipo de problemas que nuestra sociedad enfrenta. Ya sea atención médica 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 opción. La empresa AMD Telemedicine es líder a nivel mundial como proveedor de instrumentos médicos (Figura 1.4) usados en telemedicina. Los instrumentos médicos que esta empresa provee pueden ser utilizados para distintas áreas del cuidado de la salud como son la cardiología, odontología, dermatología, otorrinolaringología, oftalmología, patología, pediatría, tratamientos de emergencia, salud de la mujer, cuidados primarios, radiología, ultrasonidos y monitoreo de signos vitales.

5

Introducción

Figura 1.4: Estetoscopio Electrónico Digital de AMD Telemedicine [2]

Así como los mencionados aquí, existen otros ejemplos más en la actualidad (tratamiento y distribución de gas, distribución de agua potable, control de incendios forestales, solo por mencionar algunos) que poco a poco están ayudando a mejorar diversos procesos, acortando distancias significativamente, reduciendo costos, mejorando tiempos y otros factores más que están involucrados en este intercambio de información a larga distancia. Y una de las cosas más importantes que cabe resaltar es el hecho de que somos capaces de implementar usos nuevos a tecnologías existentes y, por lo tanto, mejorarla.

1.2. Objetivos del proyecto. 1.2.1. Objetivo General. Desarrollar un sistema de adquisición de datos que puedan ser enviados a través de un módem GSM/GPS usando el servicio de datos GPRS hacia un servidor y monitorearlos desde una computadora con acceso a Internet.

1.2.2. Objetivos específicos. 1. Comprender el funcionamiento del sistema actual de telemetría [14]. 6

Introducción 2. Configurar el módulo convertidor analógico digital del microcontrolador. 3. Configurar el módulo serial del microcontrolador. 4. Acoplamiento del sensor de temperatura al microcontrolador. 5. Enviar datos del microcontrolador al módem ST-1. 6. Desarrollar un Applet en Java para la visualización de datos en el servidor.

1.2.3. Organización de la Tesina. Esta Tesina esta dividida principalmente en 6 capítulos. El presente capítulo fue una introducción acerca de los sistemas de telemetría, desde su definición hasta algunos ejemplos existentes en la actualidad, además se presentan los objetivos de la Tesina. El capítulo 2 explica brevemente la red de telefonía inalámbrica GSM, así como algunos de sus componentes entre los que destaca el GPRS del cual también se hace mención finalizando con una descripción del protocolo UDP. En el capítulo 3 detalla las características de los componentes que conforman al sistema presentado en este trabajo, así como su participación dentro del mismo. El capítulo 4 se centra en el microcontrolador MCF51QE128 comenzando por la arquitectura V1 ColdFire y explicando los periféricos usados, sus características, registros internos y la programación de los mismos. Los resultados obtenidos y el desarrollo de las pruebas se detallan en el capítulo 5. Por último, las conclusiones y trabajo futuro propuesto para este proyecto se mencionan en el capítulo 6.

7

2. Antecedentes Teóricos Para la realización de este proyecto se hace uso de tecnologías desarrolladas para los sistemas de telecomunicaciones; la red de telefonía 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 transmisión inalámbrica de información con el desempeño de conexiones cableadas. Además, también se hace mención al Protocolo de Datagrama de Usuario (UDP) que es el protocolo utilizado por el Starlert ST-1 para enviar sus datos a través de Internet.

2.1. Sistema Global de Comunicaciones Móviles (GSM) GSM es un estándar a nivel internacional en las comunicaciones digitales a través de la telefonía celular; por medio de los servicios que provee, es capaz de realizar la transmisión de voz y datos entre dispositivos móviles a velocidades de hasta 9.6 kbit/s. Al ser reconocida como estándar 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 habían más de 2,500 millones de suscriptores GSM, cifra que representa el 85% del mercado móvil a nivel mundial. Hoy en día, “la familia de tecnologías GSM está formada por GSM, Servicio de Paquetes por Radio (GPRS), Tasas de Datos Mejoradas para la Evolución GSM (EDGE), y servicios de tercera generación (3GSM) también conocido como Múltiple Acceso por División de Código de Banda Ancha (W-CDMA) y su evolución móvil de banda ancha, HSPA (High Speed Packet Access)” [13].

2.1.1. Historia de GSM Aunque la idea de un sistema radio móvil de comunicaciones basado en células surgió en los laboratorios Bell en los años 70's, fue hasta 1982 cuando gracias al Conférence Européenne des Postes et Télécommunications (CEPT) se formó el Groupe Spécial Mobile (nombre original de GSM) para desarrollar un sistema móvil celular estandarizado que pudiera funcionar en el rango de 900 MHz. La causa principal de la necesidad de formar un estándar fue que cuando comenzaron a desarrollarse diferentes sistemas de telefonía celular para cada país dentro de Europa, lo cual resultaba problemático, principalmente porque los equipos se diseñaban con una especificación 8

Antecedentes Teóricos funcional solo para el país donde se desarrollaban, de tal forma que éstos solo funcionaban dentro de las fronteras del mismo. Poco después, 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 países se logró fundar el primer sistema celular digital a través de Europa que más adelante se convertiría en la Asociación GSM (GSMA). En la actualidad, la asociación representa a más de 740 operadores GSM a través de 219 países y territorios del mundo y sirve a más 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 acrónimo GSM cambio a Sistema Global para Comunicaciones Móviles. En ese mismo año se dio a conocer el Sistema Celular Digital 1800 (DCS 1800) que básicamente 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 sería llamado Sistema de Comunicación Personal 1900 (PCS 1900). Durante el siguiente año muchos operadores europeos ya contaban con redes de comunicaciones basados en el sistema GSM el cual captaría la atención a nivel mundial y lograría establecerse en esa índole provocando un éxito comercial para los proveedores del sistema.

2.1.2. Arquitectura GSM La estructura de una red de telefonía celular ofrece una característica 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 señal 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 estación 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 células puedan hacer uso de la misma frecuencia, necesitan estar separadas por una o más células con el fin de evitar interferencias. El reuso eficiente de frecuencias es una característica muy importante ya que el espectro de frecuencias es 9

Antecedentes Teóricos un recurso bastante limitado. A pesar de que el reuso de frecuencias es una ventaja sobresaliente, las redes celulares también tienen algunas desventajas:



Entre mayor es el número de células instaladas, mayor es el costo de la infraestructura y líneas de acceso.



Todas las redes celulares necesitan que conforme se mueve una estación móvil, la llamada activa esté pasando de una célula a otra.



La red debe de estar pendiente de la posición de la estación móvil, 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 móvil que controla el equipo o Estación Móvil (MS) que lo conecta a la infraestructura de la red; dicha conexión se establece mediante el Sub-sistema de Estaciones Móviles (BSS); y por último, el Centro de Conmutación y servicios Móviles

10

Antecedentes Teóricos (MSC) que se encarga de manejar los servicios móviles así como la conmutación de llamadas entre usuarios móviles y otros usuarios móviles o fijos. La estación móvil es el equipo físico que conecta al usuario GSM a la red, este equipo debe de ser portátil y se presenta en varias formas y con distintas potencias. Para establecer una buena comunicación con la red GSM es necesario realizar una autenticación por medio de un Módulo de Identidad del Suscriptor (SIM) el cual es un chip que es insertado en el equipo móvil del usuario con la finalidad de realizar llamadas así como recibirlas, y además, 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 Estación Base (BTS), de acuerdo a su rango de alcance, define el área ocupada de la célula dentro del área de cobertura en la zona donde esta ubicada. Básicamente se trata de un dispositivo transceptor, cuya función es proveer la conectividad entre la red y la estación móvil a través de la interfaz de radio Um. El tamaño de la celda formada por la BTS es inversamente proporcional a la densidad de población 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 operación y telecomunicaciones como el manejo de las llamadas cuando atraviesan más de una celda, la 11

Antecedentes Teóricos configuración de los canales de radio y la conmutación entre frecuencias también conocido como frequency hopping. Entre una o más BTS y el BSC, se forma el BSS el cual utiliza la interfaz Abis para formar esta conexión. Un elemento importante que se considera dentro del BSS o como parte del MSC es la Unidad de Adaptación y Rango de Trans-codificación (TRAU) que sirve para agregarle eficiencia al uso de las frecuencias realizando una compresión de datos con el fin de tener un buen número de llamadas en cierto ancho de banda. El conmutador MSC está basado en el diseño de un ISDN o un PSTN adaptado para brindar funcionalidad extra para redes celulares, como registro, autenticación, ruteo de llamadas, transferencia inter-celdas, entre otros. El MSC se encarga de conectar a la red de radio-teléfonos a la red de teléfonos pública; además, da acceso a la base de datos de la red y al Centro de Autenticación (AuC) el cual verifica los permisos de acceso del suscriptor. Dentro de la red GSM también existe otro sub-centro llamado Registro de Localización de usuarios Locales (HLR) el cual es una base de datos que almacena la información administrativa de los suscriptores, por cada red GSM debe de existir como mínimo una HLR. El Registro de Localización de usuarios Visitantes (VLR) fue ideada con el fin de evitar la sobrecarga de información en el HLR; el VLR también contiene una base de datos con información 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 petición para borrar la información 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 Localización de usarios locales, el Registro de Localización de usuario Visitantes y el Centro de Conmutación y servicios Móviles 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 especificación de la Fase 2+ de los servicios de GSM. Los usuarios TDMA también cuentan con el servicio GPRS. Su aparición ocurre entre los años de 1999 y 2000 usando la misma infraestructura de la red GSM ya existente; las soluciones ofrecidas por este nuevo servicio

12

Antecedentes Teóricos marcó un paso más hacia las redes de tercera generación, también 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 móviles, sobrepasando a las computadoras personales que han estado presentes desde antes. GPRS permite acceso a los servicios de Internet con una tasa de transmisión de hasta 115 kbps usando hasta ocho canales de radio los cuales son asignados a un usuario o compartido por varios usuarios. La aceptación 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 información en casi cualquier lugar. Otra ventaja de este servicio es que la conexión de los usuarios GPRS con la red es de manera permanente de modo que el acceso a la información sea instantánea, y así, aumentar su productividad. Para implementar el servicio GPRS en la red de GSM no es necesario realizar una inversión muy grande para las compañías que proveen de estos servicios ya que GPRS fue diseñado para coexistir con la Red Móvil Pública 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 envío de SMS a través de GPRS. Con la introducción de GPRS y el Protocolo de Internet (IP) a las redes móviles, los usuarios pueden disfrutar mayor rapidez y tasas de transmisión de datos; además, GPRS permite realizar llamadas de datos y de voz simultáneamente. Los usuarios que reciben estos servicios tienen la capacidad de estar conectados siempre a Internet de tal forma que puedan enviar correos electrónicos con archivos adjuntos grandes, contar con el servicio de oficina móvil, navegar por Internet de manera rápida y telemetría. Como se mencionó, la implementación de GPRS en los sistemas de GSM no implican cambios 13

Antecedentes Teóricos muy drásticos en la red existente; para tal fin, se introducen dos nuevos elementos en la red y modificaciones mínimas 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 posición del usuario GPRS dentro de la red, de esta manera el SGSN debe de ser capaz de almacenar información del usuario, el estado del móvil, la identidad del equipo móvil, la información de la celda dentro de la que se encuentra el usuario y el número del VLR que sirve a la estación móvil. 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 continuación:



Líneas Telefónicas usando módems. El acceso es limitado a zonas donde existan conectores de teléfono, la tasa de transmisión de datos alcanzada es de 56 kbps y la conexión se realiza por marcado, además se cobra por la duración de la conexión.



Paquetes de Datos Celular Digital (CDPD). Esta tecnología ofrece tasas de transmisión de hasta 19.2 kbps, el costo de implementación es más alto que GPRS, está diseñado para implementarse sobre los servicios celulares analógicos existentes; es confiable cuando hay pocas llamadas analógicas pero pueden haber pérdidas de datos cuando el volumen de llamadas es grande.



Acceso Múltiple por División de Código (CDMA). A diferencia de GSM/GPRS, CDMA no asigna un canal específico 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 tecnología ofrece 14

Antecedentes Teóricos velocidades de hasta cuatro veces 14.4 kbps. Este servicio no ofrece la característica de conexión 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 más alto esta la capa de aplicación. De esta manera, la capa física/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 aplicación utiliza la sección de datos de la capa de transporte para colocar sus datos.

Figura 2.3: Internet y sus protocolos

En teoría, al tener un diseño basado en capas, es posible realizar modificaciones o cambiar la tecnología en cada capa sin afectar otras; la realidad es que durante la implementación 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 teoría cualquier protocolo de la capa de aplicación puede funcionar con el protocolo UDP y TCP, ambos se encuentran en la capa de transporte y su distinción reside en la confiabilidad de

15

Antecedentes Teóricos cada uno, de modo que los requerimientos de confiabilidad de la capa de aplicación 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 llegarán a su destino. A través del encabezado del IP se puede identificar el protocolo que se utilizará. Hay aplicaciones que funcionan igualmente con UDP y TCP, aunque también existen aplicaciones que solo podrán utilizar un protocolo u otro. El protocolo UDP es simple, eficiente e ideal para aplicaciones como TFTP y DNS. Básicamente la dirección IP es usada para direccionar un datagrama a una máquina en particular, en el encabezado del UDP va contenido un número correspondiente al puerto de destino que sirve para enviar el datagrama UDP a la cola de un proceso dentro de la máquina; además también 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 continuación 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 número de octetos que contiene el datagrama, el valor mínimo que puede contener es 8 ya que es el número 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 través de su checksum, UDP provee integridad de sus datos al tener su propio checksum.

16

3. Descripción del sistema En el trabajo presentado por R. Herrera [13] se muestra el desarrollo de un sistema de rastreo y control de unidades remotas móviles. En este sistema se hace uso de un módem GSM/GPS Starlert ST-1 para establecer comunicación con la red celular GSM y por medio del sistema GPRS enviá paquetes UDP a un servidor que contiene programas de comunicación, seguimiento y almacenamiento. Este mismo sistema es retomado en el trabajo de tesis de S. Casillas [14] en el cual se añade una tarjeta de adquisición 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 estándar RS-232, con el objeto de medir señales 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: Transmisión 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 medición de temperatura, presión y nivel de solución dentro de un tanque bulk-mix en el cual se hace una mezcla de componentes químicos que después 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 adquisición 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 analógico-digital contenido en el

17

Descripción del sistema microcontrolador. Una vez procesados los datos, se envían a través del Puerto Serial de Comunicaciones (SCI) siguiendo el estándar RS-232 para interfazarse con el módem Starlert ST-1 (Figura 3.2). El proceso de envío de datos a través 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 información. El servidor HTTP Apache 2.2.0 se encuentra actualmente ejecutándose en una computadora con Fedora 9 que es una distribución 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 información esté correcta para finalmente depositarlo en la base de datos. En la verificación de la información, el mismo proceso se encarga de generar y escribir a un archivo tipo bitácora llamado net.log donde coloca el dato llegado junto con información adicional como la fecha y hora de llegada. El Applet que se ejecute desde el servidor puede utilizar la información directamente de la base de datos en el servidor o a través del registro generado.

3.1. Características de los dispositivos El sistema se divide en varias etapas las cuales son realizadas por diferentes sub-sistemas. La adquisición comienza con el sensor de temperatura LM-35 que se encuentra a la entrada del convertidor analógico digital del microcontrolador MCF51QE128 el cual lleva a cabo cierto procesamiento para más adelante enviar los datos obtenidos a través de la interfaz RS-232 hacia el módem GPS/GSM Starlert ST-1. Las características más importantes se resaltan a continuación.

18

Descripción del sistema

3.1.1. Sensor de Temperatura LM-35 El LM-35 es un sensor de temperatura de precisión cuya salida en voltaje es directamente proporcional a una temperatura en grados centigrados. No es necesario calibración externa para proveer una precisión de ±¼ ºC a temperatura dentro de una habitación 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 más detalles consulte el Apéndice D.

3.1.2. Starlert ST-1 El módulo Starlert ST-1 es un dispositivo GPS/GSM de rastreo desarrollado para aplicaciones máquina a máquina (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 además 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 comunicación a través del Internet. Algunas características del dispositivo son las siguientes:



Conector de dos pines de alimentación de 11 a 30 VDC.



Interfaz RS-232 de 6 pines.



Conector GPIO de 10 pines.



Interfaz SIM.



Compartimiento para batería.

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



El bootloader y self-test también conocido como ArcFlash.



El bloque referido como ArcBase que se encarga de controlar las funciones del hardware como el CPU, módem GPS, entre otros.



La capa de de aplicación también llamada AVL Aplication la cual puede ser configurada utilizando los comandos GP.

19

Descripción 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 energía, utiliza el núcleo V1 ColdFire y puede alcanzar hasta 50 MHz en ciclos de reloj de CPU. Es utilizado en aplicaciones donde el ahorro de energía y el alto desempeño sean especificaciones requeridas. Algunas características del microcontrolador (Figura 3.3) se mencionan a continuación:



Hasta 50 MHz ColdFire V1 CPU arriba de 2.4V, 40 MHz CPU con más de 2.1V y 20 MHz con 1.8V.



Su desempeño 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 energía y un modo wait con consumo reducido de energía.



Típicamente le toma 6 μs recuperarse de los modos stop.



Reset del watch dog.



Detector de voltajes bajos.



Detector de código de operación y dirección ilegal.



Convertidor A/D de 24 canales y 12 bits de resolución.



Dos comparadores analógicos.



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 propósito general, 16 interrupciones de teclado y 16 bits de E/S rápidos de propósito general conectado al bus local del CPU de alta velocidad.

20

Descripción 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 periféricos con esta tarjeta se puede intercambiar fácilmente de un microcontrolador a otro. La tarjeta de desarrollo permite que la programación del microcontrolador se pueda realizar mediante un cable USB además de utilizarlo como fuente de voltaje. Entre otras características, el DEMOQE128 como el de la Figura 3.4 tiene:



Puerto serial RS232 con conector DB9.



Switch de encendido y apagado con LED indicador.



Botón de Reset y LED indicador con habilitador.



Circuitería para un oscilador externo.



Acelerómetro de 3 ejes con habilitador.



8 LED para usuario. 21

Descripción del sistema ●

4 botones de presión para usuario.



1 zumbador con habilitador.



Potenciómetro de 10 KΩ.



Dimensiones: 3.5” x 4”.



Entrada de alimentación: ○

Cable USB: 5VDC, 500 mA.



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



Dos baterías tipo AAA.

Figura 3.4: DEMOQE128 [12]

22

4. Configuración y Programación 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 desempeño; además, 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, periféricos 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 desempeño. El MCF51QE128 utiliza el núcleo mejorado V1 ColdFire que es una versión 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 periféricos operan hasta 25.165MHz.

4.1. Arquitectura V1 ColdFire El núcleo del ColdFire tiene como principal característica su organización 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 función 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 dirección de instrucción (IAG)



Ciclo de pre-carga de instrucción (IC)



Buffer de Instrucciones (IB)

OEP de dos etapas:

23

Configuración y Programación del microcontrolador ColdFire ○

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



Generador de Direcciones / Ciclo de Ejecución (AGEX)

Figura 4.1: Segmentos del V1 ColdFire [5]

El ColdFire cuenta con dos modelos de programación: el usuario y el supervisor. El modo de programación es elegido a través 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 propósito 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, además también son usados como índices para el cálculo direcciones efectivas. Los registros de direcciones son usados como punteros a la pila, registros índices o registros de base de direcciones. También 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 dirección de la instrucción en ejecución y el procesador 24

Configuración y Programación del microcontrolador ColdFire automáticamente incrementa el contenido de este registro. ●

Registro de Código de Condiciones (CCR). ○

Está compuesto por los 5 bits más bajos de Registro de Estado, lo cual hace que esta porción del registro sea la única disponible en este modo de programación. Este registro es afectado por algunas instrucciones de números 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 implementación 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 programación de supervisor es usado para funciones de sistemas operativos. Los accesos que afectan las características 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 continuación 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 máscara de prioridad de interrupciones así como otros bits de control.



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

Este registro contiene la dirección base del vector de excepciones en la memoria. El VBR puede, también, trasladar al vector de excepciones a otra localidad diferente a la pre-definida en la memoria.



Registro de Configuración del CPU (CPUCR) de 32 bits. ○

Este registro provee configuraciones del modo de supervisor para la funcionalidad de un núcleo específico.

25

Configuración y Programación del microcontrolador ColdFire

4.1.1. Modos de Direccionamiento El núcleo V1 ColdFire cuenta con 12 modos de direccionamiento y se listan a continuación: ●

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 instrucción en proceso sea interrumpida debido al programa o un error de sistema, como una llamada de programa, una petición de interrupción o depuración de programa.

4.2. Programación del microcontrolador Con el fin de realizar las funciones deseadas con el microcontrolador, se realiza la programación de algunos de sus periféricos como se verá a continuación. Para la programación del microcontrolador se utiliza el software Freescale CodeWarrior del cual también se mencionan algunas de sus características.

4.2.1. Convertidor Analógico Digital Es comúnmente sabido que los convertidores analógico digital (ADC) son usados en aplicaciones donde es necesario realizar algún tipo de procesamiento de manera digital. Básicamente la entrada de un ADC esta conectada con una fuente acondicionada de tal forma cumpla con los requerimientos del ADC, esta señal analógica, de acuerdo al rango de voltajes del

26

Configuración y Programación del microcontrolador ColdFire ADC, tendrá un equivalente digital y dependiendo de la resolución del ADC, será la precisión que obtendremos de los datos adquiridos a través del ADC. Se pueden clasificar los ADC de acuerdo a la técnica de conversiones que realizan de la siguiente forma: aproximaciones sucesivas, escalera, delta-sigma, entre otros.

Característica Voltaje de Alimentación Voltaje de Tierra Voltaje de Referencia Alto Voltaje de Referencia Bajo Voltaje de Entrada Capacitancia de Entrada Resistencia de Entrada

Resistencia de la fuente analógica

Frecuencia de reloj de conversión

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 válida) Alta velocidad (ADLPC=0) Baja potencia (ADLPC=1)

Sím VDDAD ΔVDDAD ΔVSSAD VREFH VREFL VADIN CADIN RADIN

RAS

fADCK

Mín Típ1 1.8 --100 0 -100 0 1.8 VDDAD VSSAD VSSAD VREFL --4.5 -5

Máx 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

1

Valores típicos asume VDDAD = 3.0V, Temp = 25C, fADCK = 1.0MHz a menos que se indique lo contrario. Nota: VDD y VSS corresponden al voltaje de alimentación y de la tierra del microcontrolador respectivamente. Tabla 4.1 – Condiciones de operación del ADC.

El sistema de monitoreo está basado en la adquisición de datos, para ésto, el MCF51QE128 tiene entre sus periféricos un módulo convertidor analógico digital con el cual se pueden tomar muestras de una señal analógica, dichas muestras son procesadas en el microcontrolador para ser enviadas por el puerto serial. Entre las características más importantes del ADC está su algoritmo de aproximaciones sucesivas con 12 bits de resolución, 28 entradas analógicas, un selector de longitud de datos de salida (8, 10 y 12 bits), conversión simple o continua, interrupción y bandera de conversión completa, disparador asíncrono por hardware seleccionable y comparación automática con interrupción para mayor que, menor que o igual que algún valor programado. En la Tabla 4.1, se muestran algunas condiciones de operación del ADC.

27

Configuración y Programación del microcontrolador ColdFire Característica Condiciones Corriente de Alimentación ADLPC = 1 ADLSMP = 1 ADCO = 1 Corriente de Alimentación ADLPC = 1 ADLSMP = 0 ADCO = 1 Corriente de Alimentación ADLPC = 0 ADLSMP = 1 ADCO = 1 Corriente de Alimentación ADLPC = 0 ADLSMP = 0 ADCO = 1 Corriente de Alimentación Stop, Reset, Módulo apagado Alta velocidad (ADLPC=0) Fuente de reloj asíncrona Baja potencia (ADLPC=1) Tiempo de conversión (incluye tADS) Tiempo de muestreo

Muestreo corto (ADLSMP=0)

Sím Mín Típ1 Máx Unidad IDDAD

--

120

--

μA

IDDAD

--

202

--

μA

IDDAD

--

288

--

μA

IDDAD

--

0.532

--

mA

IDDAD

-- 0.007 0.8 2 3.3 5 1.5 2 3.3

μA

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

±1

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 cuantización

EFS

EQ

Modo 10 bits Modo 8 bits

MHz Ciclos ADCK (Ver [4]) Ciclos ADCK (Ver [4]) LSB2

LSB2

LSB2

1

Valores típicos 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 – Características eléctricas del ADC.

El módulo ADC requiere algunas conexiones externas como son los canales de entrada analógicos, voltajes de referencia, fuente de volaje y tierra analógicas. Los voltajes de referencia

28

Configuración y Programación del microcontrolador ColdFire alto y bajo están internamente conectados a la fuente de voltaje y tierra respectivamente, a su vez, las señales de fuente de voltaje del ADC, están 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 alimentación es de 3V, lo cual significa que cualquier señal que se requiera conectar al microcontrolador a través del ADC, su voltaje de salida no debe de superar al voltaje de alimentación. En la Tabla 4.2, se pueden observar algunas características eléctricas del ADC. Las especificaciones que cumple el convertidor para funcionar dentro del sistema es la longitud de datos de 10 bits. Esta entre otras características son modificables en los registros correspondientes al módulo ADC. Este módulo contiene dos registros de estado y control, uno de configuración, dos de datos y dos de comparación.

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

El ADC utiliza dos disparadores para comenzar el proceso de conversión; uno por software, en el cual al escribir un valor válido de canal en el Registro de Estado y Control 1 (Figura 4.3) en los 5 29

Configuración y Programación del microcontrolador ColdFire bits referentes al ADCH (Canal del ADC); el otro disparador que se puede elegir es por hardware, y depende de la señal interna del módulo llamada ADHWT que se ilustra en la Figura 4.2, cuando se presenta un flanco de subida en esta señal el ADC comienza las conversiones, para provocar este flanco de subida, se utiliza al módulo Real-Time Counter (RTC). Cuando el registro contador y el registro de módulo igualan sus valores, el RTC puede generar la condición recién 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, además, se aborta cualquier conversión en proceso y se inicia una nueva conversión si el ADC se encontraba inactivo. Para esta aplicación con este registro se habilita la interrupción de conversión completa, también se selecciona el canal 0 de entrada y se deshabilita la conversión continua, de esta forma cada vez que ocurra un disparo de conversión solo realice una conversión, el módulo RTC actúa como disparador de conversión.

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



COCO (Conversion Complete Flag): Si está deshabilitada la opción de comparación la bandera se enciende cuando una conversión se termina, de otra forma, se enciende cuando se completa la conversión y el resultado de la comparación es verdadero.



AIEN (Interrupt Enable ): Habilita y deshabilita la interrupción de conversión completa.



ADCO (Continuous Conversion Enable): Selecciona entre una conversión o varias conversiones después del disparo de conversión.



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

El registro de estado y control 2 controla la función de comparación, el disparo de conversión y conversión activa del módulo ADC. Para que el contador de tiempo real pueda disparar al ADC para convertir se escribe sobre el bit que configura esta opción como se muestra en la Figura 4.4.

30

Configuración y Programación del microcontrolador ColdFire

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



ADACT (Conversion Active): Indica si una conversión está en proceso.



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



ACFE (Compare Function Enable): Habilita y deshabilita la función de comparación.



ACFGT (Compare Function Greater Than Enable): Configura la función de comparación para disparar cuando el resultado de la conversión de entrada es mayor que o igual al valor comparado.

Con el registro de configuración del ADC se configura el uso de la configuración de bajo consumo de energía y la opción de muestreado largo. La estructura de este registro se observa en la Figura 4.5.

Figura 4.5: Registro de Configuración (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 (Conversión 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 después de un reset el registro de configuración contiene en todos sus campos ceros 31

Configuración y Programación del microcontrolador ColdFire lógicos, 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 periféricos necesarios para el funcionamiento de todo el sistema es el Contador de tiempo real o Real-Time Counter (RTC). Este módulo comprende un contador de 8 bits, un comparador de 8 bits, varios prescaladores binarios y decimales, tres fuentes de reloj y una interrupción periódica programable. Como se hizo mención anteriormente, la función de este módulo es actuar como disparador para el convertidor analógico digital y este último comience a realizar conversiones que se considera como la primera tarea del microcontrolador. Las características generales del contador de tiempo real contienen: ●



Contador de 8 bits ○

Módulo de 8 bits para límite de coincidencia



Interrupción en coincidencia periódica 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 configuración de este módulo es bastante simple ya que consiste en solo tres registros: el registro de estado y control, el registro contador y el de módulo. Cuando ocurre un reset en el microcontrolador el registro contador y el de módulo 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 también 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 configuración, es posible cambiar la fuente de reloj para el RTC así como el valor prescalador a uno como los que

32

Configuración y Programación 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 módulo 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 módulo coincide con el valor contenido en el registro de conteo, entonces el RTC provoca una petición de interrupción activando la bandera de interrupción en el registro de estado y control. En este módulo 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

Configuración y Programación del microcontrolador ColdFire ●

RTIF (Real-Time Interrupt Flag): Bandera que indica que el registro contador, tiene el mismo valor que el registro de módulo.



RTCLKS (Real-Time Clock Source Select): Selector de fuentes de reloj para el RTC.



RTIE (Real-Time Interrupt Enable): Habilita y deshabilita la interrupción del RTIE.



RTCPS (Real-Time Clock Prescaler Select): Selector de valores divisorios para la fuente de reloj.

Una característica 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 energía, lo cual significa que el microcontrolador puede mantenerse en ese estado y regresar a su estado normal cada vez que el RTC provoque una petición de interrupción.

4.3.1. Puerto Serie Los datos que son digitalizados por el ADC son usados por la unidad de proceso para aplicarles algún 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 más comunes suelen ser el despliegue de la información procesada o el almacenamiento de datos. Efectivamente en la parte final del proceso que desarrolla esta aplicación tiene como objetivo la visualización 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 características necesarias para establecer comunicación 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 más 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 sincronización. Ha habido mucho auge en los protocolos basados en la serialización de datos ya que representan mayor ahorro de espacio físico aunque sacrifican un poco la velocidad de transferencia en comparación 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

Configuración y Programación 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 continuación se enuncian las características incluidas en el módulo de comunicaciones serializadas SCI:



Full-duplex con formato estándar sin regreso a cero (NRZ).



Transmisor y receptor con habilitadores separados.



Baud Rates programables.



Operación de interrupciones o por poleo para: ○

Registro de transmisión vacío y transmisión 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 módem Starlert ST-1 y se observa la interfaz de comunicación serial RS-232. Para establecer una comunicación satisfactoria, el periférico SCI del microcontrolador se debe configurar con las características que de acuerdo al Starlert ST-1 – Getting Started se listan en la Tabla 4.4:

Característica 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

Configuración y Programación del microcontrolador ColdFire

En la configuración 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 periféricos que está derivada de la frecuencia con la que trabaja todo el sistema. La generación del reloj ocurre en el mismo chip y depende del módulo 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 módulo 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: Distribución 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 características 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 módulo se pueden conseguir 12MHz de frecuencia de bus con la cual se logra alcanzar el baud rate especificado en la guía de inicio del Starlert ST-1.

36

Configuración y Programación 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 continuación:



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 señal 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). Además 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 operación del oscilador externo.

37

Configuración y Programación 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 señal 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 continuación, 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 máxima 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 después de que haya sido completado los ciclos de inicialización del reloj del oscilador externo.



FTRIM (ICS Fine Trim): Controla el ajuste más pequeño de la frecuencia de reloj de la referencia interna. 38

Configuración y Programación 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 comunicación satisfactoria del microcontrolador y el Starlert ST-1. El módulo Serial Communications Interface (SCI) es el que controla las características de comunicación siguiendo el protocolo RS-232. Para su configuración, este módulo 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 operación o se congela mientras el microcontrolador esta en modo de espera. 39

Configuración y Programación 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 más detalles consulte el manual de referencia [4]).



ILT (Idle Line Type Select): Selecciona si el contador de bits de caracter incativo comienza después del bit de inicio o después del bit de parada.



PE (Parity Enable): Habilita la generación y revisión 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 interrupción por hardware de TDRE (Transmitter Data Register Empty Flag).



TCIE (Transmission Complete Interrupt Enable): Habilita la interrupción por hardware de TC (Transmission Complete Flag).



RIE (Receiver Interrupt Enable): Habilita la interrupción por hardware de RDRF (Receive Data Register Full Flag).



ILIE (Idle Line Interrupt Enable): Habilita la interrupción 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 condición de wakeup. 40

Configuración y Programación 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 interrupción del receptor cuando el registro de datos contiene un dato nuevo. En el registro de control 3 simplemente mantenemos desactivadas las demás 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 dirección 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 interrupción por hardware.



NEIE (Noise Error Interrupt Enable): Habilita la bandera de error de recepción por ruido para generar peticiones de interrupción por hardware.



FEIE (Framing Error Interrupt Enable): Habilita la bandera de error en la trama de bits para generar peticiones de interrupción por hardware.



PEIE (Parity Error Interrupt Enable): Habilita la bandera de error de paridad para generar peticiones de interrupción por hardware.

A continuación se debe configurar el baud rate siguiendo la fórmula tomada del manual de referencia del microcontrolador: 41

Configuración y Programación del microcontrolador ColdFire

El vector de bits SBR12:SBR0 se encuentran en dos registros del módulo 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 interrupción por hardware para la bandera LBKDIF (para más detalles consulte el manual de referencia [4]).



RXEDGIE (RxD Input Active Edge Interrupt Enable): Habilita la interrupción por hardware para la bandera RXEDGIF (para más detalles consulte el manual de referencia [4]).



SBR (Baud Rate Modulo Divisor): Fija el módulo 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 módem 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 ningún envio en proceso; el dato que se requiera ser enviado a través del puerto serie, debe de almacenarse en el registro de datos del SCI o SCI Data Register (SCIxD). El módulo SCI también cuenta con un registro de corrimiento de transmisión, cuando el SCI esta configurado para enviar datos de 8 bits, el 42

Configuración y Programación 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 configuración y con la bandera de estado transmt data register empty (TDRE) en nivel lógico alto que indica que se puede escribir datos al registro de transmisión SCIxD. Toda la información adicional acerca de los periféricos 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 diseños en los sistemas desarrollados por Freescale. Esta versión en particular está diseñada para trabajar con microcontroladores Freescale basados en las arquitecturas RS08, HC(S)08 y ColdFire V1. Existen también 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

Configuración y Programación del microcontrolador ColdFire

CodeWarrior, mostrado en la Figura 4.15, no solo permite usar su interfaz para escribir código fuente en C/C++ y ensamblador; también ofrece la capacidad de depurar proyectos de manera gráfica, visualizando el código desensamblado, datos en memoria y en los registros de propósito específico y general. Entre las características más importantes de esta versión tenemos:



Ensamblador ilimitado



Compilador C limitado en tamaño de código objeto a 32KB para RS08/HC(S)08 y 64KB para ColdFire V1. Para C++ limitado a 1KB.



Inicialización de dispositivos para ensamblador y C.



Processor Expert con Basic Beans.



Visualización de datos / Estimulación E/S permitido para 1 componente con 3 instrumentos.



Programador de la memoria Flash HIWAVE.

Figura 4.16: Código fuente implementado en el microcontrolador.

44

Configuración y Programación 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 más conciernen en la creación de nuevo código está el archivo de cabecera MCF51QE128.h el cual contiene todas las declaraciones de variables que en memoria corresponden a los registros de configuración de todos los periféricos incluidos en el microcontrolador. La estructura que se utilizó es la que se muestra en la Figura 4.16. CodeWarrior también genera otro archivo por el cual el desarrollador suele empezar a escribir código que es el main.c. Los demás archivos dentro de la carpeta de Sources (a excepción de primitive.c,

primitive.h

y

bithandler.h)

corresponden

a

los

periféricos

usados

del

microcontrolador. Se utiliza un archivo de código fuente C para cada periférico y a cada uno le corresponde un archivo de cabecera H. Los archivos de cabecera con terminación .h que corresponden a cada periférico 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 algún registro.



BITSET(REGISTER, BIT) – Escribe un '1' lógico en el bit 'BIT' del registro 'REGISTER'.



BITCLR(REGISTER, BIT) – Escribe un '0' lógico 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 máscara 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

Configuración y Programación del microcontrolador ColdFire

adc.c actúa como manejador del convertidor analógico digital del MCF51QE128. ●

adc_init – Esta función escribe a los registros del convertidor A/D los datos necesarios para configurarlo de acuerdo a las características mostradas en la tabla 4.6:

Característica Reloj de Entrada Divisor de Reloj del ADC Resolución Canal Activo Disparador de conversión

Valor Bus Clock 8 10 bits Canal 0 Hardware

Tabla 4.6 – Configuración del ADC

Para este microcontrolador la señal 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 módulo RTCMOD.



adc_isr – Subrutina que da servicio a la interrupción del Convertidor analógico digital: ○ ○

Leer las muestras obtenidas que están 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 leída se acumula en un acumulador.



Un contador de conversiones se incrementa.



Si el contador de conversiones alcanzó un número preestablecido ■

El acumulador se divide entre el número 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 módulo contador de tiempo real. 46

Configuración y Programación del microcontrolador ColdFire



rtc_init – Realiza la configuración 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 través 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 carácter de fin de cadena, ■

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



Se escribe el carácter al que apunta la variable de entrada.



Mientras la transmisión no este completa, ●





Espera.

Espera.

Se incrementa el apuntador.

receive – Los mensajes que llegan al pin TxD son almacenados en un buffer preestablecido. Esta función es proveída con la dirección 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 línea: ■

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 dirección del buffer.



Incrementa el apuntador del buffer.

Guardar un fin de cadena en el buffer.

47

Configuración y Programación del microcontrolador ColdFire ●

registro_RX – Interrupt Service Routine del puerto serie que se encarga de leer el octeto recién 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 guardián 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 energía, éste responda de la forma que debe. Esta función hace el llamado a otras dos funciones: InternalClockSource_init() y activateBusClock ().



InternalClockSource_init – Esta función asigna valores a los registros del módulo de selección 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 sincronía con las señales 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 función hace uso de una de las características importantes del microcontrolador que es la habilitación y deshabilitación de fuente de reloj del bus para los periféricos a través de los dos registros asignados para esta propiedad, de modo que solo los periféricos seleccionados en la entrada de esta función (cpu.h contiene los nombres válidos de los periféricos) utilicen los recursos del microcontrolador ahorrando 48

Configuración y Programación del microcontrolador ColdFire energía de la fuente de alimentación. gpio.c tiene la sola función de usar los LEDs del DEMOQE128 que están conectados al puerto C y al puerto D, entonces, solo modifica los registros de dirección y los bits correspondientes a los LED's se configuran como salidas y después escribiendo valores altos a los bits de cada LED de los registros de datos se apagan los LED's. main.c es el código que contiene la rutina principal del microcontrolador y es donde manda a llamar las funciones dentro de los demás archivos que se acaban de describir.



main – Rutina principal del proyecto: ○

Llama a las rutinas de inicialización 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 conexión satisfactoria con la red GSM/GPRS.



Cuando se escribe a los bits de selección 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 analógicos en digitales.



Mientras el ADC sigue habilitado: ●

Espera hasta que en la rutina de servicio de interrupción 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 envía a través 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 función utiliza un factor multiplicativo para realizar la conversión de los datos recibidos en el puerto serie a un valor ASCII que represente la 49

Configuración y Programación del microcontrolador ColdFire temperatura. ○

El dato que se proporciona a esta función 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 conversión del ADC, esto es:



Tomando en cuenta que por cada 10 mV de incremento corresponde a 1°C, entonces, el dato obtenido de la multiplicación 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 función 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 función, el número de veces indicado también en la entrada de esta función. Esta subrutina sirve para visualizar eventos ocurridos durante la ejecución del programa principal: conexión GSM/GPRS confirmada, conexión fallida con red GSM/GPRS y envío de datos del puerto serie al ST-1 completo.

En el Apéndice A se puede observar con mayor detalle el código generado.

50

5. Resultados Con el fin de lograr los objetivos propuestos en la Introducción de este trabajo, se hicieron una serie de pruebas a todo el sistema, sin embargo, aún 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 configuración y el funcionamiento correcto con del módem transceptor conectado a través del puerto serie a una computadora funcionando como Terminal Serial. Existe software que puede realizar la función de terminal, como PuTTY, HyperTerminal o Starlert Admin que, además, también 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 envía el ST-1 desde que es alimentado hasta que se conecta a la red GSM/GPRS, y así enviar al servidor mensajes en código 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 módem, si se genera un evento GPRS Registration False significa que el módem ha perdido su registro GPRS. En las primeras pruebas de observación 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 conexión con la red GSM/GPRS: GPRS Event (00000001 00000000) - GPRS Registration 1 GPRS Event (00000001 00000000) - GSM Registration 1 (was 1)

Una vez leídas estas cadenas se pueden enviar paquetes de datos a través 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 confirmación: Done

Serial Data: 992008Prueba 1 Sending ... Length – 17 Buffer – 992008Prueba 1 UDP Message Sent – Waiting For Write Complete GPRS Event (81001424 00000000) - Write Complete

El servidor del cual se hizo una breve mención en el Capítulo 3, captura la información de recepción 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 además de poder actuar como terminal para el puerto serie, es posible realizar una conexión 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 información: 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 envío de caracteres ASCII al servidor. Las cadenas de caracteres que envía 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 módulo transceptor. Las cadenas que se acaban de mostrar son suficientes para conocer la información 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 información a través del puerto serie pero solo cuando el ST-1 se conecte a la red GSM/GPRS y configurado apropiadamente. Antes de utilizar la información recién dada, primero fue necesario programar los periféricos que se mencionaron en el Capítulo 4. Los periféricos se configuraron, primeramente, de manera separada para comprobar el funcionamiento correcto de los mismos.

5.1. Programación del Convertidor Analógico Digital. El inicio de conversiones del ADC depende de los flancos de subida en la señal 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 lógicos al puerto que está interfazado con los LED's del DEMOQE128. El convertidor analógico digital se programó para utilizarlo con una fuente de poder y así poder simular la salida de voltaje del LM-35 con una relación de 10 mV/C y utilizando los LED's incluidos en la tarjeta de desarrollo DEMOQE128 se observó la forma digital leída por el convertidor. La siguiente prueba consistía 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 recién descrita, la computadora personal ejecuta el CodeWarrior, que como ya se mencionó, se utiliza para programar y depurar el código 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 módulo ADC del microcontrolador fue configurado con una resolución de 8 bits; si se toma en cuenta que el voltaje de alimentación 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 módulo ADC realiza correctamente la conversión ya que en la fuente de voltaje, se tiene un valor de 1.19 V lo cual es muy cercano al obtenido después de la conversión.

Figura 5.2: Prueba del Convertidor A/D

5.2. Programación del Puerto Serie Después de haber logrado la variación del voltaje y el muestreo de los cambios en el microcontrolador en los tiempos indicados, lo que seguía era la configuración del puerto serie ya que por medio del mismo se hizo la comunicación con el módulo ST-1. El primer problema se presentó en este punto ya que el microcontrolador con la programación predefinida se tenía una frecuencia de bus de 4 MHz, y dadas las características del puerto serie, no era posible alcanzar el baud rate de 57600 que es el especificado en la información 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 transmisión requerida ya que como se mencionó anteriormente, el baud rate depende de la 54

Resultados frecuencia del bus. En el Capítulo 4 de este trabajo, se mencionan los registros utilizados para conseguir las características necesarias para generar la frecuencia de bus que requería la especificación, al programar dichos registros, fue posible alcanzar el baud rate de 57600. Ya que se habían conseguido los primeros objetivos de esta aplicación, 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 implicaría que ambos dispositivos tienen las mismas características de comunicación y así, al conectarlos a través de la interfaz RS-232, pudieran mantener comunicación 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: Envío de caracteres a la Terminal Serial

55

Resultados Establecida la comunicación entre el microcontrolador y la terminal, lo siguiente fue conectar el microcontrolador con el Starlert ST-1. Anteriormente se hizo mención acerca de las eventos que envía 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 instantánea a la red GPRS, entonces a través 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 parámetro como indicador es que también podemos evitar que el microcontrolador envíe información sin que el módem 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 través de un amplificador operacional TL081 configurado como seguidor de voltaje, que como ya es sabido, sirve para acoplar impedancias ya que al hacer la conexión directa, se perdía el voltaje de salida del sensor. En el Apéndice C se encuentra contenido el diagrama esquemático del sistema donde se puede observar lo descrito así como en la Figura 5.4 se observa de manera física 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 módem transceptor Starlert ST-1, es posible enviar todo tipo de datos en hacia el servidor a través de la red GSM/GPRS, para esta aplicación, enviamos 56

Resultados caracteres ASCII que representan una medida de temperatura en grados centígrados con punto flotante y dos decimales de precisión. El envío de caracteres se hace en intervalos de 5 minutos una vez que el módem ha establecido comunicación correcta con la red GSM/GPRS.

5.3. Programación del Applet en Java. Para observar de manera gráfica 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 programación del Applet en Java con el fin de generar el panel donde se despliega la gráfica, que para generarla, se utilizó una

librería

externa

llamada

JFreeChart

disponible

en

el

sitio

web

http://www.jfree.org/jfreechart/. El proceso de despliegue de una gráfica con JFreeChart es relativamente sencillo; se debe crear una colección de valores que representan todos los puntos de la gráfica y se genera la gráfica creando una instanciación de la clase JFreeChart, donde se agregan los nombres de los ejes así como el de la gráfica y la colección recién creada; para este Applet se instancía un objeto de clase ChartPanel que se utiliza para colocar la gráfica generada y poder desplegarla en el panel principal del Applet. Aunque aún queda desarrollo para el Applet, se puede acceder en cualquier navegador de Internet que tenga instalado el complemento necesario para ejecutar la máquina virtual de Java. Básicamente

desde

el

navegador,

se

accede

a

la

página

web

del

servidor,

http://movil.citedi.mx/~minguez y dependiendo del navegador, hará una petición para ejecutar la clase perteneciente al Applet, y el resultado se debería 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 código de la clase; la escala de tiempo se actualiza cada hora así como la fecha dada en el título de la gráfica. El código escrito para el Applet así como el utilizado en la página web se encuentran en el Apéndice B.

57

Resultados

Figura 5.5: Visualización de gráfico de temperatura en Internet

58

6. Conclusiones Durante el desarrollo del sistema de monitoreo se tuvo la oportunidad de implementar tecnologías del área de las comunicaciones y de la información. El módem GPS/GSM Starlert ST-1 tiene como base un microcontrolador 8051 que controla las funciones de localización por satélite GPS, además también realiza el control de las funciones de transmisión de datos GPRS dentro de la misma unidad. El DEMOQE128 es un módulo de desarrollo que trae varios dispositivos periféricos interfazados al microcontrolador MCF51QE128, lo cual facilita y agiliza la implementación de numerosas aplicaciones. Además, el sistema también cuenta con un servidor que se encuentra físicamente en el laboratorio de Sistemas Inmersos que fue utilizado para almacenar la información enviada por el ST-1, los archivos de la página Web y la clase que contiene el Applet. Un problema técnico que se presentó fue en la comunicación serial entre el microcontrolador y el ST-1 ya que la tasa de transmisión de bauds que el microcontrolador podía alcanzar con la frecuencia de bus predefinida no era suficiente para sincronizarse con el Starlert ST-1 para comunicarse; el módulo serial solo provee un registro para modificar el valor correspondiente al baud rate así que fue necesario modificar los registros del CPU, principalmente el módulo que controla la fuente de reloj interna del sistema a través del cual se incrementó la frecuencia. En lo que respecta a la programación y configuración del microcontrolador, no hubo mayor inconveniente, debido a la amplia documentación que existe en Internet y a la experiencia previa con el uso de microcontroladores muy similares así como sus herramientas. El desarrollo del Applet podría considerarse como la parte más compleja de alcanzar dentro de este proyecto ya que la experiencia personal en programación 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 programación y encontrar las librerías adecuadas para concluir con el objetivo dado. En esta Tesina se menciona el uso de varias tecnologías y es importante destacar el las herramientas de software necesarias para la implementación, evaluar diferentes opciones y compararlas entre sí. La que se utilizó en su mayor parte fue la herramienta de programación Freescale CodeWarrior para el microcontrolador MCF51QE128 que en su versión gratuita 59

Conclusiones ofrece los componentes necesarios para programación y depuración de código. El diseño de páginas Web ha resultado muy popular debido al crecimiento del número de usuarios de Internet que se ha presentado en la última década que en la actualidad, tan solo en México, es de 23,700,000 habitantes de acuerdo al Internet World Stats (http://www.internetworldstats.com/), por consiguiente, existen muchas herramientas que cumplen dicha función como DreamWeaver de Adobe, FrontPage de Microsoft y para nuestra aplicación dado el nivel de complejidad de la página Web desarrollada, se utilizó el Composer de Mozilla que es parte del conjunto de aplicaciones de Internet conocido como SeaMonkey que además del editor de HTML también cuenta con un navegador de Internet, gestor de correo electrónico y grupo de noticias, entre otras aplicaciones. Un editor HTML a diferencia de un editor de texto común, nos permite visualizar la página Web y auto-generar las etiquetas apropiadas para que puedan ser interpretadas por el navegador de Internet y así mostrar la página como se especifique. Las herramientas potenciales para la programación del Applet son diversas, desde un simple editor de texto como Notepad, o alguno otro más complejo como el SciTE que sin ser un ambiente de desarrollo pueden compilarse y ejecutarse los códigos de C/C++ o Java especificando en la variable de ambiente PATH la ubicación del compilador; otros programas que entran dentro de la categoría de IDE (como el CodeWarrior) para programar en Java que existen pueden ser NetBeans IDE y Eclipse IDE; estos dos al parecer son los más utilizados para realizar esta tarea, ambos gratuitos, de código abierto y multiplataforma que facilitan la creación de código y el manejo de proyectos extensos, así como el uso de librerías externas y depuración de código, una característica que llama la atención es la revisión de sintaxis en tiempo real que a la vez, cuando es detectado algún error, proporcionan sugerencias al programador para corregir errores en el código; NetBeans, de manera predeterminada, ofrece la opción de programación 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 tecnologías (Java, bases de datos, C/C++, etc.), pero Eclipse IDE ofrece más soluciones orientadas al desarrollo de aplicaciones embebidas, así que posiblemente sea por eso por lo que es más utilizado, por lo menos en el área de los sistemas embebidos. En conclusión, 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 tecnologías que existen en la actualidad y que cada día resultan más accesibles. Es importante comprender estas tecnologías y seguir capacitando gente para alcanzar sistemas más complejos que ayuden a las diferentes ramas del desarrollo humano.

6.1. Trabajo Futuro Los puntos que a continuación se enuncian, se consideran como características que pueden complementarse al trabajo presentado que como cualquier otro proyecto, el desarrollo va evolucionando conforme se avanza y se pueden proponer nuevas características también dependiendo de la forma en la que evolucionan las tecnologías así como el mercado al que va dirigido; en este apartado se consideran las más factibles a corto y mediano plazo:



Envío de comandos GP al Starlert ST-1 para configurar automáticamente la capa AVL Aplication.



Optimización de código fuente C del microcontrolador para reducir el tamaño del mismo y mejorar tiempos de ejecución.



Actualización del Applet cada hora o en cada intervalo de tiempo ya sea leyendo automáticamente 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 gráfico en pantalla.



Crear un marco en el Applet para visualizar los valores de forma tabular y sea un marco junto a la gráfica o generar una pestaña para cada tipo de visualización.



Diseño y construcción 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 móviles con GSM/GPRS y GPS, CITEDI, 2007. [14]S. Casillas et. al., Sistema de telemetría 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

Apéndice A En este apartado se localiza todo el código fuente en lenguaje de programación 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 // 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] = " No GPRS Registration\r\n"; gsmError[27] = " No GSM Registration\r\n"; udpDisconnected[46] = " UDP Connection Disconnected\r\n"; gprsNoRegEvent[71] = " GPRS Event (00000000 00000000) - GPRS Registration 0\r\n"; gsmNoRegEvent[73] = " GPRS Event (00000000 00000000) - GSM Registration 0 (was 0)\r\n"; gprsReady[71] = " GPRS Event (00000001 00000000) - GPRS Registration 1\r\n"; gprsReady2[73] = " GPRS Event (00000001 00000000) - 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

Apéndice 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

Apéndice A int i = 0; for(;;) { receive(textBuffer); if (textBuffer[1] == '

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.