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?
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?
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.
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:
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.
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.
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.
ich muss die Beschränkung erstmal verstehen. IoT Telekom pdf
Ich denke einmal laut vor mich hin ...
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.
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.