Ich möchte ständig Daten von Sensoren (für einen Aktivitäts-Tracker) speichern und dabei so wenig Batterie wie möglich verbrauchen (ich möchte eine 4/5-Tage-Autonomie bei einer 3000-mAh-Batterie haben), aber ich kann nicht die beste finden Möglichkeit, etwa 2 kByte / s in einem Speicher zu sparen, der groß genug ist, um mehrere Tage Daten aufzunehmen.
Sensoren werden mit einer Geschwindigkeit von 20 Mal pro Sekunde gelesen und erzeugen jedes Mal etwa 100 Bytes.
Welche Möglichkeiten habe ich, um:
- eine solche Datenmenge (Hardware) speichern?
- sicherstellen, dass das System mit der erforderlichen Autonomie ordnungsgemäß funktioniert?
battery
system-design
Trevör
quelle
quelle
Antworten:
Hier gibt es zwei Einschränkungen, und ich denke, es könnte Sie in eine Ecke führen. Größe und dann Leistung.
2 KByte / s sind 2 * 60 * 60 * 24/1024 = 168,75 MByte / Tag. Das ist viel. Die einzige leicht verfügbare Technologie, die mit einem kleinen Mikroprozessor verwendet werden kann, der dieses Datenvolumen speichern kann, ist eine SD-Karte. Es gibt kein so großes serielles EEPROM oder Flash-Chips, und der Arduino kann meines Wissens nicht mit dem NAND-Flash umgehen, der in USB-Sticks und SD-Karten verwendet wird.
SD-Karten können jedoch relativ leistungshungrig sein. Sie ziehen beim Schreiben zwischen 5 mA und 100 mA, normalerweise zwischen 30 und 50 mA. Die SD-Spezifikation besagt, dass das Maximum 200 mA beträgt. Das Schreiben ist auch ziemlich langwierig, da sie eher mit Datenblöcken als mit einzelnen Zellen arbeiten. Ich habe noch nie vollständig analysiert, wie viel Strom sie verbrauchen, aber es ist nicht unbedeutend und viel, viel mehr als serielles EEPROM oder Flash.
Wenn Sie also so viel speichern müssen, haben Sie nur die Wahl zwischen SD-Karten.
Ich würde die Komprimierung der Daten untersuchen. Selbst sehr einfache Schemata können einen großen Unterschied machen.
quelle
Dies wäre mit einer Standard-SD-Karte möglich.
Kapazität
Mit einigen einfachen Berechnungen konnte ich feststellen, dass das Schreiben mit 2 kB / s für 5 Tage nur 0,8 GB verbrauchen würde. Sie könnten wahrscheinlich mit einer 1 oder 2 GB Karte auskommen.
Geschwindigkeit
Ich habe diesen Benchmark gefunden , der besagt, dass es möglich ist, SD-Kartendaten von einem Arduino mit 192 kB / s zu schreiben, was für Ihre Anforderungen mehr als ausreichend sein sollte.
Es gibt viele großartige Tutorials und Beispiele für die Verwendung einer SD-Karte mit einem Arduino. Die offizielle Dokumentation ist immer ein guter Anfang.
quelle