Erforderliche Libraries belegen zu viel Speicher

Hallo zusammen,
ich bin ganz neu in der Welt von Arduino und ich möchte eine Art Mini-Avionik bauen, wobei ich auch Luftdruck, Temperatur, Neigung und Beschleunigung auf einer SD-Karte abspeichern möchte. Jedoch geht mir allein beim Implementieren der erforderlichen Bibliotheken für die Sensoren und das SD-Kartenmodul 60% des Flashspeichers verloren, womit für den eigentlichen Code fast nichts mehr übrig bleibt.
Im Grunde geht es vor Allem um die
<SD.h>
Bibliothek, welche mir schon 16% ROM und 40% RAM belegt. Gibt es da irgendwelche Alternativen, das effizienter zu gestalten?
Besteht zB die Möglichkeit, die Flugdaten von einem Master-Arduino berechnen zu lassen und diese dann mithilfe eines Slave-Arduinos auf eine SD-Karte zu überspielen, um die SD.h-Bibliothek vom "Hauptrechner" auszulagern und dort mehr Speicher zur Verfügung zu haben?
Und wenn ja, wie geht das?
Man muss ja bedenken, dass das alles auch relativ Platz-und gewichtssparend dimensoniert werden sollte, weswegen ich das alles mit Arduino Nanos und einem einzigen Akku betreiben möchte. :worried:
Würde mich freuen wenn mir Noob jemand hlefen könnte :smiling_face_with_three_hearts:

Hast du Compiler Fehlermeldung oder das sind nur deine Überlegungen?
Was für Board hast du genutzt? Haste andere?

Dann sieh dir mal den ESP8266 und seine Varianten an.
Der hat mehr Speicherplatz, mehr Leistung und auch die Möglichkeit per WLan ins Netz zu gehen. Auch kannst du den per OTA flashen. Heißt per WLan.

Wenn Deine Sensoren mehrere analoge Werte ausgeben, dann eventuell den ESP32 mit sechs analogen Eingängen (ADC1), der ESP8266 hat nur einen.

ESP8266 Pinout Reference: Which GPIO pins should you use?
ESP32 Pinout Reference: Which GPIO pins should you use?

Oder den baulich kleinen Microcontroller MEGA 2560PRO mit mehr Speicher.

... weiters viel kleiner als ein Nano + SD Karte, und hat auch ein Filesystem on board - somit könntest du dir vieleicht die SD Karte sparen.

Wenns unbedingt ein ATmega bleiben soll, vieleicht ein Mega 2560 Pro Embedded - quasi ein Mega im Mini Format...

(sorry fürs Duplikat - aber habs parallel geschrieben...)

Das ist halb so schlimm, und beim ESP8266 eigentlich noch viel krasser, wenn du das Verhältnis Libraries/Eigener Code betrachtest.
Bis du 40% der 32 kB Flash durch Programmlogik sinnvoll gefüllt hast, hast du viel zu tun. Das geht eigentlich nur mit Texten und ähnlichem Luxus.

Der eigentliche Engpass bei UNO / NANO mit SD ist der knappe RAM-Speicher.

Wenn ich den Sketch kompiliere, zeigt er mir ja den belegten Speicher an. Und zurzeit benutz ich den Uno zum Testen. Wenn das Programm fertig geschrieben und einsatzbereit ist werde ich auf den Nano umsteigen.

Dein fertiger Programm wird nicht wirklich viel größer, da Bibliotheken belegen gleichen Platz.
Auch interessant, was für Sensoren hast du, 3.3v/5v, I²C/SPI/UART/Analog/Digital Verbindung...

Die Sensordaten bezieh ich alle über I2C.
Aber du hast Recht, der MEGA 2560PRO sieht echt nach einer guten Alternative aus.
Da ich aber bereits ein paar Nanos daheim hab, wollt ich noch fragen ob es denn auch mit denen möglich ist, das Programm eben aufzusplitten damit ich die wenigstens nicht "umsonst" gekauft habe :grinning_face_with_smiling_eyes:

Knapp dürfte es trotzdem werden.
Sensoren benutz ich den MPU6050 und BMP280, beide über I2C und 3,3V

natürlich geht das, aber wozu? niemand baut eine Avionik auf Basis von atmega328
ESP32 ist anscheinen die beste Wahl, ist auch auf 3.3V, extrem schnell in Vergleich zu 20MHz max Frequenz von Nano.

Kannst bei den Nanos den neuen Bootloader aufspielen, dann hast du exakt den gleichen Flash wie beim Uno zur Verfügung.
Und du brauchst - anders als beim RAM - keine Angst bei 95% Belegung zu haben.

Wie gesagt ich hab mich da nicht wirklich ausgekannt und wusste auch garnicht wieviel Speicher so ein Code in Anspruch nehmen kann, deshalb hab ich mir anfangs eben einen atmega328 geholt, aber jetzt bin ich ja schlauer :grin:

Aber nur die globalen Variablen, nicht die lokalen.

Grundsätzlich ja. Beispiel:

  1. Nano1 mit Sensor1 an I2C
  2. Nano2 mit Sensor2 an I2C

Dann sind die Nanos jeweils Master, die Sensoren Slave. Wenn Du die Nanos per I2C zusammenschließt, hast Du ein Multimastersystem, wozu ich eher nicht raten möchte. Bleibt noch eine Verbindung per SoftwareSerial über RS485 als Bus, da Serial schon durch USB belegt ist. Das sollte funktionieren, wenn die Datenrate nicht über 9600 steigt. Aber die Kommunikation der Nanos untereinander möchte auch erst programmiert sein, was ich mir nur antun würde, wenn es keine Alternative gibt. Wenn ein Nano 3 € kostet, wie lange möchtest Du dafür programmieren?

Okay ja du hast recht...das ist es nicht wert, zumal dann die extra Programmierung wieder Speicher belegt und dann beginnt das Ganze Spiel wieder von vorne. Ich werde mir wie gesagt einen Mega 2560 pro holen, dann sollte das kein Problem mehr darstellen

Die ESPs magst Du nicht?

WLAN und Bluetooth ist für mich nicht relevant und ich bleib lieber bei der vollen IDE Kompatibilität

Die hast du auch bei den ESP‘s.
Und die sind kleiner, da legst du doch Wert drauf.

Da deine Sensoren nur I2C nutzen, wie du schreibst, wäre sogar der kleine ESP8266-01 geeignet.

Die brauchst Du ja nicht zu verwenden, aber ein Blick auf die Preise läßt einen Überflüssiges vergessen.

Größenvergleich Mega2560, Nano, ESP32 in einer großen Ausführung:
grafik

Ich möchte Dich zu Nichts überreden, ich gebe nur Infos, damit Du hinterher nicht sagst, Du hättest es nicht gewußt.

Wobei du den kleinen noch vergessen hast :wink:

ESP01