Реализация периодического хранения данных датчиков и передачи GPRS

Настройка оборудования

Я использую специальное оборудование, управляемое TIVA TM4C (в частности, TM4C123GXL ), для управления микросетью с аккумуляторной батареей, солнечными панелями, четырьмя нагрузками, управляемыми реле, и GSM GPRS-модулем SIM900 . Пользователи могут нажимать кнопки для переключения реле или отправлять SMS для переключения реле.

Три АЦП регистрируют напряжение батареи, общий ток нагрузки и общую мощность нагрузки.

Я пишу код C, используя Keil u4.

Что я пытаюсь сделать

  • Регистрируйте состояния реле и напряжения АЦП через регулярные промежутки времени ( раз в минуту? ), а также каждый раз, когда пользователь вручную переключает нагрузку.
  • Периодически ( раз в час? ) отправлять накопленные данные по GPRS на http сервер

Эти данные можно использовать, чтобы убедиться, что алгоритм микросети работает оптимально и правильно обрабатывает доступность солнечных ресурсов, состояние батареи, вводимые пользователем данные и т. д.

Мой вопрос

  1. Имеют ли смысл эти временные интервалы? Должен ли я заходить чаще или реже? Передавать чаще или реже?
  2. Должен ли я использовать EEPROM для хранения значений перед передачей или просто хранить их в памяти, так как это короткий временной интервал?
  3. Каков наилучший способ реализации таймеров? У меня есть несколько 32-битных таймеров с 16-битными субтаймерами и несколько 64-битных таймеров с 32-битными субтаймерами. Я не понимаю, как/почему использовать разные механизмы таймера для разных задач.
По поводу вашего первого вопроса. SIM900 имеет встроенный RTC, а также отдельный контакт для резервного конденсатора или батареи RTC. контакт 26, VRTC.
@BenceKaulics - спасибо! Я изучил это и понял, что на самом деле уже использую это - я просто подумал, что пришло время сети. Оказывается, SIM900 просто использует сетевое время для установки часов реального времени.

Ответы (1)

Это уже давно! Не знаю, интересны ли вам эти вопросы, но тем не менее.

Я считаю, что на первые два вопроса нет единого/объективного ответа. Ответ сильно зависит от вашего приложения.

Например, по первому вопросу: питается ли ваше аппаратное обеспечение от батареи? Если да, то вам следует рассчитать временные интервалы с учетом энергопотребления и того, как часто вы хотите менять батареи. Если вас не волнует энергопотребление, то оно в основном зависит от того, чего вы хотите достичь! Возможно, вы должны спросить себя, почему вы записываете эти данные? Это потому, что вам нужно отреагировать на что-то (например, перенапряжение или перегрузка по току), и в этом случае вам, возможно, следует чаще сэмплировать или просто сохранить историю? Это также зависит от того, сколько памяти у вас есть, как часто вы можете сэмплировать и т. д.

Что касается второго вопроса, я полагаю, что вы должны задать себе следующие вопросы: заботитесь ли вы о потере выборочных данных в случае отключения питания между двумя передачами и достаточно ли у вас внутренней памяти в процессоре для хранения данных между двумя передачами.