Sistemas de monitoreo climático en red

Se tiene una estación con un sistema redundante de medidas de temperatura y humedad, es decir, cuenta con un sistema principal (maestro) y un sistema de respaldo (esclavo).

Más información de las maquetas aquí

Descripción del problema

  • El sistema maestro emitirá datos a la nube siempre que este pueda.
  • Cómo medida de seguridad cuando la temperatura del sistema maestro supere un cierto valor (30°C), emitirá una señal de alerta “A” al sistema secundario via ZigBee (protocolo de comunicación) 3 veces con una espera entre mensajes de 3 segundos. Para identificar de manera visual que los sistemas estan en modo alerta, se mostrará un parpadeo en un led rojo (LR, 500ms encendido y 500ms apagado). Si el sistema maestro regresa a rangos normales (<27°C) enviará un mensajes “O” de OK al sistema esclavo para que este deje de enviar datos siguiendo la misma dinámicas, enviar 3 veces con una espera de 3 segundos.
  • El sistema esclavo solo emitirá datos a la nube si recibe el mensaje de alerta “A” del maestro, y lo hará hasta recibir el OK “O”, en caso de recibir el OK, dejara de enviar datos.

Tarea

  • Construir e implementar en Arduino, MEF o MEFs para cada uno de los dos sistemas (maestro y esclavo) de manera que se cumplan las condiciones presentadas.

Una posible solución

Propuesta MEF del esclavo

  • ESLEEP : Estado del esclavo en espera
  • EWARN : Estado del esclavo en alerta y emitiendo datos por el maestro o con el maestro
  • ROFF : Estado del led rojo apagado
  • RON : Estado del led rojo encendido

donde $p$ es la constante de tiempo del parpadeo (500 ms), $msg$ es la variable donde se guarda el mensaje que llega del maestro, $tr$ es la variable de tiempo relativo para realizar el parpadeo, $P$ es la variable para controlar una MEF desde la otra, $LR$ es el LED Rojo.

💾 Código para el esclavo

Propuesta MEF del maestro

  • EOK : Estado del maestro en estado ok, tomando y emitiendo datos
  • EWARN : Estado del maestro en alerta, tomando y emitiendo datos
  • ROFF : Estado del led rojo apagado
  • RON : Estado del led rojo encendido

donde $p$ es la constante de tiempo del parpadeo (500 ms), $tr$ es la variable de tiempo relativo para realizar el parpadeo, $P$ es la variable para controlar una MEF desde la otra, $LR$ es el LED Rojo, $LG$ es el LED Verde, $te$ tiempo entre emisiones, $e$ es la constante de tiempo entre emisiones (3000 ms), $C$ es el contador del número de emisiones, $Tmax$ temperatura que generá alerta (30), $Tmim$ temperatura que regresa el sistema a la normalidad (27).

💾 Código para el maestro