Almacenamiento de datos a corto plazo entre ciclos de activación

He estado trabajando en hacer un sistema de jardinería usando un Arduino o un ESP32. Para conservar energía, haré que la MCU duerma durante largos períodos de tiempo (planeaba usar interrupciones de cambio de pin para activarla). Sería muy útil registrar datos de luz solar y humedad del suelo a lo largo del tiempo, pero sin tener que activar la MCU cada 10 minutos más o menos para registrarlos. Entonces, pensé en almacenar o acumular estos datos en un área de almacenamiento temporal hasta que la MCU se despertara y registrara los datos (probablemente en un servidor web).

Estaba pensando en usar una solución simple, como medidores de electricidad analógicos en las casas, pero no estoy seguro de si esto es factible. EEPROM también parece una opción, pero eso podría ser excesivo.

Entonces, ¿existe un buen método de almacenamiento simple a corto plazo que pueda usar para alargar la cantidad de tiempo entre el momento en que la MCU necesita registrar los datos? Gracias por su ayuda.

Para Arduino Nano, la corriente de los estados de suspensión puede ser inferior a 6 uA (necesita algunas modificaciones leves o construir un '328 desnudo), por lo que no estoy seguro de ver ningún problema en activar la MCU cada 10 minutos más o menos por solo un unos cientos de EE.UU. Saldría con la tasa de autodescarga de casi cualquier batería que elija usar. Almacenar datos en EEProm solo tendría sentido si tiene muchos datos, pero si solo necesita un kbyte más o menos, podría usar Ram ya que se mantiene en estado de suspensión. También es fácil agregar una EEProm I2C para obtener mucho espacio de almacenamiento si realmente lo necesita.

Respuestas (2)

Hice un registrador de temperatura y humedad hace un tiempo. Usó un Atmega328P en una placa personalizada. El registro se realiza en una tarjeta SD con una placa de interfaz de cambio de nivel.

Foto del registrador de temperatura

Funciona con 3 pilas AA. Creo que solo he cambiado las pilas una vez en los últimos 3,5 años.

La pantalla LED solo se usa ocasionalmente, para indicarle la temperatura en este momento si presiona el interruptor rojo (además de otras cosas como la fecha/hora, el recuento de escrituras en la tarjeta SD y la cantidad de errores).

Según mis cálculos en esa página, cuando está dormido, usa 6 µA, y promediando el tiempo necesario para escribir en la tarjeta SD, agrega 36 µA adicionales. Aún así, 42 µA está por debajo de la tasa de autodescarga de las baterías.

De vez en cuando saco la tarjeta SD de su soporte y descargo los datos resultantes.

El esquema general está aquí:

Esquema del registrador de temperatura

El código y otros detalles están disponibles en la página que mencioné anteriormente .

Si la mano de @NickGammon te asusta, puedes conseguir un Arduino Pro Mini y una placa Max7219 en Ebay o Ali Express. El total debería costarle menos de $ 10 y ahorrar mucho potencial de error al hacer este tipo de cableado. Y, por supuesto, la adición de una tarjeta SDCard le brinda almacenamiento esencialmente ilimitado.
Fue divertido hacerlo, pero estoy bastante de acuerdo. También puedes conseguir tableros de reloj. Estoy planeando hacer una placa de circuito adecuada cuando tenga mi máquina CNC.
@JackCreasey: puede que no sea obvio en la foto, pero en realidad es una de esas placas MAX7219 allí. El chip está debajo. Son una ganga. La placa, el chip y los LED de eBay son más baratos que los componentes individuales.
Solo como una pista, uso mi CNC para hacer zócalos todo el tiempo, pero sigo usando placas Arduino (principalmente de Nano) como componentes. Reduce la cantidad de diseño que necesito hacer. No he diseñado una placa SMD completa desde que obtuve mi CNC hace 3 años.
¡Suena como una gran idea! No puedo esperar para probar esto. :)

Si desea el método absolutamente más bajo de energía para registrar datos de vez en cuando, entonces querrá considerar cuidadosamente todos los pasos necesarios.

La CPU de menor potencia que conozco es la MSP430 de TI (originalmente de una empresa en Alemania que compró TI). Puede ejecutar un reloj en tiempo real en aproximadamente 1 m A y vuelva a empezar desde ese estado de suspensión a la operación de velocidad completa en 1 m s . Haces tu pequeño trabajo y luego vuelves a apagar. No hay nada parecido que yo sepa. (Me encanta Microchip por la forma en que me apoyan [mejor que TI], pero sus dispositivos de "nanovatios" ni siquiera se acercan).

Lo siguiente es el almacenamiento. La memoria no volátil con capacidad de escritura absolutamente más baja que conozco es FRAM (o FeRAM). Afortunadamente, TI ha presentado algunos MSP430 con FRAM en su interior. Así que esto hace que las cosas sean aún mejores. El problema aquí serán las limitaciones en la cantidad de FRAM interna que puedes lograr en los dispositivos actuales.

Entonces, el siguiente problema es la persistencia de los datos capturados en un dispositivo de almacenamiento persistente más grande. Ha sugerido el uso de un servidor web, supongo que pensando que esto podría proporcionar acceso a almacenamiento flash a gran escala. Sin embargo, también puede conectar almacenamiento flash al MSP430 con FRAM y bloquear periódicamente las transferencias de escritura desde el FRAM al dispositivo de almacenamiento flash. Estos consumirían energía. Pero sólo tan a menudo como sea absolutamente necesario.

Por otro lado, podrías considerar las comunicaciones Wifi. Pero los transmisores y los receptores también toman energía. Es posible que desee considerar varios dispositivos para ese propósito (y aquí, podría usar un ESP32 que activaría de vez en cuando usando el MSP430 para hacer eso) para transmitir bloques a un proceso que se ejecuta en una PC interna conectada (o similar). Esta opción podría compararse con la opción de flash conectado que mencioné en el párrafo anterior, para la energía total por muestra.

Sin embargo, no creo que pueda construir un dispositivo de menor potencia para realizar las capturas periódicas de datos que simplemente usar un MSP430 con FRAM y su VLO o reloj de 32 kHz. Es probable que cualquier dispositivo diseñado a medida que utilice circuitos integrados COTS consuma más energía por muestra. (Aunque me interesaría ver un ejemplo que lo haga mejor).

Gracias por su ayuda, me aseguraré de mirar el MSP430.
Sugerir dos MCU (para reducir la potencia) parece un poco exagerado y bastante innecesario para este tipo de aplicación simple.
@JackCreasey Probablemente compraría una FRAM externa, si fuera necesario. Pero también creo que estos dispositivos ESP son muy baratos y funcionan bien para Wifi sin requerir mucho conocimiento, así que tomé en cuenta ese aspecto. Eso es todo.
FRAM ciertamente tiene su lugar donde se necesita alta velocidad, pero no lo postularía en una aplicación de registro de datos. Es un tamaño de datos caro y pequeño en comparación con EEProm para montaje de chip o incluso tarjeta SDC para extraíble.
@JackCreasey sí. Estoy de acuerdo con el costo. Pero no tengo NINGUNA información sobre el tamaño de los datos del OP ni información sobre los procedimientos que el OP está dispuesto a aceptar para las transferencias de esa información. Y mucho menos el presupuesto. Sin eso, ninguno de nosotros puede decir mucho.