Ich verwende Jeenodes von Jeelabs, um Daten wie Temperatur, Licht, Feuchtigkeit und Bewegung zu erfassen. Jetzt versuche ich, den Gas- und Wasserverbrauch mit Reedschaltern zu erfassen (die Zähler erzeugen x Anzahl von Impulsen pro kWh. Wie schlägst du vor, dies zu erreichen?
Die wichtigsten Fragen sind:
Wie soll ich die Pulszahl lokal speichern? (EEPROM? Ich kann nicht einfach jedes Mal übertragen, wenn ein Impuls auftritt, da einige Pakete verloren gehen könnten – es könnte zu Netzwerkausfällen usw. kommen.) Wie oft sollte ich Daten übertragen? Wie soll ich die Pulszahl zentral speichern? (nur die kumulierte Zahl? die ich dann mit dem Wert zu einem bestimmten Zeitpunkt vergleichen muss, um den Verbrauch zwischen 2 Daten/Zeiten zu ermitteln?)
Eine zu 99 % praktikable Lösung liegt wahrscheinlich irgendwo zwischen den absoluten Werten. Zum Beispiel:
Sie könnten eine aufsteigende Zahl übertragen. Der Empfänger kann einige Übertragungen verpassen, solange er eine spätere erhält. Wenn es eine spätere Übertragung erhält, die von (nahezu) null neu startet, kann es davon ausgehen, dass der Sender aus- und wieder eingeschaltet wurde, und kann die historisch empfangene Zählung zu der neuen hinzufügen. Sie können die Zeitdauer jeder Lücke messen und die Anzahl der fehlenden Zählungen während des Stromausfalls entweder basierend auf der Rate vor dem Verlust oder aus einem vergangenen Zeitraum schätzen, der plausibel ähnlich sein könnte (d. h. dieselbe Zeit am selben Tag in den vorangegangenen Wochen). , oder von ein paar Wochen vor einem Jahr usw.). Dies kann sogar noch besser funktionieren, wenn Sie die Korrektur im Nachhinein vornehmen, um den Verbrauch über längere Zeiträume auszugleichen (dh Ausfall von einigen Stunden, Festlegen der Gesamtsumme für den Tag, um ähnliche Tage abzugleichen, anstatt die Stunde, um ähnliche Stunden abzugleichen).
Sie könnten den Zählwert regelmäßig im EEPROM speichern, wenn Sie dies bei schönen runden Zahlen tun, könnten Sie dies mit relativ wenigen Bits tun, da Sie nur die signifikanten benötigen würden. Beim Aus- und Wiedereinschalten können Sie die Zählung bei der letzten gespeicherten Zahl neu starten. Der Empfänger würde sehen, dass die Zählung bei einer etwas niedrigeren Zahl als zuvor fortgesetzt wird, und könnte die Differenz wieder zu den empfangenen Zahlen hinzufügen.
Da die meisten Stromausfälle kurz sind (abgesehen von einigen jüngsten Ausnahmen), könnten Sie eine Batteriesicherung verwenden.
Wenn die Messgeräte über ein Display verfügen, könnten Sie einen ganz anderen Ansatz wählen und eine Kamera auf sie richten und die Bilder mit optischer Zeichenerkennung verwenden.
Kein System ist perfekt – im Extremfall kann eine intelligente manuelle Korrektur erforderlich sein.
Wasserverbrauch in kWh???
Die Häufigkeit der Übermittlung Ihrer Daten richtet sich nach der Pulsfrequenz und der Aktualität Ihrer Informationen. Es macht nicht viel Sinn, jede Stunde ein Update zu senden, wenn Sie im Durchschnitt nur 1 Impuls pro Stunde erhalten. In diesem Fall reicht einmal täglich oder so. Sie könnten jedes Mal senden, wenn Sie beispielsweise 10 Impulse gezählt haben, aber dann senden Sie nichts, wenn Sie eine Woche weg sind, und der Empfänger möchte möglicherweise häufigere Updates. Eine bessere Alternative ist daher das Versenden in festen Zeitintervallen, also täglich um 12 Uhr und um Mitternacht.
Für die Zuverlässigkeit der Datenübertragung haben Sie mehrere Möglichkeiten. Die RFM12B- Funkmodule sind Transceiver, sodass Sie den Empfänger eine Bestätigung senden lassen können. Nicht gerade kompliziert, aber es geht noch einfacher, mit Einwegkommunikation. Das Wort ist Redundanz. Viel davon. Das ist oft ein Schimpfwort, aber hier ist unser Datenvolumen so gering, dass etwas Redundanz nicht schaden kann; es würde sich wohl kaum lohnen den sender einzuschalten um zwei bytes zu senden, oder?
Jetzt ist es keine gute Idee, 5 Kopien derselben Daten in derselben Übertragung zu senden. Die Redundanz nützt nichts, wenn die komplette Übertragung gestaut wird. Folgendes tun Sie: Die N-te Übertragung sendet Folgendes:
• der Zählerwert N (1 Byte genügt) • die N-4-ten Daten
• die N-3-ten Daten
• die N-2-ten Daten
• die N-1-ten Daten
• die neuen Daten
• Hamming-ECC
Ich würde kumulative Daten senden, zum Beispiel 16-Bit-Zahlen. Wenn Sie einen Puls pro 0,1 m haben Wasser läuft nach ein paar Jahren über, aber der Empfänger sollte damit kein Problem haben.
Dadurch erhalten Sie eine Nutzlast von nur wenigen Dutzend Bytes, stellen jedoch sicher, dass alle Daten empfangen werden, selbst wenn 4 aufeinanderfolgende Übertragungen verloren gehen. Wenn Sie dadurch besser schlafen, können Sie dies bei Bedarf immer noch mit einer Bestätigung und einer erneuten Übertragung kombinieren.
Der Mikrocontroller hat fast nichts zu tun: Halten Sie einen Timer, um die Zeit bis zur nächsten Übertragung zu halten, und zählen Sie eingehende Impulse. Sie können es mit einem billigen 32,768-kHz-Quarz betreiben. Selbst ohne Verwendung der Energiesparmodi verbraucht ein MSP430F1101A nur ein paar vernachlässigbare µA; Ihr Netzteil verbraucht ein Vielfaches davon. Schalten Sie den Sender nur zweimal täglich ein, um Ihre Daten zu senden.
Ihr Mikrocontroller muss monatelang ununterbrochen laufen, und dann müssen Sie mit Stromausfällen rechnen. Wo ich lebe, sind sie selten; Die letzte stammt von 3 Jahren und dauerte 15 Minuten, aber mir wurde gesagt, dass sie in ländlichen Gebieten in den USA häufiger vorkommen, wo es viele Freileitungen gibt. Wie auch immer, Sie möchten eine Batteriesicherung, um den Controller während eines Stromausfalls am Laufen zu halten. Eine CR2032 Zelle und ein MSP430 reicht für die Ewigkeit. ODER den Ausgang der Batterie mit der Netzstromversorgung (3,3 V) mit ein paar Dioden. Verschieben Sie Übertragungen im Akkubetrieb.
Es ist nicht erforderlich, die Zähler im EEPROM zu speichern, sondern nur im RAM.
Majenko
Lee Tickett
Majenko
Lee Tickett
Majenko
Puma