Sensordaten übertragen

Ich möchte Sensordaten mir LoRaWAN übertragen. Aber damit ich nicht stetig den Momentanwert übertragen --> hoher Energieverbrauch kann ich die Sensordaten 5min in einem Array speichern und anschliessen übertragen? oder was bietet sich hier an?

Hallo,

das lässt noch Interpretationsspielraum.

Was mir so einfällt. Du kannst ...
a) aller 5min den einen aktuellen Wert übertragen
b) kannst aller 5min die bis dahin gesammelten Werte in einem Rutsch übertragen
c) du kannst die Messwerte filtern, bspw. gleitender oder arithmetischer Mittelwert und dann aller 5min den aktuellen Mittelwert übertragen.

Für Variante b) muss entsprechend viel Speicher zum aufbewahren der Daten vorhanden sein. Kommt auf die Häufigkeit der Messungen an und damit wieviele Messwerte gesammelt werden müssen bis zum überschreiben dieser.

Die Varianten hat doc aufgeführt.
Zusätzlich musst du noch beachten dass du z.B. bei 868MHz einen Dutycycle von 1% nicht überschreiten darfst. Das heißt du darfst maximal

24 Stunden x 60 Minuten * 1 % = 14,4 Minuten

senden. Je mehr Bytes du überträgst - je höher dein Spreadingfactor ist - desto länger dauert die Übertragung. Daher sollst du zunächst festlegen, wie viele Daten du am Tag übertragen musst, und daraus dann die für deinen Spreadingfaktor + Bandbreite passende Airtime ermitteln.

Wenn du auf ein Service wie TheThingsNetwork zurückgreifst ist die nutzbare Airtime noch mal drastisch kürzer --> 30sec/Tag.

Meiner Meinung nach macht es immer Sinn das konkrete Projekt ziemlich detailliert zu beschreiben. Meiner Erfahrung nach ist es so, dass locker in 50% der Fälle andere Ansätze als die vom TO angedachte technische Umsetzung besser funktioniert.
Bis jetzt ist nur bekannt:

  • Daten drahtlos übertragen
  • Gerät das die Sensor-Daten aufnimmt soll mit Batterie betrieben werden

Mit Kenntnis der Projektdetails kann man Vorschläge machen wie man das Ziel
"Sensordaten übertragen" auch realisieren könnte.
Dazu wäre wichtig zu wissen:

  • Welche physikalische Größe wird da gemessen?
  • Wie oft wird gemessen?
  • Wie werden die Messdaten weiterverarbeitet?
  • Wäre Mittelwertbildung OK?
  • wie groß ist die Entfernung zwischen Sender und Empfänger?

vgs

Ich danke euch allen für die tollen Inputs! Ja hier fehlen noch so einige Dinge.

--> das sollte alle 15min geschehen.

--> wie speichere ich dann diese Werte?

--> ich möchte die anschliessend ein Diagramm erstellen und da sollen dann Mittelwert, Max und Min. Wert ersichtlich sein.

--> Frequenz

--> jede Sekunde

--> Sie sollen umgewandelt werden in einen dB(A) Wert und anschliessend auf einer SD Karte zwischen gespeichert werden.

--> schön wäre der aktuelle Wert zu haben, der Mittelwert kann anschliessend immer noch erstellt werden.

--> kann individuell bestimmt werden. Grundsätzlich max. 1km

Sorry und danke!

achja mühsam ernährt sich das Eichhörnchen eine umfassende Projektbeschreibung ist das nicht.
Dann mache ich jetzt trotzdem mal einen Vorschlag ins blaue:

Also was ich aus der eher rudimentären Antwort verstehe ist:
Es wird einmal pro Sekunde ein Lautstärkewert gemessen und soll als db(A) Wert auf einer SD-Karte gespeichert werden.

Das ganze soll eine Stunde lang laufen. Man braucht also einen Akku der eine Stunde lang durchhält. Nach einer Stunde wird das Gerät mitsamt SD_Karte wieder abgebaut.

Dann sieht die Lösung so aus:
Du nimmst einfach einen Teensy 4.1. Der hat schon einen SD-Kartenadapter onboard.
Das der 100-200 mA braucht spielt überhaupt keine Rolle weil das jeder mittelgroße Popelakku schafft. Aufs Daten funken kannste komplett verzichten weil auf der SD-Karte extrem viel Speicherplatz ist und auf eine 256GB SD-Karte ganz locker 3600 Zahlenwerte draufpassen.

Merkste was? Je präziser du das Gesamtprojekt beschreibst desto genauere Alternativ-Vorschläge kann man machen wie das gut zu realisieren ist.

vgs

Ja, bin in diesem Bereich sehr unerfahren... Danke für die Hilfe... ich merke da habe ich noch grossen Nachholbedarf.

Wenn ich jetzt das ganze System während 1 Monat betreiben möchte und alle 15min mit LoRaWAN übertragen möchte?

Dann solltest Du mit einer Uhr arbeiten. :wink:
Und speichern geht auf die SD-Karte.
31d * 24h * 60m *60s = 2678400 Speicherzyklen.

11 Bytes für datum/zeit
2 Bytes für den Messwert
Macht 34819200 bytes insgesamt.

Da reicht ne 128MB Karte...

Was dann aber Sorgen macht, ist die Versorgung.
Kannst Du nen Solarpanel montieren?

Klar hat eine SD Karte unendlich viel Platz. Vereinfacht zwar die Auswertung, aber jede Sekunde Datum und Uhrzeit zu speichern hört sich nicht nach einer überlegten Strategie an.

Hängt vermutlich mit der Lautstärkemessung im anderen Thread zusammen.

Da würde ich eine Aufgabe nach der anderen angehen:

  • Elektronik, Messen und Ergebnis anzeigen
  • Speichern / offline auswerten
  • LoRa

Sorry; eine Frequenz kann man nicht in dB(A) umwandeln.

Grüße Uwe

Vielleicht will er die Feldstärke einer bestimmten Frequenz messen.

EDIT: Ok in Verbindung mit deinem anderen Beitrag wird es schon klarer..
https://forum.arduino.cc/t/sensordaten-mit-logarithmus-ubertragen/884530

Gruß

Ja. Frequenz wäre zu einfach. Oder zu kompliziert, wenn es mehr als eine ist.

Evtl. meint er "Wechselspannung" statt "Frequenz".
Dass zwischen einer Schallquelle und einem Arduino-Analogeingang nicht nur ein Mikrofon, sondern auch Elektronik muss, wird er wohl schon gemerkt haben.

Ich tippe aufgrund der Logarithmik auf Schalldruck.
Vielleicht möchte noch wer seinen Hut in den Ring werfen.
:slight_smile:

Nicht daß Ihr jetzt Wetten abschließt wer den To besser verstanden hat bzw besser geraten hat was der TO audrücken wollte und ich jetzt Schiedrichter, Buchmacher und Preisüberreicher spielen darf. :wink:

Grüße Uwe

1 Like

Wenn man Information übertragen könnte,
dann wäre Kommunikation Gehirnwäsche.
(Maria Pruckner)

Okay, die Übertragung soll aller 15min stattfinden. Meinetwegen.

Der einfachste Weg wäre die Daten in einem Array vorzuhalten. Wenn du aller 1s den Sensor ausliest und für 15min Daten sammelst, musst du entsprechend 900 Werte vorhalten. Nehmen wir mal an 4 Byte pro Wert biste bei einem Speicherbedarf von 3600 Bytes nur für die Daten. Geht mit einem ATmega328P schon nicht mehr.

Sendest du aller 5min musste nur 300 Werte sammeln und im Maximum werden nur 1200 Bytes belegt. Vielleicht machbar vielleicht auch nicht. Je nachdem wie umfangreich der Sketch wird und welche Libs benötigt werden.

Andere Variante wäre auf eine SD-Karte zwischenspeichern und auslesen oder ein FRAM verwenden. FRAM ist vielleicht besser.

Deine Projektplanung benötigt noch etwas Ausarbeitung.

Achtung: mit LoRA kannst Du nicht beliebig viele Daten übertragen. Die Datenmenge ist begrenzt.
Grüße Uwe

Hallo,

ich muss die Beschränkung erstmal verstehen.
IoT Telekom pdf

Ich denke einmal laut vor mich hin ... :wink:

Also 1% Upload Limit (10% Download Limit) für LoRaWAN.
Datenmenge je Übertragung in der EU zwischen 51 und 242 Bytes, abhängig vom SF und Bandbreite.
Unter optimaler Netzabdeckung hat man mit SF7 5470 Bits/s und schlechter Netzabdeckung mit SF12 nur noch 300 Bits/s. Darunter bricht die Verbindung ab. Die Angaben sind laut Telekom Brutto Datenraten.

Das 1% Limit maximale Sendezeit pro Teilnehmer pro Tag beträgt 864s.
Das heißt man kann zwischen optimal 590'760 Bytes/Tag und im ungünstigen Fall nur 32'400 Bytes/Tag senden.

Wieviel Messwerte sind sind damit möglich?
optimal 590'760 Bytes / 4 Bytes = 147690 int32/uint32 Werte
ungünstige 32'400 Bytes / 4 Bytes = 8100 int32/uint32 Werte

Wenn jede Sekunde gemessen werden soll, fallen demzufolge pro Tag 86'400 Messwerte an.
Pro Stunde 3600.

Das heißt mit schlechter Verbindung ist das nicht möglich. Mit optimaler theoretisch im Bereich des Möglichen. Allerdings wird sich das noch reduzieren, weil zum Messwert sicherlich noch ein zwei Bytes zusätzlich übertragen werden und die Netto Datenrate unbekannt ist. Zusammengefasst jede Sekunde mit angenommenen 4Byte Wert ist das nicht möglich. Selbst mit 2 Byte Messwerten wird das knapp, weil man die Netzqualität nicht beeinflussen kann. Müßte man Langzeittests an seinem festen Ort machen.

Korrekt gedacht?

Für einen grob geschätzten dB Wert reicht ja wohl ein Byte, wenn's darauf ankommt und knapp ist. Nur 25% statt uint32_t.
Oder gar nur pro Minute 1* min/mittel/max. Nur 20% von den 25% , also 5% deiner Schätzung.