Memoria del Proyecto · 2013. 8. 20. · Sistemas Embebidos Para Tiempo Real – Curso 2009...

17
Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador 1 Memoria del proyecto: “Rastreador” OMBRE CI e-mail Edgardo Vaz 3.353.188-4 [email protected] Santiago Nogueira 4.191.632-1 [email protected] Martín Alonzo 3.165.309-8 [email protected] Docente: Leonardo Steinfeld

Transcript of Memoria del Proyecto · 2013. 8. 20. · Sistemas Embebidos Para Tiempo Real – Curso 2009...

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    1

    Memoria del proyecto:

    “Rastreador”

    �OMBRE CI e-mail

    Edgardo Vaz 3.353.188-4 [email protected]

    Santiago Nogueira 4.191.632-1 [email protected]

    Martín Alonzo 3.165.309-8 [email protected]

    Docente: Leonardo Steinfeld

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    2

    Resumen:

    En el presente trabajo se detallan los aspectos teóricos y prácticos usados para la realización del proyecto de fin de curso de la asignatura “Sistemas embebidos para tiempo real”. El proyecto consiste en el diseño e implementación de un Rastreador vía GPS.

    El tema central será la comunicación por SMS del usuario con el dispositivo, en donde se solicita la posición actual del mismo. Esta posición se extraerá de la información proveniente de un GPS. El µC se encargará de comunicarse con el modem para recibir los mensajes SMS enviados de cualquier teléfono celular. Luego de validar el mensaje recibido, se procede en la extracción de la información que contiene la posición, enviada por el modulo GPS. Para finalizar, el µC arma y envía el mensaje a ser devuelto al celular.

    En el desarrollo de este trabajo se expondrá el método utilizado para la solución del problema, así como las dificultades que surgieron tanto en la realización del software como en la implementación en hardware, explicando las soluciones encontradas para lograr el correcto funcionamiento del sistema.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    3

    Tabla de contenido:

    Resumen…………….………………………………………………….2

    Introducción…………………………………………………………….4

    Objetivos………………………………………………………………..5

    Alcance………………………………………………………………….5

    Diseño: Hardware ………………………………………………………6

    Arq. de Software …………………………………………..….8

    Implementación…………………………………………………..……..8

    Pruebas………………………………………………………………….13

    Conclusiones……………………………………………………………15.

    Anexo:

    - Planificación del Proyecto…………………………............16.

    - Conceptos del curso aplicados al proyecto……….………...17

    Bibliografía……………………………………………………………..17

    Archivos fuentes………………………………………………………..17

    Documentación Doxygen……………………………………………….17

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    4

    Introducción:

    Motivación: Surge de la necesidad de identificar la posición de vehículos que cumplen determinado recorrido (ej, camiones de recaudación de dinero, recolección de residuos, taxis o remises; i. e. transporte de bienes y personas en general). Esto le asegura a la empresa que el vehículo cumplió con el recorrido predefinido, pudiendo conocer la posición del vehículo en todo momento.

    Descripción del proyecto: El proyecto consiste en el diseño de un sistema Rastreador. Mediante un teléfono móvil se envía un SMS (con la palabra “Posicion”) al Modem GSM (en este caso con el número 098580759), solicitando la coordenada actual. La comunicación entre modem y µC se efectuará mediante una UART. El mensaje será procesado por el µC, el cual prepara la respuesta que será devuelta al usuario. A su vez el µC toma lectura de las coordenadas que suministra el módulo GPS, la transferencia de datos se hace a través de una UART. El µC procesa y almacena estos datos, creando el mensaje de respuesta que se le otorgará al usuario.

    Este mensaje tendrá el siguiente formato:

    GRADOS MINUTOS SEGUNDOS

    (0-90°) LATITUD: XX° XX' XX.XX'' N/S

    (0-180°) LONGITUD: XXX° XX' XX.XX'' E/O

    TIEMPO: DD/MM/AAAA hh:mm:ss

    Ejemplo: LATITUD: 34°55’08.82’’ S LONGITUD: 56°09’59.00’’ O TIEMPO: 27/04/2009 08:40:17 El mensaje luego es enviado al teléfono móvil vía modem GSM, finalizando la operación. Antecedentes: - Proyecto A.F.E. (Leonardo Steinfeld, IIE) - STM (Sistema de Transporte Metropolitano). - Taxis.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    5

    Diagrama de bloques (conceptual):

    Figura 1. Diagrama de Bloques

    Objetivos:

    Implementar un dispositivo mediante un sistema embebido, capaz de brindar información, solicitada por el usuario, sobre la posición del vehículo a rastrear. La comunicación entre usuario y dispositivo será de forma inalámbrica mediante intercambio de mensajes SMS.

    Para una realización satisfactoria del proyecto se pretendía lograr:

    � Ser capaz de enviar un SMS a través de un teléfono celular, al número correspondiente con la palabra “Posicion”, y recibir el mensaje de respuesta con la información solicitada, con el siguiente formato: LATITUD: 34°55’08.82’’ S

    LONGITUD: 56°09’59.00’’ O TIEMPO: 27/04/2009 08:40:17

    � Enviar un SMS a través de un teléfono celular, al número correspondiente con una palabra diferente de “Posicion”, y recibir el mensaje de respuesta con el siguiente formato: “Parámetro equivocado”.

    Alcance:

    • Diseño y fabricación de una placa de circuito impreso que servirá para interconectar el módulo GPS y el MODEM con el microcontrolador.

    • El dispositivo se comunicará con cualquier teléfono móvil mediante mensajes SMS, conteniendo la posición, tiempo y nivel de carga de la batería.

    • Incluye la lectura de coordenada de un sistema GPS.

    • Una interfaz web para la lectura de los datos por parte del usuario sería de gran utilidad, pero no se implementará en esta ocasión.

    • Si bien se considera de importancia para un desarrollo futuro, queda fuera del alcance del proyecto el encriptado de los datos del mensaje.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    6

    • No incluirá la comunicación con otro modem GSM conectado a un PC.

    Diseño:

    Plataforma de hardware: El dispositivo está compuesto por el siguiente hardware:

    -Micro controlador Rabbit RCM4300. -Modem GSM/GPRS SIM340C + antena. -Módulo GPS ET-332 + antena.

    µµµµC: El micro controlador Rabbit RCM4300 consta de un kit de desarrollo, el cual se compone de un micro procesador Rabbit 4000 de hasta 58.98 MHz, memoria SRAM para datos de 512 KB, memoria para la ejecución de programas SRAM de 1MB y memoria flash para código de 2MB, entre otras prestaciones.

    Modem:

    El módulo SIM340C es un modem GSM/GPRS cuatri-banda 850/900/1800/1900Mhz, esto permite la conexión en las redes GSM de cualquiera de los operadores locales (en nuestro caso, ANCEL). Cuenta con soporte para voz, SMS y datos. Permite tráfico GPRS (envía y recibe datos hacia y desde hosts que manejan el protocolo TCP/IP).

    GPS: El módulo GPS ET-332 maneja el protocolo de datos NMEA, dentro del cual se encuentran los tipos: GGA, GLL, GSA, GSV, RMC y VTC. De todos estos el elegido fue el RMC, dentro del cual podemos encontrar los siguientes datos:

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    7

    PCB: Se diseñó y fabricó una placa de circuito impreso con el fin de brindar soporte físico al módulo GPS y al Modem, con esta se conectan los dispositivos con el micro controlador. El bus que une esta placa con el kit de desarrollo Rabbit se hace a través de cable IDE.

    Figura 2. Vista de arriba y de debajo de la placa.

    Figura 3. Vista del sistema completo.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    8

    Arquitectura de software: Se empleó RTOS µCOS-II el cual viene incorporado en las librerías de Dynamic C versión 10.50. Preferimos esta arquitectura de software con el objetivo de aprender a usar un sistema operativo empleado en un sistema embebido, y debido a que su uso es cada vez más frecuente en este tipo de sistemas. En esta implementación se definieron dos tareas, una para el manejo del MODEM, llamada task_SMS, y la otra tarea para el uso del GPS, esta última llamada task_GPS.

    Implementación: Hardware Para implementar el hardware se utilizó la herramienta de diseño CAD, KiCad, la cual es open source GPL (sitio de descarga: http://www.lis.inpg.fr/realise_au_lis/kicad/). Es una herramienta simple de usar, tiene la desventaja de faltarle muchos componentes y módulos, pero la misma cuenta con un editor para diseñar los faltantes. El PCB diseñado es de una sola capa, en la misma se previó agregar conectores de testeo, para observar las señales tanto del modem como del módulo gps si fuese necesario. El PCB cuenta entre otras cosas con un conector para batería, la cual alimenta al modem, ya que en algunos momentos el consumo del mismo puede alcanzar los 2A por durante algunos milisegundos. Debajo se muestra la lista de componentes utilizados en la fabricación.

    Descripción Componente Valor

    Capacitor de Tantalio C1 47µF

    Capacitor cerámico C2 1µF

    Conector de alimentación 5V CONN_13X2 -

    Conector de datos y control CONN_25X2 -

    Conector del Modem Simcom CONN_30X2 -

    Conector de la Batería 3,7V CONN_3X2 -

    Conector del módulo GPS CONN_6X2 -

    Jumper Rx GPS JP1 -

    Jumper Tx GPS JP2 -

    Jumper DTR Modem JP3 -

    Jumper Rx Modem JP4 -

    Jumper PWRKEY Modem JP5 -

    Jumper Tx Modem JP6 -

    Jumper DCD Modem JP7 -

    Jumper STATUS Modem JP8 -

    Jumper RI Modem JP9 -

    Jumper CHG-IN Modem JP10 -

    Jumper GND JP11 -

    Led verde D2 -

    Led rojo D5 -

    Transistor NPN Q1 BC547

    Resistencia R1 1Kω

    Resistencia R2 10Kω

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    9

    Resistencia R3 10Kω

    Resistencia R4 390ω

    Zócalo para SIM card SIMLOCK492 -

    Diodo ZENER D1 3,3V-1W

    Diodo ZENER D3 3,3V-1W

    Diodo ZENER D4 3,3V-1W

    Diodo ZENER D6 3,3V-1W

    Tabla 1. Componentes empleados en el PCB.

    A continuación se muestran los esquemáticos de la placa diseñada. También se agrega una lista de los pines utilizados en el Kit de Rabbit, y sus respectivas conexiones con los pines del Modem y del módulo GPS.

    Figura 4. Esquemático de la placa diseñada.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    10

    Modem Simcom 340C

    nº de PIN Nombre Conectado a nº pin Kit RCM 4300

    1,3,5,7,9 VBAT Batería (+)

    2,4,6,8,10 GND Batería (-) GND

    11 CHG-IN 5v Salida 5v

    16 NETWORK LED Led rojo

    17 PWRKEY PE0 32

    19 STATUS PE1 33

    25 SIM-VDD SIM card

    27 SIM-RST SIM card

    29 SIM-I/O SIM card

    31 SIM-CLK SIM card

    33 SIM-PRESENT GND

    37 DCD PC4 28

    39 DTR PC5 29

    41 Rx PC2 26

    43 Tx PC3 27

    49 RI PE4 36

    Modulo GPS ET332

    nº de PIN Nombre Conectado a nº pin Kit RCM 4300

    1 GND GND

    2 VBAT Batería de backup

    3 VDC 5v Salida 5v

    4 PBRES PULL UP

    5 GPIO1 N/C

    6 TXA PC1 25

    7 RXA PC0 24

    8 GND GND

    9 GND GND

    10 SELECT N/C

    11 TIMEMARK N/C

    12 GND GND

    Tabla 2. Conexiones del Kit de Rabbit con los Módulos.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    11

    Software

    La implementación del software fue realizada con Dynamic C v10.50, la cual incorpora

    dentro de sus librerías una en particular para el RTOS µCOS-II. El software está distribuido en 3 archivos, GPS_ET332.lib el cual contiene las funciones que se utilizan para procesar los datos recibidos desde el GPS, MODEM_SIMCOM.lib donde se encuentran las funciones necesarias para el empleo del modem y por último el archivo main.c en el cual está definido todo lo necesarios para poner en funcionamiento el RTOS, así como también la rutina de atención a la interrupción. La descripción de todas las funciones se detallan el la documentación doxygen. Debajo se detallan las tareas que se definieron en el sistema operativo.

    Figura 5. Esquema del funcionamiento entre las tareas.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    12

    Task_SMS: La tarea de mayor prioridad es task_SMS, ésta permanece bloqueada siempre que no se reciban códigos de resultado no solicitados (URC) desde el puerto serial C, donde se encuentra conectado el modem. Una vez que llega un URC a través del puerto serie, se produce una interrupción que es atendida por la ISR llamada “spx_isr” (incluida dentro de las librerías RS232 de Dynamic C), dentro de la misma se determina cual de los puertos serie fue el que interrumpió, si el puerto serie C fue el causante de la interrupción se libera un semáforo llamado, “serCsem”, y se guarda el byte almacenado en el registro de datos del puerto (SCDR) en un buffer de entrada correspondiente a dicho puerto. Luego de retornar de la ISR, la tarea se desbloquea, pasando al estado READY, que por ser la de mayor prioridad pasa al estado RUN. Inmediatamente de comenzar a ejecutarse, la tarea toma el semáforo y empieza a leer datos desde el buffer de entrada hasta que éste se vacía. El código (URC) leído desde el buffer es analizado para identificar si es del tipo “+CMTI: “SM”, nº_sms”, el cual indica que ha llegado un nuevo mensaje de texto. Se recibe el nuevo mensaje y se procesa (mediante las funciones definidas en la librería Modem_SIMCOM.lib, llamadas: Recibir_SMS y Procesar_SMS) en busca del número de teléfono móvil (desde el cual se envió la consulta) y del parámetro correcto, “Posicion”. En caso que el parámetro sea incorrecto, se devuelve un mensaje conteniendo el texto: “Parámetro incorrecto”. Si por el contrario el parámetro es el correcto se envía un mensaje conteniendo la posición actual del vehículo. Por último el mensaje de consulta es eliminado mediante la función Borrar_SMS y la tarea vuelve a bloquearse a la espera de un nuevo URC.

    Task_GPS: Esta tarea es de menor prioridad, pero a diferencia de la anterior no permanece bloqueada. Dentro de esta tarea se leen ráfagas de 200 bytes desde el buffer del puerto serial D ( el cual se encuentra conectado el GPS); en los datos leídos se busca el encabezado “$GPRMC” incluido en las tramas del protocolo RMC que envía el GPS. Si hay coincidencia, se procesa el resto de la trama mediante las funciones: “gps_get_position” y “gps_get_utc” que estan incluidas dentro de la librería GPS_ET332. Con la primera de estas funciones se obtiene las coordenadas (latitud, longitud, indicadores) y con la segunda se obtiene la fecha y hora en que se tomó la lectura de la coordenada. Estas funciones indican además si los valores obtenidos fueron correctos, si es así, éstos son guardados en un arreglo, llamado “posiciones”, cuyos elementos son una estructura del tipo “GPS_Datos”. Como los elementos de este arreglo son compartidos por ambas tareas, los mismos son protegidos por un semáforo llamado “Semaf”. El dato correspondiente a la hora es corregido mediante la función “cambio_de_hora”, ya que el valor UTC time está referido a la hora de Greenwich. En el arreglo “posiciones” se van guardando las posiciones anteriores de forma circular, con una capacidad de 100 almacenamientos.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    13

    Figura 6. Flujo de secuencia de actividades, cuando llega un SMS.

    Pruebas:

    Luego de la fabricación del hardware, la cual llevó mucho más tiempo del previsto (el diseño y fabricación insumió unas 80 hs), puesto que se pretendió alcanzar un prototipo donde no se tuvieran error en las conexión (causa muy común de fallas), comenzamos las pruebas sobre el módulo GPS el 23/5; una vez hallado el bit rate por defecto con que viene configurado este dispositivo, logramos obtener los datos que envía a través de su puerto serial, encontrando que el mismo está continuamente devolviendo todos los tipos de datos incluidos en el protocolo NMEA. Fallidos intentos por intentar configurarlo para que enviara datos del tipo RMC, cada 1 segundo entre trama y trama, hicieron que tomáramos la alternativa de recibir ráfagas de datos y luego los procesáramos en busca de la trama de tipo que nos interesaba. El martes 26/6 comenzamos las con el modem, en primera instancia para encenderlo recurrimos al uso de un pulsador, con el cual poníamos a tierra el pin de encendido PWRKEY (el mismo tiene un circuito interno con un pull up, que lo mantiene a un 1 lógico). Para el encendido se deben respetar ciertas limitaciones de tiempos, para cumplir con ellos, se debe mantener al menos 3000 milisegundos la entrada PWRKEY en “1” luego de conectar la alimentación de la batería, y a continuación se debe bajar a “0” la misma entrada durante al menos 1500 milisegundos, luego de lo cual se vuelve dicha entrada a “1” esto finaliza el procedimiento para encenderlo. Para el apagado se deben cumplir condiciones muy similares. Una vez que logramos configurar en forma correcta uno de los

    puertos paralelos del µC, creamos las funciones de encendido y apagado que se encuentran dentro de la libraría Modem_SIMCOM.lib. El siguiente paso fue configurar dos pines de

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    14

    otro puerto paralelo, uno para poder conocer si el modem detectaba la señal portadora (esto se indica a través de la salida DCD), y el otro para poder establecer el modem en Modo Sleep. El problema que tuvimos la usar estos dos pines del puerto paralelo C (PC6 y PC7),

    es que el µC los utiliza para realizar el debuging cuando está conectado a un PC. No tuvimos más remedio para salvar este inconveniente que modificar las conexiones de hardware entre

    el PCB y el µC. A medida que íbamos investigando sobre los comandos AT, encontramos el adecuado para saber si el equipo estaba registrado en al red de Ancel, el mismo es el “AT+CREG?”, que devuelve el valor 0 sino está registrado, 1 si está registrado y 2 cuando está intentando registrarse. La dificultad hallada aquí fue que el modem alternaba entre los valores 0 y 2, sin poderse registrarse en la red del proveedor. No conocemos las causas de este problema, sí podemos explicar los pasos seguidos, los cuales fueron: 1) intentar que el dispositivo se registrara en distintos sitios de Montevideo, 2) el uso del comando AT+CBAND para que comenzara la búsqueda de la red en la banda que utiliza el proveedor de servicio elegido (a éste comando devolvía el error 765

    1), 3) usar un SIM card de otro proveedor, para esto

    conseguimos un SIM card en uso , y al realizar una prueba se registró inmediatamente, pero al adquirir una para el uso en nuestro equipo no obtuvimos un resultado favorable, y ya casi al borde de la desesperación probamos por última vez el SIM card que usamos en un primer momento. Esta vez se conectó, y de ahí en más no volvimos a tener dificultades en este asunto. El próximo paso luego de sorteados los obstáculos mencionados antes, fue comenzar a enviar y recibir mensajes de texto, para conseguir esto fueron implementadas las funciones “Enviar_SMS” y Recibir_SMS. Una vez que teníamos listas las funciones incluidas en la librería, lo siguiente fue utilizarlas dentro de la tarea “task_SMS”, que fue definida dentro del RTOS; hubo que realizar varias correcciones en el código empleado (ya que hicimos abuso en el uso de punteros), pero una vez corregido todo lo relativo al uso del modem quedo funcionando de forma adecuada. Al momento de integrar todos los módulos de software que teníamos por separado (ya que la tarea del GPS, fue hecha en paralelo) en uno solo, nos encontramos que el sistema no funcionaba correctamente en un todo, ya que la ISR que empleamos no distinguía cual de puertos serie interrumpía para liberar el semáforo que desbloquea la tarea de mayor prioridad que es la que se ocupa del modem. Gracias a las indicaciones de los docentes Leonardo Steinfeld y Julio Pérez, logramos modificar la isr para que liberara el semáforo, sólo en el caso que la interrupción provenga del puerto serie C, puerto donde se encuentra conectado el modem.

    1 Código de error 765 significa: “invalid input value”

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    15

    Conclusiones:

    Es importante destacar que intentamos hacer un sistema lo más real posible, esto último en el sentido que pretendíamos montar el dispositivo en un vehículo para hacer pruebas en campo. Esto no fue posible ya que no logramos cumplir con la planificación prevista. Distintas causas nos jugaron en contra a la hora de cumplir con los plazos, entre las que se destacan, mayor empleo de tiempo en el diseño y fabricación del hardware, imposibilidad de programar el GPS para que enviara datos sólo en el formato RMC, problemas con el modem a la hora de registrarse en la red del proveedor elegido, así como también el error cometido al usar dos pines de uno de los puertos I/O que el micro usa para debuging cuando está conectado a un PC. El objetivo de tener una tercera tarea en el sistema operativo encargada de tomar datos desde un sensor no fue cumplido por falta de tiempo. Podemos concluir que logramos tener funcionado un sistema operativo con las dos tareas más importantes previstas al comienzo del proyecto, aunque es necesario realizar modificaciones para que no se produzcan fallos de funcionamiento.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    16

    Anexo

    Planificación del Proyecto:

    En el comienzo del proyecto se realizó un cronograma tentativo de los puntos más

    importantes que engloban al mismo. Este cronograma se puede ver a continuación. Por

    diversas razones nos vimos obligados a cambiar ciertos puntos en el transcurso. Una de las

    razones fue el tiempo estimado en la construcción del hardware, el cual nos llevo una

    semana más de lo provisto. Además tuvimos varios problemas con el Modem. Primero nos

    encontramos con el problema de configuración del puerto serie de la plataforma, estábamos

    utilizando pines que se usaban para debugear, lo cual no nos permitía configurarlos como

    entrada, salida. Después nos vimos enfrentados con el problema en la conexión del modem

    a la red celular de Ancel. Lograr esto nos tomo alrededor de diez días.

    Por estas razones realizamos un segundo cronograma.

  • Sistemas Embebidos Para Tiempo Real – Curso 2009 Proyecto Rastreador

    17

    Conceptos del curso aplicados al proyecto:

    • Lenguaje de programación C.

    • Interrupciones de dispositivos I/O.

    • RTOS

    � Uso de semáforos para bloquear tareas.

    � Empleo de semáforos para proteger datos compartidos entre tareas.

    Bibliografía:

    • MicroC OS II, The Real-Time Kernel, 2nd Ed. - Labrosse 2002.

    • An Embedded Software Primer – David E. Simon 1999.

    • SIM340 AT Commands Set Version: 01.00 - Date: 2005-12-28 - DocId: SIM340_ATC_V1.00

    • SIM340C Hardware Interface Description Version: 01.01 - Date: 2006-08-25 - Doc Id: SIM340C_HD_V1.01

    • GPS ENGINE BOARD ET-332 UserManual

    Archivos fuentes: main.c

    Modem_SIMCOM.lib

    GPS_ET332.lib

    Documentación Doxygen: