3.6 Protocolos y Topologías
4.4.1 Procesamiento
Para adquirir la información con la plataforma RedBoard se desarrolló un algoritmo capaz de adaptarse a los requerimientos específicos del prototipo en desarrollo, para lo cual se consideró fraccionar el algoritmo en una función principal y en varias funciones secundarias. La función principal tiene como objetivo administrar el procesamiento de toda la información que pasa por el prototipo, y enviarla a los dispositivos encargados de visualizarla y almacenarla. Por otra parte las funciones secundarias se encargan de obtener todas las variables ofrecidas por los sensores y entregar esta información a la función principal. De acuerdo al conocimiento que se tiene de cada sensor que compone al prototipo, se decidió tratarlos según sus características técnicas, su forma de comunicación y modo de funcionamiento; por este motivo se obtuvo el valor instantáneo de la velocidad de viento y la lluvia, utilizando una interrupción en flanco de bajada para cada una de las variables; para adquirir el valor instantáneo del resto de variables como temperatura y humedad del ambiente, temperatura y humedad del suelo, temperatura del agua, dirección del viento, presión atmosférica y nivel de batería se parametrizó su adquisición. Para lograr una mayor precisión en la recolección de datos realizada por el prototipo se decidió que a cada variable adquirida se obtenga el promedio de todos los valores instantáneos obtenidos en un tiempo de entre 2 y 10 minutos. Así como también para enviar la información, tanto a otros dispositivos por medio de XBee, y a un servidor en la nube, se decidió enviar la información promediada de cada variable cada cierto intervalo de tiempo; que para pruebas experminetales se eligio un tiempo 30 segundos y otro de 10 minutos. Todo este proceso descrito se puede ver en la Figura 4.6.
62 Figura 4.6. Función general del algoritmo.
Fuente. El autor.
Inicio
Definir pines de configuración Iniciar variables Llamar objetos para módulos
de comunicación ¿Ocurrió INT 0? ¿Ocurrió INT 1? rainIRQ() wspeedIRQ() Si Si A
Limpiar bandera INT0 Limpiar bandera INT1 A
A No
No Incluir librerías
Iniciar módulos de co municación Iniciar lectura de sensores
Almacenar tiempo actual
¿Pasarón
30seg?
Velocidad del viento () Dirección del viento ()
Lluvia() Leer_humedad () Leer_temperatura () Leer_promedio_temperatura()
Obtener nivel bateria ()
Si EnviarTrama() Fin ¿Pasarón 600 seg? Si Promediar variables recolectadas No ¿Hay datos para enviar? Si No No
63
En la Figura 4.7 y Figura 4.8 se describe el proceso para adquirir el valor instantáneo de la lluvia y velocidad del viento.
Figura 4.7. Función RainIRQ.
Fuente. El autor.
Figura 4.8. Función wspeedIRQ.
Fuente. El autor.
RainIRQ ()
¿Esperar 10ms?
Obtener valor de lluvia
Fin ¿E Si No ¿E wspeedIRQ ¿Esperar 10ms?
Recolectar parámetros para velocidad del viento
Fin Si
64
La función RainIRQ, cuenta los aumentos en el medidor de lluvia del pluviómetro cuando ocurren, este incremento es activado por medio de un switch de láminas, cada activación del switch equivale a 0.2794 mm de agua.
La función wspeedIRQ, cuenta el número de clicks que se efectúan con el anemómetro por medio de la activación de un imán y de un switch; en el anemómetro se efectúan dos clicks por rotación. El cálculo de la lluvia y velocidad del viento se lo realiza cada 10 milisegundos (ms) para ignorar efectos de rebote tanto en el switch del pluviómetro como en el anemómetro.
Figura 4.9. Función Obtener nivel batería.
Fuente. El autor.
Para el calcular el nivel de la batería (ver Figura 4.9) se utiliza un pin analógico que obtiene valores de 0 a 1023; el cálculo del nivel de batería está basado en un divisor de voltaje. En la Figura 4.10 se muestra la función para calcular la velocidad del viento, que está basada en el número de clicks que se presentan en el anemómetro, que se obtienen de la función wspeedIRQ y la diferencia de tiempo en la que se presenta este suceso. La velocidad del viento está dada en km/h; cada clicks por segundo es de 2.4km/h y la máxima lectura obtenida es de 228 km/h, pasado este valor el switch del anemómetro se cierra.
Obtener nivel bateria ()
Leer entrada analógica Convertir valor en vo ltaje
Retornar nivel de bateria
Fin
65
Figura 4.10. Función Velocidad del viento.
Fuente. El autor.
Para obtener la dirección del viento se establecieron diferentes rangos en el convertidor analógico-digital (ADC) y en base al valor que se obtenga de la entrada analógica, la función retorna la dirección del viento dada en grados (ver Figura 4.11).
Figura 4.11. Función Obtener dirección del viento.
Fuente. El autor.
ló
Velocidad del viento ()
Obtener velocidad del viento
Retornar velocidad del viento
Fin ¿Esperar tiempo
actual?
Obtener dirección del viento ()
Definir entrada analogica
¿Valor análogico está dentro de rango?
Calcular dirección del viento en grados
66
El proceso para obtener la dirección de viento toma como punto de referencia el norte, donde la punta de la veleta se encuentra ubicada en esta dirección (0º); así que dependiendo de la posición o ubicación de la punta de la veleta se obtiene un ángulo tomado desde la posición inicial, y se añade el punto cardinal al cual hace referencia; por ejemplo 45º NE (Noreste).