Implementierung einer periodischen Sensordatenspeicherung und GPRS-Übertragung

Hardware-Setup

Ich verwende benutzerdefinierte Hardware, die von einem TIVA TM4C (insbesondere TM4C123GXL ) angetrieben wird, um ein Microgrid mit Batteriespeicher, Sonnenkollektoren, vier durch Relais gesteuerte Lasten und ein SIM900 GSM GPRS-Modul zu steuern. Benutzer können Schaltflächen drücken, um Relais umzuschalten, oder eine SMS senden, um Relais umzuschalten.

Drei ADCs zeichnen die Batteriespannung, den Gesamtlaststrom und die Gesamtlastleistung auf.

Ich schreibe C-Code mit Keil u4.

Was ich versuche zu tun

  • Protokollieren Sie die Relaiszustände und ADC-Spannungen in regelmäßigen Abständen ( einmal pro Minute? ) sowie jedes Mal, wenn ein Benutzer eine Last manuell umschaltet
  • Senden Sie regelmäßig ( einmal pro Stunde? ) die gesammelten Daten über GPRS an einen http-Server

Diese Daten können verwendet werden, um sicherzustellen, dass der Microgrid-Algorithmus optimal funktioniert und die Verfügbarkeit von Solarressourcen, den Batteriezustand, Benutzereingaben usw. richtig handhabt.

Meine Frage

  1. Sind diese Zeitintervalle sinnvoll? Soll ich mehr oder weniger oft loggen? Mehr oder weniger oft senden?
  2. Sollte ich EEPROM verwenden, um die Werte vor der Übertragung zu speichern, oder sie nur im Speicher behalten, da es sich um ein kurzes Zeitintervall handelt?
  3. Was ist der beste Weg, um Timer zu implementieren? Ich habe mehrere 32-Bit-Timer mit 16-Bit-Subtimern und mehrere 64-Bit-Timer mit 32-Bit-Subtimern. Mir ist unklar, wie/warum ich unterschiedliche Timer-Anordnungen für unterschiedliche Aufgaben verwenden soll.
Zu deiner ersten Frage. SIM900 hat eine integrierte RTC, es hat auch einen separaten Pin für RTC-Backup-Kondensator oder Batterie. Stift 26, VRTC.
@BenceKaulics - danke! Ich habe mir das angesehen und festgestellt, dass ich das eigentlich schon benutze - ich dachte nur, es wäre Netzwerkzeit. Es stellt sich heraus, dass der SIM900 nur die Netzwerkzeit verwendet, um seine RTC einzustellen.

Antworten (1)

Es ist jetzt lange her! Ich weiß nicht, ob dich diese Fragen noch interessieren, aber trotzdem.

Ich glaube, die ersten beiden Fragen haben keine einzige/objektive Antwort. Die Antwort hängt stark von Ihrer Anwendung ab.

Zum Beispiel zur ersten Frage: Wird Ihre Hardware batteriebetrieben? Wenn ja, dann sollten Sie die Zeitintervalle unter Berücksichtigung des Stromverbrauchs berechnen und wie oft Sie die Batterien wechseln möchten. Wenn Sie sich keine Gedanken über den Stromverbrauch machen, dann hängt es hauptsächlich davon ab, was Sie erreichen möchten! Sie sollten sich vielleicht fragen, warum erfassen Sie diese Daten? Liegt es daran, dass Sie auf etwas reagieren müssen (z. B. eine Überspannung oder einen Überstrom), in diesem Fall sollten Sie vielleicht häufiger Proben nehmen oder nur um die Historie zu speichern? Es ist auch eine Frage, wie viel Speicher Sie zur Verfügung haben, wie oft Sie sampeln könnten usw.

In Bezug auf die zweite Frage sollten Sie sich vermutlich die Fragen stellen, ob es Ihnen wichtig ist, abgetastete Daten zu verlieren, falls zwischen zwei Übertragungen ein Stromausfall auftritt, und ob Sie über genügend internen Speicher im Prozessor verfügen, um die Daten zwischen zwei Übertragungen zu speichern.