Estoy usando jeenodes de jeelabs para capturar datos como temperatura, luz, humedad y movimiento. Ahora estoy buscando capturar el consumo de gas y agua usando interruptores de láminas (los medidores producen una cantidad x de pulsos por kWh. ¿Cómo sugiere que lo logre?
Las preguntas principales son:
¿Cómo debo almacenar el conteo de pulsos localmente? (¿EEPROM? No puedo simplemente transmitir cada vez que ocurre un pulso porque algunos paquetes pueden perderse, puede haber interrupciones en la red, etc.) ¿Con qué frecuencia debo transmitir datos? ¿Cómo debo almacenar el recuento de pulsos de forma centralizada? (¿solo la cifra acumulada? ¿Qué luego tengo que comparar con el valor en un momento dado para determinar el consumo entre 2 fechas/horas?)
Es probable que una solución factible al 99% se encuentre en algún lugar entre los absolutos. Por ejemplo:
Podrías transmitir un conteo incremental. El receptor puede perder algunas transmisiones siempre que reciba una posterior. Si obtiene una transmisión posterior que se reinicia desde (casi) cero, puede asumir que el transmisor ha sido reiniciado y puede agregar el conteo recibido históricamente al nuevo. Puede medir la duración de cualquier intervalo y estimar la cantidad de conteos perdidos durante la pérdida de energía en función de la tasa antes de la pérdida o de un período anterior que podría ser plausiblemente similar (es decir, a la misma hora del mismo día en las semanas anteriores). , o de un período de algunas semanas hace un año, etc.). Esto puede funcionar incluso mejor si realiza la corrección después del hecho para igualar el consumo durante períodos más largos (es decir, interrupción de unas pocas horas, ajuste el total del día para que coincida con días similares, en lugar de la hora para que coincida con horas similares).
Puede almacenar periódicamente el valor de conteo en EEPROM, si lo hace en números redondos agradables, podría hacerlo usando relativamente pocos bits, ya que solo necesitaría los significativos. Al reiniciar, puede reiniciar el conteo en el último número guardado. El receptor vería que el conteo se reanuda en un número ligeramente más bajo que antes y podría volver a agregar la diferencia a los números recibidos.
Como la mayoría de los cortes de energía son breves (aparte de algunas excepciones recientes), puede usar una batería de respaldo.
Si los medidores tienen una pantalla, puede adoptar un enfoque completamente diferente y apuntar una cámara hacia ellos y usar el reconocimiento óptico de caracteres en las imágenes.
Ningún sistema es perfecto; en casos extremos, puede ser necesaria una corrección manual inteligente.
Consumo de agua en kWh???
La frecuencia para transmitir sus datos dependerá de la frecuencia del pulso y de cuán actualizada debe estar su información. No tiene mucho sentido enviar una actualización cada hora si obtiene en promedio solo 1 pulso por hora. En ese caso, una vez al día más o menos servirá. Puede enviar cada vez que haya contado, digamos, 10 pulsos, pero no enviará nada si está fuera durante una semana, y el receptor puede querer actualizaciones más frecuentes. Por lo tanto, una mejor alternativa es enviar a intervalos de tiempo fijos, como todos los días al mediodía y a la medianoche.
Para la confiabilidad de la transferencia de datos, tiene varias opciones. Los módulos de radio RFM12B son transceptores, por lo que puede dejar que el receptor envíe un reconocimiento. No es exactamente complicado, pero puede ser aún más simple, con una comunicación unidireccional. La palabra es redundancia. Montones. A menudo es una mala palabra, pero aquí nuestro volumen de datos es tan bajo que cierta redundancia no hará ningún daño; difícilmente valdría la pena encender el transmisor para enviar dos bytes, ¿verdad?
Ahora enviar 5 copias de los mismos datos en la misma transmisión no es una buena idea. La redundancia no sirve de nada si la transmisión completa se atasca. Esto es lo que debe hacer: la N-ésima transmisión envía lo siguiente:
• el valor N del contador (1 byte servirá) • los datos N-4
• los datos N-3
• los datos N-2
• los datos N-1
• los datos nuevos
• Hamming ECC
Enviaría datos acumulativos, por ejemplo, números de 16 bits. Si tienes un pulso por 0,1 m de agua tendrá un desbordamiento después de un par de años, pero el receptor no debería tener problemas con eso.
Eso le dará una carga útil de solo unas pocas docenas de bytes, pero le asegurará que todos los datos se reciban incluso cuando se pierdan 4 transmisiones consecutivas. Si te hace dormir mejor, aún puedes combinar esto con un reconocimiento y una retransmisión si es necesario.
El microcontrolador no tendrá casi nada que hacer: mantenga un temporizador para mantener el tiempo hasta la próxima transmisión y cuente los pulsos entrantes. Puede ejecutarlo con un cristal barato de 32.768 kHz. Incluso sin usar los modos de bajo consumo, un MSP430F1101A solo usará un par insignificante de µA; su fuente de alimentación consumirá un múltiplo de eso. Solo encienda el transmisor dos veces al día para enviar sus datos.
Tu microcontrolador tendrá que funcionar continuamente durante meses y luego tendrás que tener en cuenta los cortes de energía. Donde yo vivo son raros; el último data de hace 3 años y duró 15 minutos, pero me han dicho que son más frecuentes en las zonas rurales de los EE. UU. donde hay muchas líneas eléctricas aéreas. De todos modos, desea una batería de respaldo para mantener el controlador funcionando durante un corte de energía. Una celda CR2032 y una MSP430 es suficiente para la eternidad. O la salida de la batería con la fuente de alimentación de red (3.3V) con un par de diodos. Posponga las transmisiones cuando funcione con batería.
No hay necesidad de almacenar los contadores en la EEPROM, solo manténgalos en la RAM.
Majenko
Lee Boleto
Majenko
Lee Boleto
Majenko
Puma