Skip to content

Commit

Permalink
Wrote Resultados and Intro.desafios
Browse files Browse the repository at this point in the history
  • Loading branch information
rubnium committed Jul 8, 2024
1 parent 175c2f1 commit 69643f7
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 14 deletions.
Binary file modified tfg_report/resource_scr/LoboMQ.vpp
Binary file not shown.
36 changes: 24 additions & 12 deletions tfg_report/templateAPP/input/chapters/01_intro.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Introducción

El capítulo de Introducción debe describir el problema que se pretende resolver con el desarrollo del Trabajo Fin de Grado (TFG). Debe dar respuesta al qué sin especificar cómo se va a realizar, para lo cual se usarán el resto de los capítulos del documento. El lector de este documento debe tener claro el alcance del proyecto habiendo leído únicamente el capítulo de Introducción.
En este primer capítulo se presenta el problema que se pretende resolver mediante el desarrollo del Trabajo de Fin de Grado ([TFG](#TFG)), explicando el alcance de la librería y el protocolo desarrollados, junto con la motivación y a los desafíos que han dado lugar.

A lo largo de este Trabajo de Fin de Grado se detalla el proceso de desarrollo de LoboMQ, un protocolo que se fija en [MQTT](#MQTT) para tomar las bases de la comunicación a través de colas de mensajes y adaptarlas a un entorno de trabajo con dispositivos del Internet de las Cosas. Este protocolo aprovecha las capacidades de ESP-NOW para ofrecer una comunicación sin cables ni Internet y a larga distancia, y es implementado en forma de una librería C++ para placas ESP32, la cual está disponible en el registro de PlatformIO. La librería LoboMQ ofrece al usuario las funciones necesarias para, con facilidad, desplegar un broker, publicar mensajes a un tema, y suscribirse y desuscribirse de los mismos.

## Motivación

Expand All @@ -9,37 +11,45 @@ Esta sección aborda la motivación del trabajo. Se trata de señalar la necesid
En este capítulo debería introducirse el contexto disciplinar y tecnológico en el que se desarrolla el trabajo de modo que pueda entenderse con facilidad el ámbito y alcance del TFG. Puesto que un TFG no tiene que ser necesariamente un trabajo con aportes novedosos u originales, solo es necesario la inclusión de estado del arte cuando este contribuya a aclarar aspectos clave del TFG o se desee justificar la originalidad del trabajo realizado. Si la sección estado del arte es muy extensa, considera la opción de introducirla como un capítulo independiente.



Popular iot @IoTConexiones_Statista @IoTGasto_Statista
Popular esp32
Popular MQTT
Habitual despliegue en zonas sin comunicación, o puede que no haga falta
No hay protocolos de comunicación que usen ESP-NOw, es tarea del desarrollador preparar la comunicacion entre los nodos (tarea compleja)
Usar característica integrada en ESP32



{
La proliferación del Internet de las Cosas (IoT) se evidencia en aplicaciones que abarcan desde elementos de uso diario hasta iniciativas de gran alcance. Esto demanda que los profesionales en el desarrollo soluciones IoT se enfrenten y adapten a distintas restricciones, ya sean ambientales o propias del dispositivo. Un desafío recurrente es la gestión de energía en las placas, ya que muchos dispositivos exigen un consumo reducido. Esta exigencia se magnifica cuando se requiere la transmisión de información entre diferentes placas con conexiones intermitentes, complicando considerablemente la labor del desarrollador.
Este proyecto tiene como objetivo el diseño e implementación de un protocolo de mensajería para redes ESP-NOW, inspirado en características fundamentales de MQTT, como su modelo de publicación y suscripción y su aptitud para manejar conexiones intermitentes. El resultado combinará la eficiencia en latencia y consumo energético de ESP-NOW con la flexibilidad de MQTT. Además, se desarrollarán bibliotecas de software para facilitar la integración de este protocolo en aplicaciones IoT. Esta propuesta no solo sería una valiosa contribución a la comunidad de IoT, combinando lo mejor de dos protocolos existentes, sino también un desafío ingenieril significativo.

}

## Redacción de la Memoria
## Desafíos durante la realización

Durante la realización de la memoria del TFG es importante tener presente respetar la guía de estilo de la institución. Por tanto, el empleo de plantillas para un sistema de procesamiento de textos (por ejemplo, Word o LaTeX) puede requerir su adaptación cuando la plantilla mencionada no haya sido suministrada en la institución a la que se dirige el trabajo.
El desarrollo de la solución implica abordar una serie de desafíos, descritos a continuación.

Para redactar un trabajo académico de modo efectivo se deben tener presentes una serie de normas que ayuden a conseguir un resultado final que sea claro y de fácil lectura.
El uso de placas ESP32 requiere de conocimientos específicos para maximizar el rendimiento y la eficiencia durante la ejecución. FreeRTOS es fundamental en este contexto, ya que comprender su uso y los conceptos que lo sustentan permiten una correcta ejecución paralela de múltiples tareas en esta placa, limitada por su capacidad de procesamiento. A su vez, requiere conocimientos del lenguaje C++ y de las herramientas para desarrollar código capaz de usar y liberar adecuadamente la memoria durante la ejecución. Por otro lado, la tecnología de comunicación utilizada, ESP-NOW, presenta sus propias limitaciones, como la cantidad de pares conectados simultáneamente y el tamaño máximo de los mensajes, las cuales deben ser consideradas al utilizarla.

A la hora de redactar el texto se debe poner especial atención en no cometer plagio y respetar los derechos de propiedad intelectual. En particular merece gran atención la inclusión de gráficos e imágenes procedentes de Internet que no sean de elaboración propia. En este sentido se recomienda consultar el manual de la Universidad de Cantabria [^incluir_img] en el que se explica de modo conciso cómo incluir imágenes en un trabajo académico.
Este nuevo protocolo, al basarse en el ya existente [MQTT](#MQTT), requiere un conocimiento profundo de su funcionamiento. Esto incluye el formato y los tipos de mensajes, las comprobaciones que se realizan al enviar mensajes, y el orden de ejecución y procesamiento, entre otros aspectos. Sin embargo, esto no limita la herramienta a ser una réplica fiel, ya que se deben diseñar componentes y funcionalidades del protocolo con suficiente libertad creativa, pero manteniendo una operación similar a [MQTT](#MQTT).

[^incluir_img]: Guía de Imágenes: [https://web.unican.es/buc/Documents/Formacion/guia_imagenes.pdf](https://web.unican.es/buc/Documents/Formacion/guia_imagenes.pdf)
PlatformIO, a parte de permitir el desarrollo en las mencionadas placas, ofrece una serie de plantillas y comandos esenciales para desarrollar una librería. Esto implica realizar una lectura exhaustiva de la documentación de esta plataforma, junto con diversas pruebas, para disponer de una librería funcional.

## Estructura del Documento

Este capítulo suele incluir una sección que indica la estructura (capítulos y anexos) del documento y el contenido de cada una de las partes en que se divide. Por tanto, las secciones que suelen acompañar este capítulo son:

- Motivación. Responde a la pregunta sobre la necesidad o pertinencia del trabajo.
- Objetivo. Determina de modo claro el propósito del trabajo descrito que puede desglosarse en subobjetivos cuando el objetivo principal se puede descomponer en módulos o componentes. Es muy importante definir el objetivo de modo apropiado. El Capítulo Objetivos de esta guía explica cómo definir el objetivo.
- Antecedentes o Contexto disciplinar/tecnológico. También puede denominarse Estado del Arte cuando se trata de comentar trabajos relacionados que han abordado la cuestión u objetivo que se plantea.
- Estructura del documento. Resumen de los capítulos y anexos que integran el documento.
/*TODO: redactar*/

## Objetivos

/*TODO: redactar*/
Para hacer un planteamiento apropiado de los objetivos se recomienda utilizar la Guía para la elaboración de propuestas de TFG en la que se explica cómo definir correctamente los objetivos de un TFG.

### Objetivo General

/*TODO: redactar*/

Introduce y motiva la problemática (i.e ¿cuál es el problema que se plantea y por qué es interesante su resolución?).

Debe concretar y exponer detalladamente el problema a resolver, el entorno de trabajo, la situación y qué se pretende obtener. También puede contemplar las limitaciones y condicionantes a considerar para la resolución del problema (lenguaje de construcción, equipo físico, equipo lógico de base o de apoyo, etc.). Si se considera necesario, esta sección puede titularse Objetivos del TFG e hipótesis de trabajo. En este caso, se añadirán las hipótesis de trabajo que el/la estudiante pretende demostrar con su TFG.
Expand All @@ -62,6 +72,8 @@ La categoría del objetivo planteado justifica modificaciones en la organizació

### Objetivos Específicos

/*TODO: redactar*/

Generalmente, el objetivo general puede ser descompuesto en varios objetivos más específicos que se pretenden alcanzar. En esta sección se enumeran y describen cada uno de ellos.

Junto con la definición de estos objetivos se puede especificar los requisitos que debe satisfacer la solución aportada. Estos requisitos especifican características que debe poseer la solución y restricciones que acotan su alcance. En el caso de un trabajo cuyo objetivo es el desarrollo de un artefacto los requisitos pueden ser funcionales y no funcionales.
Expand Down
2 changes: 2 additions & 0 deletions tfg_report/templateAPP/input/chapters/02_estado_arte.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Estado del arte

En este capítulo se aborda el concepto de Internet de las Cosas, incluyendo su valor, los desafíos que presenta y los tipos de dispositivos que lo conforman. Sumado a esto, se comparan los distintos protocolos, middleware y tecnologías empleados en el transporte de datos en este ámbito, y se menciona la popular placa ESP32, ampliamente utilizada en el Internet de las Cosas.

## Internet de las Cosas

El siglo XX dio lugar al desarrollo de numerosos inventos que impulsaron una revolución y un avance ágil en la sociedad, que en la actualidad son frecuentemente usados y facilitan la vida humana. Este es el caso del Internet, que desde 1969 ha permitido la comunicación entre personas y el acceso a información. Hoy en día, también millones de objetos están conectados a la red, cuyas funcionalidades dependen de esta.
Expand Down
31 changes: 29 additions & 2 deletions tfg_report/templateAPP/input/chapters/04_resultados.md
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,6 @@ Tareas:
- Migrar la librería al nuevo nombre (peso: 8). Finalmente, se decidió por el nombre "LoboMQ", por lo que se reemplazaron todos los nombres provisionales de los ficheros, las variables y cualquier otra referencia a la herramienta.
- Configurar Doxygen y Doxygen Awesome (peso: 13). Establecer las propiedades necesarias en el fichero Doxyfile y descargar las hojas de estilo Doxygen Awesome para generar un HTML que muestre la documentación del proyecto.


## Iteración 12

Periodo: 08/06/2024 - 21/06/2024 (2 semanas). Peso total: 100.
Expand All @@ -853,4 +852,32 @@ El objetivo principal de este sprint fue redactar la memoria y arreglar Doxygen.
Tareas:

- Redactar Estado del arte (peso: 40) y Herramientas y metodología (peso: 40).
- Corregir los comentarios y la generación de Doxygen (peso: 20).
- Corregir los comentarios y la generación de Doxygen (peso: 20). Realizado con el fin de mostrar la documentación de forma correcta.

## Iteración 13

Periodo: 22/06/2024 - 05/07/2024 (2 semanas). Peso total: 116.

El objetivo principal de este sprint fue redactar la memoria, realizar pequeñas correcciones, personalizar la herramienta y crear un test para probar el funcionamiento de los clientes.

Tareas:

- Añadir comprobación ASCII del topic al publicar (peso: 5). Arreglar esta opción ya existente en el caso de la suscripción.
- Eliminar el parámetro `csPin` no utilizado al recuperar objetos `BrokerTopic` de la tarjeta SD (peso: 5). Mejorar el código evitando la asignación innecesaria de parámetros.
- Actualizar y probar la librería Elog (peso: 8). Hasta el momento, en el desarrollo se ha utilizado la versión 1.1.4. Para asegurar que el uso de la librería siga siendo correcto, se realizan pruebas con la reciente versión 1.1.6.
- Añadir readme y un logo (peso: 5). Mejorar la documentación del proyecto mediante un fichero que lo describa, y crear un logo que añada identidad a la herramienta.
- Mejorar la generación de la documentación Doxygen y añadir comentarios (peso: 8).
- Crear test de publicador y suscriptor (peso: 13). Asegurar que las funciones de crear mensaje, extraer contenido y comprobar el topic funcionan correctamente, siendo además útil para comprobar estas funciones luego de que surja alguna modificación.
- Redactar Resultados (peso: 40), Estado del arte y Herramientas y metodología (peso: 40).



## Diseño final del protocolo

Una vez finalizado el desarrollo, los artefactos del protocolo quedan definidos. En LoboMQ existen 2 tipos de nodos: el broker y los clientes. El broker gestiona las suscripciones y actúa como un centro de mensajería, ya que redirige las publicaciones a los suscriptores interesados en el mismo tema. Los clientes, por su parte, publican mensaje en temas y se suscriben o desuscriben de estos. Tanto la publicación como la suscripción o desuscripción se transmiten de forma asíncrona, permitiendo la ejecución de tareas sin estar bloqueados esperando una respuesta.

Se identifican tres tipos de mensajes: SubscribeAnnouncement, UnsubscribeAnnouncement y PublishContent, cuyos campos se muestran en la Figura /*TODO: crear*/. Estos mensajes tienen en común el campo `MessageType`, que identifica el tipo de mensaje, y `topic`, el tema al cual se relaciona el mensaje. El topic, al igual que en [MQTT](#MQTT), admite el uso de wildcards, pero en este caso está limitado a /*TODO: mencionar caracteres*/. Además, los mensajes no pueden superar los 250 bytes debido a las limitaciones de ESP-NOW.

/*TODO: hacer figura campos del protocolo*/

La implementación de este protocolo se realiza mediante la creación de código en C++ que utilice la homónima librería LoboMQ, la cual está disponible tanto en el anteriormente mencionado repositorio como en el registro de PlatformIO /*TODO: insertar enlace*/. La documentación de esta librería también se encuentra disponible en la página /*TODO: insertar enlace*/
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
@misc{IoTGasto_Statista,
author = {Statista},
month = {1},
title = {{Gasto mundial en IoT 2018-2023}},
year = {2024},
howpublished = {\url{https://es.statista.com/estadisticas/1117893/internet-de-las-cosas-gasto-a-nivel-mundial/}}
}

@misc{IoTConexiones_Statista,
month = {7},
title = {{Internet de las cosas (IoT): dispositivos conectados en el mundo 2015-2027 | Statista}},
year = {2023},
howpublished = {\url{https://es.statista.com/estadisticas/517654/prevision-de-la-evolucion-de-los-dispositivos-conectados-para-el-internet-de-las-cosas-en-el-mundo/}},
}

@misc{EdgeCloudFog_ISA,
author = {Manole, Lucy},
month = {11},
Expand Down
Binary file modified tfg_report/templateAPP/output/tfgii.pdf
Binary file not shown.

0 comments on commit 69643f7

Please sign in to comment.