scieee AI-readable full text Open interactive document viewer

SIAVIDOPEDIA: SIstema de Ayuda VIsual DOméstica para PErsonas con DIficultades Auditivas

Zamorano Ojuel, Álvaro Antonio

Abstract

La sociedad actual no está preparada para satisfacer las necesidades de las personas con algún tipo de dificultad, sea esta motora, cognitiva, visual o auditiva. Concretamente, en nuestros hogares abundan las señales acústicas. No tenemos más que observar mínimamente para darnos cuenta de que la mayoría de los electrodomésticos de la cocina, cuando han finalizado su proceso, envían una señal acústica al usuario, al igual que ocurre con los distintos timbres de la casa (portero electrónico, timbre de la puerta y teléfono -fijo-, por poner algún ejemplo). Y, sin embargo, son muy pocas las señales visuales que percibimos a nuestro alrededor (algún modelo de teléfono fijo o algún modelo de lavadora) pero son escasos los ejemplos que se pueden mencionar en este apartado. Por ello, el presente proyecto intenta facilitar la vida al colectivo que presenta dificultades auditivas, captando las distintas señales sonoras que se producen en el interior de una vivienda y convirtiéndolas en señales visuales (mensaje y led de alerta) y vibratorias. Para conseguirlo se utilizarán sensores que sea capaces de percibir el evento que da lugar a la señal acústica y, mediante un protocolo de mensajería, MQTT, enviarán un mensaje de alerta que será recibido en un reloj de pulsera, donde se mostrará el elemento que ha producido el sonido, se iluminará un led y vibrará mientras no se “atienda” la alerta.

Full text

SIAVIDOPEDIA Por Álvaro Antonio Zamorano Ojuel Grado en Ingeniería de Computadores Facultad de Informática Dirigido por Juan Carlos Fabero Jiménez Madrid, 2021–2022 SIAVIDOPEDIA SIstema de Ayuda VIsual DOméstica para PErsonas con DIficultades Auditivas Visual In-Home System for Helping Hearing-Impaired People Memoria que se presenta para el Trabajo de Fin de Grado Álvaro Antonio Zamorano Ojuel Dirigido por Juan Carlos Fabero Jiménez Departamento de Arquitectura de Computadores y Automática Facultad de Informática Universidad Complutense de Madrid Madrid, 2022 Autorización de difusión El abajo firmante, matriculado en el Grado de Ingeniería de Computadores de la Facultad de Informática, autoriza a la Universidad Complutense de Madrid (UCM) a difundir y utilizar con fines académicos, no comerciales y mencionando expresamente a su autor el presente Trabajo Fin de Grado: “SIAVIDOPEDIA”, realizado durante el curso académico 2021-2022 bajo la dirección de Juan Carlos Fabero Jiménez del Departamento de Arquitectura de Computadores y Automática, y a la Biblioteca de la UCM a depositarlo en el Archivo Institucional E-Prints Complutense con el objeto de incrementar la difusión, uso e impacto del trabajo en Internet y garantizar su preservación y acceso a largo plazo. Álvaro Antonio Zamorano Ojuel Madrid, a 16 de septiembre de 2022 iii A mi mujer, Prado, por aguantarme todos los días, por confiar en mí y en mis posibilidades para acabar estos estudios, y darme la oportunidad de cursarlos. A mi primo, Nacho, y a su madre, Mila, porque sin ellos no hubiera nacido la idea que se materializa en este proyecto. A mi suegro, Jesús, que aunque no ha podido verme terminar la carrera, sé que, desde donde esté, se alegra igualmente por mí. Y, por último, se lo dedico también a mis padres, Antonio y Dori, que sé a ciencia cierta que se sienten orgullosos de mis logros. v Agradecimientos Quiero empezar agradeciéndole a mi sobrino Jorge su inestimable ayuda con el diseño y la impresión en 3D de las cajas de los módulos de SIAVIDOPEDIA, transformando, de esta manera, una simple idea en una realidad tangible. Además, quiero agradecer a distintos/-as profesores y profesoras que me han ayudado en estos años a superar con éxito el Grado que ahora termino, bien porque con sus explicaciones he entendido la materia objeto de su asigantura, bien porque desde el trato personal han hecho que confiara más en mí y en la posibilidad de completar estos estudios que han llegado a mi vida a unas edades “intempestivas”... A Joaquín (Hernández), mi “Super-Juaco”, porque me hizo más fácil el estudio de las Matemáticas en el año de entrada a la carrera. A Rafa (del Vado), por el trato que me dió. A Raquel (Hervás), por su confianza y cercanía. A José Manuel (Mendías), por vivir este mundillo de “frikis” con esa pasión tan contagiosa. Y, especialmente, a Juan Carlos (Fabero), por ser para mí más que un profesor, más bien es un amigo que quiero (y espero) tener por muchos años. ... Y a otros/-as tantos/-as, de los/las que he percibido su comprensión y ganas de ayudar y transmitir sus conocimentos, que, al fin y al cabo, es la verdadera vocación del/de la docente. Gracias a todos y a todas. vii Palabras Clave Domótica IoT Hipoacusia Sensores Visualizadores Reloj ESP32 ESP8266 Inalámbrico MQTT xv Keywords Home automation IoT Hearing loss Sensors Visualizers Wristwatch ESP32 ESP8266 Wireless MQTT xvii Parte A xix Capítulo 1 Introducción 1.1. Motivación y objetivo El presente trabajo surge como reto personal durante una conversación con un familiar, cuando éste me dice que su madre no oye bien, y que le sería de gran ayuda un sistema “domótico” que recogiera los sonidos cotidianos (alertas sonoras) de una casa (principalmente, los timbres -de la puerta, el teléfono o el portero electrónico-), y los convirtiera en otro tipo de alertas, por ejemplo, “alertas vibratorias y/o visuales”. Reflexionando bastante sobre este asunto, concebí lo que hoy presento: el “sistema de ayuda visual doméstica para personas con dificultades auditivas”. El proyecto ha ido pasando por distintas fases y bocetos, algunos de los cuales los deseché por el propio diseño, y otros por el precio, pues, aunque está motivado por un caso particular, la idea que le da sentido y el objetivo del proyecto es que resulte barato y que se puedan aprovechar de él el máximo número de personas, e implementarlo en sus hogares sin mucha dificultad (ni económica ni técnica). En el paso por estas fases, además, se ha ido ampliando, y lo que era, en un principio, pensado solo para los sonidos “exteriores”, se ha extendido para abarcar cualquier sonido que se produzca en el interior de la vivienda, como una lavadora, un microondas, una alarma de cocina, o, incluso, el despertador. En definitiva, cualquier aparato que reproduzca algún sonido de alerta es susceptible de ser incluido en el sistema. Se puede vislumbrar ya, por tanto, que el sistema puede (y debe) ser modular, de tal manera que se defina un sistema básico, al que se le puedan ir añadiendo distintos módulos en función de las necesidades específicas de cada usuario/-a. 1 Grado en Ingeniería de Computadores Facultad de Informática 1.2. Estado del arte ...o por qué las cosas son como son... El presente proyecto puede llevarse a cabo a través de 2 posibilidades de diseño: 1) Cableado 2) Inalámbrico Se comentará la segunda alternativa (diseño inalámbrico), por ser la más compleja de implementar y la más interesante, desde el punto de vista de la Ingeniería de Computadores, ya que es la que supone más retos y desafíos -en cuanto a comunicaciones, consumos, fiabilidad, sincronización, etc... se refiere-, y la que involucra más componentes y tecnologías. Precisamente, empezaré hablando de estas últimas, las diferentes tecnologías inalámbricas que hay en la actualidad, y después de compararlas todas, acabaré decidiéndome por una de ellas para su utilización en el proyecto. El orden en el que aparecen enumeradas es arbitrario, y no presupone preferencia alguna por consumo, rango de alcance o factor de forma. Entrando ya en materia, existe una clase de campo electromagnético variable que transporta energía a través del espacio llamado “Radiación electromagnética”, y que está compuesto de ondas electromagnéticas, cuya clasificación desde la perspectiva de la energía (generada o consumida) es lo que se denomina espectro electromagnético. Se llama radiofrecuencia (abreviado RF) a la fracción menos “energética” del espectro electromagnético, comprendida entre los 3Hz y los 300GHz, y cuyo uso está regulado por la ITU (International Telecomunication Union), El espectro electromagnético se divide en distintas bandas de frecuencia, y de éstas, la que nos ocupa es la designada como UHF (Ultra High Frecuency), cuyo rango de frecuencias es: - según el estandard IEEE 521-2002: 300MHz - 1GHz - según la ITU: 300MHz - 3GHz no obstante, e independientemente de las diferencias de criterio que pueda haber entre las distintas organizaciones, es en esta banda donde se sitúa la tecnología RF-433MHz. RF-433MHz. Los módulos escogidos eran: como emisor, el FS1000A; y como receptor, el XY-MK-5V, elegidos por ser muy populares -debido a su bajo coste-, y sobre los que hay publicada abundante documentación y literatura. Figura 1.1: Módulo FS1000A (Imagen tomada de ‘askix.com’) Emisor (FS1000A): - Rango de frecuencia: 433.92 MHz - Voltaje de entrada: 3-12 V - Consumo: 20-28mA Álvaro Antonio Zamorano Ojuel 2 UCM Figura 1.2: Módulo XY-MK-5V (Imagen tomada de ‘askix.com’) Receptor (XY-MK-5V): - Rango de frecuencia: 433.92 MHz - Voltaje de entrada: 5 V - Consumo: 4mA - Modulación: ASK (del inglés “Amplitude Shift Keying”, por Desplazamiento en Amplitud) Operan (como ya se ha comentado) en la frecuencia de 433 MHz, frecuencia que pertenece a una banda -intervalo de frecuenciaslibre, por lo que su uso es gratuito; como contrapartida, hay que asumir que su uso también es compartido por otros muchos dispositivos (precisamente, por esa gratuidad), que operan en rangos similares, pudiéndose crear interferencias. Por todo ello, funciona bien (y, mediante la utilización de software apropiado, con mucha estabilidad y fiabilidad) cuando el emisor y receptor están bastante cerca uno del otro, pero si se separan mucho se pierde la conexión y, por tanto, la comunicación. El rango de alcance de esta tecnología depende de varios factores: primero, del voltaje que se le suministre al módulo emisor, siendo más alto el alcance cuanto mayor es el voltaje aplicado; segundo, del ruido existente en el entorno, pues es sensible a las interferencias y que, como ya hemos visto, es “posible” que se produzcan en una vivienda ‘tipo’; y, por último, del uso o no de una antena amplificadora externa (una antena típica es la denominada “cuarto de onda”, llamada así por tener una longitud aproximada de 1/4 de la longitud de onda a 433MHz, unos 17 cm; otra antena bastante habitual es la helicoidal. No obstante, solo con la antena integrada en el módulo, el alcance apenas llega a los 2 metros. Figura 1.3: Módulos descritos con antena externa de cuarto de onda (Imagen tomada de ‘daniel-ziegler.com’) Figura 1.4: Módulo FS1000A con antena externa helicoidal (Imagen tomada de ‘dami.azw.pt’) 3 Capítulo 2 Arquitectura del sistema En el contexto del que estamos hablando, queda definido un ecosistema como el conjunto de nodos (o módulos) que son necesarios para lograr el objetivo, que no es otro sino que se “perciba” qué está sonando y se transmita esa información, a través de la Estación Central, a los “visualizadores”. Se pueden distinguir, pues, 3 ámbitos bien diferenciados: Parte “sensorial” Estación Central (o Módulo Central) Visualizadores La parte “sensorial” está formada por una serie de módulos unidos de alguna forma a los distintos elementos que son pieza fundamental de este proyecto: los objetos “sonoros”, y que se encarga de la percepción del sonido y la transmisión al Módulo Central. La Estación (o Módulo) Central actúa de intermediario, es quien se encarga de recibir la información transmitida por los módulos sensoriales, y la transmite a su vez a la parte encargada de la visualización de la información. Las 2 partes anteriores son comunes a los diseños cableado e inalámbrico; obviamente, tiene que haber una diferenciación, pero ésta es solo el medio de transmisión. Sin embargo, es en la parte visualizadora de la información donde se produce, además, una elección de componentes diferentes; mientras que en el diseño cableado se opta por un panel de matriz de leds, y éste se encuentra fijado a alguna pared de la estancia elegida (normalmente, será aquella en la que se invierta la mayor parte del tiempo), en el diseño inalámbrico se ha optado por un elemento móvil, como es un reloj de pulsera, en el que aparte de visualizar la hora, se recibe la información transmitida por la Estación Central y se visualiza a modo de “alertas” visuales y vibratorias, por este motivo se le ha decidido dar el nombre de “alert watch” (reloj de alertas). 11 Grado en Ingeniería de Computadores Facultad de Informática 2.1. “Ecosistema” cableado En la siguiente imagen se pueden apreciar los 3 ámbitos correspondientes a las zonas sensorial, módulo central y visualizador mediante el panel de matriz de leds. También se puede observar una pequeña caja unida a cada uno de los objetos sonoros. Dicha cajita es el dispositivo que alberga en su interior las unidades de ESP8266 más los sensores correspondientes a cada módulo (de paso de electricidad, de sonido, de vibración, etc...) así como un cable que parte de ella y que la comunica con la estación central, pasándole los mensajes oportunos. Por su parte, el dispositivo perteneciente al ámbito de visualización contiene la placa ESP8266 que recibe la orden del módulo central y la reenvía al controlador del panel, para que muestre en él la información transmitida. Figura 2.1: Diseño cableado Álvaro Antonio Zamorano Ojuel 12 UCM 2.2. “Ecosistema” inalámbrico En la imagen que aparece a continuación, se divisan los mismos elementos en los ámbitos sensorial y módulo central que en el diseño cableado; pero además, en esta implementación, aparece el único elemento móvil (alert watch) del sistema, así como que la comunicación entre los distintos dispositivos se realiza de forma inalámbrica (a través de ondas de radio), y no mediante un cable. El interior de los distintos módulos del ámbito sensorial está compuesto por los mismos elementos ya comentados en el apartado anterior. La única diferencia es que no parte ningún cable de ellos hacia la estación central. Figura 2.2: Diseño inalámbrico 13 Capítulo 3 Contexto tecnológico 3.1. Fundamento teórico y herramienta software El sustento de este proyecto es la existencia y utilización de sensores, dispositivos visualizadores, y sobre todo, de las comunicaciones entre dispositivos electrónicos, ya sean cableadas o inaĺámbricas, mediante la utilización de protocolos que todos “entiendan”. Esto es, en definitiva, la definición de una Red de Comunicación; ésta se puede implementar entre ordenadores, constituyendo así una Red de Ordenadores, o, como en este caso, entre pequeños componentes electrónicos, guiados por microcontroladores, formando una Red en el ámbito doméstico que puede ser un ejemplo perfectamente válido de lo que se entiende como el Internet de las Cosas (IoT, por sus siglas en inglés). Sensores Según la RAE, un sensor es un «dispositivo que detecta una determinada acción externa, temperatura, presión, etc., y la transmite adecuadamente». En nuestro caso, los sensores que se utilizan en el proyecto son: a). Sensor de vibración Aprovecha las cualidades piezoelécticas del material cerámico PZT (Titanato Zirconato de plomo). Piezoelectricidad Propiedad que presentan ciertos materiales (algunos cristales y algunas cerámicas, como el PZT recién mencionado) de polarizarse eléctricamente al aplicarse sobre ellos una tensión, transformando así una señal mecánica (presión) en una señal eléctrica. Efecto piezoeléctrico Cuando se somete al material piezoeléctrico una deformación mecánica, aparece una diferencia de potencial eléctrico entre distintos puntos del material, al desplazarse los electrones hacia uno de los extremos, generándose allí una carga negativa, mientras que en el extremo opuesto se induce una carga positiva. También se le llama al efecto recíproco, cuando se aplica una tensión al material aparece una deformación mecánica (zumbadores piezoeléctricos). 15 Grado en Ingeniería de Computadores Facultad de Informática b). Sensor de sonido (micrófono) Se pueden encontrar con tecnologías diferentes, aunque basadas casi todas en la utilización de un transductor. Transductor Dispositivo que transforma una señal ocasionada por una acción física en otro tipo de señal. Un primer tipo de sensor “electroacústico” es el micrófono dinámico, que consiste en una membrana unida a la bobina de un electroimán y que, al vibrar por las ondas sonoras, se mueve en el interior del campo magnético, generando una diferencia de potencial que es proporcional a la presión sonora. Figura 3.1: Esquema de un micrófono dinámico (Imagen tomada de ‘socialmusik.es’) El otro tipo de micrófonos que nos interesa, y que será el que se utilice en el proyecto es el denominado micrófono de condensador electret. Micrófono de condensador electret Es una variante del micrófono de condensador, en el que una de las láminas (terminales), la que actúa de diafragma y, por tanto, móvil, está previa y permanentemente cargada, no necesitándose, por este motivo, la alimentación de polarización del condensador, no como en el micrófono de condensador, que se necesita polarizar, mediante una batería, ambas placas (la posterior -o fijay el diafragma -o móvil-). Figura 3.2: Esquema de un micrófono de condensador electret (Imagen tomada de ‘hyperphysics.phy-astr.gsu.edu’) La señal (eléctrica) viene dada por un cambio en la capacitancia entre los terminales, Álvaro Antonio Zamorano Ojuel 16 UCM que se produce cuando las ondas sonoras chocan con el diafragma de material electret, provocando su deformación y alterando la energía almacenada. c). Sensor de detección de llamada telefónica La línea telefónica tiene varios “estados”, a saber: En reposo. Es el estado en el que se encuentra cuando no hay llamadas, y cuando ni siquiera se ha descolgado el auricular ni se ha marcado número telefónico alguno. En este estado la tensión de la línea telefónica es de un valor estable entre 45V y 57V de corriente continua, dependiendo de la instalación concreta. Teléfono descolgado. Cuando se descuelga el auricular o se pulsa el botón de “descolgar”, con intención de marcar algún número telefónico e iniciar de este modo una conversación con algún otro abonado, la tensión en continua baja a aproximadamente unos 10V, indicando que el teléfono ya ha recibido toda la energía necesaria para su correcto funcionamiento. Llamada entrante. Estamos en este estado cuando recibimos una llamada entrante, y es este estado en el que suena un timbre “de llamada”. En este estado aparece una corriente alterna (de aproximadamente unos 85V) superponiéndose a la corriente continua; pero es, precisamente, la corriente alterna la que nos interesa detectar. Respuesta a la llamada entrante Una vez que, habiendo sonado previamente, descolgamos el auricular (o, en su caso, pulsamos la tecla correspondiente), estamos respondiendo a la llamada entrante, y en este momento se produce un cambio en la polaridad de la corriente continua con el mismo valor que para el caso de “Teléfono descolgado” (es decir, aproximadamente unos 10V), y desaparece la corriente alterna. Con todo esto, podemos llegar a la conclusión de que en el único momento en el que aparece en escena la corriente alterna es cuando se produce una llamada entrante, que es, precisamente, lo que queremos detectar, por tanto, esta circunstancia podemos aprovecharla para nuestro proyecto mediante el uso de un optoacoplador. Optoacoplador (4.2.4) Un optoacoplador es, básicamente, un interruptor, compuesto de 2 circuitos eléctricamente separados (y ópticamente unidos), de tal manera que está diseñado para recibir a la entrada una señal de corriente alterna, y mediante 1 diodo (led) emite luz cuando la onda senoidal es positiva; luz que recoge una fotocélula que se utiliza para generar una corriente de Base en el segundo circuito (típicamente, un transistor, cuyo Colector está conectado a VCC -a través de una resistencia, y al pin de saliday el Emisor a GND), suficiente para crear una conexión entre tierra (GND) y el pin de salida, haciendo que éste valga 0. 17 Grado en Ingeniería de Computadores Facultad de Informática Existen optoacopladores que en lugar de tener un único diodo (led) utilizan dos, dispuestos en antiparalelo, de tal manera que la fotocélula de su interior recibe luz tanto cuando la onda senoidal es positiva como cuando es negativa y, por tanto, en el segundo circuito se produce corriente de Base en todo momento -siempre que haya una corriente alterna a la entradasalvo cuando la onda vale exactamente 0 (cero); por este motivo se llaman de cruce por cero y pueden servir tanto para detectar cuando la señal de entrada vale ‘0’ como para detectar si hay alguna señal de corriente alterna a la entrada. Figura 3.3: Esquema del optoacoplador 4N35, de un solo led (Imagen tomada de learningaboutelectronics.com) Figura 3.4: Esquema del optoacoplador H11AA1, de doble led (Imagen tomada del datasheet de H11AA1) d). Sensor de detección de llamada de portero electrónico Este sensor, tal como está diseñado, solo sirve para detectar la llamada de un portero electrónico analógico del tipo 4 + 1. Estos porteros electrónicos tienen 4 cables dedicados para la comunicación y 1 más dedicado en exclusiva para el timbre de llamada. Figura 3.5: Esquema de portero electrónico analógico de tipo 4 + 1 Álvaro Antonio Zamorano Ojuel 18 UCM Los 4 cables de comunicación se asocian de la siguiente manera: - común - micrófono - altavoz - cerradura / abrepuerta Pero realmente el que a nosotros nos interesa es el de llamada o timbre, pues es el sonido de la llamada el que queremos detectar. Como la corriente que circula por el sistema de portero electrónico de toda la finca es corriente alterna necesitamos, nuevamente, un optoacoplador para nuestro módulo. e). Sensor de detección de timbre de puerta Al pulsar el timbre de la puerta de la calle se cierra un circuito que tiene una tensión de 220 Vac, el timbre funciona a unos 12Vdc por lo que la mayoría de los timbres (cableados) del mercado incorporan un transformador que reduce la tensión hasta la que necesitan. Nuestro módulo sensor de timbre de puerta emula el funcionamiento mencionado, pues el microcontrolador utilizado puede recibir solo 3.3V (cc), por lo que el módulo alojará en su interior un transformador que reduzca la tensión de 220 V a los 3.3 V necesarios, y utilizaremos la salida del transformador para conectarla al pin de señal de pulsación del timbre, señal que se enviará a la estación central para su registro. Dispositivos visualizadores Son dispositivos electrónicos que sirven para mostrar información al usuario, ya sea en forma de texto o imágenes. Se van a utilizar los siguientes “visualizadores”: a). Una pantalla matricial de leds Consiste en un panel con una serie de leds organizados en filas y columnas. Un led es un diodo emisor de luz, que se compone de un ánodo (conectado a Vcc) y un cátodo (conectado a tierra) para su funcionamiento; si se polariza en inversa no conduce la electricidad, pues, como todo diodo, su propio diseño hace que no se dañe si esto ocurriera. Figura 3.6: Símbolo eléctrico de un led (Imagen tomada de ‘idielectronica.blogspot.com’) Cada led (píxel) se enciende o apaga individualmente, mostrando el panel en su conjunto algún texto o gráfico. 19 Grado en Ingeniería de Computadores Facultad de Informática Según lo anterior, es un protocolo que pertenece a la capa de Aplicación del modelo TCP/IP, y que podemos visualizarlo en la siguiente figura: Figura 3.10: Ubicación de distintos protocolos de redes en las capas del modelo OSI (Imagen tomada de ‘digikey.es’) La parte izquierda de la imagen corresponde al modelo OSI4de ISO5, mientras que la parte derecha correspondería al modelo TCP/IP. Como características principales podemos destacar: Bajo consumo energético. Rápido y ligero. Sencillo de implementar. De gran adaptabilidad. Requiere pocos recursos. Una de las diferencias principales existentes entre los tipos de mensajería “cola de mensajes” y “publicación-suscripción” (también llamado pub/sub, o PubSub) es que en el primero, la conexión se establece punto a punto, es decir, de 1 a 1, el mensaje que emite el transmisor lo recibe un solo receptor, mientras que en el segundo, la distribución de mensajes es de 1 a muchos. 4Open Systems Interconnection, en castellano, Interconexión de Sistemas Abiertos 5International Organization for Standardization, en castellano, Organización Internacional de Normalización Álvaro Antonio Zamorano Ojuel 26 UCM En el modelo Cliente-Servidor existe una alta dependencia del acoplamiento entre los dispositivos del sistema. Esta característica los hace más compatibles y seguros, pero menos escalables, ya que cuando el sistema crece, lo hace también las conexiones entre los dispositivos y se hacen difíciles de manejar; mientras que en los sistemas bajo el modelo PubSub existe una desvinculación entre los “publicadores” de información y los “suscriptores” de dicha información, por lo que son más escalables, además de que este hecho permite que cada elemento (ya sea publicador o suscriptor) se elimine o agregue al sistema de forma independiente. Sin embargo, es más difícil certificar la seguridad del sistema. Los sistemas Cliente-Servidor funcionan mejor cuando la infraestructura es conocida por todos los elementos intervinientes, mientras que cuando ésta se desconoce, bien porque la red cambia (por ejemplo, cuando se agrega un nuevo dispositivo) o porque la conexión es intermitente (no continua), los sistemas que mejor funcionan son los PubSub. Modo de funcionamiento En el patrón Publicación-Suscripción existen 3 roles que pueden adoptar los dispositivos del sistema, a saber: el servidor (Broker), y los clientes (Publicadores y Suscriptores). Los publicadores publican mensajes en distintos temas (o “topics”), organizados según una jerarquía, de tal manera que un suscriptor se puede suscribir a los temas que sean de su interés y recibirá todos los mensajes que se publiquen en dichos temas, y no recibirá aquellos pertenecientes a otros temas a los que no se ha suscrito. La función del broker es la de actuar de intermediario, distribuye entre los suscriptores de los distintos temas los mensajes publicados en ellos. Por este motivo, debe ser un “suscriptor universal”, es decir, debe estar él mismo suscrito a todos los temas existentes en el sistema. Los publicadores pueden ser, a su vez, suscriptores de los mismos temas donde publican, o de otros, según sus propios intereses. Con respecto al envío de mensajes (tanto de publicación como de suscripción), MQTT dispone de 3 niveles de QoS (Quality of Service) según sea el grado requerido de fiabilidad para estos envíos. Así: - El nivel 0 de QoS (también llamado unacknowledged) significa que el mensaje se envía una sola vez (at most one). Puede que algún mensaje, en caso de fallo, no se entregue. - El nivel 1 de QoS (también llamado acknowledged) significa que el mensaje se envía como mínimo una vez (at least one), hasta que se recibe, por lo que el receptor puede llegar a recibir mensajes duplicados. - El nivel 2 de QoS (también llamado assured) significa que el mensaje se envía hasta que el receptor lo recibe por primera vez, y el resto de posibles duplicados se desecha, de tal manera que queda garantizado que el receptor lo recibe exactamente una vez (exactly one). 27 Grado en Ingeniería de Computadores Facultad de Informática Para conseguir su objetivo, MQTT incluye: Manejo de errores (QoS). Seguridad. Autenticación, autorización y opciones de seguridad en las comunicaciones, como privacidad y no-repudio. Comunicación basada en texto. Utiliza codificación UTF-8 para la transmisión de la información (los mensajes enviados son cadenas de caracteres). Todo ello hace que MQTT sea ideal para entornos donde los dispositivos sean de escasa potencia, o sean alimentados por baterías, o se requiera un escaso ancho de banda para las comunicaciones. Se ha comentado anteriormente que los topics, o temas, están organizados jerárquicamente. Esto significa que hay niveles y subniveles, formando estos parte del mensaje, de tal forma que un topic no es más que una sucesión de niveles y subniveles separados entre sí por el carácter ‘/’. Los topics tienen una longitud máxima de 65536 caraceteres. En nuestro proyecto, todos los dispositivos (sensores, visualizadores y Estación Central) serán publicadores y suscriptores a la vez. No obstante, los sensores, que toman el papel principal de publicadores, solo van a ser suscriptores de los topics en los que vayan a publicar ellos mismos (debido a que van a poder recibir mensajes de que su “alerta” ha sido atendida), mientras que los visualizadores (cuyo papel fundamental es el de ser suscriptores) y la Estación Central (broker) serán suscriptores de todos los temas del sistema, pero también van a poder publicar en todos ellos (precisamente, los mensajes de que la alerta recibida haya sido atendida). Los topics van a reflejar cada uno de los sensores del sistema, pues son los que, al detectar el “sonido”, publican los mensajes que serán enviados a los visualizadores del sistema. Dado que este es modular, podemos distribuirlos por estancias, y dentro de una misma estancia, por aparato, quedando, por ejemplo:[5.3] casa/timbre_puerta casa/cocina/frigorifico casa/dormitorio1/despertador1 Es fácil intuir que cada vez que sea necesario agregar un nuevo dispositivo (sensor) bastará con seguir el formato establecido y añadirlo sin más al sistema, ya que, con los datos de la red incorporados en el código (al igual que el topic en el que publicará y estrá suscrito), el dispositivo se conectará automáticamente a la red SIAVIDOPEDIA, y no hará falta hacer nada más, pues los visualizadores y la Estación Central utilizan el carácter ‘#’ como comodín, para sustituir cualquier nivel, subnivel, o topic entero, pudiendo convertirse en “suscriptores universales” en los que no sea necesario incluir específicamente ningún topic, porque están suscritos a todos (los ya existentes y los que estén por venir). Álvaro Antonio Zamorano Ojuel 28 UCM 3.3. Hardware principal: SoC, módulos y placas de desarrollo 3.3.1. SoC Un SoC (System on Chip) es un encapsulado que alberga en su interior una CPU, controlador de memoria, controladores de periféricos (entrada y salida), entre otros. En nuestro caso, los SoC que vamos a utilizar, incluyen, además, el hardware y software necesario para comunicaciones inalámbricas por radio (Wi-Fi). Los que se van a utilizar en este proyecto son del fabricante ESPRESSIF, y son el ESP8266 y el ESP32, aunque existen más en el mercado, como el ESP8285 (que no es más que un ESP8266, al que se le ha añadido 1 ó 2 MB, según versiones, de memoria RAM, ya que el ESP8266 tiene tan solo 50 KB), y otros. En la realización de la presente memoria se utilizan indistintamente los términos Microcontrolador (MCU) y SoC. ESP8266 «El ESP8266EX de Espressif ofrece una solución Wi-Fi SoC altamente integrada para satisfacer las demandas continuas de los usuarios de un uso eficiente de la energía, un diseño compacto y un rendimiento fiable en la industria del Internet de las cosas.»[2] Figura 3.11: SoC ESP8266 (Imagen tomada de ‘programarfacil.com’) Este microcontrolador presenta las siguientes características: Procesador (CPU) ⇒Tensilica L106 32-bit ⇒Arquitectura RISC ⇒Frecuencia de reloj máxima: 160 MHz ⇒Como característica estrella consigue un muy bajo consumo de energía 29 Grado en Ingeniería de Computadores Facultad de Informática Memoria. El ESP8266 dispone de: ⇒Controlador de memoria ⇒Memoria SRAM. El espacio máximo programable accesible es de alrededor de 50 KB ⇒Memoria ROM. No programable ⇒Los programas de usuario se almacenan en una unidad flash externa con conexión SPI Unidad Flash ⇒Soporta una máxima capacidad teórica de 16 MB, y la capacidad mínima depende de si está habilitado o no la funcionalidad OTA (Over the Air). Radio y Wi-Fi ⇒Receptor y transmisor a 2.4 GHz ⇒Wi-Fi 802.11 b/g/n ⇒Dispone de distintos modos de configuración Wi-Fi: ∘Estación (STA, station) ∘Punto de acceso (AP, access point) ∘Promiscuo. Utilizado para “escuchar” la red Administración de energía ⇒Diseñado para tener un muy bajo consumo de energía ⇒Modos de operación y consumos: ∘Active (Active mode). Se está en este modo cuando existe una comunicación Wi-Fi. Los consumos son: - Transmisión: 120 - 170 mA - Recepción: 50 - 56 mA ∘Modem-sleep (Modem-sleep mode). El modem Wi-Fi está apagado, pero se mantiene la conexión, aun cuando no haya transmisión de datos. La CPU no se apaga ni se suspende. Consumo: 15 mA ∘Light-sleep (Light-sleep mode). El Wi-Fi se encuentra apagado y la CPU suspendida. Consumo: 0.9 mA ∘Deep-sleep (Deep-sleep mode). Todo se ecuentra apagado (Wi-Fi y CPU), excepto el RTC (Real Time Clock, Reloj de Tiempo Real). Consumo: 20 𝜇A ∘Shut down. Consumo: 0.5 𝜇A Interfaces de periféricos Álvaro Antonio Zamorano Ojuel 30 UCM ⇒GPIO (Perféricos de entrada/salida de propósito general). Existen 17, pero podemos utilizar solo unos pocos, ya que otros comparten funciones con I2C, I2S, UART,... ⇒SDIO (Periférico de entrada/salida digital segura) ⇒SPI (Periférifo de interfaz serie). Hay 2, uno de los cuales es utilizado para conectarse con la unidad flash externa, por lo que, en realidad, solo se puede utilizar 1 para las conexiones SPI de las aplicaciones de usuario. ⇒I2C ⇒I2S ⇒UART ⇒PWM ⇒IR (Control remoto de periféricos por Infra-Rojos) ⇒ADC (Conversor Analógico-Digital) Con una precisión de 10 bits, por tanto, con un rango de valores de 0 a 1023. Otras características • Integra encriptación por software • puede recibir de 0 a 3.3V (pin configurado como INPUT) • puede transmitir una corriente máxima (I𝑚𝑎𝑥) de 12 mA Características eléctricas ⇒Voltaje de funcionamiento. Rango de 2.5V a 3.6V, pero típicamente 3.3V ⇒Cada pin de GPIO: ∘puede proporcionar de 0 a 3.3V (pin configurado como OUTPUT) ∘puede recibir de 0 a 3.3V (pin configurado como INPUT) ∘puede transmitir una corriente máxima (I𝑚𝑎𝑥) de 12 mA 31 Grado en Ingeniería de Computadores Facultad de Informática ESP32 «ESP32 es un único chip combinado de Wi-Fi y Bluetooth de 2,4 GHz diseñado con la tecnología de 40 nm de ultra bajo consumo de TSMC6. Está diseñado para lograr el mejor rendimiento de potencia y RF, mostrando robustez, versatilidad y confiabilidad en una amplia variedad de aplicaciones y escenarios de potencia.»[3] Figura 3.12: SoC ESP32 (Imagen tomada de ‘sssltd.com’) Es considerado el “hermano mayor” del ESP8266, y presenta las características que se detallan a continuación: Procesador y Memoria ⇒Xtensa single/dual core 32-bit LX6 ⇒Frecuencia de reloj máxima: 240 MHz ⇒Memorias: ∘Dispone de 448 KB de ROM ∘520 KB de SRAM (16 KB en el RTC, accesibles desde el modo de “sueño profundo”) ∘Soporta múltiples unidades flash Radio, Wi-Fi y Bluetooth Consta de: ⇒Receptor y transmisor a 2.4 GHz ⇒Wi-Fi 802.11 b/g/n ⇒Velocidad de transmisión: hasta 150 Mbps ⇒Chip integrado que cumple con las especificaciones de Bluetooth v4.2 y BLE (Bluetooth Low Energy) 6Taiwan Semiconductor Manufacturing Company, Limited. Es la empresa de fundición de semiconductores más grande del mundo Álvaro Antonio Zamorano Ojuel 32 UCM ⇒Modos Wi-Fi: ∘Estación (STA, station) ∘Punto de acceso (AP, access point) ∘Promiscuo. Utilizado para “escuchar” la red Gestión de la energía y el consumo ⇒Diseñado para tener un ultra-bajo consumo de energía ⇒Modos de operación y consumos: ∘Active (Active mode). Se está en este modo cuando existe una comunicación Wi-Fi y/o Bluetooth. Los consumos desglosados son: Conexión Wi-Fi - Transmisión: 180 - 240 mA - Recepción: 95 - 100 mA Bluetooth - Transmisión: 130 mA - Recepción: 95 - 100 mA ∘Modem-sleep (Modem-sleep mode). La CPU está funcionando, pero el Bluetooth / Radio y el Wi-Fi están deshabilitados. Consumo: 20 - 68 mA ∘Light-sleep (Light-sleep mode). La CPU está en pausa, pero el coprocesador de ultra-bajo consumo (ULP) sí está funcionando, y también la memoria y periféricos conectados al RTC. Consumo: 0.8 mA ∘Deep-sleep (Deep-sleep mode). Solo funciona la memoria y los periféricos conectados al RTC, así como el coprocesador ULP. Los datos de conexión WiFi / Bluetooth se quedan almacenados en la memoria RTC. Consumo: 10 - 150 𝜇A ∘Hibernation (Hibernation mode). Solo están activos el reloj “lento” del RTC y ciertos GPIO. Consumo: 5 𝜇A ∘Power-off. Consumo: 1 𝜇A Interfaces de periféricos y sensores ⇒GPIO. Existen 34 GPIO programables. Los hay de distintos tipos: ∘Solo digitales ∘Habilitados como analógicos ∘Habilitados como sensores táctiles capacitivos Estos 2 últimos tipos puedes ser configurados también como pines digitales ⇒SDIO ⇒SPI (4) 33 Grado en Ingeniería de Computadores Facultad de Informática ⇒I2C (2) ⇒I2S (2) ⇒UART (3) ⇒PWM ⇒IR Remote Control ⇒ADC (18 canales de 12 bits de precisión) ⇒DAC (2 de 8-bit) ⇒Sensor táctil capacitivo (10) ⇒Sensor Hall (o de Efecto Hall) ⇒Interfaz Ethernet ⇒Otras características reseñables: ∘Generador de números aleatorios ∘Encriptación de las unidades flash ∘Encriptación por hardware • Características eléctricas ⇒Voltaje de funcionamiento. Rango de 1.8V a 3.6V, pero típicamente 3.3V ∘Corriente máxima total acumulada de salida: 1200 mA ⇒Cada pin de GPIO: Si está configurado como OUTPUT: ⋄puede proporcionar de 0 a 3.3V ⋄puede proporcionar una corriente máxima (I𝑚𝑎𝑥OUTPUT) de 40 mA Si está configurado como INPUT: ⋄puede recibir de 0 a 3.3V ⋄puede recibir una corriente máxima (I𝑚𝑎𝑥INPUT) de 28 mA 3.3.2. Módulos Como el SoC solo es poco funcional, se le han añadido más elementos que aportan funcionalidad, el más llamativo es la antena, ya que el SoC está preparado para soportarla, pero no la tiene, por lo que disponemos en el mercado de estos ‘empaquetados’ llamados módulos. Los hay de distintos tamaños y formas, y son específicos para cada SoC, y también difieren en la cantidad de memoria Flash externa que aportan al conjunto. Álvaro Antonio Zamorano Ojuel 34 UCM Para el ESP8266, los módulos que han aparecido desde su creación son éstos: Figura 3.13: Módulos (y familias) del ESP8266 (Imagen tomada de ‘smelpro.com’) Y de todos ellos, el que monta la placa que utilizaremos es el ESP-12F. ESP-12F Módulo de pequeñas dimensiones (24mm x 16mm x 3.1mm) que facilita la interacción con el microcontrolador ESP8266. Figura 3.14: Módulo ESP-12F, del SoC ESP8266 (Imagen tomada de ‘smelpro.com’) Su factor de forma y, sobre todo, la disposición de sus pines y la adopción de la tecnología SMD (Surface-Mounted Device) hace que sea muy fácil su montaje y posterior programación, ya sea soldado sobre una placa de desarrollo o “quemada” directamente en un “burner” (quemador, dispositivo utilizado para programar directamente el chip, sin hacer uso de una placa de desarrollo). Monta una unidad flash externa de 4MB con conexión SPI, y, por ello no se deben utilizar los GPIO correspondientes a la comunicación con dicha unidad (del GPIO6 al GPIO11). Por tanto, solo tiene disponibles 11 GPIO para su uso en las aplicaciones de usuario. 35 Grado en Ingeniería de Computadores Facultad de Informática Pinout Figura 3.22: Pinout de la placa Mini32 con módulo ESP-WROOM-32 del ESP32 (Imagen tomada de ‘community.home-assistant.io’) En la imagen se aprecia que el número de pines GPIO es elevado, de hecho, es el más elevado de todas las placas de desarrollo de las que hemos hablado, 31 pines GPIO para ser exactos; sin embargo, en la Mini32 sí están expuestos los GPIO del 6 al 11 que, como ya sabemos, no se pueden utilizar pues interfieren con la conexión SPI usada por el microcontrolador para comunicarse con la unidad flash externa, que en este caso, también es de 4MB, por lo tanto, útiles para su uso en nuestras aplicaciones de IoT son 25, al igual que en la NodeMCU-ESP32. El resto de características son iguales a las ya comentadas tanto para el SoC ESP32 como para el módulo ESP-WROOM-32. 3.4. Otros componentes hardware Módulo sensor del temporizador Figura 3.23: Sensor piezoeléctrico de cerámica Sensor de Vibración - Voltaje de operación: 3.3V - 5.0V - Corriente de trabajo (Consumo): <1mA - Temperatura de funcionamiento: -10ºC - +70ºC - Tipo de salida: Señal de salida analógica - Definición de pines: S:Señal, +:VCC, -:GND - Dimensiones: 30 x 23 mm Álvaro Antonio Zamorano Ojuel 42 UCM Figura 3.24: Micrófonos con potenciómetro: de izquierda a derecha y de arriba a abajo, KY-037 , Sensor azul y MAX4466 (frontal y reverso) Micrófonos (con potenciómetro) - Salida digital (con un valor umbral ajustable mediante el potenciómetro) - Salida analógica (solo el KY-037) - Voltaje de funcionamiento: Según modelo, KY-037: 5V Sensor azul: 3.3V - 5V MAX4466: 2.4V - 5.5V - Comparador: chip LM393 (menos el MAX4466)) Módulo sensor del frigorífico Figura 3.25: Sensor de luz KY-018 con fotoresistor Sensor de Luz - Voltaje de operación: 3.3V - 5.0V - Temperatura de funcionamiento: -40ºC - +85ºC - Tipo de salida: Señal de salida analógica - Definición de pines: S:Señal, +:VCC, -:GND - Dimensiones: 18 x 15 x 5 mm Figura 3.26: Alojamiento para batería 18650 Portabatería 18650 Figura 3.27: Batería 18650 Batería 18650 - Diámetro: 18 mm - Longitud: 65 mm - Voltaje de salida: 3.7V - Capacidad variable: La batería utilizada en el sistema es de 2500 mAh 43 Grado en Ingeniería de Computadores Facultad de Informática Figura 3.28: Módulo amplificador de voltaje, de 3.3V a 5V Booster-Amplificador de Voltaje (de 3.3V a 5V) - Voltaje de entrada: 0.8V a 5V - Voltaje de salida: 5V - Corriente máxima de salida: 500mA - Temperatura de funcionamiento: -25ºC - +85ºC - Dimensiones: 11 x 10.5 x 7.5 mm Figura 3.29: Led RGB 5mm y 4 pines Led RGB de 5mm de cátodo común - Voltaje de entrada del pin R: 1.8V - 2V - Voltaje de entrada del pin G: 3.2V - 3.4V - Voltaje de entrada del pin B: 3.2V - 3.4V - El pin más largo es el cátodo, que hay que conectar a GND Módulo sensor del timbre Figura 3.30: Transformador de 220Vac a 3.3Vdc Transformador de corriente alterna (220V) a corriente continua (3.3V) - Voltaje de entrada: 85Vac - 265Vac - Voltaje de salida: 3.3Vdc - Corriente de entrada: 10mA - 15mA - Corriente de salida: 0 - 650mA - Temperatura de funcionamiento: -40ºC - +85ºC - Dimensiones: 30 x 20 x 18 mm Álvaro Antonio Zamorano Ojuel 44 UCM Módulo sensor del teléfono fijo Figura 3.31: Conector RJ11 Conector RJ11 - 8P4C - Aunque tenga 4 contactos, solo se utilizan los 2 centrales Visualizador: Reloj de alertas Figura 3.32: Pantalla OLED - Interfaz I2C Pantalla OLED - 4 pines - Interfaz: I2C - Tamaño de la pantalla: 1.3 pulgadas - Resolución de la pantalla: 128 x 64 píxeles - Área de visualización: 29.42 x 17.4 mm - Voltaje de funcionamiento: 3.3V - 5V - Controlador: SH1106 (equivalente al SSD1306) - Temperatura de funcionamiento: -40ºC - +70ºC - Dimensiones: 35.4 x 33.5 x 4.3 mm Figura 3.33: Módulo cargador de baterías, interfaz USB tipo C - Mod. TC4056 Cargador de baterías USB tipo C (3.7V) - Voltaje de entrada: 5V - Voltaje de protección de descarga: 2.5V - Voltaje de interrupción de carga: 4.2V - Corriente de carga: 1000mA - Protección de sobrecarga de corriente de las baterías: 3A - Dimensiones: 28 x 17 mm 45 Grado en Ingeniería de Computadores Facultad de Informática Figura 3.34: Motor de vibración Motor de vibración - Voltaje de funcionamiento: 3V - 5.3V - Corriente de funcionamiento: hasta 60 mA - Temperatura de funcionamiento: -40ºC - +85ºC - Dimensiones: 25 x 23.8 x 5.9 mm Visualizador: Panel Led Figura 3.35: Panel LED SMD2121 Panel LED - Interfaz: HUB08 - Resolución de la pantalla: 64 x 16 píxeles - Distancia entre píxeles (pixel pitch): 4.75mm - Color leds: rojo - Brillo: 400 cd/m2 - Dimensiones: 304 x 76 x 14 mm - Grado de protección: IP65, esto significa Protección total contra el polvo Protegido contra chorros de agua de baja potencia Otros Figura 3.36: Transformador de 220Vac a 5Vdc Transformador de Corriente alterna (220V) a Corriente continua (5V) - Voltaje de entrada: 55Vac - 277Vac - Voltaje de salida: 5Vdc - Corriente de entrada: 14mA - Corriente de salida: 0 - 600mA - Temperatura de funcionamiento: -25ºC - +85ºC - Dimensiones: 23 x 18 x 13 mm Álvaro Antonio Zamorano Ojuel 46 UCM Figura 3.37: Interruptores “sliders” Interruptores “sliders” de 2 posiciones - ON / OFF Figura 3.38: Condensador de poliéster Condensador de poliéster - Voltaje de entrada: 250V - Capacitancia: 1𝜇F - Dieléctrico: láminas delgadas de poliéster - Raster (distancia entre conectores) del condensador utilizado: 22.5 mm Figura 3.39: Baquelita de 1 solo lado Baquelita de PCB de 1 solo lado Figura 3.40: Ejemplo de caja de los distintos módulos de sensores (y Estación Central v1) Cajas de módulos - Hechas de filamento PLA (ácido poliláctico) con una impresora 3D 47 Capítulo 4 Desarrollo del sistema En un principio, estaba pensado desarrollar el ecosistema inalámbrico (no al completo) y algún ejemplo del cableado, pero, por problemas logísticos, solo se han podido implementar algunos módulos del primero, por lo que todo lo comentado a continuación se refiere, exclusivamente, al ecosistema inalámbrico. La opción de diseñar y desarrollar la Estación Central como primer elemento del sistema vino dada por el hecho de que es en este elemento en el que va incorporado el broker MQTT, y, por tanto, debe ser, lógicamente, el primero en realizarse, para ver si, una vez hechos los demás, funcionan correctamente. 4.1. La “Estación Central” La primera dificultad que surgió fue encontrar un broker MQTT que fuera compatible con el microcontrolador ESP32 (microcontrolador que se pensó, inicialmente, que estuviera “al mando” del sistema). Los diversos broker analizados1están adaptados para Raspberries, ESP8266 o están “en la nube”, por lo que intenté (sin éxito) adaptar las librerías que funcionan perfectamente en el ESP8266 al ESP32, pero entran en juego decenas de ficheros que había que “tocar”, algunos de ellos metiéndose profundamente en el hardware de los microcontroladores, siendo un trabajo tan arduo que podría haber sido objeto de otro TFG y se escapa del objetivo del presente proyecto, por lo que tuve que cambiar la idea de incluir ESP32 en la “Estación Central” a alojar un ESP8266 y cargarle un broker MQTT, concretamente el broker uMQTT. Con posterioridad a la realización del módulo de la “Estación Central” ha aparecido en la comunidad Arduino un broker preparado para ser implementado sobre el ESP32, el sMQTTBroker, pero ya era tarde para incorporarlo en el proyecto y se deja como mejora o actualización para el futuro. La “Estación Central” actual (v1) tiene un diseño muy básico: solo la placa NodeMCUESP8266, dos leds, uno para saber si hay o no dispositivos conectados a la estación, y el otro para indicar si hay alguna alerta activada, y un botón para “atender” dicha alerta. 1Mosquitto,uMQTTBroker,HiveMQ 49 Grado en Ingeniería de Computadores Facultad de Informática El esquemático de esta unidad es el siguiente: Figura 4.1: Esquemático del circuito de la Estación Central (Realizado con el software: KiCad) Más adelante, se puede actualizar la “Estación Central” a una v2, que tendría los mismos elementos que la versión 1, pero el led de las alertas podría ser RGB, personalizando cada alerta con un color específico. En un futuro, una tercera versión de la “Estación Central” (v3) podría disponer de una pantalla LCD para mostrar los mensajes serie (de depuración, por ejemplo), además de información de interés, como puede ser: Listado de “clientes” del broker (publicadores y/o suscriptores). Alerta vigente no atendida. Listado de alertas atendidas (por orden cronológico, y con fecha y hora). Otra información que se considere oportuna. La “Estación Central” tiene incorporado el propio broker MQTT, y éste, para recibir todos los mensajes que se publican en el sistema (y reenviarlos a los suscriptores), utiliza caracteres comodín, llamados wildcards en el contexto MQTT, en nuestro caso, ‘#’ (equivale a recibir TODO), de tal manera que, con el carácter modular del proyecto, si se añade un módulo “a posteriori”, el broker recibiría sus mensajes sin tener que reprogramar el software. Álvaro Antonio Zamorano Ojuel 50 UCM Figura 4.2: Interior de la “Estación Central” Figura 4.3: “Estación Central” ya montada 4.2. Los módulos sensores El orden en el que se abordó el diseño de los módulos sensores no fue siguiendo un plan predefinido, sino más bien según iban fluyendo las ideas de emparejamiento “algo a detectar” - “cómo detectarlo”. 4.2.1. Módulo sensor Temporizador El primer módulo que se diseñó fue el del Temporizador, y en su desarrollo nos encontramos con varias dificultades que tuvimos que superar: Primeramente, se pensó detectar la vibración física del temporizador con un sensor de vibración (sensor piezoeléctrico de cerámica), dispuesto en el interior del módulo, pero estando por debajo de la superficie de la caja no detectaba ninguna vibración, seguramente porque el material plástico del que estaba hecha la caja no propagaba adecuadamente la vibración y el sensor no lo detectaba. Pensando que el grosor podía intervenir en el proceso, se “adelgazó” la superficie de la caja en su interior con lija para ver si una superficie más delgada podía propagar la vibración, pero fue en vano. Figura 4.4: Placa interior del módulo sensor del temporizador, basado en vibración 51 Grado en Ingeniería de Computadores Facultad de Informática 4.2.5. Módulo sensor Portero electrónico El reto aquí era conseguir detectar cuándo suena el timbre de llamada del portero; para ello, y basándonos en el tipo analógico 4+1, ya comentado en el apartado “Contexto tecnológico”, consistía en averiguar cuándo pasa corriente por el cable y terminal a tal fin dedicado. Como la corriente que pasa por el cable es alterna tenemos que recurrir, nuevamente, al uso de un optoacoplador que la detecte. Sin embargo, existe una pequeña diferencia con respecto a la utilización en el módulo sensor del teléfono (fijo), ya que en éste último por el cable pasaba, aunque no hubiera llamada, una corriente continua que teníamos que discriminar, y esto lo hacíamos mediante un condensador de poliéster. En el caso del portero electrónico, por el cable dedicado al timbre no pasa nada más que la corriente alterna cuando se pulsa el botón correspondiente en la placa de la calle, por lo que no necesitamos el condensador, y tratamos directamente con la corriente alterna, utilizando, eso sí, una resistencia para adecuar el voltaje al requerido por el optoacoplador. Se completa el módulo con algún hardware adicional (un led y otra resistencia), pero, sobre todo, con un software capaz de detectar un cambio en la corriente (continua) en el pin de entrada correspondiente en la placa NodeMCU del microcontrolador ESP8266. El esquemático del módulo es, pues: Figura 4.18: Esquemático del circuito del módulo sensor del portero electrónico (Realizado con el software: Dia) El conector que está junto al de la alimentación está unido a los terminales 3 y 4 de la placa del portero electrónico, según las especificaciones del fabricante del portero que se ha tomado como referencia (FERMAX). No obstante, para otros modelos habría que conectarlo según la tabla de equivalencias que se muestra (se muestra solo una parte del documento). Álvaro Antonio Zamorano Ojuel 58 UCM Figura 4.19: Detalle de la Tabla de equivalencias de porteros electrónicos El módulo completo se vería así: Figura 4.20: Interior del módulo sensor del portero electrónico Figura 4.21: Aspecto exterior del módulo sensor del portero electrónico 59 Grado en Ingeniería de Computadores Facultad de Informática 4.3. El elemento móvil del sistema: “alert watch” (o reloj de alertas) El diseño y la realización del único elemento móvil del sistema es, en sí mismo, un reto, pero no es el único, a continuación se exponen los diferentes desafíos a los que nos hemos enfrentado y hemos tenido que ir superando. El primero ha sido lidiar con el diseño de un dispositivo que no fuera incómodo de llevar, tanto por sus dimensiones como por su forma, pero que, a su vez, permitiera incluir en su interior todos los componentes necesarios para su funcionamiento (componentes que posteriormente listaré). Este punto es el que más dificultades ha supuesto en un principio, ya que no está a nuestro alcance, ni al alcance de una mayoría de los destinatarios de este proyecto, la miniaturización de circuitos, y se quería utilizar módulos ya hechos (comerciales) para solo tener que montarlos sobre la carcasa, y conectarlos de la manera apropiada para hacerlos funcionar de forma cooperativa (obviamente, con el software adecuado). Debido a esta circunstancia, podríamos afirmar que el resultado final es “un poco” voluminoso, como se puede apreciar en las imágenes: Figura 4.22: Piezas de la caja del Reloj de alertas Figura 4.23: Perspectiva izda. del Reloj de alertas Figura 4.24: Perspectiva dcha. del Reloj de alertas Álvaro Antonio Zamorano Ojuel 60 UCM Y, de hecho, ese puede ser el mayor reto para el futuro, disminuir el tamaño sin sacrificar la funcionalidad. Ya que se trata de un “Reloj de alertas” hemos pensado que podría tener dos vertientes, una de reloj, y otra de visualizador de alertas. Como reloj, se trataría de un dispositivo que no necesita comunicación con el exterior, y que aprovecha las capacidades del microcontrolador para disponer de tres funciones: 1) Reloj 2) Alarma 3) Cuenta atrás o temporizador Como visualizador de alertas, en este caso sí que necesita comunicarse con el exteior, concretamente, aprovechando la capacidad Wi-Fi del D1-Mini32-ESP32 para recibir los mensajes correspondientes a las distintas alertas transmitidas por los módulos sensores del sistema, y mostrarlos en la pantalla, así como los ocasionados localmente por el reloj, es decir, el de la “Alarma” y la “Cuenta atrás”. En cuanto al hardware se refiere, éstos son los componentes utilizados en el interior de reloj de alertas: D1-Mini32-ESP32 3 botones pequeños [Modo, Ajuste y Valor] 1 botón grande [Alerta atendida] Motor de vibración Módulo cargador de batería USB tipo C Batería LiPo 523450 - 1000 mAh - 3.7 V Led 1 W Interruptor Arduino LilyPad Pantalla OLED 1.3” Figura 4.25: Componentes incluidos en el interior del Reloj de alertas 61 Grado en Ingeniería de Computadores Facultad de Informática Siendo el esquemático el que a continuación se detalla: Figura 4.26: Esquemático del circuito del Reloj de alertas (Realizado con el software: Fritzing) Y las conexiones de sus componentes (de forma más gráfica): Figura 4.27: Conexiones del circuito del Reloj de alertas (Realizado con el software: Fritzing) Álvaro Antonio Zamorano Ojuel 62 UCM Y en cuanto al software, se pensó que la mejor manera de abordar el código era creando una Máquina de Estados Finitos (FSM, por sus siglas en inglés), cuya representación se muestra a continuación: Figura 4.28: Autómata que refleja el funcionamiento del Reloj de alertas (Realizado con el software: Dia) 63 Grado en Ingeniería de Computadores Facultad de Informática Pero el gran problema que se ha tenido que afrontar ha sido el de la autonomía del dispositivo, ya que, para ser realmente funcional, la carga de la batería incorporada debería tener una duración mínima suficiente para facilitar la vida a los usuarios, y no para suponer una molestia tener que estar cargando la batería continuamente (o varias veces al día). De este modo, hay que combinar con acierto tanto el formato y capacidad de la batería como el ahorro de energía del microcontrolador y los periféricos asociados. Hasta tal punto es crítico este asunto que en ello radica la viabilidad de este trabajo, pues si bien es cierto que el ecosistema cableado casi siempre se va a poder realizar, la verdadera razón de ser del mismo es, precisamente, su utilidad en la cotidianidad, y lo cotidiano es, generalmente, que estamos en continuo movimiento por varias estancias de la vivienda, por lo que es el ecosistema inalámbrico el que se muestra más apto y el que cubre todas las necesidades. Todo el software necesario (archivos STL2y el código fuente de cada uno de los elementos -en sketches de Arduino IDE [.ino]-) se encuentra disponible en la siguiente dirección web: https://gitlab.com/proyectos161/siavidopedia 2para la impresión 3D de las cajas y el reloj Álvaro Antonio Zamorano Ojuel 64 Capítulo 5 Resultados y conclusiones 5.1. Resultados 5.1.1. Memoria económica Detallamos el coste de los materiales utilizados, desglosándolo por módulos. Al coste de los materiales hay que sumarle los costes energéticos, y para ello vamos a tomar como referencia el precio medio de la luz del año 2021 en España (0.182€/kWh). Una impresora 3D tiene un consumo aproximado de 330W; para los módulos sensores y la estación central, el tiempo de funcionamiento sería de unas 3h. para la carcasa de la caja y unos 45min. para la base, esto supone un coste aproximado de 0.23€, mientras que cada pieza del reloj de alertas supone unos 25 minutos de funcionamiento de la impresora 3D, por lo que el coste energético del reloj asciende a 0.07€ (1 hora y 15 minutos). Le añadimos, además, el coste del material plástico: la bobina de 1 Kg de filamento PLA cuesta unos 22€. Estación Central v1 Base caja →0.27€ Carcasa caja →1.13€ Baquelita →0.38€ Leds (verde) →0.06€ x 2 = 0.12€ Resistencias (220Ω)→0.02€ x 2 = 0.04€ Conectores metálicos →0.02€ x 8 = 0.16€ Fundas de conectores metálicos →0.02€ x 8 = 0.16€ Conector en “U” →0.03€ Interruptor basculante de encendido →0.08€ Conector de alimentación →1.29€ Enchufe transformador →2.40€ Botón →0.10€ 65 Grado en Ingeniería de Computadores Facultad de Informática NodeMCU-ESP8266 →1.99€ TOTAL Materiales Estación Central v1:8.15€ TOTAL Coste energético Estación Central v1:0.23€ COSTE TOTAL Estación Central v1:8.38€ Módulo sensor del Temporizador Base caja →0.27€ Carcasa caja →1.14€ Baquelita →0.38€ Led (rojo) →0.06€ Resistencia (100Ω)→0.02€ Micrófono MAX4466 →1.13€ Conectores metálicos →0.02€ x 8 = 0.16€ Fundas de conectores metálicos →0.02€ x 8 = 0.16€ Botón de encendido →1.37€ Conector de alimentación →1.29€ Enchufe transformador →2.40€ Goma EVA →0.03€ NodeMCU-ESP8266 →1.99€ TOTAL Materiales Módulo sensor del Temporizador:10.40€ TOTAL Coste energético Módulo sensor del Temporizador:0.23€ COSTE TOTAL Módulo sensor del Temporizador:10.63€ Módulo sensor del Frigorífico Base caja →0.27€ Carcasa caja →1.02€ Baquelita →0.38€ Led RGB →0.04€ Resistencias (220Ω)→0.02€ x 3 = 0.06€ Álvaro Antonio Zamorano Ojuel 66 UCM Porta-batería 18650 →0.64€ Batería 18650 Li-Ion (19800 mAh) →1.33€ Interruptor de encendido →0.14€ Conectores metálicos →0.02€ x 4 = 0.08€ Fundas de conectores metálicos →0.02€ x 4 = 0.08€ Sensor de luz →0.57€ Amplificador de voltaje (“Booster” / “Step-up”) →1.49€ NodeMCU-ESP32 →3.70€ TOTAL Materiales Módulo sensor del Frigorífico:9.80€ TOTAL Coste energético Módulo sensor del Frigorífico:0.23€ COSTE TOTAL Módulo sensor del Frigorífico:10.03€ Módulo sensor del Teléfono fijo Base caja →0.27€ Carcasa caja →1.39€ Baquelita →0.38€ Led (Rojo) →0.06€ Resistencias (2kΩy 10kΩ)→0.02€ x 2 = 0.04€ Condensador de poliéster 1 𝜇F 250V →0.30€ Optoacoplador 4N33 (similar al 4N35) →0.35€ Conectores RJ11 (hembra) →0.96€ x 2 = 1.92€ Conectores metálicos →0.02€ x 4 = 0.08€ Fundas de conectores metálicos →0.02€ x 4 = 0.08€ Conector de alimentación →1.29€ Enchufe transformador →2.40€ NodeMCU-ESP8266 →1.99€ TOTAL Materiales Módulo sensor del Teléfono fijo:10.55€ TOTAL Coste energético Módulo sensor del Teléfono fijo:0.23€ COSTE TOTAL Módulo sensor del Teléfono fijo:10.78€ 67 Conclusions When facing this project we did not think that we were going to find so many difficulties that have been discovered as it progressed. Once the prototyping phase is finished, we can deduce several conclusions, among which the main ones stand out: Industrialized society does not take into account for its progress people with hearing difficulties. After studying several microwaves (5.3) and washing machines (5.3) on the market (unfortunately, if we had studied other appliances such as bread makers, ovens, coffee makers, dishwashers, etc., the result would have been the same), in 94 % of what was analyzed ONLY one acoustic signal is available to warn of the end of the process. The remaining 6 % has ONLY a warning led (at least, this option allows hacking the device to get an output pin). Some products, such as the Samsung WW8*K6***** washing machine, can even be controlled from a mobile device using the corresponding application (Samsung Smart Home in the case mentioned), but the manufacturers have not thought at all to add an output pin (GPIO) to facilitate detection of .END”by appropriate hardware interacting with it. Therefore, from here we make a call to the industry, to the manufacturers, so that they incorporate , as soon as possible, people with hearing difficulties into their business target. Or what is the same, require that they add an output GPIO to warn of the .end of the operation”. We think that is not too much to ask. The final result obtained is not as trivial as it would have been desirable at the beginning of the project, especially the alert watch, because in order to introduce all the necessary components in a more or less reduced space, it is necessary to imagine and design their final location, and this has not been easy at all. However, if you have the appropriate knowledge and a precise notion of design, it is feasible to carry out the project following the schematics in this Report. It is NOT an assembly manual, so there is no a ”step by step”follow-up to its realization. From the economic point of view, the cost of the system makes interesting to manufacture it yourself, but if the idea and the project were to be exploited commercially, the cost would have to be reduced to make it viable since currently (and from this perspective) we could consider it quite expensive for that purpose. 75 Parte B 77 Índice de figuras 1.1. MóduloFS1000A................................. 2 1.2. MóduloXY-MK-5V ............................... 3 1.3. Módulos descritos con antena externa de cuarto de onda . . . . . . . . . . . . . 3 1.4. Módulo FS1000A con antena externa helicoidal . . . . . . . . . . . . . . . . . 3 1.5. MóduloAT-09................................... 4 1.6. MóduloHM-10.................................. 4 1.7. MóduloXBeeS1,................................. 5 1.8. MóduloXBeeProS5,............................... 5 2.1. Diseñocableado.................................. 12 2.2. Diseñoinalámbrico................................ 13 3.1. Esquema de un micrófono dinámico . . . . . . . . . . . . . . . . . . . . . . . 16 3.2. Esquema de un micrófono de condensador electret . . . . . . . . . . . . . . . 16 3.3. Esquema del optoacoplador 4N35, de un solo led . . . . . . . . . . . . . . . . 18 3.4. Esquema del optoacoplador H11AA1, de doble led . . . . . . . . . . . . . . . 18 3.5. Esquema de portero electrónico analógico de tipo 4 + 1 . . . . . . . . . . . . . 18 3.6. Símbolo eléctrico de un led . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.7. Diagrama de conexión de una matriz de 8 x 8 leds . . . . . . . . . . . . . . . . 20 3.8. Disposición de las distintas capas de un panel LCD . . . . . . . . . . . . . . . 21 3.9. Disposición de las distintas capas de un panel OLED . . . . . . . . . . . . . . 23 3.10. Ubicación de distintos protocolos de redes en las capas del modelo OSI . . . . 26 3.11.SoCESP8266................................... 29 3.12.SoCESP32 .................................... 32 3.13. Módulos (y familias) del ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . 35 3.14. Módulo ESP-12F, del SoC ESP8266 . . . . . . . . . . . . . . . . . . . . . . . 35 3.15.MódulosdelESP32................................ 36 3.16. Módulo ESP-WROOM-32, del SoC ESP32 . . . . . . . . . . . . . . . . . . . 36 3.17. Placa de desarrollo NodeMCU con el módulo ESP-12F del ESP8266 . . . . . . 38 3.18. Pinout de la placa NodeMCU v3 del ESP8266 . . . . . . . . . . . . . . . . . . 38 3.19. Placa de desarrollo NodeMCU con el módulo WROOM-32 del ESP32 . . . . . 40 3.20. Pinout de la placa NodeMCU ESP32 y módulo ESP-WROOM-32 . . . . . . . 40 3.21. Placa de desarrollo Mini32 con el módulo WROOM-32 del ESP32 . . . . . . . 41 3.22. Pinout de la placa Mini32 con módulo ESP-WROOM-32 del ESP32 . . . . . . 42 3.23. Sensor piezoeléctrico de cerámica . . . . . . . . . . . . . . . . . . . . . . . . 42 3.24. Micrófonos con potenciómetro . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.25. Sensor de luz KY-018 con fotoresistor . . . . . . . . . . . . . . . . . . . . . . 43 3.26. Alojamiento para batería 18650 . . . . . . . . . . . . . . . . . . . . . . . . . . 43 79 Grado en Ingeniería de Computadores Facultad de Informática 3.27.Batería18650................................... 43 3.28. Módulo amplificador de voltaje, de 3.3V a 5V . . . . . . . . . . . . . . . . . . 44 3.29.LedRGB5mmy4pines ............................. 44 3.30. Transformador de 220Vac a 3.3Vdc . . . . . . . . . . . . . . . . . . . . . . . 44 3.31.ConectorRJ11................................... 45 3.32. Pantalla OLED - Interfaz I2C........................... 45 3.33. Módulo cargador de baterías, interfaz USB tipo C - Mod. TC4056 . . . . . . . 45 3.34.Motordevibración ................................ 46 3.35.PanelLEDSMD2121............................... 46 3.36. Transformador de 220Vac a 5Vdc . . . . . . . . . . . . . . . . . . . . . . . . 46 3.37. Interruptores “sliders” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.38. Condensador de poliéster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.39. Baquelita de 1 solo lado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.40. Ejemplo de caja de los distintos módulos de sensores (y Estación Central v1) . 47 4.1. Esquemático del circuito de la Estación Central . . . . . . . . . . . . . . . . . 50 4.2. Interior de la “Estación Central” . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3. “Estación Central” ya montada . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.4. Placa interior del módulo sensor del temporizador, basado en vibración . . . . . 51 4.5. Aspecto exterior del módulo sensor del temporizador, con sensor de vibración . 52 4.6. Interior del módulo sensor del temporizador, basado en sonido . . . . . . . . . 52 4.7. Aspecto exterior del módulo sensor del temporizador, con sensor de sonido . . 52 4.8. Esquemático del circuito del módulo sensor del temporizador . . . . . . . . . . 53 4.9. Esquemático del circuito del módulo sensor del frigorífico . . . . . . . . . . . 54 4.10. Interior del módulo sensor del frigorífico . . . . . . . . . . . . . . . . . . . . . 54 4.11. Aspecto exterior del módulo sensor del frigorífico . . . . . . . . . . . . . . . . 54 4.12. Interior del módulo sensor del timbre de la puerta . . . . . . . . . . . . . . . . 55 4.13. Aspecto exterior del módulo sensor del timbre de la puerta . . . . . . . . . . . 55 4.14. Esquemático del circuito del módulo sensor del timbre de la puerta . . . . . . . 56 4.15. Esquemático del circuito del módulo sensor del teléfono (fijo) . . . . . . . . . 57 4.16. Interior del módulo sensor del teléfono (fijo) . . . . . . . . . . . . . . . . . . . 57 4.17. Aspecto exterior del módulo sensor del teléfono (fijo) . . . . . . . . . . . . . . 57 4.18. Esquemático del circuito del módulo sensor del portero electrónico . . . . . . . 58 4.19. Detalle de la Tabla de equivalencias de porteros electrónicos . . . . . . . . . . 59 4.20. Interior del módulo sensor del portero electrónico . . . . . . . . . . . . . . . . 59 4.21. Aspecto exterior del módulo sensor del portero electrónico . . . . . . . . . . . 59 4.22. Piezas de la caja del reloj de alertas . . . . . . . . . . . . . . . . . . . . . . . . 60 4.23. Perspectiva izda. del reloj de alertas . . . . . . . . . . . . . . . . . . . . . . . 60 4.24. Perspectiva dcha. del reloj de alertas . . . . . . . . . . . . . . . . . . . . . . . 60 4.25. Componentes incluidos en el interior del reloj de alertas . . . . . . . . . . . . . 61 4.26. Esquemático del circuito del reloj de alertas . . . . . . . . . . . . . . . . . . . 62 4.27. Conexiones del circuito del reloj de alertas . . . . . . . . . . . . . . . . . . . . 62 4.28. Autómata que refleja el funcionamiento del reloj de alertas . . . . . . . . . . . 63 Álvaro Antonio Zamorano Ojuel 80 Índice de tablas 1.1. Cuadro resumen de las características de los distintos estándares Wifi . . . . . 6 1.2. Cuadro comparativo de las distintas tecnologías estudiadas . . . . . . . . . . . 8 81 Bibliografía [1] OASIS Open. MQTT. Documents https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html [2] Espressif Systems. ESP8266EX Datasheet. Version 6.7, 2022 https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_ datasheet_en.pdf [3] Espressif Systems. ESP32 Series Datasheet. Version 3.9, 2022 https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en. pdf [4] Advanced Monolithic Systems, Inc. AMS1117 Datasheet http://www.advanced-monolithic.com/pdf/ds1117.pdf 83 Anexo 3 Preconfiguraciones del sistema A continuación se relacionan los distintos topics ya preconfigurados en el “Reloj de alertas” casa/reloj/alarma casa/reloj/cuenta_atras casa/cocina/frigorifico casa/cocina/temporizador casa/timbre_puerta casa/portero_electronico casa/telefono_fijo casa/telefono_movil1 casa/telefono_movil2 casa/cocina/lavadora casa/cocina/secadora casa/cocina/microondas casa/cocina/panificadora casa/cocina/horno casa/cocina/tostador casa/cocina/cafetera casa/cocina/lechera casa/cocina/tetera casa/cocina/hervidor casa/cocina/exprimidor casa/cocina/licuadora casa/cocina/batidora casa/cocina/robot 91 Grado en Ingeniería de Computadores Facultad de Informática casa/cocina/yogurtera casa/cocina/gofrera casa/cocina/galletera casa/cocina/sandwichera casa/cocina/grill casa/cocina/plancha_cocina casa/dormitorio1/despertador1 casa/dormitorio1/despertador2 casa/dormitorio2/despertador1 casa/dormitorio2/despertador2 casa/dormitorio3/despertador1 casa/dormitorio3/despertador2 casa/dormitorio4/despertador1 casa/dormitorio4/despertador2 casa/plancha casa/centro_planchado casa/baño/jacuzzi casa/baño/termo casa/humos casa/gases casa/antirrobo Álvaro Antonio Zamorano Ojuel 92 “Software libre y Hardware libre para una civilización libre. ¡Viva la Cultura Libre!” Álvaro Antonio Zamorano Ojuel Álvaro Antonio Zamorano Ojuel FECHA Ult. actualización 15 de septiembre de 2022 L A TEX lic. LPPL & powered by T EF LO NCC-ZERO Esta obra está bajo una licencia Creative Commons “CC0 1.0 Universal”.