Parte II Escenarios de control domótico
Capítulo 4 Control de un sistema de motorización de puertas
4.3.2 Sensorización de la posición de la puerta
En este paso se van a añadir al sistema de motorización de puertas la lectura de los finales de ca- rrera. Ello nos permitirá poder enviarle al sistema órdenes para que abra o cierre completamen- te la puerta.
Resultado esperado
Al finalizar este ejercicio el sistema deberá permitir abrir y cerrar la puerta me- diante una única pulsación en el botón correspondiente. La puerta se detendrá au- tomáticamente al final del recorrido, desactivando la señal de control correspondiente y activando un led indicador. Una vez alcanzado cualquiera de los finales de carrera el siste- ma ignorará cualquier orden del usuario para sobrepasar dichos límites.
Para realizar la detección de los finales de carrera tan sólo hay que conectar la salida central de cada conmutador a sendas entradas digitales del Arduino que denominaremosFIN_ABIERTOFIN_ABIERTOy FIN_CERRADO
FIN_CERRADO. Se deberá utilizar una resistencia de pull-down para poder leer un valorLOWLOWcuan-
do el final de carrera no se encuentre activo.
Cuando se alcance uno de los finales de carrera se deberá indicar dicho estado iluminando un led, distinto en cada caso, mediante unas nuevas salidas digitales del Arduino que denominare- mosLED_ABIERTOLED_ABIERTOyLED_CERRADOLED_CERRADO.
Cuando se haya comprobado el correcto funcionamiento de la detección de los finales de carrera y la implementación de estos en el código de control, tan sólo resta por añadir que el movimien- to de la puerta se inicie mediante una única pulsación del botón correspondiente. Para ello ha- brá que modificar la máquina de estados del control del motor añadiendo nuevos estados, v.g.
ABRIENDOABRIENDOyCERRANDOCERRANDO. En dichos estados, la puerta seguirá moviéndose hasta alcanzar el final
de carrera, pasando en ese momento a uno de los nuevos estadosABIERTAABIERTAoCERRADACERRADA. Si durante
el movimiento el usuario pulsa el botón de la dirección contraria el motor se deberá parar y pa- sar al estadoPARADAPARADA.
En los estadosABIERTAABIERTAoCERRADACERRADA, la señal de control correspondiente,ABRIENDOABRIENDOoCERRANDOCERRANDO,
deberá desactivarse. Ello desactivará a su vez la señal de entrada del final de carrera,
FIN_ABIERTOFIN_ABIERTOoFIN_CERRADOFIN_CERRADO. Es probable que en este caso la iluminación de los leds indicado-
res del fin de carrera deje de funcionar. Modificar el código de control para que la iluminación de dichos leds esté asociada al estadoABIERTAABIERTAoCERRADACERRADAy no a las señales de fin de carrera.
Finalmente comprobaremos que el comportamiento del sistema se corresponde con el resultado esperado. Denominaremos control-sensorizadocontrol-sensorizado al código de
control desarrollado en este apartado.
4.3.3 Sistema de comunicaciones de control
Se pretende añadir un sistema de monitorización y envío de órdenes por el puerto serie. Este sis- tema nos permitirá monitorizar el estado del sistema de control por la consola serie y enviarle órdenes de movimiento a la puerta por la misma consola.
Resultado esperado
Al finalizar este ejercicio el sistema deberá informar a través de la consola serie del estado del mismo, es decir, PARADAPARADA, ABIERTAABIERTA, ABRIENDOABRIENDO, CERRADACERRADA o CERRANDOCERRANDO.
Además el sistema deberá aceptar órdenes desde la consola serie para abrir, cerrar o parar la puerta. El sistema de control mediante pulsadores deberá seguir funcionan con norma- lidad.
Inicialmente vamos a añadir al código decontrol-sensorizadocontrol-sensorizadodesarrollado en el apartado
anterior el sistema de monitorización mediante mensajes por la consola serie. Para ello, tras ini- cializar la consola serie ensetup()setup(), se enviará un mensaje con el nuevo estado del sistema cada
vez éste cambie por la recepción de una orden (por consola o mediante los pulsadores) o debido a un final de carrera.
Adicionalmente, en una segunda fase, se puede añadir al sistema de monitorización los mensa- jes 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
q cerrar puerta
w abrir puerta
p parar
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 de los pulsadores. De esta forma se minimiza considerablemente el esfuerzo de implementación de esta etapa y de 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.
4.3.4 Control remoto
Se pretende añadir un sistema de control remoto a nuestro sistema de control de puertas. 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 abrir, cerrar o parar la puerta. El sistema de control mediante pulsadores y órdenes por la consola deberá seguir funcionan con nor- malidad.
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.
4.3.5 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 puerta en función de un conjunto de condiciones. Para este ejercicio se puede utilizar cualquier de los sensores de detección de obstáculos, como son los sensores de infrarrojos y los de ultrasonidos.
Un ejemplo de condiciones complejas podrían ser:
• Mientras se está cerrando la puerta, si se detecta un obstáculo en la trayectoria de la mis- ma, la puerta se detendrá y se abrirá completamente. Para ello se podría utilizar un sensor de infrarrojos.
• Si la puerta se encuentra abierta, cerrarla tras el trascurso de una cierta cantidad de tiem- po, v.g. 15 segundos, sin que se haya detectado ningún obstáculo en la trayectoria.
• Usar un sensor de ultrasonidos, que permite medir distancias, para determinar cuándo se está acercando alguien a la puerta, en cuyo caso hay que abrirla antes de que llegue. Se de- berá distinguir entre acercarse a la puerta y pasar por delante.
Se sugiere modelar el sistema inteligente como una máquina de estados independiente que le envía eventos al sistema del control del motor.