Parte II Escenarios de control domótico
Capítulo 5 Control de un sistema de iluminación
5.3.4 Sistema de iluminación regulada
Se va a incorporar alcontrol-sensorizadocontrol-sensorizadoun mecanismo que permita controlar la intensi-
dad del sistema de iluminación mediante un sensor rotatorio.
Resultado esperado
Al finalizar este ejercicio el sistema deberá permitir al usuario controlar la intensi- dad del sistema de iluminación mediante un sensor rotatorio. Igualmente, el siste- ma de monitorización deberá ser capaz de estimar el porcentaje de intensidad que se está aplicando en base al sensor de consumo.
El pulsador y el conmutador se deben poder seguir utilizando para apagar o encender la luz, aunque ésta funcione con una intensidad reducida.
Para llevar a cabo está modificación se conectará el sensor rotatorio a una de las entradas analó- gicas del Arduino, que denominaremosPOTENCIAPOTENCIA. El valor obtenido de dicho sensor, una vez
mapeado al rango 0-2550-255, se utilizará para generar una onda PWM, mediante la función
analogWrite()
analogWrite(), que se aplicará a través de una nueva salida que denominaremosINTENSIDADINTENSIDAD
a la entradaENAENA(pines amarillos) de la placa de motores, sustituyendo así la conexión a+5v+5vque
se estaba utilizando.
Se debe tener en cuenta que el valor regulado sólo se podrá aplicar cuando el con- mutador y/o el pulsador se hayan utilizado para encender la luz. Si la intensidad está al mínimo, el efecto del conmutador y/o el pulsador no se podrá apreciar.
Una vez implementadas y probadas las modificaciones anteriores, se procederá a modificar el sistema de monitorización mapeando el rango existente entre el consumo mínimo y el máxi- mo en el intervalo de 0 a 100 %. Se deberá informar del porcentaje de intensidad a través de la consola cada vez que éste cambie.
La iluminación del ledTESTIGOTESTIGOpasará a estar activa a partir de un porcentaje de intensidad del
10 %. Modifíquese la lógica de control para que se tenga en cuenta este nuevo umbral.
Finalmente comprobaremos que el comportamiento del sistema se corresponde con el resultado esperado. Denominaremoscontrol-reguladocontrol-reguladoal código de control
desarrollado en este apartado.
5.3.5 Sistema de comunicaciones de control
Se pretende añadir un sistema de envío de órdenes por el puerto serie. Este sistema nos permiti- rá enviarle órdenes de cambios en el sistema de iluminación utilizando la consola.
Resultado esperado
Al finalizar este ejercicio el sistema deberá aceptar órdenes desde la consola serie para encender, apagar, aumentar intensidad o reducir intensidad de las luces. El sistema de control mediante el pulsador y el sensor rotatorio deberá seguir funcionan con normalidad.
Inicialmente vamos a añadir al código decontrol-reguladocontrol-reguladodesarrollado en el apartado ante-
rior un sistema de monitorización mejorado mediante mensajes por la consola serie. Para ello, tras inicializar la consola serie ensetup()setup(), además de los mensajes con los estado del sistema,
también se enviarán mensajes que indiquen qué órdenes está recibiendo el sistema de control. Una vez implementado y probado el sistema de monitorización, vamos a añadir un sistema de ordenes sencillo para enviar por la consola serie. Las órdenes se basarán en único carácter, segui- do de un retorno de carro. Un ejemplo de ordenes podría ser:
Carácter Acción a realizar
0 apagar
1 encender
q más intensidad (+ 10%)
a menos intensidad (- 10%)
Se debe tener cuidado durante la lectura de las órdenes provenientes de la consola serie para no dejar bloqueado el sistema de control a la espera de una orden. Se de- berán utilizar funciones de lectura o comprobación del buffer serie no bloquean- tes o con un timeout muy bajo.
Para la implementación de las órdenes remotas se sugiere que el código de lectura del puerto se- rie generé los mismos eventos que se han utilizado al detectar la activación del pulsador. De es- ta forma se minimiza considerablemente el esfuerzo de implementación de esta etapa y de las ampliaciones propuestas en las siguientes secciones. En el caso de la intensidad, ésta se almace- nará en una variable inicializada con el valor del sensor rotatorio. Téngase en cuenta, que una vez modificada la intensidad mediante las ordenes enviadas por la consola serie, la intensidad almacenada y la especificada en el sensor rotatorio diferirán.
Al añadir el soporte para las nuevas órdenes remotas también se deberá actualizar el sistema de monitorización con los mensajes correspondientes a dichas órdenes.
Finalmente comprobaremos que el comportamiento del sistema se corresponde con el resultado esperado. Denominaremoscontrol-comunicacionescontrol-comunicacionesal código de
control desarrollado en este apartado.
5.3.6 Control remoto
Se pretende añadir un sistema de control remoto a nuestro sistema de iluminación. En este caso, las órdenes podrán llegar desde uno de los sistemas de comunicaciones elegidos.
Resultado esperado
Al finalizar este ejercicio el sistema deberá aceptar órdenes desde un sistema de co- municaciones remoto permitiendo encender, apagar, aumentar intensidad o re- ducir intensidad de las luces. El sistema de control mediante pulsador y órdenes por la consola deberá seguir funcionan con normalidad.
Para la implementación de este ejercicio se podrá escoger entre alguno de los sistemas de comu- nicaciones remotas disponibles. En la actualidad estos sistemas son:
1. Mando a distancia por infrarrojos y receptor. O receptor y emisor desde una segunda placas Arduino.
2. Módulos de comunicaciones por RF (433 MHz). 3. Módulo bluetooth.
La información necesaria para la implementación utilizando el sistema escogido se deberá ex- traer de la página del fabricante o mediante búsquedas en Internet.
Se debe que tener cuidado durante la lectura de las órdenes remotas de no utilizar funciones bloqueantes, que interfieran en el correcto funcionamiento del sistema de control
Al igual que en el ejercicio anterior, cuando se modifique el códigocontrol-comunicacionescontrol-comunicaciones
se sugiere que el código de lectura de las ordenes remotas genere los mismos eventos que se han utilizado al detectar la activación de los pulsadores. De esta forma se minimiza considerable- mente el esfuerzo de implementación y se facilita la escalabilidad del sistema.
Al añadir el soporte para las nuevas órdenes remotas también se deberá actualizar el sistema de monitorización con los mensajes correspondientes a dichas órdenes.
Finalmente comprobaremos que el comportamiento del sistema se corresponde con el resultado esperado. Denominaremoscontrol-remotocontrol-remotoal código de control
desarrollado en este apartado.
5.3.7 Control inteligente
En este último ejercicio se propone añadir alcontrol-remotocontrol-remotoun sistema de control inteligen-
te que genere los eventos de abrir y cerrar la persiana en función de un conjunto de condiciones ambientales.
Para este ejercicio se puede utilizar cualquiera de los sensores de interacción con el exterior: luz, presencia, etc.
Un ejemplo de condiciones complejas podrían ser:
• Si es de noche (no hay luz) y se ha detectado movimiento, encender las luces. Una vez en- cendidas, si no se detecta movimiento en una determinada cantidad de tiempo, las luces se apagarán. ¡Ojo! Apagar las luces altera el estado del sensor de presencia dando falsos po- sitivos. Tras apagar las luces se deberá ignorar el sensor de presencia durante algunos se- gundos.
• Que la intensidad de la luz se adapte a la iluminación ambiente: cuanto mayor ilumina- ción ambiente menor intensidad en el sistema de iluminación.
Se sugiere modelar el sistema inteligente como una máquina de estados independiente que le envía eventos al sistema del control del motor.