SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros...

10
ANEXO A. ENTORNO DE DESARROLLO 81 ANEXO A ENTORNO DE TRABAJO. A lo largo de este Anexo, realizaremos una breve descripción de las herramientas propuestas para la implementación futura del proyecto. Se analizará por un lado, el equipo adquirido y, por otro, las distintas aplicaciones y herramientas software necesarias para el procesamiento de la información. 1 Hardware. Como se ha comentado en el capítulo 3, hemos escogido un equipo de la empresa Crossbow Technology Inc. para implementar la aplicación, concretamente el Professional Kit. Este kit incluye los siguientes dispositivos: 5 Motes: compuestos de una placa principal, que incluye un transceptor radio y una unidad de procesamiento, y una placa con sensores. 1 Placa programadora: se emplea para programar la unidad de procesamiento de la placa principal de cada mote. 1 Gateway: compuesto de una placa principal conectada a una placa programadora cuya función es actuar de puente entre la red de sensores y un PC o servidor.

Transcript of SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros...

Page 1: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

ANEXO A. ENTORNO DE DESARROLLO

81

ANEXO A

ENTORNO DE TRABAJO.

A lo largo de este Anexo, realizaremos una breve descripción de las

herramientas propuestas para la implementación futura del proyecto. Se analizará

por un lado, el equipo adquirido y, por otro, las distintas aplicaciones y

herramientas software necesarias para el procesamiento de la información.

1 Hardware.

Como se ha comentado en el capítulo 3, hemos escogido un equipo de la

empresa Crossbow Technology Inc. para implementar la aplicación, concretamente

el Professional Kit. Este kit incluye los siguientes dispositivos:

� 5 Motes: compuestos de una placa principal, que incluye un transceptor

radio y una unidad de procesamiento, y una placa con sensores.

� 1 Placa programadora: se emplea para programar la unidad de

procesamiento de la placa principal de cada mote.

� 1 Gateway: compuesto de una placa principal conectada a una placa

programadora cuya función es actuar de puente entre la red de sensores y

un PC o servidor.

Page 2: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

LOCALIZACIÓN EN INTERIORES USANDO REDES INALÁMBRICAS DE SENSORES

82

JOSÉ CARLOS REYES GUERRERO

� 1 Tarjeta de adquisición de datos: permite integrar otros sensores

comerciales en la red.

� 1 Placa principal adicional: tarjeta radio con un diseño distinto a la que

incorporan los motes pero con las mismas características.

1.1 Placa principal.

Los motes se comunican entre sí usando el canal radio, enviando y

recibiendo mensajes a una determinada frecuencia. Los componentes necesarios

para la comunicación entre motes, se encuentran integrados en un chip OEM4

modelo MPR2600. Este módulo pertenece a la familia MICAz, dispositivos que

trabajan a una frecuencia de 2.4 GHz, compatibles con el estándar IEEE 802.15.4 y

utilizados en redes inalámbricas de sensores. La Figura 16 muestra la placa

principal de los nodos conectada a la alimentación.

El módulo MPR2600, emplea como transceptor radio el Chipcon CC2420 de

Texas Instrument e integra el microcontrolador de 8 bits ATmega128L de Atmel, el

cual dispone de una memoria flash programable interna de 128 KB. Además, los

nodos disponen de una memoria flash externa de 512 KB para la programación vía

OTAP5 o para almacenar datos muestreados del entorno. En la Figura 17 se

representa el diagrama de bloques de la placa principal.

Por otra parte, la placa dispone de tres leds accesibles por el usuario que

pueden usarse a modo de bandera a la hora de depurar código o simplemente para

informar de algún evento.

Figura 16. MPR2600-MICAz

4 Original Equipment Manufacturer (OEM): compañía que ensambla y vende componentes fabricados

por otras empresas como si hubiesen sido fabricados por ella. 5 Over-The-Air-Programing (OTAP): técnica inalámbrica de programación de nodos.

Page 3: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

ANEXO A. ENTORNO DE DESARROLLO

83

Para garantizar un correcto funcionamiento del transceptor, es necesario

que la tensión de alimentación se encuentre dentro del rango 2.7 - 3.6 V. Esta

tensión puede proporcionarse bien mediante dos baterías tipo AA usando el

conector Molex de dos pines, o bien mediante el conector de 51 pines usando la

placa de programación conectada al puerto USB del PC.

Figura 17. Diagrama de bloques del MPR2600

El transceptor utilizado es compatible con el estándar IEEE 802.15.4 y ha

sido diseñado expresamente para aplicaciones de baja potencia y reducidos niveles

de tensión de alimentación. Utiliza una modulación O-QPSK (Offset Quadrature

Phase Shift Keying) con pulsos semisinusoidales y una tasa efectiva de transmisión

de 250 Kbps. Además, se realiza un ensanchamiento de espectro por secuencia

directa con un factor de ensanchado de 9 dB.

De acuerdo con el estándar 802.15.4, se dispone de 16 canales para la

comunicación con un ancho de banda de 5MHz cada uno. Estos canales se

encuentran numerados del 11 al 26, siendo el canal 11 el correspondiente a la

frecuencia 2.405 GHz y el 26 el correspondiente a 2.480 GHz.

Asimismo, la potencia de transmisión de los motes es programable,

oscilando en un rango entre 0 dBm y -25 dBm. La Tabla 2 muestra las distintas

potencias de transmisión disponibles junto a su código de selección y al

correspondiente consumo de corriente:

Page 4: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

LOCALIZACIÓN EN INTERIORES USANDO REDES INALÁMBRICAS DE SENSORES

84

JOSÉ CARLOS REYES GUERRERO

Tabla 2. Potencias de transmisión del CC2420

Para una información más detallada sobre las características de la placa

principal puede consultarse [41].

1.2 Placa de sensores.

El Professional Kit contiene en cada mote una placa de sensores, conectada

a la placa principal a través del conector Molex de 51 pines, que permite medir

variables del entorno. En la Figura 18 se aprecia la placa de sensores incluida en el

kit. El modelo en cuestión es el MTS400CA y dispone de los siguientes sensores

[42]:

� Sensor de humedad y temperatura.

� Sensor de presión barométrica y temperatura.

� Sensor de luz.

� Acelerómetro de dos ejes.

Figura 18. Placa de sensores MTS400CA

1.3 Placa programadora.

Conectada al PC mediante un puerto USB, la función de la placa es

programar cada uno de los motes a través del conector de 51 pines usando un

Page 5: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

ANEXO A. ENTORNO DE DESARROLLO

85

procesador integrado en la placa (ISP, In System Programmer). Para ello, se

descarga el código de la aplicación en el ISP a través del puerto USB y, a

continuación, se programa el nodo. Para el desarrollo de la aplicación se ha

empleado el modelo MIB520CB, el cual se muestra en la Figura 19. El diagrama de

operación de la placa programadora se representa en la Figura 20.

Figura 19. Tarjeta de programación MIB520CB.

Cuando conectamos una placa de programación al PC, éste establece dos

puertos serie virtuales, N y N+1, a través de los cuales se comunicará con la placa.

El puerto N se utiliza en la etapa de programación de los nodos y el N+1 para la

comunicación con el PC.

Figura 20. Diagrama de operación.

1.4 Estación base (Gateway).

La estación base está compuesta por una placa principal conectada a una

placa de programación. Su función es actuar como nexo de unión entre la red

inalámbrica de sensores y el PC. La estación base se muestra en la Figura 21.

Tanto la placa principal como la placa de programación son iguales a las

empleadas en la comunicación y en la programación de los motes,

respectivamente. Por lo tanto, al conectar la estación base al PC se crearán otros

dos puertos serie virtuales, X y X+1, donde X se emplea para programarla y X+1

para la comunicación con el PC.

Page 6: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

LOCALIZACIÓN EN INTERIORES USANDO REDES INALÁMBRICAS DE SENSORES

86

JOSÉ CARLOS REYES GUERRERO

Figura 21. Estación base

1.5 Tarjeta de adquisición de datos.

La tarjeta de adquisición de datos se emplea como una plataforma general

de medida para conectar a la red distintos tipos de sensores. Además, incluye un

sensor de humedad y otro de temperatura. Su diseño se observa en la Figura 22.

Figura 22. Tarjeta de adquisición de datos MDA300CA

Dispone de 11 canales de entrada para señales analógicas y diferenciales y

otros 6 para señales digitales. Estos últimos pueden usarse como pines digitales de

entrada/salida. Asimismo, dispone de tres pines que proporcionan 5V, 3.3V y 2.5V

respectivamente para, por ejemplo, poder excitar sensores externos [42].

2 Software.

Las principales herramientas software necesarias para el desarrollo de la

aplicación de localización son, por un lado, los sistemas operativos Ubuntu 8.04 y

TinyOS 2.1 y, por otro, los lenguajes de programación nesC y Java.

Page 7: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

ANEXO A. ENTORNO DE DESARROLLO

87

2.1 TinyOS.

TinyOS es un sistema operativo de código abierto diseñado específicamente

para redes inalámbricas de sensores. Se caracteriza por tener una arquitectura

orientada a componente, lo que facilita una rápida implementación a la vez que se

minimiza código, siendo este último un factor a destacar debido a las limitaciones

de memoria de este tipo de redes.

La librería de componentes de TinyOS incluye protocolos de red, servicios

distribuidos, drivers de sensores y herramientas de adquisición de datos ya

configurados para ser usados, aunque también es posible modificarlos para

desarrollar aplicaciones específicas.

TinyOS no es un sistema operativo en el sentido tradicional, es un entorno

de programación para sistemas integrados que permite diseñar sistemas

operativos con funciones específicas dentro de cada aplicación. La finalidad de este

sistema de programación es asegurar que el código correspondiente a cada

aplicación sea lo menor posible. Además, TinyOS no posee un sistema de archivos,

soporta únicamente asignación de memoria estática, implementa un modelo de

tareas simple y minimiza el nivel de abstracción.

TinyOS presenta un modelo de programación codificado en lenguaje nesC.

Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que

la capa más baja es la más cercana al nivel hardware, mientras que cuanto más alto

es el componente más próximo se encuentra a la aplicación [43].

La estructura de directorios de TinyOS es la siguiente [44]:

� /apps: incluye distintas aplicaciones de ejemplo de programación en

TinyOS.

� /support : contiene el código fuente del Toolchain.

� /tos : se subdivide en los directorios:

• /chips

• /interfaces: almacena las interfaces provistas por los componentes

primitivos y las aplicaciones de ejemplo.

• /lib: contiene componentes e interfaces del sistema y de las distintas

plataformas soportadas por TinyOS.

• /platforms: almacena los ficheros necesarios para la ejecución en

distintas plataformas.

Page 8: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

LOCALIZACIÓN EN INTERIORES USANDO REDES INALÁMBRICAS DE SENSORES

88

JOSÉ CARLOS REYES GUERRERO

• /sensorboard: incluye ficheros específicos de cada placa sensora.

• /system: contiene los componentes primitivos que proporciona TinyOS.

• /types: incluye los tipos que se usan en las primitivas de TinyOS.

Una aplicación en TinyOS es un conjunto de componentes que interactúan

entre sí, siendo cada uno de ellos una entidad funcional. Existen tres conceptos

fundamentales relacionados con la comunicación entre componentes: los

comandos, los eventos y las tareas. Los comandos y los eventos son mecanismos

empleados en la comunicación entre componentes, mientras que una tarea se

utiliza en operaciones concurrentes dentro de un mismo nodo.

Un comando es, por lo general, una solicitud de un servicio a otro

componente, por ejemplo, la lectura de un sensor. Un evento sería, siguiendo con

el ejemplo anterior, una señal de respuesta indicando que se ha completado el

servicio solicitado. Los eventos pueden también producirse de manera asíncrona

por interrupciones hardware o por la llegada de mensajes.

Los comandos y los eventos, en lugar de realizar su función en el preciso

instante de la llamada, pueden aplazar su ejecución usando las tareas. Las tareas, a

diferencia de los comandos y los eventos, son funciones que no se ejecutan en el

instante de la llamada sino que son ejecutadas por el planificador de TinyOS

posteriormente.

2.2 NesC.

NesC [43] es un lenguaje estructurado orientado a componente y diseñado

específicamente para sistemas integrados, como por ejemplo, las redes de

sensores. La sintaxis de nesC es similar a la de C y define un modelo de

concurrencia basado en tareas y en manejadores de eventos hardware. Asimismo,

es capaz de detectar condiciones de carrera durante el proceso de compilación.

El modelo de concurrencia emplea dos hilos durante la ejecución de una

aplicación: las tareas y los manejadores de eventos hardware. Las tareas son

funciones cuya ejecución es postergada, pero que una vez iniciada su ejecución no

se detienen hasta completarse. Los manejadores de eventos hardware también se

ejecutan hasta el final pero, a diferencia de las tareas, sí pueden generar

interrupciones en la ejecución de otra tarea o manejador.

Debido a que las tareas y los manejadores pueden ser interrumpidos

durante su ejecución por otro código asíncrono, los programas en nesC son

susceptibles de sufrir condiciones de carrera. Para evitar estas situaciones, nesC

utiliza declaraciones atómicas.

Page 9: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

ANEXO A. ENTORNO DE DESARROLLO

89

El lenguaje nesC es una extensión de C diseñada para abarcar el modelo de

ejecución de TinyOS. Se muestran a continuación los conceptos fundamentales

relacionados con nesC/TinyOS:

� Aplicación: consiste en uno o más componentes ensamblados (wired) que

forman un programa ejecutable.

� Componente: constituyen el bloque básico para las aplicaciones escritas en

nesC. Existen dos tipos de componentes: módulos y configuraciones. Por

otra parte, un componente puede a su vez, proporcionar y usar interfaces.

� Módulo: componente que implementa una o más interfaces.

� Configuración: componente que ensambla a otros componentes,

conectando las interfaces usadas por algún componente a las interfaces

provistas por otros. Es lo que se conoce como wiring. La idea es que pueda

desarrollarse una aplicación como un conjunto de módulos, uniendo éstos

mediante una configuración dada. Toda aplicación en nesC está descrita

por una configuración, conocida como configuración de alto nivel, que

especifica los componentes de la aplicación y las interfaces que provee y

usa cada uno.

� Interfaz: se emplea para proporcionar una definición de la interacción de

dos componentes. En nesC las interfaces son bidireccionales. Para que un

componente pueda llamar a los comandos de una interfaz, debe

implementar los eventos de dicha interfaz. Un único componente puede

solicitar o proveer múltiples interfaces y múltiples instancias de la misma

interfaz. Las interfaces son el único punto de acceso de un componente.

2.3 Java.

Java es un lenguaje de programación orientado a objetos desarrollado por

Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha

de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina

herramientas de bajo nivel, como la manipulación directa de punteros o memoria.

Las aplicaciones Java están típicamente compiladas en un bytecode6, a

diferencia de lenguajes como C o C++ que generan un fichero ejecutable durante la

compilación. Java es, por tanto, un lenguaje interpretado.

6 Fichero binario que contiene el código máquina generado por el compilador e interpretado por una

máquina virtual.

Page 10: SECRETARIA JC INDEPENDITEbibing.us.es/proyectos/abreproy/11750/fichero... · Al igual que otros sistemas operativos, TinyOS se organiza en capas, de modo que la capa más baja es

LOCALIZACIÓN EN INTERIORES USANDO REDES INALÁMBRICAS DE SENSORES

90

JOSÉ CARLOS REYES GUERRERO

Además de las anteriores, podemos mencionar como características

fundamentales de Java su robustez, simplicidad y la capacidad de programación

multihilo [45].

2.4 Ubuntu.

Ubuntu es un sistema operativo de código abierto basado en la

distribución7 Debian GNU/Linux. Es una distribución relativamente reciente ya que

fue creada en 2004 por el sudafricano Mark Shuttleworth. Está patrocinada por la

empresa Canonical Ltd. y tiene como objetivo la facilidad y la libertad de uso, los

lanzamientos regulares (cada 6 meses) y la sencillez en la instalación [46].

En este proyecto se ha empleado la versión con soporte técnico de larga

duración (LTS) Ubuntu 8.04: Hardy Heron.

Ubuntu, al igual que la mayoría de distribuciones GNU/Linux, tiene como

sistema de archivos predeterminado el sistema ext3, a diferencia del sistema NTFS

empleado por los sistemas operativos Windows de los últimos años.

Asimismo, el gestor de ventanas predeterminado es GNOME y el formato

de los paquetes software es, por ser una distribución basada en Debian, de

extensión deb.

7 Variante del sistema operativo GNU/Linux que incorpora determinados paquetes software para

satisfacer las necesidades de un grupo específico de usuarios.