Redes de Computadores II - Seminario de Redes de Computadores
Segundo Semestre 2010

Tarea Tmote Sky
Sensotronic


Objetivos.

Esta tarea tiene por objetivos que:
  1. Se acerque a la programación de dispositivos inalámbricos.
  2. Usted se familiarice con el ambiente de desarrollo del lenguaje nesC para TinyOS.
  3. Se acerque al modelo de ejecución TinyOS.
  4. Usted ejercite conceptos propios de nesC y TinyOS: componentes, interfaces, comandos, eventos y tareas.
Descripción General.

Esta tarea busca que usted se acerque a la programación de dispositivos inalámbricos, en este caso, el dispositivo Tmote Sky. Este dispositivo es un modelo de "mote" fabricado por Moteiv que posee: una radio Chipcon 2420, que provee interoperabilidad con dispositivos IEEE 802.15.4; un MSP430, de 8Mhz, 10Kb de RAM y 48Kb de memoria flash; sensores de humedad/temperatura e iluminancia; sensores de temperatura y voltaje internos.

Los dispositivos utilizan el sistema operativo TinyOS, un sistema de código abierto, orientado a componentes y que ha sido diseñado especialmente para redes de sensores inalámbricos. Los componentes de este sistema están desarrollados en el lenguaje nesC, al igual que las aplicaciones que se distribuyen y desarrollan para TinyOS.

NesC es un lenguaje de programación que extiende el lenguaje C,  incorporando el modelo de ejecución y conceptos de TinyOS. NesC introduce nuevos conceptos que lo diferencian de los lenguajes procedurales o orientados a objetos. Existen las interfaces, que son canales bidireccionales multifuncionales entre dos componentes, el componente proveedor y el componente usuario. En una interfaz se especifica los comandos que deben ser implementados por el proveedor y los eventos  que deben ser implementados por el usuario. Una aplicación nesC consiste en uno o más componentes relacionados por interfaces para formar un programa ejecutable. Existen dos tipos de componentes módulos y configuraciones. Los módulos implementan el código de una o más interfaces, mientras que las configuraciones se utilizan para cablear  los distintos componentes que son parte del programa. Como primer paso en el lenguaje nesC y TinysOS es recomendable que revise el tutorial para tinyos-2.x y la guía de programación de tinyos. Revise la guía de instalacion de TinyOS para Linux y Windows según corresponda.

Tarea.

La idea de esta tarea, es que usted se acerque a estos conceptos, utilizando el conjunto de componentes que provee TinyOS para utilizar el hardware del Tmote Sky. La tarea consiste en desarrollar una aplicación que utilice periféricos del dispositivo en distintos modos como se describe a continuación.

Nodo Sensor:
Este nodo debe utilizar los sensores de temperatura y de intensidad luminosa, presionando el botón de usuario se debe intercambiar el sensor a utilizar, el nodo debe tomar periódicamente una medición y enviarla al nodo despliegue, además debe informar el tipo de sensor que está utilizando.

Nodo Despliegue:
Este nodo recibe la medición enviada por el nodo sensor y representa su valor utilizando los leds, a mayor intensidad de temperatura/luz el led0/led1 debe parpadear a una  mayor frecuencia, a una menor intensidad deben parpadear a una menor frecuencia, como se ejemplifica en la Figura 1.

Funcionamiento
Figura 1. Funcionamiento.
Considerar:
Valor [°C] = -40 + 0.01 * Valor Bruto
Valor [lux] = Valor Bruto * 625 / 273
Conversion
Figura 2. Conversiones.

A una frecuencia de parpadeo muy alta (t muy chico) es MUY IMPORTANTE forzar el led en ON para que este no se prenda y apague tantas veces en tan poco tiempo y se eviten posibles daños, de todas maneras el ojo humano a una frecuencia alta percibirá el led como constantemente prendido, se sugiere que a una frecuencia mayor a 25 [Hz] forzar el led en ON, análogamente se sugiere que a una frecuencia muy baja se fuerce el led a OFF, esto implica que el sistema funciona dentro de rangos de temperatura[°C]/luz[lux], fuera de los cuales el led se mantendrá prendido o apagado según corresponda.

Las transformaciones anteriores son solo una sugerencia, dado que los rangos de funcionamiento pueden variar para usted dependiendo del lugar donde trabaje y haga sus pruebas (iluminación, temperatura), pero independiente de los valores que utilice usted debe especificar de todas formas en su documentación la implementación que utilizó y rangos de funcionamiento.

Forma de entrega.