Wetterdaten

Hallo,

ich möchte ab 2015 rund um die Uhr Wetterdaten erfassen und diese auf einer Sd-Karte speichern lassen. (Die Sensoren sind ein Temperatur- und Feuchtigkeitssensor, ein Regensensor und ein Wassertemperatursensor.)

Nun zur Frage:

Hält das der Arduino (Uno R3) durch oder soll ich ihn monatlich (zum "ausruhen") austauschen ?

Wie findet ihr das Projekt ?

Vielen Dank im Voraus

Es bestehen keine Gegenindikationen um Arduino nicht 24h/7d pro Woche eingeschaltet zu haben. Grüße Uwe

Seh ich auch so. Mein chinesischer "R3" läuft als Tischuhr-sicher schon nen halbes Jahr nahezu ununterbrochen. Wenn man die Dinger innerhalb der Spezifikationen betreibt, passiert da nix. Ich würd ihn nur nicht in nen zu enges Gehäuse ohne Lüftung packen, damit er sich nicht aufheizt.

Hi, du kannst es auch so machen das sich der Arduino zwischendurch "ausruhen" kann. (Zum Stromsparen) Wenn du nur 1 pro min loggen willst kannst du den Arduino aufwachen lassen Messen + Loggen und dann für die Restlichen 59s schlafen lassen (sleepmode). Das Erweitert bzw verkürzt die Lebensdauer des µC nicht. Es gibt nur zwei "Teile" im µC das sind der Flashspeicher und das interne EEPROM die altern durch häufigkeit der verwendung (beschreibung). Das heisst wenn du nicht die ganze Zeit den Flashspeicher (ständiges neu Programmieren) überschreist lebet er lange (innerhalb seiner Spezifiktionen) Das sind ca. 10.000 Lösch/Schriebe zyklen im Flash und 100.000 Lösche/Schreib Zyklen im EEPROM.

Gruß DerDani

julivehs: ich möchte ab 2015 rund um die Uhr Wetterdaten erfassen und diese auf einer Sd-Karte speichern lassen. (Die Sensoren sind ein Temperatur- und Feuchtigkeitssensor, ein Regensensor und ein Wassertemperatursensor.)

Nun zur Frage:

Hält das der Arduino (Uno R3) durch oder soll ich ihn monatlich (zum "ausruhen") austauschen ?

Der Arduino hält das durch.

Aber ob Deine SD-Karte das durchhält, hängt von der Nutzungshäufigkeit und Nutzungsstrategie ab, mit der Dein Programm auf die SD-Karte "schreibend" zugreift.

Denn die Schreibzugriffe auf jedem SD-Kartensektor sind beschränkt. Zwar hat jede SD-Karte einige "Ersatz-Sektoren", die der SD-Kartencontroller ggf. nach dem Kaputtschreiben eines Sektors dann intern anstelle des kaputtgeschriebenen Sektors verwendet. Aber wenn Du mit einer danebengeratenen Schreibstrategie ganz viele Sektoren auf der SD-Karte kaputtschreibst, kann es ggf. passieren, dass nach ein paar Monaten auch alle Ersatzsektoren kaputtgeschrieben sind und Du dann ggf. überhaupt nicht mehr auf die defekte Karte zugreifen kannst.

Mit intelligenten Schreibstrategieen auf der Karte kannst Du solchen Defekten ggf. bei der Anlage des Programms vorbeugen.

Danke nochmal an alle!

Ein Arduino sollte “ewig” ohne Pause / Reset laufen können.
Hierzulande ist ein Stromausfall ja selten, aber nicht 100% ausgeschlossen.

Man muss halt dafür sorgen, dass auch wenn die SD Karte fehlt (weil man die Daten grade am PC ausliest), der Sketch weiterläuft und optimalerweise Daten zwischenspeichert.

Das Problem ist eher, dass solche Betriebszustände selten vorkommen und kaum getestet sind
(Die Standard SD Lib hat übrigens Probleme mit zeitweilig fehlenden SD Cards.)

Ich hab letztes Jahr meine Heizung/Warmwasser-Erzeugung auf SD aufgezeichnet.
Einmal je Brennerstart, also ca. 3 bis 50 mal pro Tag, einen Datensatz geschrieben, kein Problem.

Bei deinen Wetterdaten ist es evtl. egal, wenn mal ein (kleiner) Zeitbereich fehlt oder zwischendurch der Arduino mal ein Reset hatte.

Im laufenden Betrieb die Karte entfernen würd ich tunlichst lassen, denn wenn in dem Moment ein Schreibzugriff erfolgt, ist sie ziemlich sicher hin. Hab ich schon eine geschrottet-unrettbar.

Wenn man das tun will muss man Sicherheitsmassnahmen ergreifen: sicherstellen, dass die Karte niemals während nem Schreibzugriff entfernt wird (mindestens mit ner LED oder so, besser wärs, dann den Slot verriegeln), Schreibzugriffe immer kurz halten, und die Datei immer schliessen. Vor jedem Zugriff auf "Karte da" testen- dann gibts ne Fehlermeldung und man kann es auffangen.

Riskant ist es dennoch. Ich würde nen Button oder so vorsehen. Wenn der gedrückt wird, werden alle Dateien geschlossen, und die Karte kann entfernt werden. Anschliessend einfach ab und zu abfragen ob die Karte wieder da ist.

jurs: Aber wenn Du mit einer danebengeratenen Schreibstrategie ganz viele Sektoren auf der SD-Karte kaputtschreibst, kann es ggf. passieren, dass nach ein paar Monaten auch alle Ersatzsektoren kaputtgeschrieben sind und Du dann ggf. überhaupt nicht mehr auf die defekte Karte zugreifen kannst.

Da würd mich in diesem Zusammenhang mal interessieren, wie eine solche katastrophale Schreibstrategie aussieht, um innerhalb einiger Monate über 1000000 Schreibzugriffe auf eine einzelne Speicherzelle zu bekommen. Dies vor allem mit der Annahme Daß nicht jede Millisekunde ein Meßwert protokolliert werden soll sondern in Minuten- bis Viertelstundenrytmus.

Grüße Uwe

Aber ob Deine SD-Karte das durchhält, hängt von der Nutzungshäufigkeit und Nutzungsstrategie ab, mit der Dein Programm auf die SD-Karte "schreibend" zugreift.

Denn die Schreibzugriffe auf jedem SD-Kartensektor sind beschränkt. Zwar hat jede SD-Karte einige "Ersatz-Sektoren", die der SD-Kartencontroller ggf. nach dem Kaputtschreiben eines Sektors dann intern anstelle des kaputtgeschriebenen Sektors verwendet. Aber wenn Du mit einer danebengeratenen Schreibstrategie ganz viele Sektoren auf der SD-Karte kaputtschreibst, kann es ggf. passieren, dass nach ein paar Monaten auch alle Ersatzsektoren kaputtgeschrieben sind und Du dann ggf. überhaupt nicht mehr auf die defekte Karte zugreifen kannst.

Üblicherweise sorgt der Controller dafür, daß man bei naiven Schreibstrategien die Karte gerade nicht kaputt bekommt. Die Idee selber etwas dagegen unternehmen zu wollen ist deshalb nutzlos. Anders würde es beim EEPROM des Arduino aussehen. Da ist kein Controller mehr dazwischen.

uwefed:
Da würd mich in diesem Zusammenhang mal interessieren, wie eine solche katastrophale Schreibstrategie aussieht, um innerhalb einiger Monate über 1000000 Schreibzugriffe auf eine einzelne Speicherzelle zu bekommen. Dies vor allem mit der Annahme Daß nicht jede Millisekunde ein Meßwert protokolliert werden soll sondern in Minuten- bis Viertelstundenrytmus.

Wenn Du 1x pro Sekunde eine Temperatur loggst, und dazu jeweils

  • die Datei öffnest
  • die zu loggende Temperatur am Ende dranhängst
  • die Datei schließt
    dann macht das pro Tag 86400 Schreibvorgänge. Da bei jeder Änderung der Dateigröße beim Schließen der Datei auch der FAT-Eintrag dieser Datei geändert werden muss (geänderte Dateigröße), entspricht das pro Tag 86400 Schreibvorgängen in immer denselben FAT-Sektor.

Bei einer Aufzeichnung 1x pro Sekunde hast Du 1 Million Schreibvorgänge im selben Sektor also auf diese Art nach ca. 11,5 Tagen voll.

Bei einer Aufzeichnung 1x pro Minute in ca. 694 Tagen.

Bei einer Aufzeichnung 1x pro Viertelstunde in ca. 28 Jahren.

Wobei das dann statistische Durchschnittswerte wären. Denn wenn ein Hersteller zu seiner SD-Karte anpreist “1 Million mal beschreibbar”, dann meint er damit nicht, dass jede seiner Karten 1 Million mal problemlos beschreibbar ist, sondern dass im Schnitt eine Karte nach 1 Million Schreibvorgängen im Eimer ist. Also wenn man 1000 Karten hat, sind 500 Karten VORHER kaputt und 500 Karten SPÄTER.

Wenn man also eine bessere Wahrscheinlichkeit als 50% haben möchte, dass eine SD-Karte mindestens 11 Tage, 694 Tage oder 28 Jahre zum Loggen von Daten durchhält, würde ich lieber nur mit einem Bruchteil des statistischen Durchschnittswerts bei den Schreibvorgängen kalkulieren.

Und/oder anstelle von Consumer SD-Karten zu speziellen Industrie-SD-Karten mit “industrial grade” Merkmal greifen, die für ausfallsichere industrielle Anwendungen vorgesehen sind, und zum x-fachen Preis gewöhnlicher Consumer-SD-Karten eine vielfach häufigere Wiederbeschreibbarkeit durch intern ganz anderen Aufbau garantieren (z.B. SLC-Speicherzellen statt MLC-Speicherzellen).

Bei uns ändert sich das Wetter noch nicht mal viertelstündlich, und Regenradar-Filme will er ja wohl nicht aufzeichnen.

Optimiert wird das ganze, wenn man nur in die Datei schreibt, wenn 512 neue Byte zusammengekommen sind (das macht die lib schon allein so) und also nicht nach jedem Byte die Datei schliesst, sondern nur etwa jede Stunde. 100 Jahre solte dann ausreichen.

Rabenauges Bedenken sind ernster zu nehmen, wobei mir bei einer Lösung für den Eigenbedarf eine Schreib-LED zur Warnung als Sicherung reichen würde. ( + Prüfung ob Karte vorhanden, natürlich )

Das kommt schwer drauf an wer das Ding dann bedient. Würd ich sowas bauen und könnte nicht sicherstellen, dass ich als Einziger ran kann, würd ich den Slot mechanisch verriegeln. Murphy sagt: verriegle ihn. ;) Du kannst einem 2735x sagen dass er die Karte NICHT entnehmen darf, wenn die Lampe an ist- er wird es tun. Irgendwann. Ganz sicher.

Besonders schwierig ist das nicht: nen Servo mit ins Gehäuse und Klappe zu.

Rabenauge: Besonders schwierig ist das nicht: nen Servo mit ins Gehäuse und Klappe zu.

Dann könntest du gleich eine "useless machine" draus bauen :p

Man könnts kombinieren, stimmt. Die Maschine funktioniert ja mit Schalter: und wenn grad geschrieben wird, wenn der Schalter betätigt wird-schaltet sie sich eben wieder aus. 8)