Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TTULO DEL PFC: Sistema de gestin de productos con emulacin de RFID mediante sensores IEEE 802.15.4 TITULACIN: Ingeniera de Telecomunicaciones (segundo ciclo) AUTOR: Eloy Fernndez Lpez DIRECTOR: Carles Gmez Montenegro FECHA: 21 de octubre de 2008
Ttulo: Sistema de gestin de productos con emulacin de RFID mediante sensores IEEE 802.15.4 Autor: Eloy Fernndez Lpez Director: Carles Gmez Montenegro Fecha: 21 de octubre de 2008
Resumen Desde hace unos aos, est en auge una tecnologa de identificacin de productos, llamada RFID, con mayores prestaciones que la tecnologa basada en el uso de cdigo de barras. A fecha de hoy, la tecnologa RFID ya est madura y est empezando a aumentar su comercializacin y uso generalizado. Este proyecto contiene el diseo, funcionamiento y validacin de dos aplicaciones para su uso tanto en almacenes como en comercios. La primera de ellas, aplicacionPC, es la encargada de procesar toda la informacin enviada por los motes TelosB que se encuentran adheridos a los productos y los cuales poseen la informacin referente a ese producto. Una vez procesada, esta informacin es almacenada en una base de datos donde se lleva el control de todos los productos en stock del almacn. Adems cada 15 minutos realiza una actualizacin automtica de dicha tabla, para llevar un control actualizado de los productos que se encuentran en el almacn. La segunda de ellas, aplicacionMovil, es una aplicacin que va destinada principalmente a encargados, jefes y comerciales, para que stos mediante una pequea aplicacin que tienen que instalar en sus respectivos mviles puedan realizar consultas sobre los productos en stock que se disponen en el almacn.
Finalmente, se han realizado pruebas con las dos aplicaciones que han permitido validar el correcto funcionamiento y eficiencia de ambas. De las pruebas ejecutadas se han obtenido resultados muy prximos a las expectativas previstas, destacando su fiabilidad.
Title: System of product management with RFID emulation through IEEE 802.15.4 sensors Author: Eloy Fernndez Lpez Director: Carles Gmez Montenegro Date: October, 21th 2008
Overview
From a few years now, it is in rise a technology of products identification called RFID, that has more features than the technology based on the use of bar codes. At the present time, RFID technology has thoughned up and both its commercialisation and use have increased. This project contains the design, functioning and validation of two applications for its use both in stores and trades or shops. The first one, aplicacionPC, is in charge of processing all the information sent by the motes TelosB that are adhered to the products which posses the information related to the product. Once processed, this information is stored in a database where all the products in the stock af the store are under control. In addition, every 15 minutes an automatic update of the table of the products is realised to take a real time control of the products that are in the store. The second one, aplicacionMovil, is an application that is intended, mainly, to managers, chiefs and commercial advisors of any company, so they can know at any time, the products they have stored in stock, through an application that they should install in their mobile phones. To end, we should say that tests have been realised to check these applications, and these tests have permited the validation of the correct functioning and efficiency of both applications. Also, from the tests there have been obtained results very close to the expected and we should emphasise the reliability of the applications.
NDICE
4.1. Diseo global del proyecto............................................................................................. 27 4.2. Cdigo ejecutado por los motes TelosB ....................................................................... 28 4.3. Aplicacin PC................................................................................................................... 32 4.4. Aplicacin mvil .............................................................................................................. 38 4.5. Service web ...................................................................................................................... 41 4.6. Base de datos .................................................................................................................. 42 4.6.1. Descripcin BBDD ................................................................................................ 42 4.6.2. Interaccin Java MySQL ................................................................................... 44
IMPLICACIONES MEDIOAMBIENTALES ...................................................... 57 BIBLIOGRAFA ............................................................................................... 59 LISTA DE ACRNIMOS .................................................................................. 62 ANEXO A. TINYOS ...................................................................................... 67
A.1. Instalacin TinyOS para Windows ................................................................................. 67 A.2. Directorio TinyOS ............................................................................................................ 68 A.3. Compilacin de aplicaciones en TinyOS ...................................................................... 70
ANEXO B. ESPECIFICACIONES TCNICAS TELOSB .............................. 71 ANEXO C. CONFIGURACIN PARMETROS DEL CHIP CC2420 ........... 73
C.1. Archivo de configuracin AM.h ..................................................................................... 73 C.2. Archivo de configuracin CC2420Const.h ................................................................... 74
D.3. Funcionalidades de los usuarios ................................................................................... 79 D.3.1. Administradores .................................................................................................... 79 D.3.2. Usuarios registrados............................................................................................. 86 D.3.3. Usuarios sin registrar............................................................................................ 87
ANEXO E.
Introduccin
INTRODUCCIN
Motivacin La tecnologa RFID promete revolucionar la vida de las personas. Da a da, aparecen en el mercado dispositivos RFID con mayores capacidades (memoria) y con costes cada vez ms bajos. Los estndares se van consolidando, lo que da como resultado que, en un futuro muy prximo, estos dispositivos estn por todas partes. Por ello se debe estar preparado para poder explotar todas estas funcionalidades que nos pueden llegar a proporcionar. Referente al inters personal por la eleccin de realizar aplicaciones para ser utilizadas con la tecnologa RFID vienen motivas por: Es una tecnologa que se encuentra en pleno auge y que en un periodo de tiempo no muy grande sustituir en gran medida al actual sistema de cdigo de barras para la identificacin de productos. Y, sobretodo, de las oportunidades que la tecnologa RFID ofrece al ingeniero de telecomunicaciones para disear herramientas y sistemas que reducen drsticamente los costes y el tiempo necesario para recoger, almacenar, procesar, transmitir y analizar de forma automatizada la informacin de sensado facilitada por redes sensoras.
Objetivos El objetivo de este proyecto es el de realizar una herramienta para facilitar el control en tiempo real de todos los productos de un almacn. Para ello, primero se ha realizado una aplicacin capaz de recibir y procesar todos los mensajes enviados por los motes adheridos a los productos y con la informacin de stos, y guardar toda esta informacin en una base de datos, la cual podr ser consultada por los usuarios que tengan acceso a la aplicacin. La segunda aplicacin va destinada a su uso en dispositivos mviles, desde los cuales mediante una peticin por parte del usuario, podr saber en todo momento y desde cualquier punto geogrfico los productos es stock que hay en el almacn.
Estructura El proyecto est estructurado en seis captulos. En el captulo inicial se presenta una breve introduccin sobre los fundamentos de la tecnologa RFID, as como su historia y su funcionamiento. El segundo captulo describe las tecnologas utilizadas para el desarrollo de este proyecto. En el tercer captulo
se detallan los requisitos que debe cumplir el sistema, es decir, los requisitos de las aplicaciones, para su correcto funcionamiento. El cuarto captulo muestra el diseo y la implementacin tanto de las aplicaciones realizadas como de otros sistemas necesarios como la base de datos. En el quinto captulo se explican las diferentes pruebas realizadas para la comprobacin del correcto funcionamiento de las aplicaciones desarrolladas. Ya por ltimo en el sexto captulo se detallan las conclusiones de este PFC, as como las lneas futuras que se proponen a partir de l. Finalmente, se comentan las implicaciones medioambientales del PFC. Aparte de los captulos mencionados, esta memoria incluye una serie de anexos que los completan y que sern referenciados en los captulos que corresponda.
Tecnologa RFID
1.1.
Definicin
RFID, que responde a las siglas de Radio Frequency IDentification, en espaol Identificacin por radiofrecuencia, es un mtodo de almacenamiento y recuperacin de datos remoto que usa unos dispositivos llamados etiquetas, transpondedores o tags RFID (vase Fig. 1.1). Estas etiquetas son similares a una pegatina, que pueden ser adheridas a un producto, animal o persona. Las etiquetas RFID incorporan antenas para permitir recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID. El propsito fundamental de la tecnologa RFID es transmitir la identidad de un objeto (similar a un nmero de serie nico) mediante ondas de radio. Las tecnologas RFID se agrupan dentro de las denominadas Auto ID (Automatic Identification, o Identificacin Automtica) [1] [2].
1.2.
Historia
El origen del RFID est tristemente relacionado con la guerra, concretamente con la II Guerra Mundial, en la que el uso del radar permita la deteccin de aviones a kilmetros de distancia, pero no su identificacin. El ejrcito alemn descubri que si los pilotos balanceaban sus aviones al volver a la base cambiara la seal de radio reflejada de vuelta. Este mtodo haca as distinguir a los aviones alemanes de los aliados y se convirti en el primer dispositivo de RFID pasivo.
Los sistemas de radar y de comunicaciones por radiofrecuencia avanzaron en las dcadas de los 50 y los 60 para tratar de identificar objetos remotamente. Las compaas pronto comenzaron a trabajar con sistemas antirrobo que usando ondas de radio determinaban si un objeto haba sido pagado o no a la salida de las tiendas. Las primeras patentes para dispositivos RFID fueron solicitadas en Estados Unidos, concretamente en enero de 1973 cuando Mario W. Cardullo se present con una etiqueta RFID activa, la cual dispona de una memoria rescribible. El mismo ao, Charles Walton recibi la patente para un sistema RFID pasivo que abra las puertas sin necesidad de llaves. Una tarjeta con un transponedor comunicaba una seal al lector de la puerta que cuando validaba la tarjeta desbloqueaba la cerradura [3]. Despus han ido llegando mejoras, tanto en la miniaturizacin y automatizacin de los procesos de fabricacin, lo cual a llevado a una reduccin del precio final, como en la capacidad de emisin y recepcin, y en la distancia entre los dispositivos emisor y receptor, consiguiendo extender su uso en mbitos tanto domsticos como de seguridad nacional, como sucede con el pasaporte expedido en la actualidad en los EEUU que lleva asociadas etiquetas RFID.
Tecnologa RFID
ejemplo, la reduccin del tiempo de espera en las colas de los supermercados. Las etiquetas electrnicas pueden almacenar mucha ms informacin sobre un producto que el cdigo de barras, que slo puede contener un cdigo. Mientras que sobre el cdigo de barras se puede escribir slo una vez, existen etiquetas electrnicas sobre las que se pueden escribir ms de una vez. La tecnologa RFID evita falsificaciones. Con una simple fotocopia se puede reproducir un cdigo de barras. Las etiquetas electrnicas, en cambio, no se pueden copiar. Un cdigo de barras se estropea o se rompe fcilmente, mientras que una etiqueta electrnica es ms resistente porque, normalmente, forma parte del producto o se coloca bajo una superficie protectora y soporta mejor la humedad y la temperatura. En resumen, la tecnologa RFID resuelve casi todas las limitaciones del cdigo de barras. El nico y principal inconveniente de stas con respecto a los cdigos de barra, a fecha de hoy, es su mayor coste, aunque ste se encuentra en un continuo descenso.
1.3.
Funcionamiento
El modo de funcionamiento de los sistemas RFID es simple. La etiqueta RFID, que contiene los datos de identificacin del objeto al que se encuentra adherido, genera una seal de radiofrecuencia con dichos datos. Esta seal puede ser captada por un lector RFID, el cual se encarga de leer la informacin y transferirla, en formato digital, a la aplicacin especfica que utiliza RFID. Por tanto, un sistema RFID consta de los siguientes tres componentes: Etiqueta RFID: compuesta por una antena, un transductor radio y un material encapsulado o chip. Lector RFID: compuesto por una antena, un transceptor y un decodificador. Subsistema de procesamiento de datos: proporciona los medios de proceso y almacenamiento de datos.
1.4.
Dispositivos
En este punto se describirn los dos elementos bsicos de un sistema RFID: los lectores y las etiquetas. De stas ltimas se pueden encontrar de tres tipos diferentes: activas, semipasivas (o semiactivas, tambin conocidas como asistidas por batera) o pasivas.
Tecnologa RFID
Las etiquetas RFID semipasivas son muy similares a las pasivas, salvo que incorporan adems una pequea batera. Esta batera permite a la etiqueta estar constantemente alimentada, eliminando la necesidad de disear una antena para recoger potencia de una seal entrante. Las etiquetas RFID semipasivas responden ms rpidamente comparadas con las etiquetas pasivas. En la Fig. 1.5 se muestran las partes que forman una etiqueta semipasiva.
Finalmente, las etiquetas RFID activas, deben tener una fuente de energa, y pueden tener rangos mayores de cobertura y memorias ms grandes que las etiquetas pasivas, as como la capacidad de poder almacenar informacin adicional enviada por el transmisor-receptor.
Actualmente, las etiquetas activas ms pequeas tienen un tamao aproximado de una moneda. Muchas etiquetas activas tienen rangos de cobertura de diez metros, y una duracin de batera de hasta varios aos. En la Fig. 1.6 se muestra una etiqueta RFID activa con un encapsulado en forma de llavero.
1.5.
Estandarizacin y regulacin
Los estndares para RFID son un tema delicado ya que muchas aplicaciones en las que se involucran estas etiquetas inteligentes estn relacionadas con los pagos o con las cadenas de produccin. Los estndares para RFID tratan los siguientes temas: Protocolo en el interfaz aire: la forma en la que las etiquetas y los lectores se pueden comunicar. Contenido de los datos: organizacin de los datos a intercambiar. Conformidad: pruebas que los productos deben cumplir para estar dentro del estndar. Aplicaciones: cmo se pueden utilizar las aplicaciones con RFID. La generacin de estndares para RFID tiene como particularidad el conflicto entre dos organizaciones: ISO y EPC Global, con propuestas de estndares por ambas partes y ambas buscan conseguir etiquetas de bajo coste. Los estndares de la EPC para etiquetas son de dos clases: Clase 1: Etiqueta simple, pasiva, de slo lectura con una memoria no voltil programable una sola vez. Clase 2: Etiqueta de slo lectura que se programa en el momento de fabricacin del chip (no programable a posteriori).
Tecnologa RFID
Por su parte, ISO ha desarrollado estndares de RFID para la identificacin automtica y la gestin de objetos. Existen varios estndares relacionados, como ISO 10536, ISO 14443 y ISO 15693, pero la serie de estndares estrictamente relacionada con las RFID y las frecuencias empleadas en dichos sistemas, es la serie 18000.
Por otra parte respecto la regulacin de las frecuencias, no hay ninguna corporacin pblica global que gobierne las frecuencias usadas para RFID. En principio, cada pas puede fijar sus propias reglas. Las principales corporaciones que gobiernan la asignacin de las frecuencias para RFID son: EEUU: FCC (Federal Communications Commission) Canad: DOC (Departamento de la Comunicacin) Europa: ERO, CEPT, ETSI y administraciones nacionales. Obsrvese que las administraciones nacionales tienen que ratificar el uso de una frecuencia especfica antes de que pueda ser utilizada en ese pas. Japn: MPHPT (Ministry of Public Management, Home Affairs, Post and Telecommunication) China: Ministerio de la Industria de Informacin Australia: Autoridad Australiana de la Comunicacin (Australian Communication Authority) Nueva Zelanda: Ministerio de desarrollo econmico de Nueva Zelanda (New Zealand Ministry of Economic Development
Las etiquetas RFID de LF (125 - 134 kHz y 140 - 148.5 kHz) y de HF (13.56 MHz) se pueden utilizar de forma global sin necesidad de licencia. La banda de UHF (868 - 928 MHz) no puede ser utilizada de forma global, ya que no hay un nico estndar global. En Norteamrica, UHF se puede utilizar sin licencia para frecuencias entre 908 y 928 MHz, pero hay restricciones referentes a la energa de transmisin. En Europa, UHF est bajo consideracin para frecuencias entre 865.6 y 867.6 MHz. Su uso es sin licencia slo para el rango de 869.40 y 869.65 MHz, pero tambin tiene restricciones en la potencia de transmisin. El estndar UHF norteamericano (908 - 928 MHz) no es aceptado en Francia ya que interfiere con sus bandas militares. En China y Japn no hay regulacin para el uso de UHF. Cada aplicacin de esta frecuencia en estos pases necesita de una licencia, que debe ser solicitada a las autoridades locales, y puede ser revocada. En Australia y Nueva Zelanda, el rango es de 918 a 926 MHz para uso sin licencia, pero, como en los dems pases, hay restricciones en la energa de transmisin.
10
Tecnologas utilizadas
11
2.1.
Plataforma TelosB
Se han utilizado este tipo de sensores, ya que se trata del material disponible para este PFC, adems dispone de una plataforma ya conocida y emula perfectamente a una etiqueta RFID, pero para una futura implementacin comercial se han de utilizar las etiquetas RFID pasivas explicadas en el Captulo 1 [6]. Otra ventaja muy importante de este tipo de sensores es que poseen una gran facilidad de programacin y recoleccin de datos por parte del usuario, ya que disponen de una interfaz USB. Sus caractersticas tcnicas ms importantes son las siguientes: Soporta el interfaz radio IEEE 802.15.4, con velocidad de transmisin de 250 kbps, vase apartado 2.1.2. Microcontrolador MSP430 de 8 MHz con 10 kB RAM. Antena integrada, banda de 2.4 a 2.4835 GHz. Recolector de datos de programacin va USB.
12
Sistema operativo de libre distribucin (funciona con TinyOS 1.1.11 o superior). Bajo consumo de potencia. Funciona con dos pilas estndar AA.
En los puntos 2.1.3 y 2.1.4 se realizar una pequea descripcin del sistema operativo TinyOS y del lenguaje de programacin que ste utiliza, denominado nesC.
Tecnologas utilizadas
13
El objetivo es que un sensor equipado con esta tecnologa pueda ser alimentado con dos pilas AA un periodo de entre seis meses y dos aos, aunque en la prctica se ha verificado que se podrn conseguir casi cinco aos de duracin en las aplicaciones de domtica y seguridad. En conclusin, IEEE 802.15.4 resulta adecuado para redes estticas, escalables, con muchos dispositivos, pocos requisitos de ancho de banda y dnde se requiera una duracin muy prolongada de la batera, como pueden ser aplicaciones de control o monitorizacin, en multitud de entornos. En el siguiente apartado se explicar el funcionamiento del estndar IEEE 802.15.4. 2.1.2.2. Funcionamiento En el estndar IEEE 802.15.4 se indican dos modos de funcionamiento, el modo beaconless y el modo beacon. A continuacin se describir de forma breve las dos formas existentes. La transmisin en modo beacon est orientada a redes donde existe el papel del coordinador (por ejemplo en el caso de una topologa en estrella), el Personal Area Network coordinator se encarga de transmitir beacons cada cierto tiempo para que los dispositivos dentro de su red se puedan sincronizar, definiendo en caso de necesidad una latencia mxima para aquellos dispositivos que necesiten tener este parmetro garantizado (transmisin con beacons y un tiempo de acceso garantizado). Como mecanismo de acceso al medio se utiliza CSMA-CA ranurado. La transmisin en modo beaconless est orientada a redes peer to peer donde existe comunicacin entre todos sin la intervencin de un coordinador que los sincronice. El mecanismo de acceso al medio es el CSMA-CA no ranurado de modo que cada dispositivo transmite en el momento que es necesario sin esperar ningn beacon de un PAN coordinator. A continuacin vamos a profundizar un poco ms en este tipo de funcionamiento ya que es el que implementa el chip de los sensores utilizados en este proyecto (chip CC2420). En el Anexo C se muestra el archivo de configuracin de este chip y se definen las variables ms importantes, como el canal o la potencia que utiliza para trabajar. 2.1.2.3. Formato del mensaje AM para la MAC del chip CC2420 El formato del mensaje radio que se observa al recuperar cualquier paquete se compone de dos campos: un primer campo, el campo direccionamiento, dentro del cual cada mote coloca su cabecera definida en el archivo de configuracin AM.h (vase Anexo C), y un segundo campo, el campo de datos, con un tamao mximo de 102 bytes.
14
Como se ver en el apartado 4.2, para nuestro proyecto slo nos interesa el campo data, que es donde se encuentra la informacin referente al producto, es decir, el cdigo de la marca del producto, el cdigo de producto y el cdigo nico que identifica a ese producto.
2.1.3. TinyOS
El sistema operativo TinyOS es de libre distribucin y est especialmente diseado para dispositivos sensores. Es un sistema operativo basado en componentes, tareas y orientado a eventos, todo ello con el uso de poca memoria. La dinmica de los programas realizados bajo TinyOS est conducida por tareas, las cuales pueden ser interrumpidas para atender eventos ya que stos disponen de una prioridad mayor para ser atendidos. TinyOS define 3 clases de abstraccin que son la esencia para su comprensin y posterior programacin: Los comandos se pueden observar en la Fig. 2.3. Al llamar a un comando, ste dentro de su componente llama a otros componentes de capas inferiores. Los eventos conllevan el efecto inverso, una llamada hacia arriba como se puede ver en la Fig. 2.3. Un componente de bajo nivel avisa a uno de alto nivel de que ha sucedido algo. Si sucede un evento, ste tiene mayor prioridad que cualquier tarea y pasara a ejecutarse. Las tareas son porciones de cdigo que se ejecutan de forma asncrona siempre y cuando la CPU no tenga que ejecutar ningn evento. stas se ejecutan por orden de llamada (FIFO) y en caso de que la cola estuviese vaca el procesador entrara en standby hasta que un nuevo evento hiciese despertar al procesador.
Tecnologas utilizadas
15
Para programar mediante TinyOS se utiliza una extensin del lenguaje C llamada nesC, la cual permite el uso de interfaces que van conectadas a componentes. Para crear un programa en nesC, nicamente se tiene que elegir los componentes (las partes funcionales) previamente programadas y despus relacionarlas mediante otro fichero de configuracin a las interfaces que sern utilizadas como cdigo en nuestra futura aplicacin.
2.1.4. nesC
nesC es un lenguaje de programacin que se utiliza para crear aplicaciones que sern ejecutadas en sensores con el sistema operativo TinyOS. Por tanto, dicho lenguaje, proporciona caractersticas necesarias para poder realizar aplicaciones de una forma ms cmoda para el programador. La caracterstica principal de este lenguaje de programacin es que combina las ventajas de una programacin orientada en objetos (POO) y de una programacin orientada en eventos (POE). La POO permite programar los diferentes componentes de los sensores de forma genrica. En nesC se definen dos clases de componentes: los mdulos y las configuraciones. Los mdulos contienen el cdigo en s del componente mediante interfaces. Por otra parte, las configuraciones enlazan o relacionan las interfaces de los componentes que se van a necesitar en nuestro mdulo. El fichero de configuracin es crucial porque si no est bien configurado, la aplicacin no compilar. Tanto mdulos como configuraciones utilizan la misma extensin *.nc. a diferencia entre ambos est en la sintaxis que utilizan y es por ello que siguen un cdigo de letras para diferenciar unos de otros. Por ejemplo, cuando trabajamos con un programa aplicacin, aplicacionM.nc sera el mdulo y aplicacion.nc seria el fichero de configuracin.
16
2.2.
Se ha tomado la decisin de utilizar la tecnologa J2EE como herramienta de trabajo para la realizacin de la parte aplicacin del proyecto ya que se trata de una tecnologa libre (Open Source) de la cual existen multitud de herramientas gratuitas. Pero no slo esto, sino que existe una cantidad de documentacin y APIs superior a la que pueda existir para otras plataformas como .NET y sto es un factor muy importante ya que puede facilitar y agilizar enormemente el diseo e implementacin de la aplicacin. Otro aspecto importante, es que uno de los objetivos del proyecto es fomentar el uso de las tecnologas libres a nivel empresarial y poder demostrar que se pueden realizar grandes proyectos sin necesidad de tener que invertir en herramientas que en muchos casos pueden resultar extremadamente costosas. A continuacin se muestra el listado completo de motivos por los cuales se ha elegido J2EE como tecnologa de desarrollo:
Lenguaje JAVA extendido Tecnologa potente y madura Interoperable con otras tecnologas: XML, JavaScript, HTML, Gran cantidad de soporte en la red: APIs, manuales OpenSource y herramientas de desarrollo gratuitas (Eclipse) Muchas utilidades ya creadas y fciles de integrar Fcil conectividad con Base de Datos: driver JDBC (MySQL) Existencia de frameworks de desarrollo basados en MVC1 (Hibernate)
Es un patrn de arquitectura de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de control.
Tecnologas utilizadas
17
Java Server Faces: orientado a la creacin de interfaces de usuario. Hibernate: tiene como objetivo facilitar la persistencia de objetos Java en bases de datos y al mismo tiempo la consulta de estas bases de datos para obtener objetos. ste ser muy til en el desarrollo de nuestras aplicaciones. Spring: tiene como objetivo facilitar la configuracin de los java beans2 dentro de una aplicacin. Su meta es conseguir separar los accesos a datos y los aspectos relacionados con las transacciones, para permitir objetos de la capa de negocio3 reutilizables que no dependan de ninguna estrategia de acceso a datos o transacciones. Struts: orientado al control de eventos.
2.3.
Aunque existen varias plataformas para el desarrollo de aplicaciones para dispositivos mviles, como pueden ser Microsoft .net Compact Framework o J2ME, se ha decidido utilizar esta ltima ya que Microsoft .net tiene dos desventajas muy importantes sobre J2ME. La primera, es que no es multiplataforma, no pudiendo utilizarse bajo ningn otro sistema operativo que no sea de Microsoft y la segunda es que no es gratuita.
2.3.1. J2ME
J2ME es la versin de Java orientada a los dispositivos mviles. Debido a que los dispositivos mviles tienen una potencia de clculo baja e interfaces de usuario pobres, es necesaria una versin especfica de Java destinada a estos dispositivos, ya que el resto de versiones de Java, J2SE4 o J2EE, no encajan dentro de este esquema. J2ME es por tanto, una versin reducida de J2SE.
Un bean es un componente software que tiene la particularidad de ser reutilizable y as evitar la tediosa tarea de programar los distintos componentes uno a uno (p.ej. un botn). 3 La capa de servicios de negocio consiste en la lgica que realiza las funciones principales de la aplicacin: procesamiento de datos, coordinacin de varios usuarios o administracin de recursos externos como, por ejemplo, bases de datos. 4 J2SE es la versin de Java orientada a aplicaciones de escritorio y que no desarrollen WebServices.
2
18
2.3.2. Plataforma
En la Fig. 2.4 se muestra qu lugar ocupa la plataforma J2ME en el mundo Java. Dicha plataforma se divide en configuraciones y en perfiles por encima de ellas [10].
En funcin de las caractersticas del dispositivo para el cual se desarrolla la aplicacin, habr que acogerse a las normas impuestas por alguna de las especificaciones que aparecen en el grfico. En este caso, al orientarnos al desarrollo para dispositivos mviles de capacidades muy restringidas en grfica, procesamiento y memoria, se trabajar bajo la combinacin siguiente: Configuracin Connected Limited Device Configuration, CLDC (versin 1.1), a la cual nos obliga la reducida Kilo Virtual Machine (KVM) que utilizan estos dispositivos para interpretar los bytecodes5 Java que generemos. Perfil Mobile Information Device Profile, MIDP, en su ltima y mejorada versin 2.0.
Cdigo resultado al compilar el cdigo fuente, cercano al lenguaje mquina pero independiente del ordenador y el sistema operativo en que se ejecuta.
Tecnologas utilizadas
19
Tal y como se muestra en la Fig. 2.5, los MIDlets siempre tendrn tres mtodos bsicos que marcan los estados de su ciclo de vida [11].
Pausado: Estado "en espera" en el que el MIDlet mantiene los mnimos recursos posibles, entrando en l cuando se crea (antes de ejecutarse su mtodo startApp() ) o tras llamarlo desde el mtodo startApp(). Adems, la plataforma puede pasar el MIDlet a este estado si as lo estima oportuno (por ejemplo, ante una llamada telefnica). Activado: Estado de ejecucin del MIDlet al que se pasa tras ejecutar su mtodo startApp(), tanto inicialmente o como despus de la recuperacin de una pausa. Destruido: Los dos estados anteriores pueden pasar a ste y de l ya no se podr salir. Es el estado donde el MIDlet concluye su actividad, pasando a l por medio de la invocacin de su mtodo destroyApp() o, por ejemplo, ante alguna excepcin que se produzca en el constructor6 del MIDlet.
2.4.
Base de datos
En este punto se van a describir las caractersticas de la base de datos. Se ha decidido elegir el gestor de base de datos MySQL ya que se trata de un software muy potente y de libre distribucin. MySQL permite elegir entre diferentes tipos de motores de almacenamiento que nos permite seleccionar el tipo de almacenamiento interno de cada tabla, en base al que mejor se adecue a nuestra situacin.
20
Para este proyecto se ha decidido utilizar la tecnologa de almacenamiento de tablas InnoDB frente por ejemplo la tecnologa MyISAM que es la que viene por defecto en MySQL y la cual ofrece ms velocidad de lectura siempre y cuando no ocurran simultneamente. Las principales caractersticas del motor de almacenamiento InnoDB son las siguientes: Transaccional7. Multiversionado: cuando mltiples transacciones modifican registros, InnoDB mantiene aisladas las transacciones guardando para cada una de ellas una versin distinta de un mismo registro, a cada transaccin la versin que le corresponde. Fcil recuperacin de datos en caso de error.
En definitiva, es una buena eleccin cuando se necesitan transacciones, restricciones en claves forneas, o se tienen muchas escrituras simultneas, como va a ser el caso de este proyecto, al estar siempre recibiendo los datos enviados por los motes adheridos a los productos [12] [13].
2.4.1. JDBC
JDBC es el acrnimo de Java Database Connectivity, un API que permite la ejecucin de operaciones sobre base de datos desde el lenguaje de programacin Java independientemente del sistema de operacin donde se ejecute o de la base de datos a la cual se accede utilizando el lenguaje SQL del modelo de base de datos que se utilice. En la Fig. 2.6 se puede observar un esquema de la interaccin de una aplicacin con la base de datos mediante JDBC. El API JDBC se presenta como una coleccin de interfaces Java y mtodos de gestin de manejadores de conexin hacia cada modelo especfico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los mtodos de registro para declarar los tipos de localizadores a base de datos que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la librera de conexin apropiada al modelo de su base de datos, es este caso la librera que se utilizar ser mysql-connector-java-5.1.5-bin y accede a ella estableciendo una conexin. A partir del establecimiento de conexin puede realizar cualquier tipo de tarea con la base de datos siempre que tenga permiso, como pueden ser: consultas, actualizaciones, aadir elementos a las tablas o borrarlos, etc [14].
Un gestor transaccional es un componente que procesa informacin descomponindola de forma unitaria en operaciones indivisibles.
Tecnologas utilizadas
21
APLICACIN
JDBC
MySQL
Fig. 2.6 Arquitectura de comunicacin base de datos aplicacin
2.5.
Servidor Tomcat
Para una parte del proyecto era necesaria la utilizacin de un servidor que pudiera contener servlets8 y se decidi elegir Tomcat. Tomcat (Jakarta Tomcat) es un servidor de aplicaciones que sirve como contenedor de servlets y Java Server Pages (JSP) desarrollado bajo el proyecto Jakarta en Apache Software Foundation. El servidor Tomcat puede funcionar como servidor Web por s mismo. En sus inicios existi la percepcin de que el uso de Tomcat de forma autnoma era slo recomendable para entornos de desarrollo y entornos con requisitos mnimos de velocidad y gestin de transacciones. Hoy en da ya no existe esa percepcin y Tomcat es usado como servidor Web autnomo en entornos con alto nivel de trfico y alta disponibilidad [15]. La estructura de directorios de Tomcat es importante ya que al instalarlo se genera una variable de entorno CATALINA_HOME que corresponde al path donde se encuentra el contenedor de servlets. Dicha estructura es [16]: bin: contiene los scripts de arrancar/parar. common: clases comunes que pueden utilizar Catalina9 y las aplicaciones Web. conf: contiene varios ficheros de configuracin incluyendo server.xml (el fichero de configuracin principal de Tomcat) y web.xml que configura los valores por defecto para las distintas aplicaciones desplegadas en Tomcat.
8 9
Un servlet es un objeto que se ejecuta en un servidor. Catalina es el nombre del contenedor de servlets del Jakarta Tomcat.
22
doc: contiene varia documentacin sobre Tomcat. lib: contiene varios ficheros .jar que son utilizados por Tomcat. logs: donde Tomcat sita los ficheros de diario. server: clases utilizadas solamente por Catalina. shared: clases compartidas por todas las aplicaciones Web. webapps: directorio que contiene las aplicaciones Web que cargar el navegador cuando haga la peticin al servidor. work: almacenamiento temporal de ficheros y directorios.
En la Fig. 2.7 se muestra un sencillo esquema de la posicin que ocupa el servidor Tomcat dentro de esta arquitectura.
1 Solicitud
CLIENTE
Respuesta 2
SERVLET
SERVIDOR TOMCAT
Fig. 2.7 Esquema de arquitectura con servidor Tomcat
23
3.1.
Requisitos funcionales
Los requisitos funcionales que debe cumplir la aplicacin son los siguientes: Gestin de administradores o Registrar administradores. o Modificar el password de los administradores. o Eliminar administradores. o Registrar usuarios. o Modificar el password de los usuarios. o Eliminar usuarios. o Registrar marcas de productos. o Modificar la descripcin de las marcas registradas. o Eliminar marcas. o Registrar productos de las marcas que se encuentren dadas de alta. o Modificar la descripcin de los productos registrados. o Eliminar productos. Gestin de usuarios o Aadir productos que por motivos externos a la aplicacin no son reconocidos (p.ej. el producto no lleve etiqueta o este daada).
24
o Eliminar productos que por motivos externos a la aplicacin no son reconocidos. Motor de comunicaciones o Servicio de informacin de los productos en stock mediante conexiones HTTP de la aplicacin mvil y el servidor instalado en el almacn. Control de acceso: o Protocolo de seguridad de acceso de los usuarios mediante login y password que le restringir de ciertas acciones. Sistema automtico: creacin de un sistema automtico encargado de recoger la informacin enviada por los motes y que cada cierto tiempo realice una actualizacin de los productos en stock en la base de datos.
3.2.
Requisitos no funcionales
El sistema tambin tiene que cumplir las siguientes condiciones o requisitos no funcionales: Seguridad: el proyecto tiene que garantizar la proteccin de acceso a ciertas secciones. Entorno amigable: el sistema tiene que tener un entorno fcil de usar para que cualquier usuario pueda utilizar los servicios sin dificultades. Rpido: el sistema tiene que ser los ms eficiente posible en cuanto a velocidad. Escalable: el sistema no debera colapsarse al ampliar el nmero de peticiones por parte de los usuarios mviles, ni por el aumento de productos en stock. Coste: el proyecto tiene que conseguir hacerse en el menor nmero de horas y con uso prioritario de software libre. Ampliable: la aplicacin tiene que dar facilidades para poderse ampliar el nmero de secciones o servicios o incluso un cambio de aspecto de la interfaz grfica. Multithread: el sistema puede estar almacenando un producto nuevo y un usuario mvil realizando una peticin de forma simultnea. Documentacin: el proyecto debe estar documentado para permitir futuras mejoras o ampliaciones.
25
Control de errores: el sistema debe disponer de un sistema de logs para intentar identificar el mayor nmero de errores posibles y con rapidez.
3.3.
Roles de la plataforma
Se han definido cinco roles o usuarios tipo diferentes que pueden utilizar la aplicacin. Se distinguen principalmente por los permisos de que disponen y por las acciones que pueden llegar a desempear. A continuacin se explica cada uno: Usuario pblico: cualquier persona perteneciente a la empresa puede acceder a la aplicacin instalada en el almacn para ver que productos se encuentran en stock, y activar o desactivar la recogida de datos enviados por los motes. Usuario registrado: cuando un usuario pblico se registra pasa a ser usuario registrado y obtiene permisos para realizar ciertas acciones como aadir o eliminar productos en stock mediante su nombre de usuario y su contrasea. Usuario mvil: cualquier persona perteneciente a la empresa y con la aplicacin instalada en su telfono mvil, puede realizar peticiones sobre los productos que se encuentran en stock en tiempo real. Administrador: ser una persona con permisos totales sobre la aplicacin. Podr acceder a la seccin desde la cual se aaden, modifican o eliminan administradores, usuarios, marcas y productos.
Sistema: se trata de un algoritmo inteligente que se encargar de realizar cada cierto tiempo una actualizacin de los productos en stock en la base de datos.
26
Diseo e implementacin
27
4.1.
La Fig. 4.1 muestra el escenario con las tres partes principales de las que est formado este proyecto. La primera de ellas consiste en el cdigo para el envo de la informacin referente a los productos mediante sus respectivos motes por el medio radio y la recepcin de estos mensajes por parte del mote receptor, el cual se encuentra conectado a un puerto USB del PC, donde se encuentra instalada la aplicacinPC. La segunda es la aplicacinPC, la cual es la encargada de procesar los mensajes recibidos por el mote receptor. Tambin sta es la encargada de administrar los usuarios y los productos e interactuar con la base de datos. Por ltimo, se tiene la comunicacin entre el telfono mvil donde se encuentra instalada la aplicacinMvil y el servidor instalado en el PC donde se ejecuta la aplicacin InfoMobile. Esta parte del proyecto permite llevar un control actualizado y desde cualquier sitio de los productos en stock que hay en el almacn, siempre y que se disponga de cobertura y acceso a Internet.
BBDD
Servidor
Aplicacin Mvil
AplicacinPC
InfoMobile
28
4.2.
Como ya se ha dicho en el apartado 2.1.1, los motes utilizados en este proyecto son los TelosB, los cuales tratan de emular un RFID. En la Fig. 4.2 se muestra el formato de la trama del paquete radio que es enviado por stos y que ser recibido por el mote receptor y procesado por la aplicacinPC.
2 bytes
2 bytes
2 bytes
Cdigo marca
Cdigo producto
Cdigo nico
Fig. 4.2 Formato de la trama del paquete radio de los motes TelosB
En este proyecto, del paquete radio enviado por los motes, slo nos interesan los bytes enviados en el campo data. Este campo puede llegar a tener como mximo una longitud de 102 bytes pero para enviar la informacin referente al producto slo nos hacen falta 6 bytes, cuya funcionalidad se explicar a continuacin. En el campo length es donde se define la longitud que tomar el campo data, en este caso el campo lenght tomar el valor 6 para conseguir la longitud deseada del campo data. Para esta aplicacin los dems bytes que se envan en el paquete radio no tienen ningn inters. Para albergar la informacin referente del producto se han definido 3 campos dentro del campo data, de 2 bytes cada uno, por lo tanto cada campo dispondr de 65536 posibles valores: Cdigo marca: indica el cdigo de la marca a la que pertenece el producto. Cdigo producto: indica el cdigo de ese producto. Cdigo nico: indica un cdigo nico de producto, para poder diferenciar productos iguales. Para que los motes realicen las funciones deseadas, primero hay que cargarles un cdigo con los eventos y tareas que se desea que lleven acabo. Para poder cargar este cdigo, los motes tienen que estar conectados al puerto USB del PC, desde el cual mediante unos comandos introducidos en la consola Cygwin
Diseo e implementacin
29
se instalar este cdigo en el mote. La plataforma de desarrollo Cygwin se instala al realizar la instalacin del sistema operativo TinyOS (vase Anexo A). A continuacin se van a mostrar las principales caractersticas del cdigo en nesC cargado en los motes. Primeramente se puede distinguir entre el cdigo cargado en los motes adheridos a cada producto y el mote receptor conectado al PC. El cdigo cargado en los motes adheridos a cada producto es el mismo para todos, lo nico que cambia es la informacin que se enva en el campo data y que es especfica de cada producto. En la Fig. 4.3 se muestra el evento encargado de crear el paquete con los datos del producto y de llamar al evento RadioSend que es el encargado de enviar el mensaje.
event result_t Timer.fired() { prueba->addr=0; prueba->type=1; prueba->group=TOS_AM_GROUP; prueba->length=6; prueba->data[0]=cod_empresa1; prueba->data[1]=cod_empresa2; prueba->data[2]=cod_producto1; prueba->data[3]=cod_producto2; prueba->data[4]=cod_unico1; prueba->data[5]=cod_unico2; call RadioSend.send(0,6,prueba); return SUCCESS; } event result_t RadioSend.sendDone(TOS_MsgPtr sent, result_t success) { return SUCCESS; }
Tambin hay que aadir que para que la base de datos lleve un control actualizado sobre los productos en stock, stos han de enviar el mensaje que se ha mostrado anteriormente cada cierto tiempo. Se ha credo conveniente que este tiempo sea de 5 minutos, ya que de esta manera se lleva un control actualizado que se ajusta bastante a la realidad y tambin se consigue aumentar el periodo de duracin de las bateras, gracias ya de por si al bajo consumo de estos dispositivos y al espacio de tiempo entre envo de mensajes. Esta variable es definida cuando se llama a la funcin Timer.start y las unidades en las que hay que definirlo son los milisegundos, vase Fig. 4.4.
30
command result_t StdControl.start() { call RadioControl.start(); call Timer.start(TIMER_REPEAT, 18000000); return SUCCESS; }
En la Fig. 4.5 se muestra un diagrama de flujo con el funcionamiento de los motes adheridos a los productos.
ENCENDIDODELMOTE
eventoTimer.start() cada5minutos
Por otro lado, con respecto al cdigo cargado en el mote receptor, hay que destacar dos eventos: a) el encargado de recibir los mensajes y almacenarlos en una cola, cuyo tamao es definida por el usuario (vase Fig. 4.6). b) el encargado de enviar estos paquetes almacenados en la cola del mote por el puerto USB para que los pueda procesar la aplicacinPC (vase Fig. 4.7).
event TOS_MsgPtr RadioReceive.receive(TOS_MsgPtr Msg) { TOS_MsgPtr pBuf = Msg; dbg(DBG_USR1, "TOSBase received radio packet.\n"); atomic {
Diseo e implementacin
31
if (!uartFull) { pBuf = uartQueue[uartIn]; uartQueue[uartIn] = Msg; if( ++uartIn >= UART_QUEUE_LEN ) { uartIn = 0; } if (uartIn == uartOut) { uartFull = TRUE; } if (!uartBusy) { if (post UARTSendTask()) { uartBusy = TRUE; } } } else { dropBlink(); } } return pBuf; }
event result_t UARTSend.sendDone(TOS_MsgPtr msg, result_t success) { if (!success) { failBlink(); } else { atomic { if (msg == uartQueue[uartOut]) { if( ++uartOut >= UART_QUEUE_LEN ) uartOut = 0; if (uartFull) { uartFull = FALSE; } } } } post UARTSendTask(); return SUCCESS; }
Fig. 4.7 Funcin para el envo de mensajes a travs del puerto USB
32
Finalmente se va a mostrar un esquema grfico del funcionamiento del mote receptor (vase Fig. 4.8).
RECEPCINDELMENSAJE
evento RadioReceive.receive()
cola llena? No
eventodropBlink() luzrojaencendida
guardamensaje
envamensajehaca aplicacinPC
4.3.
Aplicacin PC
La aplicacinPC se ha desarrollado mediante la plataforma de desarrollo OpenSource EasyEclipse en su distribucin EasyEclipse Server Java, la cual ha sido instalada sobre el sistema operativo Windows XP. Esta aplicacin consta de dos partes. Una de las partes es la encargada de procesar los mensajes recibidos por el mote receptor y almacenar esta informacin en la base de datos, concretamente en la tabla info_producto, en la cual se guardar el cdigo de marca, el cdigo de producto y el cdigo nico que vienen dentro del mensaje como tambin la hora en la que se ha procesado ese mensaje, la cual la proporciona el sistema del PC.
Diseo e implementacin
33
Para que esta parte de la aplicacin se ejecute, desde la pantalla principal de la aplicacin (vase Fig. 4.9) habr que clickar sobre el botn Iniciar, si en cualquier momento se desea detener el proceso habr que clickar sobre el botn Parar.
A continuacin se muestra un diagrama de flujos con el funcionamiento de esta parte de la aplicacin (vase Fig. 4.10), en el cual se puede observar como desde el momento que se clicka el botn Iniciar, la aplicacin empieza a procesar todos los mensajes que el mote receptor le enva por el puerto USB. Se ha creado una estructura que contiene los mismos campos que el mensaje que se enva por medio radio, muy til a la hora de almacenar la informacin y compararla con la informacin ya almacenada en la base de datos.
34
botnINICIAR
StartReading()
recibedatospor S puertoUSB? No
comprobar_duplicado()
comparaelpaquetecon laBBDD
yaexisteel producto? No
insertar_info_producto()
almacenaelproducto enlaBBDD
Para acceder a la otra parte de la aplicacinPC habr que clickar sobre el botn Gestor, y aparecer la pantalla que se muestra en la Fig. 4.11.
Diseo e implementacin
35
Desde aqu segn los privilegios que se tenga, dependiendo de si el usuario es administrador, usuario registrado usuario sin registrar, se tendr acceso a ciertas operaciones, las cuales se muestran a continuacin. o Administrador Se podr dar de alta, modificar o eliminar a administradores. Se podr dar de alta, modificar o eliminar a usuarios. Se podr dar de alta, modificar o eliminar a marcas. Se podr dar de alta, modificar o eliminar a productos. o Usuario registrado Se podr aadir productos al stock del almacn que por motivos ajenos a la aplicacin no son detectados por sta (ej. rotura del mote). Se podr eliminar productos del stock del almacn. o Usuario sin registrar Se podr actualizar la tabla de la base de datos que contiene los productos en stock del almacn sin haber de esperar la actualizacin automtica que realiza la aplicacin cada 15 minutos. Se podr visualizar una tabla donde aparecen todos los productos en stock del almacn que existen actualmente. Antes de mostrar la tabla con los productos se realiza una actualizacin de la tabla de la base de datos que contiene los productos en stock.
36
A continuacin se muestra mediante diagramas de flujo a que funcionalidades se tiene acceso dependiendo de los privilegios, en la Fig. 4.12 se muestran las funcionalidades de los administradores, en la Fig. 4.13 de los usuarios registrados y por ltimo en la Fig. 4.14 de los usuarios sin registrar.
GUI_BBDD()
botnADMINISTRADOR
No
login correcto? S
GUI_Administrador()
ADMINISTRADOR GUI_aadir _admin() GUI_modificar _admin() GUI_eliminar _admin() botn AADIR botn MODIFICAR botn ELIMINAR
MARCAS
botn AADIR botn MODIFICAR botn ELIMINAR GUI_aadir _empresa() GUI_modificar _empresa() GUI_eliminar _empresa()
USUARIO
GUI_aadir _usu() GUI_modificar _usu() GUI_eliminar _usu() botn AADIR botn MODIFICAR botn ELIMINAR
PRODUCTOS
botn AADIR botn MODIFICAR botn ELIMINAR GUI_aadir _producto() GUI_modificar _producto() GUI_eliminar _producto()
Diseo e implementacin
37
GUI_BBDD()
botnNUEVOPRODUCTO
botnELIMINARPRODUCTO
No
login correcto? S
login correcto? S
No
insertar_info_producto()
Almacenael productoenlaBBDD
eliminar_info_producto()
Eliminaelproducto delaBBDD
GUI_BBDD()
botnACTUALIZAR
botnVERPRODUCTOS
actualizar_info_producto() GUI_ver()
38
4.4.
Aplicacin mvil
La aplicacin mvil se ha desarrollado mediante la plataforma de desarrollo OpenSource EasyEclipse en su distribucin EasyEclipse Mobile Java, la cual ha sido instalada sobre el sistema operativo Windows XP. En este apartado se va a realizar una descripcin de las funcionalidades de las que dispone la aplicacin mvil y posteriormente una pequea descripcin de la comunicacin entre el dispositivo mvil y el servlet. La aplicacin mvil, para este proyecto dispone de dos tipos de bsqueda de productos en stock en el almacn, por marca y por producto. Aunque tambin se ha dejado implementado otro tipo de bsqueda por fecha que durante este punto se detallaran sus particularidades. La Fig. 4.15 muestra la pantalla inicial de la aplicacin mvil. Aadir que desde cualquier otra pantalla se puede acceder a esta directamente o salir de la aplicacin.
Si se elige la bsqueda por marca, la aplicacin pedir al usuario el cdigo de la marca del producto de la cual quiere realizar la bsqueda y si se disponen de productos en stock de esta marca, sern mostrados al usuario por la pantalla del dispositivo mvil, donde se indicarn los cdigos de producto, el nmero de productos de ese tipo que se disponen y el nombre de los productos (vase Fig. 4.16). Aadir que si por el contrario en ese momento no se dispone en el almacn de ningn producto de la marca solicitada, se mostrar un mensaje en la pantalla del dispositivo mvil indicndolo.
Diseo e implementacin
39
Por el contrario, si se elige la bsqueda por producto, la aplicacin pedir al usuario tanto el cdigo de la marca del producto como el cdigo del producto del cual se quiere realizar la bsqueda, en este caso al usuario se le mostrar por pantalla un mensaje indicndole el nmero de productos que se encuentran disponibles actualmente en stock (vase Fig. 4.17). Igual que en el caso anterior, si no se dispone en el almacn de ningn producto con el cdigo solicitado, se mostrar un mensaje en la pantalla del dispositivo mvil indicndolo.
Como se ha comentado al principio de este punto, en la aplicacin mvil tambin se ha implementado otro tipo de bsqueda, en este caso por fecha, por si en un futuro se desea dotar a las etiquetas adheridas a los productos con ms informacin como puede ser la fecha de entrada del producto en el almacn o la fecha de caducidad de ste. Para ms informacin sobre las funcionalidades de la aplicacin mvil, consultar el Anexo E.
40
A continuacin se muestra mediante la Fig. 4.18, las funcionalidades descritas anteriormente de la aplicacin mvil.
GUI()
bsquedapor marca
bsquedapor producto
bsquedapor fecha
testPorEmpresa()
testPorProducto()
testPorFecha()
botn ATRS
botn ENVIAR
botn ATRS
botn ENVIAR
botn ATRS
botn ENVIAR
envioGetEmpresa()
envioGetProducto()
envioGetFecha()
La Fig. 4.19 muestra un esquema de la comunicacin entre la aplicacin mvil y el servlet que se ejecuta dentro de un servidor, en nuestro caso Tomcat [17].
Diseo e implementacin
41
El cliente, mediante la aplicacin instalada en su mvil, introducir los parmetros que se le pidan segn la bsqueda que haya elegido y enviar una peticin haca el servidor web donde indicar el mtodo utilizado, la URL, y la versin del protocolo, entre otros (vase Fig. 4.20). Una vez el servidor web haya recibido est peticin y si la solicitud se ha llevado a cabo de manera correcta, enviar la respuesta haca el dispositivo mvil, indicando la versin del protocolo utilizada, el cdigo del estado y su significado (si la operacin se ha efectuado correctamente ser un 200 OK) y la informacin que se le ha solicitado.
String url = "http://147.83.118.50:8080/infomobile/GetServlet" + "?" + "empresa=" + input_producto_empre.getString() + "&" +"producto=" + input_producto_produ.getString(); http = (HttpConnection)Connector.open(url); http.setRequestProperty("Content-Language","es-ES"); http.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0"); http.setRequestProperty("Content-Type","application/octect-stream"); http.setRequestProperty("Connection","close"); http.setRequestMethod(HttpConnection.GET);
4.5.
Service web
Como se ha explicado en el punto anterior, la aplicacin mvil realiza las peticiones haca un servidor web. En este punto se va a realizar una explicacin ms detallada de su funcionamiento. Primeramente decir que el nombre que se le ha dado a la aplicacin que corre en nuestro servidor Tomcat es InfoMovile. Esta aplicacin al recibir la peticin de la aplicacin mvil lo primero que hace es ver que parmetros se le han enviado para saber si el usuario ha realizado una bsqueda por marca o por producto. Si el usuario de la aplicacin mvil ha realizado una bsqueda por marca, ste ha tenido que introducir el cdigo de la marca del producto que busca y este parmetro ha sido enviado dentro de la peticin realizada. Una vez la aplicacin InfoMovile sabe el tipo de bsqueda que se le ha pedido y los parmetros necesarios, realiza una consulta a la tabla de la base de datos donde se encuentran los productos en stock del almacn y guarda en un vector los productos pertenecientes a esa marca, el nmero de productos de cada tipo que hay y el nombre de esos productos. Finalmente esta informacin es enviada haca la aplicacin mvil y procesada por sta. Si por el contrario el usuario de la aplicacin mvil ha realizado una bsqueda por producto, ste ha tenido que introducir el cdigo del producto que busca y el cdigo de la marca a la que pertenece. Igual que en el caso anterior la aplicacin realiza una consulta a la base de datos y almacena en un vector de dos posiciones el nmero de productos que hay en stock del producto
42
solicitado y el nombre de ese producto. Finalmente esta informacin es enviada haca la aplicacin mvil y procesada por sta.
4.6.
Base de datos
CREATE TABLE `administradores` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `ADMIN` varchar(10) NOT NULL, `ADMIN_PASS` varchar(10) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
En la Fig. 4.22 se muestran las diferentes tablas creadas para almacenar toda la informacin necesaria para el correcto funcionamiento de las aplicaciones diseadas en este proyecto.
Diseo e implementacin
43
Las tablas administradores y usuarios son las encargadas de almacenar tanto a los administradores como a los usuarios registrados en la aplicacin respectivamente, a los cuales se les permitir tener acceso a ciertas funciones explicadas en el punto 4.3 como dar de alta a un nuevo usuario (en el caso que seas administrador) o aadir un producto al stock del almacn (en el caso que seas usuario registrado). Estas tablas estn formadas por tres campos diferentes, el primero de ellos es un identificador, el segundo es el campo donde se almacena el login y por ltimo el campo donde se almacena el password de cada login. La tabla empresas se encarga de almacenar el cdigo de la marca de los productos y el nombre de todas las marcas con las que la empresa FERNNDEZ S.A. tiene contratos. En la tabla productos se almacenan todos los productos que la empresa FERNNDEZ S.A. puede tener en stock. Para poder aadir un nuevo producto a esta tabla, primero se ha tenido que dar de alta a la empresa suministradora de ste. Esta tabla esta formada por los campos identificador de empresa en la cual ir el cdigo de la empresa que suministra el producto, el identificador de producto donde ir el cdigo de producto y por ltimo la descripcin del producto donde ir el nombre del producto. Hay que aadir que slo los administradores registrados en la tabla administradores de la base de datos tienen privilegios para poder realizar modificaciones en estas tablas a la hora de aadir, modificar o eliminar. Tambin decir que slo se pueden realizar estos cambios desde la aplicacinPC.
44
Por ltimo la tabla info_producto almacena todos los productos que el almacn tiene en stock. En esta tabla se almacena el cdigo de la marca, el cdigo del producto y un cdigo nico de cada producto para poder realizar una diferenciacin entre productos iguales. Estos tres datos son proporcionados por el mote TelosB adherido al producto. Un cuarto campo Timer es rellenado por la aplicacinPC al procesar el mensaje enviado por los motes en el cual se introduce la hora del sistema del PC en el momento del procesamiento del mensaje. Esta tabla es actualizada cada 15 minutos por la aplicacinPC para que los productos almacenados en la tabla correspondan en la medida de lo posible a los productos que hayan en el almacn, adems tambin puede ser actualizada manualmente y mostrada por pantalla por usuarios sin registrar que tengan acceso a la aplicacinPC. Slo esta aplicacin es la que puede realizar cambios en las entradas de dicha tabla. Tambin hay que aadir que la aplicacin InfoMovile puede acceder a la tabla info_producto pero slo para realizar consultas pedidas por usuarios desde la aplicacin mvil.
En la lnea de cdigo que aparece en la Fig. 4.23 se puede observar como se utiliza el comando INSERT INTO seguido del nombre de la tabla donde se quiere insertar el elemento y finalmente el nombre de cada campo y el valor correspondiente.
En este caso lo que se muestra en la Fig. 4.24 es cmo realizar una modificacin de algn elemento que ya se encontraba en la base de datos. Para ello hay que utilizar el comando UPDATE, seguido del nombre de la tabla donde se quiere modificar el elemento y finalmente el nombre del campo con el
Diseo e implementacin
45
nuevo valor y el nombre de otro campo con su respectivo valor para que la aplicacin tenga una referencia para saber dnde debe realizar la modificacin.
Finalmente en la Fig. 4.25 se muestra la lnea de cdigo necesaria para eliminar una entrada de una tabla de la base de datos, para ello se ha de utilizar el comando DELETE, seguido del nombre de la tabla donde se quiere realizar la eliminacin y el nombre de un campo con su respectivo valor para proporcionar a la aplicacin una referencia de que entrada debe eliminar.
46
Pruebas realizadas
47
5.1.
Para dar fe del buen rendimiento del servicio web, ste ha sido sometido a pruebas de stress mediante la herramienta de libre distribucin JMeter. JMeter es una herramienta de carga para llevar acabo emulaciones sobre cualquier recurso de software. Mediante esta herramienta se van a realizar peticiones HTTP emulando a usuarios mviles realizando bsquedas de productos. Su funcionamiento es muy sencillo. Primero hay que indicarle los siguientes tres parmetros (vase Fig. 5.1): Nmero de threads: Equivale al nmero de usuarios que se desean emular. Periodo de subida: Es el lapso de tiempo en segundos que se desea tener entre cada grupo de usuarios ("Thread Group"). Contador del bucle: Utilizado para indicar el nmero de veces que se va a llevar acabo la emulacin.
48
Y una vez definidas las caractersticas del Thread Group, hay que indicarle la direccin del servidor al cual van a ir dirigidas las peticiones HTTP (vase Fig. 5.2): Nombre del servidor o IP: Empleado para definir la direccin IP o nombre del servidor donde ser llevada a cabo la prueba de carga. Puerto: define el puerto TCP de operacin del servidor. Path: Utilizado para definir la ruta de acceso para llevar acabo la prueba.
Pruebas realizadas
49
Para el proyecto se ha decidido realizar 3 pruebas de stress, todas ellas emulando peticiones HTTP y aumentando el nmero de usuarios. El nmero de usuarios se ha ido aumentando progresivamente en las 3 pruebas, donde la variable que diferencia las pruebas es el tiempo entre ciclos que los usuarios tienen para realizar su peticin, en la Fig. 5.3 el tiempo de ciclo es de 1 segundo, en la Fig. 5.4 es de 5 segundos y en la Fig. 5.5 es de 10 segundos. Lo que se quiere saber con estas pruebas es el porcentaje de peticiones realizadas errneas que nos podemos encontrar y as llegar a saber los lmites que puede tener nuestro servidor.
50
Como conclusiones extradas de estas pruebas realizadas, se puede decir que la carga permitida por el servidor es correcta para nuestra aplicacin, ya que es muy poco probable que la aplicacin sea utilizada por 1000 usuarios simultneamente, y aunque sucediera, el % de error obtenido de peticiones no procesadas es muy bajo.
5.2.
Pruebas de validacin
En este punto se va a mostrar el correcto funcionamiento entre la aplicacinPC y la base de datos. Para ello se ha utilizado el grid que hay instalado en el laboratorio 325 de la Escola Politcnica Superior de Castelldefels. El grid consiste en una estructura de madera, colgada mediante cable de nylon a 1 metro del techo. El nmero total de dispositivos inalmbricos TelosB de que se disponen son 60, puesto que el grid consta de 10 filas por 6 columnas. En cada cruceta de la cuadrcula hay situado un mote, y entre ellos existe casi un metro de distancia (90 centmetros exactamente). En la Fig. 5.6 se puede apreciar un esquema visual de la estructura del grid.
Pruebas realizadas
51
En la Fig. 5.7 se muestra una fotografa real de la cuadrcula del laboratorio y de los motes situados en cada cruceta.
Para realizar esta prueba se instal en cada mote un cdigo de producto, habiendo productos de las mismas marcas e incluso productos iguales donde la nica diferencia era su cdigo nico. Aadir que los motes trabajan en el canal 26 ya que es en el que menos interferencias se producen con otras tecnologas inalmbricas que tambin transmiten a la frecuencia de 2.4 GHz. Otra variable muy importante es la que define la potencia a la que transmiten
52
los sensores, stos transmitirn a la mxima potencia (0 dBm) ya que es con la nica que cuando haba una distancia considerable (a partir de 10 metros) la seal atravesaba paredes y se estableca comunicacin entre el mote receptor y el mote del producto. Posteriormente se inicializ la aplicacinPC y sta empez a procesar todos los mensajes recibidos por el mote receptor. Hay que decir que en esta prueba se redujo el tiempo entre envo y envo de los mensajes de los 5 minutos definidos en el apartado 4.2 a 15 segundos, por lo tanto para comprobar su correcto funcionamiento slo se tuvo que esperar este periodo de tiempo y ver mediante la aplicacinPC, la tabla que muestra los productos en stock del almacn (vase Fig. 5.8), aadir que la aplicacin recibi y proces correctamente la informacin enviada por todos los motes. Tambin para corroborar este correcto funcionamiento, se hizo un seguimiento a la tabla info_producto de la base de datos y se pudo ver como para cada producto a los 15 segundos de haber enviado su ltimo mensaje, se actualizaba el campo TIMER de la tabla info_producto con la hora actual del sistema. Gracias a esta prueba se ha comprobado tambin, que es posible llevar un control de los productos actualizado prximo al tiempo real, ya que con el intervalo de 15 segundos ha funcionado todo correctamente.
Para comprobar tambin que la base de datos eliminaba de la tabla info_producto a los productos que durante ms de 15 minutos no reciba ningn mensaje, se realiz una segunda prueba muy sencilla, en la cual consista en apagar un mote y de esta manera conseguir que dejara de enviar mensajes. Una vez apagado el mote se esper el tiempo oportuno. En esta prueba, igual que en la anterior, el tiempo entre envo de mensajes de los motes es de 15 segundos, por lo tanto se esper 45 segundos (15 segundos x 3 envos permitidos).
Pruebas realizadas
53
En la Fig. 5.9 se muestra la tabla con los productos en stock y en la Fig. 5.10 se muestra la misma tabla pero pasados 45 segundos, se puede apreciar como el producto correspondiente al mote apagado, en este caso la impresora K5400 ha sido eliminado.
54
55
6.1.
Conclusiones
El inters por la tecnologa RFID se ha incrementando con rapidez. Muchas empresas estn buscando aumentar la eficiencia de sus operaciones y reducir costes a travs de esta tecnologa (p.ej. realizacin de inventarios). La oferta de este tipo de soluciones cada vez es mayor y se espera que en aproximadamente 10 15 aos la tecnologa RFID sea utilizada de forma cotidiana, ya que el coste de uno de sus componentes, el tag, se ha reducido en los ltimos aos y para finales de 2008, se espera que el coste de las etiquetas llegue a US$0.05 cada una, lo cual permitir el empleo masivo de esta tecnologa y el surgimiento de muchas aplicaciones que aprovechen sus caractersticas. El poder de RFID se encuentra principalmente en 3 cualidades: la capacidad de poder leer etiquetas a distancia y sin necesidad de lnea visible con el receptor, la capacidad de lectura/escritura y el poder identificar a elementos como nicos. Estas caractersticas son claves y representan un gran diferenciador al comparar RFID con otras tecnologas de autoidentificacin. Los objetivos propuestos satisfactoriamente. al inicio de este PFC se han cumplido
Primero se ha llevado a cabo una aplicacin capaz de almacenar en una base de datos la informacin enviada por los motes, y para comprobar su correcto funcionamiento se han utilizado 60 motes enviando mensajes a la vez, con un satisfactorio comportamiento por parte de la aplicacin. La segunda aplicacin desarrollada permite a los usuarios que puedan realizar consultas a la base de datos mediante sus dispositivos mviles, y de esta manera saber en todo momento y desde cualquier punto geogrfico los productos es stock que hay en el almacn, siempre y que se disponga de cobertura y acceso a Internet. Se han realizado unas pruebas de stress sobre el servidor, las cuales han dado unos resultados satisfactorios. Una vez realizadas las pruebas de validacin de cada parte del proyecto, se realiz una prueba conjunta en la que intervinieron los 60 motes de los que est compuesto el grid, enviando sus respectivos mensajes, la aplicacinPC procesando esos mensajes y almacenndolos correctamente en la base de datos y finalmente realizando una peticin HTTP desde el dispositivo mvil solicitando la existencia de un producto, obteniendo un resultado satisfactorio de la unin de las tres partes.
56
6.2.
A partir del trabajo realizado en este PFC, se abren nuevos caminos de desarrollo: Para empezar se podra mejorar el cdigo que ejecutan los motes para enviar los mensajes de manera que los motes puedan emplear un protocolo multisalto. De esta manera si un mote no se encuentra dentro del rea de cobertura del mote receptor pueda llegarle la informacin referente al producto. El principal inconveniente de esta mejora es el aumento exponencial de mensajes con la consecuencia que todos los motes tengan ms funcionalidades como procesar mensajes con su mayor consumo de batera. Donde de verdad existen varias lneas futuras abiertas es en la aplicacin mvil. La primera de ellas, como ya se ha dicho en el transcurso de la memoria, es la de dotar de ms informacin a los productos como la fecha de caducidad si ste tuviera o la fecha de entrada del producto, y para ello ya se ha dejado desarrollada la bsqueda por fecha en la aplicacin mvil pero habra que modificar la base de datos para dotar la tabla info_producto de ms campos y modificar las funciones de bsqueda de la aplicacin InfoMobile. Otra mejora sera la de crear un servicio de aviso mediante SMS, para ello se tendra de realizar una interfaz grfica donde el usuario, por ejemplo pudiera elegir para que productos se quiere recibir la informacin o cuando se quiere recibir esta informacin (cuando el producto este agotado o queden x unidades). sta ltima mejora supondra un gasto adicional y mensual a la empresa ya que debe comprar los servicios a alguna empresa colaboradora de alguna operadora telefnica que le gestione por ejemplo un gateway SMPP10.
10
Implicaciones medioambientales
57
IMPLICACIONES MEDIOAMBIENTALES
A continuacin se exponen los aspectos del Proyecto Final de Carrera que pueden suponer algn tipo de impacto medioambiental. Para empezar, los sensores con los que se ha trabajado consumen bateras elctricas, en nuestro caso, pilas del tipo AA. Si stas no son depositadas en el contenedor correspondiente para su reciclado o correcto almacenamiento pueden causar estragos en los ecosistemas donde se depositen e incluso pueden llegar a afectar a los seres humanos por medio de la contaminacin del agua y del aire. Las pilas ofrecen una fuente de energa cmoda y porttil que forma parte integral de numerosos productos electrnicos modernos. Sin embargo, tan slo son capaces de almacenar una pequea parte de la energa que se emplea en su fabricacin. Suponen una carga para el medio ambiente tanto en su fabricacin como en su eliminacin. Algunos de los componentes de las pilas, como el cadmio, mercurio o zinc, pueden ser gravemente perjudiciales para el medio ambiente y ocasionar enfermedades a los seres humanos (dolores gastrointestinales) si no reciben el tratamiento adecuado. Conscientes de esto, los fabricantes de pilas han conseguido reducir notablemente los componentes peligrosos como el mercurio. Adems, han comenzado a desarrollar tecnologas para recuperar los componentes de las pilas cuando stas se agotan e incluso se han inventado las denominadas pilas verdes o biopilas, que son pilas que destacan por la ausencia de los metales pesados en ellas y por tanto por la poca contaminacin que causa su consumo en el medioambiente. En la misma lnea, cabe destacar que ZigBee, IEEE 802.15.4, est diseado para maximizar el tiempo de vida de las bateras. El mayor consumo que realizan estos dispositivos es a la hora de transmitir informacin, lo que conlleva una vida til de batera muy elevada (en teora, del orden de aos). Por otro lado, tambin hay que aadir que cada vez hay ms demanda de nuevas tecnologas, esto ocasiona que cada vez se desarrollen mejores y ms potentes aplicaciones que necesitan de medios fsicos (tanto fijos como mviles) ms potentes, esto provoca que el ciclo de vida de estos medios sea bastante corto y necesiten renovarse de forma continua favoreciendo el aumento de los residuos.
58
Bibliografa
59
BIBLIOGRAFA
Referencias
[1] Concepto de RFID, http://www.efalcom.com.ar/rfid/index.php?option=com_content&task=blogsectio n&id=4&Itemid=11 [2] Definicin de RFID, http://es.wikipedia.org/wiki/RFID [3] Historia de RFID, http://www.it.uc3m.es/jmb/RFID/rfid.pdf [4] Definicin del cdigo de barras, http://es.wikipedia.org/wiki/C%C3%B3digo_de_barras [5] Ventajas de RFID vs cdigo de barras, http://www.ihg.net/java/X?cgi=lateral.rfid.VentajaVsBarras.pattern [6] Datasheet motes TelosB, http://www.xbow.com/Products/Product_pdf_files/Wireless_pdf/TelosB_Datashe et.pdf [7] ZigBee/IEEE 802.15.4 Summary, http://www.eecs.berkeley.edu/~csinem/academic/publications/zigbee.pdf [8] IEEE 802.15 WPAN Task Group 4, http://www.ieee802.org/15/pub/TG4.html [9] ZigBee Alliance, http://www.zigbee.org [10] Plataforma Java2 y arquitectura J2EE, http://www.jebussines.com:8080/peruvirtual/arquitectura.jsf [11] Ciclos de vida de un MIDlet, http://www.ciimurcia.es/informas/ene05/articulos/Moviles_Java_algo_mas_que_ juegos.html [12] Base de datos MySQL, http://www.xtec.net/~acastan/textos/Administracion%20de%20MySQL.html#SE RVIDOR
60
[13] Tecnologas de almacenamiento, http://www.tufuncion.com/myisam-vs-innodb [14] API JDBC, http://camoralesm.googlepages.com/jdbc [15] Tomcat, http://es.wikipedia.org/wiki/Apache_Tomcat#Enlaces_externos [16] Estructura de directorios Tomcat, http://www.programacion.com/tutorial/tomcatintro/ [17] Comunicacin cliente-servidor, http://es.kioskea.net/internet/http.php3
Bibliografa
El soporte tcnico utilizado para la programacin de los motes en el lenguaje nesC han sido los siguientes portales: http://telegraph.cs.berkeley.edu/tinydb/nesdoc/mica/tos.lib.TinyDB.Ne tworkC.nc.html http://www.cs.wmich.edu/~gupta/teaching/cs603/wsnSp04/lec07b%2 0Active%20Messages%20IvanA%20020504.pdf
El soporte tcnico utilizado para la programacin de las aplicaciones en lenguaje Java han sido los siguientes: Conocimientos bsicos http://java.sun.com/j2se/1.5.0/docs/api/ http://www.programacion.com/java/tutorial/java_basico/ usuarios.lycos.es/manualesjava/manuales/javaCero/Manual.Curso.de .java.desde.cero.pdf http://edisoncor.wordpress.com/2007/10/05/crear-un-jbuttonredondeado-y-personalizado/ http://www.iescamp.es/tutoriales/java/tema8/tema8p9_1.html http://ji.ehu.es/LMAlonso/SW/java/Bib/tutorjava/html/ui/swingcompone nts/dialog.html http://www.chuidiang.com/chuwiki/index.php?title=JFrame_y_JDialog
Bibliografa
61
Plataforma TelosB Tutorial del Sistema Operativo TinyOS, http://www.tinyos.net/tinyos-1.x/doc/tutorial/ Mensajes radio, http://www.chipcon.com/index.cfm?kat_id=1&action=faq&faq_id=340 CC2420 (chip radio), http://www.chipcon.com/files/CC2420_Data_Sheet_1_0.pdf
62
Lista de Acrnimos
API: Application Programming Interface. Interfaz de Programacin de Aplicaciones. BBDD: Base de Datos. ERO: European Radiocommunications Office. CEPT: Confrence europenne des administrations des postes et des tlcommunications. Conferencia Europea de Administraciones de Correos y Telecomunicaciones. EPC: Electronic Product Code. Cdigo Electrnico de Producto. ETSI: European Telecommunications Standards Institute. Instituto Europeo de Normas de Telecomunicaciones HF: High Frequency. Alta Frecuencia. HTML: Hyper Text MarkUp Language. Lenguaje de Marcas de Hiper Texto. HTTP: Hyper Text Transfer Protocol. Protocolo de Transferencia de Hiper Texto. IEEE: Institute of Electrical and Electronics Engineers. IP: Internet Protocol. Protocolo de Internet. ISO: International Organization for Standardization. Organizacin Internacional para la Estandarizacin. J2EE: Java 2 Enterprise Edition. J2ME: Java 2 Micro Edition. J2SE: Java 2 Standart Edition. JAR: Java ARchive. JDBC: Java DataBase Connectivity. Conectividad de Bases de Datos Java. JDK: Java Development Kit. Kit de Desarrollo de Java. JRE: Java Runtime Environment. Entorno en Tiempo de Ejecucin de Java. JVM: Java Virtual Machine. Mquina Virtual de Java. LF: Low Frequency. Baja Frecuencia. PC: Personal Computer. Ordenador Personal. SQL: Structured Query Language. Lenguaje Estructurado de Consulta. SMPP: Short Message Peer to Peer protocol. Protocolo de Mensajes Cortos Peer to Peer.
Lista de acrnimos
63
UHF: Ultra High Frequency. Frecuencia Ultra Alta. URL: Uniform Resource Locator. Localizador de Recursos Uniforme. TCP: Transmission Control Protocol. Protocolo de Control de Transmisin. XML: Extensible Markup Language. Lenguaje Extensible de Marcas.
ANEXOS
TTULO DEL PFC: Sistema de gestin de productos con emulacin de RFID mediante sensores IEEE 802.15.4 TITULACIN: Ingeniera de Telecomunicaciones (segundo ciclo) AUTOR: Eloy Fernndez Lpez DIRECTOR: Carles Gmez Montenegro FECHA: 21 de octubre de 2008
Anexo A
67
ANEXO A.
TinyOS
A.1.
Requisitos para la instalacin: El CD-ROM de CrossBow que contiene las herramientas de soporte de TinyOS. Ordenador con SO Microsoft Windows (XP, 2000, NT), con 1 GB de espacio libre en la unidad de disco de destino de la instalacin. Tener los programas: WinZip, Adobe Acrobat y Programmers Notepad (disponible gratuitamente en http://www.pnotepad.org/).
La instalacin de TinyOS para Windows es sencilla. En primer lugar se tiene que instalar el archivo ejecutable tinyos-1.1.0-1is.exe, el cual nos instalar la plataforma bsica de desarrollo Cygwin, las libreras nesC de TinyOS y el compilador nesC. El entorno de instalacin de este ejecutable es muy intuitivo, guiado en todos sus pasos. Este archivo se puede encontrar en: El CD de CrossBow, dentro de la carpeta TinyOS Install. En el servidor de descargas de la plataforma Windows de www.tinyos.net que se encuentra en la siguiente pgina de internet http://www.tinyos.net/dist-1.1.0/tinyos/windows/
Despus de la instalacin de la plataforma TinyOS, la consola Cygwin y compilador de nesC, concentrados en el archivo tinyos-1.1.0-1is.exe, procederemos a la instalacin del paquete rpm que nos actualizar a la ltima versin del compilador nesC. El nombre del paquete es el nesc-1.1.2a1.cygwin.i386.rpm y se puede encontrar en el mismo servidor de descargas anterior (http://www.tinyos.net/dist-1.1.0/tinyos/windows/). La instalacin de este paquete se tiene que efectuar desde la consola Cygwin, dentro del directorio donde se encuentre el paquete rpm. La secuencia a escribir es la siguiente:
68
La instalacin de este segundo paquete rpm se instalar de semejante forma al anterior paquete:
A.2.
Directorio TinyOS
Para trabajar con el directorio de TinyOS se utilizar la consola Cygwin que con los comandos de linux nos permite explorar el directorio. El directorio de carpetas de TinyOS est compuesto de numerosas carpetas y archivos. Este apartado pretende mostrar el contenido de las carpetas ms importantes de TinyOS y su estructura.
Anexo A
69
70
Fig. A.4 Estructura y contenido del directorio tos dentro de la carpeta tinyos-1.x
A.3.
La sintaxis que se utiliza en la consola Cygwin para compilar las aplicaciones es la siguiente: make <plataforma> install <direccin dispositivo> <programador>,<puerto> o make <plataforma> reinstall <programador>,<puerto> donde: plataforma es el nombre de la plataforma, en este caso telosb. direccin dispositivo es un nmero que es proporcionado mediante UART protocol. Se utiliza el comando motelist para saber este nmero. programador es el nombre del microcontrolador, en este caso msp430-bsl bsl, cuyas siglas quieren decir Boot Strap Loader. puerto es el COM-1, donde COM es la direccin del dispositivo.
La diferencia entre install o reinstall est detalla a continuacin. Install.<n>: Compila la aplicacin para la plataforma seleccionada, puede configurar el Identificador de nodo (<n>) del mote y lo programa. Reinstall.<n>: Puede tambin configurar el Identificador de nodo y instala el programa precompilado, no recompila. Esta opcin es sustancialmente ms rpida.
Anexo B
71
ANEXO B.
72
Anexo C
73
ANEXO C.
A continuacin se muestran y explican los parmetros ms importantes de los dos archivos de configuracin bsicos que definen las variables del chip CC2420.
C.1.
En este apartado se pueden ver las sentencias ms importantes definidas en el archivo de configuracin AM.h con sus valores por defecto.
#define DEF_TOS_AM_GROUP 0x7d //define el valor del campo grupo. Por defecto 125 //define el valor del campo grupo. Por defecto toma valor 1 //Estructura que define los campos del mensaje TOS
#define TOSH_AM_LENGTH 1
{ Los siguientes campos son los que se transmiten y/o se reciben por medio radio uint8_t length; //Este campo indica cuantos bytes enviamos en el campo datos. uint8_t fcfhi; //Los campos fcfhi y fcflo son un registro de 16 bits (parte hi y lo) donde cada grupo de bits indican una caracterstica de la transmisin (utilizacin ack o el tipo de trama utilizada, etc). uint8_t fcflo; uint8_t dsn; //Secuencia de paquetes enviados, en cada nuevo paquete se incrementa en 1, este campo es rellenado por el sistema TinyOS. //Indica la direccin de la red de rea local a la que va destinado el paquete. //Indica la direccin del mote al que va enviado el paquete. //Indica el tipo de paquete que enviamos. //Indica a que grupo pertenece el mote receptor // Campo informacin transmitir donde til metemos la que queremos
uint16_t destpan;
uint16_t addr;
int8_t data[TOSH_DATA_LENGTH];
74
uint8_t strength; //Este campo nos indica la potencia de recepcin. uint8_t lqi; //Indica la calidad del enlace por el cual ha recibido un determinado paquete.
bool crc; //Este campo nos indica si el crc es correcto. uint8_t ack; //Indica si recibimos reconocimiento de una determinada trama. //Referencia interna del procesador.
Estos campos no son modificables una vez nos encontramos en medio de una comunicacin por lo que toman el valor definido en este archivo de configuracin.
C.2.
Otro archivo muy importante es el CC2420Const.h, donde por ejemplo se decide en que canal se quiere transmitir. En nuestro caso se ha decidido trabajar en el canal 26 ya que es en el que menos interferencias se producen con otras tecnologas inalmbricas que tambin transmiten a la frecuencia de 2,4 GHz. Otra variable muy importante es la que define la potencia a la que se quiere que transmitan los sensores, despus de realizar diferentes pruebas, se ha decidido que se necesitaba que transmitieran a la mxima potencia (0 dBm) ya que era con la nica que cuando haba una distancia considerable (a partir de 10 metros) la seal atravesaba paredes y se estableca comunicacin entre los motes. A continuacin se muestran los campos definidos en este archivo que tambin se considera importante para nuestro trabajo.
// Tiempos para el CC2420 en microsegundos enum { CC2420_TIME_BIT = 4, CC2420_TIME_BYTE = CC2420_TIME_BIT << 3, CC2420_TIME_SYMBOL = 16 }; //En este campo definimos la potencia de recepcin de la antena CC2420. En este caso seleccionamos 0x1f que es 0 dBm, la potencia maxima. #define CC2420_DEF_RFPOWER 0x1f //Definimos el canal por el que vamos a transmitir o recibir. #define CC2420_DEF_CHANNEL 26 //Definimos la banda de frecuencia que vamos a utilizar, en este caso seleccionamos la banda libre (2.405 GHz). #define CC2420_DEF_PRESET 2405
Anexo C
75
//Definimos el campo de control de cuestiones como el tipo de trama o #define CC2420_DEF_FCF_LO #define CC2420_DEF_FCF_HI #define CC2420_DEF_FCF_HI_ACK #define CC2420_DEF_FCF_TYPE_BEACON #define CC2420_DEF_FCF_TYPE_DATA #define CC2420_DEF_FCF_TYPE_ACK
trama donde podemos controlar si queremos o no el envo de ack. 0x08 0x01 // sin ACK 0x21 // con ACK 0x00 0x01 0x02
76
Anexo D
77
ANEXO D.
En este anexo se va a explicar como utilizar la aplicacinPC junto con todas las funciones que puede realizar esta aplicacin.
D.1.
En la imagen de la Fig. D.1 se muestra la pantalla inicial de la aplicacin, esta pantalla se puede dividir en cuatro zonas, las cuales se explican a continuacin. 1
Fig. D.1 Pantalla inicial de la aplicacinPC Zona 1: en esta zona se encuentran las pestaas de dispositivos y ayuda. La pestaa de dispositivos permite elegir el puerto USB deseado si se disponen de ms de un mote receptor conectado al PC. Zona 2: en esta zona se encuentra el botn Gestor, el cual sirve para acceder a la parte de la aplicacin desde la cual se gestionan todos los usuarios, marcas y productos. Zona 3: en esta zona se encuentra el botn Iniciar, el cual sirve para encender la parte de la aplicacin encargada de procesar los paquetes recibidos por el mote receptor y llevar un control de los productos en stock en la base de datos.
78
Zona 4: en esta zona est situado el botn Salir, el cual sirve para cerrar por completo la aplicacin.
D.2.
Una vez visto las cuatro zonas de la pantalla principal nos centraremos en explicar el funcionamiento de las dos partes ms importantes de esta aplicacin. Por un lado para que la base de datos tenga un control a tiempo real de los productos en stock que se encuentran en el almacn, se debe inicializar la parte de la aplicacin encargada de procesar todos los paquetes recibidos por el mote receptor, para ello hay que clickar sobre el botn Iniciar que se encuentra en la pantalla inicial de la aplicacin (vase Fig. D.2).
Una vez inicializado este proceso, la aplicacin se encarga de comparar la informacin que recibe con la informacin que se encuentra en la base de datos, si recibe informacin de un producto nuevo, el cual no se encuentra en la tabla correspondiente a los productos en stock de la base de datos, la aplicacin ya se encarga de almacenar este nuevo producto. Si por el contrario recibe informacin de un producto que ya se encuentra en su base de datos lo que hace es actualizar la hora de la tabla correspondiente a los productos en stock, ya que si durante 15 minutos no ha recibido ningn mensaje sobre algn producto guardado en la base de datos ste se considera que ya no se encuentra en el almacn y es eliminado. Se ha considerado un periodo de 15 minutos, ya que los motes adheridos a cada producto envan un mensaje cada 5 minutos y se permite que se hayan producido un mximo de 3 errores al intentar enviar-recibir el mensaje. Si en algn momento se desea detener la aplicacin para que no procese ningn mensaje, habr que clickar sobre el botn Parar, que se encuentra en la misma posicin que el botn Iniciar (vase Fig. D.3).
Anexo D
79
D.3.
En este punto se van a mostrar todas las funciones que tienen permitidos los administradores, los usuarios registrados y los usuarios sin registrar. Una vez clickado sobre el botn Gestor de la pantalla principal de la aplicacin, aparecer la pantalla que se muestra en la Fig. D.4.
2 1
Esta pantalla se va a dividir en tres zonas segn los permisos que se tengan. Zona 1: en esta zona se encuentra el botn Administrador, para acceder a ella es necesario estar registrado como administrador en la base de datos. Zona 2: en esta zona se encuentran los botones Nuevo producto y Eliminar producto desde los cuales se puede modificar la tabla donde se encuentran almacenados los productos en stock. Para acceder es necesario ser un usuario registrado. Zona 3: en esta zona se encuentran los botones Ver productos y Actualizar, mediante estos botones se actualiza la tabla que contiene los productos en stock y se muestra por pantalla. No es necesario estar registrado.
D.3.1. Administradores
Los administradores son los nicos que tienen privilegios para aadir, modificar o eliminar de la base de datos administradores, usuarios registrados, marcas y productos. Para poder acceder, la aplicacin pide que se introduzca el login y el password, tal y como se muestra en la Fig. D.5.
80
Una vez confirmado que los datos introducidos son correctos, se accede a la pantalla desde la cual se puede realizar los privilegios del administrador nombrados anteriormente. En la Fig. D.6 se muestra la pantalla desde la cual el administrador puede acceder para realizar cambios.
Como se puede observar en la figura anterior, la pantalla dispone de diferentes pestaas mediante las cuales se puede acceder para realizar cambios en la base de datos de los administradores como es este caso. Los usuarios registrados, las marcas y los productos, se vern posteriormente. Todas disponen de tres botones desde los cuales se pueden aadir, modificar o eliminar entradas de sus respectivas tablas de la base de datos. En las figuras siguientes se muestran los datos que hay que introducir segn la accin que se desea realizar (vase Fig. D.7, Fig. D.8 y Fig. D.9).
Anexo D
81
En las figuras (Fig. D.10, Fig. D.11 y Fig. D.12) se mostrarn las pantallas cuando lo que se quiere modificar es un usuario.
82
Anexo D
83
Como se ha podido observar los datos que hay que rellenar para los usuarios son los mismos que para los administradores. A continuacin se mostrarn los datos que hay que rellenar para el caso de marcas y productos, en estos casos en vez de nombres de usuarios y passwords habr que introducir el nombre de la marca o producto y su respectivo cdigo.
84
Anexo D
85
En el Anexo F, se nombrarn las diferentes pruebas realizadas para comprobar el correcto funcionamiento de todas estas funciones.
86
A la hora de aadir estos nuevos productos a la tabla donde se encuentran almacenados los productos en stock, el campo cdigo nico es rellenado por 00000 y en el campo timer se pone la hora actual del sistema del PC. Con la actualizacin automtica que se hace cada 15 minutos o la manual, estos productos no son eliminados ya que tambin se realiza una comprobacin del campo cdigo nico y al estar rellenados por 00000 slo pueden ser eliminados de la base de datos a mano por un usuario registrado. Para eliminar productos en stock de la base de datos hay que clickar sobre el botn Eliminar producto y aparecer la pantalla que se muestra en la Fig. D.23.
Anexo D
87
A la hora de eliminar productos que han sido introducidos a mano y que su cdigo ncio es 00000, la aplicacin eliminar de la base de datos el de mayor antigedad.
La otra accin a la que tienen privilegio los usuarios sin registrar es la de poder ver por pantalla una tabla donde se muestran todos los productos en stock, vase Fig. D.25. Hay que aadir que antes de que la aplicacin muestre por pantalla la tabla realiza una actualizacin de la tabla, igual que si se hubiera clickado sobre el botn Actualizar.
88
Anexo E
89
ANEXO E.
En este anexo se va a explicar como utilizar la aplicacin mvil junto con todas las funciones que puede realizar esta aplicacin. Todas las capturas que se vern a continuacin han sido realizadas mediante las pruebas realizadas con el simulador Wireless Toolkit 2.5.2. En la imagen de la Fig. E.1 se muestra la pantalla inicial de la aplicacin, en ella se muestran los tres tipos de bsqueda de productos en stock que se pueden realizar: por marca, por cdigo de producto o por fecha. Adems en la parte inferior de la pantalla se puede observar el botn Salir, para salir de la aplicacin.
Si se selecciona una bsqueda por marca, la pantalla que aparecer es la que se muestra en la Fig. E.2, donde habr que introducir el cdigo de la marca que se est buscando. Tambin podemos observar dos botones en la parte inferior de la pantalla, el botn Atrs que te devuelve a la pantalla principal y el botn Enviar que es el encargado de enviar la peticin siempre y cuando se haya introducido algn cdigo de marca, en caso contrario, este botn no realizar ninguna peticin.
90
Una vez realizada la peticin al servidor, pueden suceder dos cosas, por un lado que se hayan encontrado en la base de datos productos en stock pertenecientes a esta marca y se mostrar una tabla con los cdigos de producto que estn asignados a esta marca, el nmero de unidades de cada producto que hay actualmente en stock y los nombre de stos, tal y como se muestra en la Fig. E.3. Si no se ha encontrado ningn producto se mostrar por la pantalla un mensaje indicndolo, como se puede ver en la Fig. E.3. Suceda una cosa u otra, la aplicacin permitir volver a acceder a la pantalla principal o salir del programa, mediante el uso de los botones Inicio y Salir respectivamente.
Fig. E.3 Pantalla de productos encontrados (imagen derecha) y pantalla de productos no encontrados (imagen izquierda)
Anexo E
91
Si se desea utilizar la bsqueda por productos, habr que seleccionar esta bsqueda desde la pantalla principal de la aplicacin. Una vez seleccionada, aparecer por pantalla lo que se muestra en la Fig. E.4. Para este tipo de bsqueda hacen falta dos parmetros: el cdigo de marca y el cdigo de producto. Una vez introducidos los dos, el botn Enviar ya tendr funcionalidad para poder realizar la peticin.
Fig. E.4 Pantalla de bsqueda por producto Lo que el usuario de la aplicacin quiere conseguir con este tipo de bsqueda, es saber el nmero concreto de productos en stock que hay en el almacn de un determinado producto, para ello debe saber tanto en cdigo de producto que busca como el cdigo de la marca a la que pertenece. Si se han encontrado productos, la respuesta a la peticin realizada es la que se muestra en la Fig. E.5, y si por el contrario no se han encontrado productos se muestra el mensaje que aparece en la figura E.5. Los botones Inicio y Salir, tiene la misma funcionalidad que en el caso de bsqueda por marca.
Fig. E.5 Pantalla de productos encontrados (imagen derecha) y pantalla de productos no encontrados (imagen izquierda)
92
Finalmente, el tercer tipo de bsqueda es por fecha. En este caso se ha dejado implementada una primera fase que llega hasta el envo de la peticin, la cual ya no se realiza. Mediante este tipo de bsqueda lo que se quera conseguir es que si por ejemplo los motes tambin enviaban informacin relacionada por ejemplo, con la fecha de caducidad del producto o la fecha de fabricacin de ste, etc., poder saber por ejemplo, el tiempo que les faltan a los productos para caducar o si ya hay alguno caducado. Para ello la aplicacin permita seleccionar un da cualquiera, por defecto sale la fecha actual pero desde ella se puede acceder a un calendario para cambiarla y despus seleccionar uno o varios tipos de reglas de bsqueda, si slo los productos con la fecha seleccionada, los anteriores a esta fecha o los posteriores, tal y como se muestra en la Fig. E.6.
Tal y como se ha dicho la implementacin de esta bsqueda finaliza en el momento de enviar la peticin, por ello aparecer por pantalla el mensaje que se puede ver en la Fig. E.7. Desde esta pantalla igual que en los dos tipos de bsqueda anteriores se podr volver a acceder a la pantalla principal o salir de la aplicacin.
Anexo E
93
94
Anexo F
95
ANEXO F.
A continuacin se nombran todas las pruebas que se han realizado para la comprobacin del correcto funcionamiento de todas las funciones del administrador en la aplicacinPC. Pestaa Administrador: AADIR o o o o o o o o Comprobar que el administrador ya exista Comprobar que la contrasea sea igual a la confirmacin Comprobar que se rellenan todos los campos Comprobar que el usuario y el password tenga como mximo 10 caracteres Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico Cuando el administrador ya existe borrar los datos del formulario para poderlos rellenar otra vez Comprobar que lo inserta bien en la base de datos Si lo ha insertado bien poner un mensaje indicndolo
MODIFICAR o Comprobar que el administrador ya exista y la contrasea actual se corresponda o Comprobar que la contrasea nueva sea igual a la confirmacin o Comprobar que se rellenan todos los campos o Comprobar que el usuario y el password tenga como mximo 10 caracteres o Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico o Comprobar que lo modifica bien en la base de datos o Si lo ha modificado bien poner un mensaje indicndolo ELIMINAR o Comprobar que el administrador ya exista o Comprobar que la contrasea sea igual a la confirmacin o Comprobar que al menos quede un administrador registrado en la base de datos o Comprobar que el usuario y el password tenga como mximo 10 caracteres o Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico o Comprobar que se rellenan todos los campos
96
o Comprobar que lo elimina bien en la base de datos o Si lo ha eliminado bien poner un mensaje indicndolo
Pestaa Usuario: AADIR o o o o o o o o Comprobar que el administrador ya exista Comprobar que la contrasea sea igual a la confirmacin Comprobar que se rellenan todos los campos Comprobar que el usuario y el password tenga como mximo 10 caracteres Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico Cuando el administrador ya existe borrar los datos del formulario para poderlos rellenar otra vez Comprobar que lo inserta bien en la base de datos Si lo ha insertado bien poner un mensaje indicndolo
MODIFICAR o Comprobar que el administrador ya exista y la contrasea actual se corresponda o Comprobar que la contrasea nueva sea igual a la confirmacin o Comprobar que se rellenan todos los campos o Comprobar que el usuario y el password tenga como mximo 10 caracteres o Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico o Comprobar que lo modifica bien en la base de datos o Si lo ha modificado bien poner un mensaje indicndolo ELIMINAR o o o o o o o o Comprobar que el administrador ya exista Comprobar que la contrasea sea igual a la confirmacin Comprobar que se rellenan todos los campos Comprobar que el usuario y el password tenga como mximo 10 caracteres Comprobar que en usuario y en password slo se pueda introducir cdigo alfanumrico Cuando el administrador ya existe borrar los datos del formulario para poderlos rellenar otra vez Comprobar que lo elimina bien en la base de datos Si lo ha eliminado bien poner un mensaje indicndolo
Anexo F
97
Pestaa marca: AADIR o Comprobar que el cdigo de marca no exista o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que la descripcin de la marca tenga como mximo 20 caracteres o Comprobar que se rellenan todos los campos o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que en descripcin slo se pueda introducir cdigo alfanumrico o Comprobar que lo inserta bien en la base de datos o Si lo ha insertado bien poner un mensaje indicndolo MODIFICAR o Comprobar que el cdigo de marca ya exista o Comprobar que se rellenan todos los campos o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que la descripcin de la marca tenga como mximo 20 caracteres o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que en descripcin slo se pueda introducir cdigo alfanumrico o Comprobar que lo modifica bien en la base de datos o Si lo ha modificado bien poner un mensaje indicndolo ELIMINAR o Comprobar que el cdigo de marca no exista o Comprobar que se rellenan todos los campos o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que el cdigo de marca tenga solo nmeros o Comprobar que lo elimina bien en la base de datos o Si lo ha eliminado bien poner un mensaje indicndolo
Pestaa Producto: AADIR o Comprobar que el cdigo de marca exista o Comprobar que el cdigo de producto no exista o Comprobar que se rellenan todos los campos
98
o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que el cdigo de producto tenga como mximo 5 caracteres o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que la descripcin del producto tenga como mximo 20 caracteres o Comprobar que en descripcin slo se pueda introducir cdigo alfanumrico o Comprobar que lo inserta bien en la base de datos o Si lo ha insertado bien poner un mensaje indicndolo MODIFICAR o Comprobar que el cdigo de marca se corresponda con el cdigo de producto que se quiere modificar o Comprobar que se rellenan todos los campos o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que el cdigo de producto tenga como mximo 5 caracteres o Comprobar que en cdigo de producto slo se puedan introducir nmeros o Comprobar que la descripcin del producto tenga como mximo 20 caracteres o Comprobar que en descripcin slo se pueda introducir cdigo alfanumrico o Comprobar que lo modifica bien en la base de datos o Si lo ha modificado bien poner un mensaje indicndolo ELIMINAR o Comprobar que el cdigo de marca se corresponda con el cdigo de producto que se quiere eliminar o Comprobar que se rellenan todos los campos o Comprobar que el cdigo de marca tenga como mximo 5 caracteres o Comprobar que en cdigo de marca slo se puedan introducir nmeros o Comprobar que el cdigo de producto tenga como mximo 5 caracteres o Comprobar que en cdigo de producto slo se puedan introducir nmeros o Comprobar que la descripcin del producto tenga como mximo 20 caracteres
Anexo F
99
o Comprobar que en descripcin slo se pueda introducir cdigo alfanumrico o Comprobar que lo elimina bien en la base de datos o Si lo ha eliminado bien poner un mensaje indicndolo