
Gestión Energética IoT: Microcontroladores
Información del documento
Escuela | Universidad [Nombre de la Universidad - Información no disponible en el texto] |
Especialidad | Grado en Ingeniería Informática |
Tipo de documento | Proyecto Fin de Grado |
Idioma | Spanish |
Formato | |
Tamaño | 1.52 MB |
Resumen
I.Reducción del Consumo Energético en Dispositivos IoT
Este trabajo de investigación se centra en la optimización del consumo energético de dispositivos IoT de bajo consumo alimentados por baterías. Se aborda la problemática de la alta demanda de energía de estos dispositivos, especialmente aquellos ubicados en lugares de difícil acceso (ej. montajes en árboles, semáforos). La reducción del consumo ofrece múltiples beneficios: mayor autonomía de la batería, menores costes de mantenimiento (reducción en el reemplazo de pilas y baterías, personal, desplazamientos), y la posibilidad de usar fuentes de energía alternativas más pequeñas, como placas solares. El estudio se realiza usando una placa de desarrollo TTGO LoRa32 v2.0, que incorpora un ESP32 como sistema en chip.
1. La Importancia de la Eficiencia Energética en Dispositivos IoT
El documento inicia destacando la importancia crítica del consumo energético en sistemas alimentados por baterías, especialmente en los dispositivos IoT. Estos dispositivos, a menudo ubicados en lugares de difícil acceso (montañas, árboles, semáforos, etc.), recopilan datos y los transmiten a través de redes de comunicación. Reducir el consumo energético de estos sistemas conlleva numerosos beneficios, incluyendo una mayor autonomía del dispositivo, una reducción significativa en los costos de las baterías y pilas, y una disminución de la frecuencia de mantenimiento, lo que a su vez reduce los costes de personal y desplazamientos. Se menciona la posibilidad de utilizar placas solares más pequeñas en dispositivos alimentados por esta fuente de energía. El aumento de la autonomía se traduce directamente en un valor añadido del producto, al reducir los gastos de gestión asociados al reemplazo frecuente de baterías. En resumen, este apartado establece el contexto del problema: la necesidad urgente de soluciones de bajo consumo para mejorar la viabilidad y el rendimiento de los dispositivos IoT en entornos diversos.
2. Los Dispositivos IoT y sus Requerimientos Energéticos
La sección describe las características típicas de los dispositivos IoT, enfatizando su funcionamiento autónomo, es decir, alimentados por baterías o placas solares sin conexión a la red eléctrica. Se destaca la importancia del coste y el tamaño de las baterías o pilas como factores limitantes en el diseño de estos dispositivos. Se presenta el ejemplo de una caseta para pájaros conectada a internet, que realiza mediciones de temperatura y humedad cada diez minutos, cuenta las entradas y salidas de pájaros y transmite datos por radio cada hora. Este ejemplo ilustra cómo, durante largos periodos entre eventos relevantes, el dispositivo permanece inactivo, consumiendo energía innecesariamente. Se introduce la idea de optimizar el consumo mediante el uso de modos de bajo consumo del procesador, haciendo énfasis en la necesidad de reducir el tiempo de actividad de los componentes para minimizar el consumo energético global. Se establece la necesidad de un sistema eficiente que pueda optimizar el consumo energético de dispositivos IoT minimizando el tiempo que permanecen encendidos.
3. El Problema del Consumo en Placas de Desarrollo y una Solución Propuesta
Se expone el desafío de reducir el consumo energético en placas de desarrollo, que suelen tener numerosos periféricos que no se pueden desconectar y que consumen energía continuamente. Se presenta un sistema que utiliza un microcontrolador de bajo consumo para gestionar la alimentación de la placa de desarrollo. Este microcontrolador se encarga de las tareas simples y sólo alimenta la placa cuando se necesitan tareas más complejas. De esta forma, se minimiza el tiempo que la placa permanece encendida, reduciendo el consumo total de energía. Se propone el uso del microcontrolador ATTiny13A, conocido por su bajo coste, bajo consumo y amplia aceptación en la comunidad de desarrolladores. Se describe el ejemplo de un LED de encendido que consume energía continuamente. Para reducir este consumo, se propone conectarlo a un pin de entrada/salida del microcontrolador y encenderlo brevemente mediante software, lo que disminuye el consumo total y proporciona una indicación visual de que el sistema está operativo. En definitiva, se describe la problemática y se presenta una solución basada en un microcontrolador que gestiona de manera inteligente el consumo de energía de la placa de desarrollo.
4. El TTGO LoRa32 v2.0 Características y Limitaciones
Se describe la placa de desarrollo TTGO LoRa32 v2.0, especificando sus características como su bajo coste (desde 16€ en AliExpress), la inclusión de un ESP32 (un SoC de Espressif con dos procesadores de 32 bits, memoria ROM y SRAM, Wi-Fi y Bluetooth integrados), y una variedad de periféricos que incluyen pantalla OLED, puerto USB, cargador de baterías y módulo de radio LoRa. Se destaca su popularidad entre la comunidad maker por su versatilidad y sus librerías de licencia abierta. Sin embargo, se enfatiza su deficiencia en términos de bajo consumo, a pesar de que el ESP32 cuenta con modos low power que, según el manual, reducen la intensidad hasta 10 µA. La conclusión es que, a pesar de las características atractivas del TTGO, es necesario optimizar su consumo energético, ya que sus periféricos continúan consumiendo energía considerable incluso en modo de bajo consumo. Esto establece el dispositivo de prueba principal para el resto del estudio.
II.
Se analizó el consumo de la placa TTGO LoRa32 v2.0 durante diferentes tareas típicas de un dispositivo IoT: envío de datos por radio, toma de muestras de sensores y modo de bajo consumo (sleep mode). Se empleó un vatímetro WT210 y una fuente de alimentación regulable TTi QL355 para medir la intensidad y calcular la potencia en cada fase. Los resultados revelaron que el modo de bajo consumo del ESP32 es crucial para la eficiencia energética, aunque el resto de los periféricos continúan consumiendo energía. Se realizaron pruebas reduciendo la demanda de corriente en cada tarea al 10% para determinar la influencia de cada una en el consumo total. El análisis mostró que la optimización del modo sleep mode tiene el mayor impacto en la reducción de la potencia media.
1. Metodología de Análisis del Consumo
El análisis del consumo energético de la placa TTGO LoRa32 v2.0 se llevó a cabo en un entorno de laboratorio, utilizando un vatímetro WT210 y una fuente de alimentación regulable TTi QL355. Esto permitió medir con precisión la intensidad de corriente que circulaba por la placa en diferentes momentos, y calcular la potencia consumida, ya que el voltaje de alimentación se mantuvo constante. Se analizó el consumo durante tareas representativas de un dispositivo IoT: transmisión de datos por radio, toma de muestras de sensores, y el modo de bajo consumo (sleep mode). El objetivo era identificar la repercusión del consumo de cada tarea en el consumo energético total del sistema, para enfocar los esfuerzos de optimización en las áreas más relevantes. La potencia se calculó multiplicando la intensidad por el voltaje de alimentación (3.3V). Se midieron las intensidades en las tres fases: transmisión por radio, toma de muestras y modo sleep, con el dispositivo alimentado a 3.3V. Este proceso proporciona datos base para la evaluación de la eficiencia energética y para la posterior optimización del consumo.
2. Experimentos y Resultados Iniciales
Para determinar la contribución de cada tarea al consumo energético total, se realizaron tres experimentos. En cada uno, se redujo la demanda de corriente de una tarea al 10% y se calculó la potencia media resultante. El primer experimento redujo la corriente durante la transmisión por radio, el segundo durante la toma de muestras, y el tercero durante el modo sleep mode. Se encontró que reducir la intensidad durante la transmisión por radio (40 milisegundos) tuvo un impacto insignificante en la potencia media total, dado el corto tiempo que dura esta tarea en comparación con un ciclo completo (diez minutos). Similarmente, la reducción de la intensidad durante la toma de muestras tuvo una variación apreciable, pero menor que la observada al reducir la intensidad en el modo sleep mode. Este último experimento mostró una disminución notable en la potencia media (más de 7 veces menor), indicando que el modo sleep mode es el factor más significativo en el consumo energético total del sistema, debido a la gran diferencia de tiempo entre este modo y las demás tareas.
3. Caso de Uso y Consideraciones de Memoria
Se presenta un caso de uso: un sistema IoT dentro de una caseta para pájaros que monitoriza el hábitat del animal. El sistema mide la temperatura y la humedad cada minuto, y registra las entradas y salidas de los pájaros de forma asíncrona. Transmite los datos por radio cada diez minutos. Este escenario ejemplifica el comportamiento típico de los dispositivos IoT, con periodos de actividad seguidos de periodos de inactividad. El documento destaca la necesidad de almacenamiento de variables durante la ejecución del programa (estado del programa, número de secuencia de trama, etc.). Se explica la dificultad de usar la memoria flash para este propósito debido a su lentitud, alto consumo energético y número limitado de ciclos de borrado. Esto subraya la necesidad de diseñar un sistema eficiente de gestión de energía que minimice las escrituras en memoria no volátil para reducir el consumo y prolongar la vida útil del dispositivo.
III.Implementación de un Sistema de Gestión de Alimentación con ATTiny13A
Para minimizar el consumo, se diseñó e implementó un sistema de gestión de energía basado en un microcontrolador de bajo consumo ATTiny13A. Este microcontrolador, con un coste aproximado de 0.8€ (incluyendo envío desde Aliexpress), controla la alimentación de la placa TTGO LoRa32 v2.0 mediante un transistor bipolar S9018. El ATTiny13A solo alimenta la placa cuando es necesario realizar tareas complejas, minimizando el tiempo que permanece encendida. La comunicación entre el ATTiny13A y el TTGO LoRa32 v2.0 se realiza a través de una interfaz UART. La programación se realizó utilizando C y ensamblador para optimizar el uso de la memoria flash de 1KB del ATTiny13A. Se utilizaron interrupciones y el Watchdog Timer para la gestión de eventos asíncronos y el control del tiempo en modo de bajo consumo. El sistema utiliza un protocolo de comunicación personalizado para minimizar el tamaño de los mensajes. El uso de Pin Change Interrupts permite despertar al microcontrolador desde el modo de bajo consumo (power-down mode
). Se emplean los registros I0 e I1 para controlar las interrupciones INT0 e INT1.
1. El Microcontrolador ATTiny13A Características y Selección
La implementación del sistema de gestión de energía se basa en el microcontrolador ATTiny13A, elegido por su bajo coste (alrededor de 0.8€ en AliExpress, incluyendo gastos de envío), su bajo consumo (del orden de µA), y su compatibilidad con Arduino. A pesar de sus limitaciones – 8 pines, 1KB de memoria flash, sin puerto USB y dificultad para programar–, su reducido consumo lo convierte en una opción ideal para este proyecto enfocado en la eficiencia energética. El ATTiny13A, un microcontrolador RISC de AVR de Microchip (anteriormente Atmel), opera con un núcleo de hasta 9.6MHz y cuenta con un Watchdog timer y varios modos de bajo consumo, operando entre 1.8V y 5.5V. Su reducido tamaño y capacidad de bajo consumo fueron decisivos para su elección como controlador del sistema de alimentación, permitiendo mantener un consumo mínimo cuando el dispositivo principal está apagado.
2. Diseño del Sistema Controlador y Consideraciones de Hardware
El ATTiny13A, con sus 8 pines, presenta limitaciones en la cantidad de periféricos que se pueden conectar. Dos pines se utilizan para la alimentación y uno para el reset, dejando solo 5 pines libres. Uno de estos pines se utiliza para controlar el transistor (S9018) que gestiona la alimentación del dispositivo IoT, y otros dos para la comunicación (envío y recepción). Los dos pines restantes se reservan para la gestión de interrupciones, permitiendo la respuesta a eventos asíncronos. Este diseño, a pesar de sus limitaciones en cuanto a pines disponibles, resulta eficiente en términos de consumo energético. El hecho de que el ATTiny13A permanezca encendido constantemente se justifica por su mínimo consumo de energía, compensando la necesidad de controlar la alimentación del dispositivo IoT. Este diseño se centra en la eficiencia energética por encima de una mayor complejidad o la adición de periféricos. La selección del transistor bipolar de efecto de campo NPN S9018, que permite un control preciso del encendido y apagado del dispositivo IoT, completa la arquitectura de hardware.
3. Programación del Sistema Controlador y Estrategias de Optimización
La limitada memoria del ATTiny13A (1KB) impone restricciones en la programación. Se optó por programar directamente en lenguaje C y ensamblador para minimizar el tamaño del código y el consumo de memoria. Se evitó el uso de entornos de programación como Arduino IDE, los cuales añaden código extra, para mantener un mayor control y reducir el tamaño del programa. El sistema controlador dispone de una interfaz con tres operaciones: leer datos, escribir datos y ordenar el corte de alimentación del dispositivo IoT. Para ahorrar espacio y reducir el tamaño de los mensajes, el dispositivo IoT configura inicialmente el tiempo de inactividad y el control de interrupciones. Los cambios en esta configuración son notificados posteriormente por el dispositivo IoT. Se utilizan los registros I0 e I1 (bytes 3 y 4) para indicar al controlador si debe estar pendiente de las líneas de interrupción INT0 e INT1. Un valor de 0 indica que no debe monitorizar dicha interrupción, mientras que un valor 'n' distinto de 0 indica que encenderá el dispositivo IoT cuando se alcancen 'n' interrupciones en esa línea. Este diseño permite una comunicación eficiente, minimizando el consumo de energía y optimizando el uso de la limitada memoria del microcontrolador.
4. Funcionamiento del Sistema y Protocolo de Comunicación
El sistema se inicia con el controlador encendiendo el dispositivo IoT y esperando órdenes. El dispositivo IoT envía la primera orden de operación, y el controlador responde con un ACK o con los datos solicitados (operación Read). Mientras la orden sea Read o Write, el controlador ejecuta la orden y espera una nueva. Al recibir la orden Sleep, se apaga el dispositivo IoT y el controlador entra en modo de bajo consumo. Este protocolo de comunicación, diseñado para minimizar el tamaño de los mensajes, es esencial para la eficiencia energética del sistema. El dispositivo IoT indica al controlador el tiempo de inactividad deseado y si debe estar atento a las líneas de interrupción. La eficiencia del protocolo reduce la cantidad de datos transmitidos y, por tanto, el consumo. El controlador maneja el tiempo de espera y las interrupciones, activando el dispositivo IoT solo cuando sea necesario. Esta arquitectura asegura un consumo energético mínimo, permitiendo una larga vida útil de la batería del dispositivo IoT.
IV.Resultados y Conclusiones Mejora en la Eficiencia Energética
El sistema implementado logró reducir el consumo energético en 23 veces en comparación con la placa TTGO LoRa32 v2.0 original. Esto se traduce en una considerable mejora en la autonomía de la batería. Por ejemplo, si la placa original con dos pilas alcalinas AA de 2800mAh tenía una autonomía de casi dos meses, el sistema implementado proporciona una autonomía de aproximadamente 3 años y 8 meses. La implementación, incluyendo el ATTiny13A y el transistor, tiene un coste aproximado de 1€, lo que demuestra la viabilidad de una solución de bajo coste y alta eficiencia energética para dispositivos IoT. La utilización del protocolo UART para la depuración fue clave para el éxito del proyecto.
1. Implementación y Programación del Sistema
La implementación del sistema de gestión de energía se describe, haciendo hincapié en la configuración y programación del microcontrolador ATTiny13A. Se menciona que el dispositivo IoT podría ser cualquier dispositivo que cumpla con el protocolo de comunicación diseñado. La herramienta AVRdude se utilizó para cargar el programa en el ATTiny13A usando programación ISP. El programa principal se compone de tres módulos: comunicación de bajo nivel (envío y recepción de bytes), operaciones (gestión de registros y ejecución de tareas), y gestión de interrupciones y tiempo en modo bajo consumo. La programación se realiza en C y ensamblador para optimizar el uso de la memoria flash de 1KB del ATTiny13A, buscando minimizar el tamaño del código para que quepa en la memoria disponible. El módulo de operaciones, el más extenso, incluye funciones para las tres operaciones principales: Read, Write y Sleep. La operación Sleep apaga el dispositivo IoT y configura el tiempo y las interrupciones para el modo de bajo consumo. Este módulo incluye la gestión de las rutinas de interrupción.
2. Modos de Bajo Consumo y Gestión de Interrupciones
El ATTiny13A ofrece varios modos de bajo consumo, y se selecciona aquel que minimiza el consumo energético mientras permite al controlador realizar todas sus funciones: contar el tiempo, mantener la memoria SRAM y responder a interrupciones. Se explica la importancia de configurar previamente el timer del Watchdog y las interrupciones, ya que de lo contrario, el único modo de despertar al procesador del modo de bajo consumo (power-down mode) es reiniciándolo. La configuración previa es realizada por el dispositivo IoT, indicando el tiempo de inactividad y las líneas de interrupción a monitorizar. Las interrupciones utilizadas son las pin change interrupts, sensibles tanto a los flancos de subida como de bajada de un pin, las únicas capaces de despertar al procesador del modo de más bajo consumo. El Watchdog Timer, con su oscilador de 128kHz, se configura para generar interrupciones que despiertan el procesador del modo Power-Down. Esta configuración se realiza modificando los bits de un registro que definen el número de ticks del contador del timer.
3. Comunicación UART y Depuración del Sistema
La comunicación entre el ATTiny13A y el dispositivo IoT se realiza mediante el protocolo UART, enviando bytes por un solo bit de conexión, conmutado entre alto y bajo voltaje. Se explica el funcionamiento del protocolo, incluyendo los bits de start y stop, los 8 bits de datos, y el bit opcional de paridad. Debido a la frecuencia del procesador (128kHz), se selecciona una tasa de baudios baja y estandarizada (4800). Se describe el proceso de depuración, que se realizó mediante el propio protocolo UART implementado en software en el ATTiny13A. Se insertaron líneas de código en puntos críticos para mostrar los valores de las variables o mensajes de depuración. Este proceso permitió verificar el funcionamiento del sistema en diferentes escenarios y realizar las correcciones necesarias. Para la depuración, se muestra un diagrama que ilustra las conexiones entre el ATTiny13A, el TTGO y un Arduino UNO. Se realizaron numerosas pruebas con casos extremos para asegurar un correcto funcionamiento. El dispositivo IoT puede cambiar el tiempo de inactividad sobrescribiendo los valores en memoria T0 y T1.
4. Resultados Finales y Análisis del Consumo
Una vez comprobados los requisitos funcionales y no funcionales, se mide el consumo energético final del sistema implementado usando el vatímetro y la fuente de alimentación regulable, comparándolo con el consumo del sistema IoT original. Se alimentó el sistema a diferentes voltajes para analizar cómo varía la intensidad y el funcionamiento. El sistema implementado, con un programa de prueba que simula el comportamiento típico de un sistema IoT (similar al de la caseta de pájaros), toma muestras y envía datos cada diez minutos, apagando el dispositivo IoT cuando no es necesario. El análisis final muestra una reducción del consumo energético 23 veces mayor en comparación con la placa original. Con pilas alcalinas AA de 2800mAh, la autonomía pasa de casi dos meses a aproximadamente 3 años y 8 meses. El bajo coste del sistema (alrededor de 1€ para el ATTiny13A y el transistor) se destaca como una ventaja significativa. La facilidad de reemplazar el dispositivo IoT con otros compatibles con el protocolo diseñado se menciona como otra de las ventajas.