Arduino Uno SD карта памяти

Мне интересно хранить данные акселерометра на SD-карте. Поскольку потребление энергии является главным соображением моего проекта, важно сделать как можно меньше записей на SD, потому что SD требует большого тока, а также занимает много времени, чтобы быть записанным, не давая моему MCU спать.

  1. Данные, которые будут храниться, составляют около 50 бит данных при 10 Гц, поэтому мне нужно хранить 500 бит в секунду, или около 63 байт в секунду. Arduino uno EEPROM составляет 1024 байта, что может дать мне около 16 секунд данных, хранящихся перед тем, как получить доступ к моей SD-карте. Однако я видел, что EEPROM имеет ограниченные циклы записи (100000). Таким образом, каждый байт может быть записан 100000 раз, что дает нам в общей сложности 1000*100000=100000000 байт для записи.В результате при записи там 63 байта в секунду, что дало бы мне 1587301 секунд=441hours=18days срока службы EEPROM, что недопустимо. Правильно ли это?
  2. Если (1) верно и использование внутреннего eeprom не является возможным решением, то какие еще рекомендации у вас есть? Есть ли альтернатива SD-хранилищу, которая требует меньше энергии и меньше времени записи, так что это дешевле по мощности? Общий объем хранилища должен составлять около 200 МБ.

, 👍2

Обсуждение

Почему вы хотите использовать EEPROM? Почему бы не создать простой буферный массив?, @chrisl

@chrisl Это хорошая идея, но в какой памяти будет храниться буферный массив?, @NickG

Буфер будет храниться в оперативной памяти. Обычно EEPROM используется только тогда, когда вам нужно постоянное хранилище, которое сохраняет значения в течение циклов питания или сброса. Но, похоже, к тебе это не относится. Хотя вам все равно нужно посмотреть, насколько большим вы можете сделать буфер (это зависит от использования памяти и библиотеки вашего скетча), @chrisl


2 ответа


2

Что касается 1, то верно, что EEPROM имеет ограниченные циклы записи. В основном это может быть гораздо больше, но гарантированно только до этого числа, так что я могу себе представить, что вы не хотите рисковать, чтобы вам повезло.

Что касается 2, другими решениями могут быть внешние SRAM, которые могут быть намного больше, чем просто 1 КБ, но также добавляют некоторые дополнительные компоненты, что повышает стоимость и, что более важно, мощность. Когда SRAM заполнится (может быть много КБ), вы можете перенести его на SD-карту.

Еще одно (добавленное) улучшение, о котором вы могли бы подумать (если вы еще этого не сделали), - это сжатие данных (попытка сохранить 50 бит в меньшем количестве битов), но это потребует некоторой "вычислительной" мощности.

,

0

Чтобы начать с правил потребления энергии, Arduino отключается, поэтому вам понадобится устройство, способное (в глубоком) спящем режиме. Устройства, такие как ESP8266 или ESP32. В таблице ниже показаны различия между каждым режимом (информация из спецификации ESP8266).

Item                 Modem-sleep        Light-sleep       Deep-sleep
Wi-Fi                   OFF          OFF            OFF
System clock             ON         OFF             OFF
RTC                     ON          ON              ON
CPU                     ON          Pending         OFF
Substrate current     15 mA        0.4 mA          ~20 uA
Avg. current (DTIM = 1) 16.2 mA     1.8 mA            –
Avg. current (DTIM = 3) 15.4 mA     0.9 mA            –
Avg.current (DTIM = 10) 15.2 mA     0.55 mA

Эти модули имеют по 4 МБ флэш-йой, который можно использовать для хранения данных (SPIFFS/LittleFS) так что 1 МБ для программы и 3 МБ для хранения на борту, после чего сохранить в SD и заполнить бортовой ФС снова или вы посылаете сведения через WLAN в интернет-хранилище или базу данных или на сервер в локальной сети (в зависимости от вашего сценария) эти устройства стоят столько же, сколько Ардуино Уно клон (5-7$) и может быть запрограммирован с той же Иды как ардуино и в том же (языка C/)в C++ производная. Поэтому, если проблема в потреблении энергии, посмотрите на эти устройства интернета вещей

,

Однако Uno можно спать в чем-то вроде < 10uA, однако, при использовании низкой мощности. Я согласен, что ESP был бы лучшим выбором только из-за памяти и оперативной памяти, но ардуино могут глотать, когда им это нужно!, @Dave Newton