Таймер глубокого сна esp8266 немного неточен?

Я делаю таймер открытия двери, используя датчик Холла, и у меня есть wemos d1 mini, который использует глубокий сон для сна в течение 1 минуты после проверки состояния датчика Холла и печати значения на последовательном порту. Я использую Arduino IDE для мониторинга последовательного вывода и включил опцию Show timestamp, чтобы я мог отслеживать, как долго устройство работает после его сброса. Однако я получаю вывод следующим образом:

08:03:26.286 -> ^H⸮ȸ$RKx⸮⸮x⸮I⸮⸮696
08:04:25.454 -> HEA⸮⸮⸮d⸮⸮⸮⸮⸮⸮⸮696
08:05:24.681 -> ⸮⸮NI⸮ hlE⸮0⸮/⸮696
08:06:23.915 -> ⸮DP⸮V⸮l⸮X⸮X⸮H⸮⸮694
08:07:23.178 -> ⸮A⸮K`E⸮M⸮⸮xxE⸮696
08:08:22.406 -> ⸮HlX⸮K⸮I|⸮⸮xE⸮693
08:09:21.703 -> ⸮⸮NI⸮ hlE⸮0⸮⸮E⸮694
08:10:20.978 -> 8H⸮JcD⸮M⸮⸮xxE⸮695
08:11:20.306 -> ⸮⸮NI⸮AhlE⸮ Op⸮⸮696
08:12:19.573 -> ⸮⸮NI⸮ hlE⸮0⸮/⸮539
08:13:18.897 -> ⸮⸮OI⸮AhlE⸮⸮O⸮⸮538
08:14:18.196 -> HEA⸮⸮⸮d⸮⸮⸮⸮I⸮⸮539
08:15:17.561 -> ⸮dG⸮⸮⸮hLJ⸮@h⸮⸮(⸮539

Вывод мусора — это не то, о чем я спрашиваю, это временные метки, создаваемые arduino ide. Поскольку я сплю 60 000 000 микросекунд, я бы предположил, что секундное значение минуты будет немного больше каждый раз. Но как показано выше, с каждым разом становится чуть меньше, как будто это занимает меньше минуты. Так что мне интересно, если таймер сна на этих устройствах недостаточно точен, чтобы рассчитывать на это или что-то еще, что я должен рассматривать как неточность в IDE? Я хотел только измерить время безотказной работы, чтобы учесть соображения разрядки аккумулятора, мне не нужен таймер с точностью до миллисекунды для функциональности устройства.

, 👍1

Обсуждение

внутренний RTC esp8266 очень неточен. вопрос не про ардуино, @Juraj

Как использовать внешний RTC для пробуждения ESP8266: https://arduinoprosto.ru/q/91504/78174, @Nick Bolton


2 ответа


Лучший ответ:

4

A (сейчас 3 года) поток GitHub предлагает использовать внешний RTC, если важно отслеживание времени. Он также указывает на мертвую ссылку на документ NodeMCU. Похоже, этот документ перемещен. . В этом документе описываются длины, необходимые для лучшего учета течения времени во время сна. Что, видимо, включает в себя угадывание температуры спящего чипа:

Учет времени на ESP8266 технически довольно сложен. Несмотря будучи названным RTC, RTC на самом деле не является часами реального времени в обычном смысл слова. Пока он держит счетчик, пока модуль спит, точность, с которой он это делает, очень высока. зависит от температуры чипа. Упомянутые изменения температуры значительно между тем, когда чип работает, и когда он спящий режим, что означает, что любая калибровка, выполняемая, когда микросхема active становится бесполезным через несколько мгновений после того, как чип перешел в спящий режим. Таким образом, калибровочные значения должны быть выведены по циклам сна в для обеспечения точного учета времени. Это одна из вещей, которые модуль делает.

Обновление:

Недавний ответ об обмене стеками Arduino подробно описывает использование часов реального времени DS3231.

,

1

Да, RTC может быть очень неточным. Некоторые RTC позволяют синхронизировать их.

,