Diagram erzeugung und Speicherung auf einer SD Karte

In diesem Projekt möchte ich mit einem Arduino Sensordaten auslesen und auf einer SD-Karte speichern. Das System soll vollständig autonom arbeiten, also ohne Verbindung zu einem Computer. Die Daten sollen kontinuierlich erfasst und in einer Datei auf der SD-Karte gespeichert werden.

Mir ist bewusst, dass es einfacher wäre, die Daten nur zu sammeln und später am Computer als Diagramm darzustellen. Ich möchte dieses Projekt jedoch nutzen, um mehr über das Thema zu lernen.

Da ich noch wenig Erfahrung damit habe, bin ich offen für alternative Ideen. Ich habe bereits an das Speichern als BMP-Datei gedacht, weiß aber nicht, ob dieses Format dafür geeignet ist.

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

  • An welchen Arduino hast du gedacht?
  • Welche Sensoren?
  • Wie oft sollen die Daten erfasst werden?
  • Was für ein Diagramm möchtest du erzeugen?
  • Soll der Arduino das Diagramm selber anzeigen können?

Du lernst doch in jedem Fall, wie die Daten am Arduno dargestellt werden können.

Also wozu fertige Diagramme (für welches Ausgabegerät?) abspeichern? Und wann soll ein neues Diagramm abgespeichert werden? Vielleicht möchtest Du ja später unterschiedliche Diagramme erzeugen, da ist es einfacher, nur die einheitlichen Daten zu speichern als mehrere Diagramme.

Gegenvorschlag:

  • Welchen Microcontroller wirst du nutzen?
  • Möchtest du lediglich die Daten auf der SD Karte speichern oder willst du "auf deinem Gerät" die Daten auch anzeigen können?
  • Wenn du eine Anzeige der Daten auf deinem Gerät vorsiehst, beschreibe welches Display du nutzen willst und welche Art von Diagramm du haben willst.

Wenn "das Thema" ist, wie man Zahlen in Grafik umwandelt, denke ich, du wirst lernen, dass das keine gute Idee ist.
Selbst wenn die Daten nur autonom auf einem Arduino-basierten Display grafisch dargestellt werden sollen, ist es sinnvoll, diese auf der SD als Text (Zahlen) zu speichern und die Grafik daraus bei der Anzeige zu erzeugen.

Mit einem ESP32, auch mit der Arduino-IDE programmiert, habe ich den Stromverbrauch menütlich gemessen und wöchentlich als csv-Datei gespeichert. Die mit einer Tabellenkalkulation eingelesene csv-Datei kann ich grafisch darstellen.

Zusätzlich wurden die Meßdaten in einem Feld als Ringpuffer gespeichert, was als Grafik im Browser angezeigt werden konnte:

Sowas möchte ich Dir als Alternative zu BMP vorschlagen.

ich benutze den Arduino Uno und habe daran nur ein DHT22 angeschlossen und ein SD Karten Shield, welches ungefähre alle 2 Sekunden neue Daten vom DHT bekommt
Eine Anzeige auf z.B. einem LCD möchte ich nicht.
Das ganze System soll bei einem fehrngesteuertem Flugzeug Daten sammeln, interessehalbar versuche ich einen Weg zu finden, die Daten später nicht manuel in ein Koordinatensystem zu verwandeln, sondern den Arduino die arbeit machen lassen.
Gerne hätte ich ein Koordinatensystem z.B.:
y Temp. in C
|
|
|
|
0-----------------------------------------x Zeit in s
(Jeder . oder | könnte als n Einheit von jeweils Zeit und Temp. sein)

Würde man es hinbekommen ein "Koordinatensystem" in dieser Form permanent updaten zu lassen und dadurch Punkte hinzufügen?

ja kann man. Dreh das gedanklich um 90 Grad und dann kommen "unten" einfach die neuen Daten hinzu.

Ich versteh nur nicht warum du das so speichern willst.
Leg deine Daten strukturiert ab, und mach dann irgendwas vernünftiges damit.
Aber das "Grafisch" abspeichern zu wollen, versteh' ich nicht.
Offenbar gehts einigen anderen hier auch so.

Stimmt sehr gute Idee danke!
Ich hatte mich einfach gefragt ob und wie das möglich wäre, einen größeren Nutzen, als das für mich zu klären, brauche ich Persönlich nicht.
Danke trotzdem für all euren Input ich denke ich werde beides probieren

Ich würde das erstmal in kleinere Aufgaben aufteilen.

Du hast eine Leinwand. Nach oben hast du Zeichenfunktionen und deine Anwendung.
Nach unten hast du deinen Pixelspeicher.

In unserem Fall wollen wir uns das BMP Format anschauen:

BMP hat 2 Header fester Größe, eine Farbpalette und die eigentlichen Pixeldaten.
Pixel werden in einer Scanline organisiert.

Wenn wir die Länge einer Scanline ändern ändert sich das Layout der Pixeldaten. -> Viel Arbeit. Daher auch die Idee von @noiasca der 90° Drehung.

Scanlines hinzuzufügen dürfte relativ einfach sein. Wir müssen nur die Dateigröße und Höhe im Header ändern.

Da gibts dann ein paar Fragen die wir klären müssen:

  • Können wir uns die Zeichenfunktionen irgendwo klauen und welches Interface erwartet das zur Leinwand
  • Haben wir ein Dateisystem bei dem wir Dateien Schreib-lesend öffnen können und können wir wahlfrei (fseek) in der Datei Zugriffe machen

Dann ist es auch aus meiner Sicht viel einfacher, die Daten "roh", vielleicht als CSV, auf die SD-Karte zu schreiben und dann am Rechner mit Excel bzw. OpenOffice Calc zu öffnen und mit drei Mausklicks eine Grafik zu erzeugen.