Redes de Computadores II - Seminario
de Redes de
Computadores
Segundo Semestre 2010
Tarea Tmote Sky
Sensotronic
Objetivos.
Esta tarea tiene por objetivos que:
- Se acerque a la programación de dispositivos inalámbricos.
- Usted se familiarice con el ambiente de
desarrollo del lenguaje nesC para TinyOS.
- Se acerque al modelo de ejecución TinyOS.
- 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.
Figura 1. Funcionamiento.
Considerar:
- Se deben desarrollar para este sistema dos aplicaciones, la del nodo sensor, y la del nodo despliegue.
- Se
sugiere revisar las aplicaciones Blink, RssiDemo (uso del botón), LowPowerSensing (uso del sensor) y BlinkToRadio. Estas aplicaciones se
encuentran bajo el directorio cygwin/opt/tinyos-2.x/apps.
- Para convertir el valor bruto del sensor de Temperatura SensirionSht11 a su equivalente en Celsius utilice:
Valor [°C] = -40 + 0.01 * Valor
Bruto
- Para convertir el valor bruto del sensor de iluminancia
Hamamatsu S1087 a su equivalente en lux utilice:
Valor [lux] = Valor
Bruto * 625 / 273
- Para reflejar la intensidad luminosa [lux] y la temperatura [°C] en el periodo de intermitencia del los leds, se sugiere utilizar las siguientes transformaciones:
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.
- Puede probar el sensor de temperatura con poniéndolo en
lugares calientes como el cargador del notebook, o al sol, pero nunca
cerca
de algo excesivamente caliente (estufa, fuego) para no dañar el mote,
tenga en cuenta que a diferencia del sensor de luminosidad, el sensor
de temperatura reacciona mucho más lento, si desea puede cambiar los
valores de la conversión para que funcione a un rango menor de
temperaturas, de esta forma cambios más pequeños en la temperatura se
verán reflejados mas rápidamente en los leds.
Forma de entrega.
- La solución debe ser enviada por correo electrónico a elo323 a r r o b a elo p u n t o utfsm p u n t o cl .
- Debe
adjuntar al correo un archivo ZIP. El archivo debe ser nombrado con los
apellidos de los miembros del grupo, por ejemplo, Silva_Gonzalez.zip .
- Dentro
del comprimido, debe incluir los archivos *.nc, *.h y Makefile que correspondan a su solución, debidamente comentados.
- Además debe documentar su trabajo incluyendo la siguiente información:
- Ambiente de trabajo que se requiere para compilar y ejecutar su solución.
- Explicación breve de alto nivel de su solución, incluyendo rangos de funcionamiento de los sensores.
- Diagrama de componentes de su solución.