Vraag:
Meest energiezuinige manier om constant 2 kilobytes aan gegevens per seconde te besparen
Trevör
2014-03-16 18:54:13 UTC
view on stackexchange narkive permalink

Ik zou graag gegevens die afkomstig zijn van sensoren (voor een activiteitstracker) constant willen opslaan terwijl ik zo min mogelijk batterij gebruik (ik zou graag een autonomie van 4/5 dagen hebben op een batterij van 3000 mAh) maar ik kan het niet vind de beste manier om ongeveer 2 kBytes / s te besparen op een geheugen dat groot genoeg is om meerdere dagen aan gegevens te bevatten.

Sensoren worden gelezen met een snelheid van 20 keer per seconde en produceren ongeveer 100 bytes per keer.

Welke opties heb ik om:

  • een dergelijke hoeveelheid gegevens (hardware) op te slaan?
  • ervoor te zorgen dat het systeem correct kan werken met vereiste autonomie?
Welke opties heb je onderzocht? Ook is 2KB / s veel gegevens. Weet u zeker dat alles essentieel is en dat er geen ontslagen zijn?
U moet uw behoeften verder verduidelijken: welk Arduino-bord gebruikt u, welke soorten sensoren zijn er, WAAR MOET u deze 2KB / s opslaan? Het is belangrijk om te begrijpen dat geen enkele Arduino alleen genoeg geheugen heeft om gedurende dagen 2 KB / s op te slaan.
@jfp Je zou een SD-kaart kunnen gebruiken ...
Ja, ik weet het, dat was eigenlijk het idee van mijn opmerking om die vraag te stellen! Maar is dit een acceptabele optie voor het OP, of zou hij directe (bijv. Draadloze) gegevensoverdracht naar een ander apparaat willen, bijv. een pc?
@AsheeshR Nou, ik heb berekend dat alle gegevens die 20 keer per seconde binnenkomen ongeveer dat (2 KB / s) zouden zijn, ja, dat is het, want aangezien het behoorlijk moeilijk zal zijn om activiteitsherkenning uit te voeren, zal de Arduino waarschijnlijk niet hebben zulke rekenkracht, dus ik moet dat later doen, op een computer.
@jfpoilpret Op dit moment weet ik het niet precies, omdat ik voldoende stroom nodig heb om constant de gegevens die van de sensoren komen met een hoge snelheid te lezen, maar ik zou een zeer laag stroomverbruik hebben. Ja dat weet ik, daarom vraag ik uw hulp ...;)
@AnnonomusPerson Ik dacht aan deze optie, maar ik vraag me af of de schrijfsnelheid hoog genoeg zal zijn en we vertelden me dat het veel stroom kost.
Een belangrijke vraag heeft betrekking op uw sensoren, waarover u tot nu toe niets interessants noemde: leveren ze deze 2KB / s op een continue manier of werken ze maar één keer per seconde en produceren ze elke keer 2KB (of iets daartussenin)? Dat aspect is erg belangrijk om erachter te komen: het verbruik van je circuit, de mogelijkheden om een ​​low-power modus van de Arduino te gebruiken ...
SD-kaart is waarschijnlijk een goede optie (de enige?) Voor uw opslagbehoeften; Het stroomverbruik tijdens schrijfbewerkingen is echter volledig afhankelijk van elk merk en model.
SD-kaarten zijn overal met stroomverbruik. 5mA tijdens het schrijven is de laagste die ik heb gezien, 100mA de hoogste, maar de specificatie staat 200mA toe. Typisch is misschien 30-50mA. Ze gebruiken behoorlijk veel stroom bij het gebruik van de SPI-interface.
Ik denk dat het van cruciaal belang is om de vraag te beantwoorden waarnaar wordt verwezen door [jfpoilpret] (http://arduino.stackexchange.com/users/84/jfpoilpret), namelijk: wat zijn de gegevens die u opslaat? Is er een manier om slechts het minimale aantal rekencycli op de Arduino te verbruiken om deze gegevens iets compacter in te pakken? 2kB / s is een behoorlijke hoeveelheid gegevens voor een microcontroller om te verzamelen en naar de opslag te sturen. En ja, voor datalogging zijn SD-kaarten vrijwel de beste optie, al was het maar omdat de kaart fysiek naar een computer voor een juiste gegevensanalyse.
Twee antwoorden:
Cybergibbons
2014-03-17 01:03:56 UTC
view on stackexchange narkive permalink

Er zijn hier twee beperkingen, en ik denk dat u hierdoor in een hoek terecht kunt komen. Grootte en dan vermogen.

2Kbyte / s is 2 * 60 * 60 * 24/1024 = 168,75Mbyte / dag. Dit is veel. De enige direct beschikbare technologie die kan worden gebruikt met een kleine microprocessor die deze hoeveelheid gegevens kan opslaan, is een SD-kaart. Er zijn geen seriële EEPROM- of flash-chips die zo groot zijn, en de Arduino kan, voor zover ik weet, niet overweg met de NAND-flash die wordt gebruikt in USB-sticks en SD-kaarten.

SD-kaarten kunnen echter wel relatief hongerig. Ze trekken tijdens het schrijven tussen 5mA en 100mA, meestal rond de 30-50mA. De SD-specificatie zegt dat het maximum 200mA is. Het schrijven duurt ook behoorlijk lang, omdat ze werken met gegevensblokken in plaats van individuele cellen. Ik heb nog nooit een volledige analyse gemaakt van hoeveel stroom ze gebruiken, maar het is niet onbelangrijk en veel, veel meer dan seriële EEPROM of flitser.

Dus je enige keuze, als je zoveel moet opslaan , is geschikt voor SD-kaarten.

Ik zou het comprimeren van de gegevens onderzoeken. Zelfs heel eenvoudige schema's kunnen een enorm verschil maken.

Bedankt voor je antwoord ! Wat vindt u van het opslaan van de gegevens op een klein flashgeheugen met laag vermogen (zoals deze: http://www.adafruit.com/products/1564) en vervolgens, wanneer dit geheugen vol is, op de SD-kaart te bewaren? Zou het geen stroom besparen?
Ja, er is potentieel om energie te besparen. Het is * veel * beter om in grote blokken naar de SD-kaart te schrijven, want zelfs als je een enkele byte verandert, moet het hele blok worden bijgewerkt. Hoe groot dat blok is, kan ik me niet herinneren.
Eigenlijk denk ik dat een Arduino waarschijnlijk * kan * omgaan met een kale NAND-flitser (tenminste als er al een paar pinnen zijn gebruikt, of als men bereid is een externe vergrendeling toe te voegen voor als demultiplexer), maar men zou moeten raadplegen datasheets om te zien of het stroomverbruik lager zou zijn dan een zorgvuldig geselecteerde SD-kaart.
TheDoctor
2014-03-16 22:23:31 UTC
view on stackexchange narkive permalink

Dit zou mogelijk zijn met een standaard SD-kaart.

Capaciteit

Met enkele eenvoudige berekeningen kon ik dat schrijven op 2kB / s voor 5 dagen zou slechts 0,8 GB verbruiken. U kunt waarschijnlijk rondkomen met een kaart van 1 of 2 GB.

Snelheid

Ik heb deze benchmark gevonden, die het zegt is mogelijk om SD-kaartgegevens van een Arduino te schrijven met 192 kB / s, wat meer dan genoeg zou moeten zijn voor uw behoeften.

Er zijn veel geweldige tutorials en voorbeelden beschikbaar voor het gebruik van een SD-kaart met een Arduino. De officiële documentatie is altijd een goede plek om te beginnen.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...