86

Выход ардуинки из сна по таймеру

Сегодня предлагаю рассмотреть возможность ардуинки уходить в режим сна и выходить из него по таймеру в целях экономии энергопотребления.


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

Детальнее о прерываниях и о том, какие входа можно использовать под прерывания можно прочитать здесь  https://www.arduino.cc/en/Reference/AttachInterrupt

Если будут вопросы по этому, могу ответить в комментариях или сделать дополнительный пост.


Следующая возможность ардуинки - уходить в сон для сбережения энергопотребления. Детальнее о режимах сна и потреблениях тока в разных режимах можно прочитать здесь https://www.gammon.com.au/forum/?id=11497


Самый экономный режим - это SLEEP_MODE_PWR_DOWN : 0.36 mA

Теперь рассмотрим каким образом можно выйти из сна.

Выход из может осуществлятся двумя методами:

1) WatchDog Timer - грубо говоря внутренний таймер. Максимальное время сна от 7-9 секунд. Можно использовать и его, как таймер. Например если вам надо, чтобы ардуинка выполняла какое-то деуствие каждый час, а между этим спала, то можно просыпаться каждые 7-9 секунд, суммировать время сна и если набежал час, то выполнять действие. Недостатком этого метода является то, что нужно часто просыпаться и время сна 7-9 секунд не является константой, а колебается постоянно в этих пределах, соответственно на большом отрезке времени будет большая ошибка суммарного времени.

2) по внешнему прерыванию (нажатие кнопки, геркон и т.д.)

Об этих методах вы также можете прочитать здесь https://www.gammon.com.au/forum/?id=11497


В методе рассмотреном  в данном посте мы будем использовать внешнее прерывания и модуль часов (RTC DS3231), который будет выполнять функцию будильника.


Собираем схемку как показано на картинке

Выход ардуинки из сна по таймеру

Модуль RTC DS3231 работает по I2C и на нем можно запрограммировать будильники (возможно установить 2 будильника). В обычном режиме на выходе SQW сигнал HIGH, при срабатывании будильника сигнал будет LOW - это мы и будем использовать на прерывании.


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


Для работы с будильниками нужно скачать библиотеку https://github.com/jarzebski/Arduino-DS3231


И пример моего кода я выложил тут http://paste.ofcode.org/7DPT3ZmdjEe5NjqS2jrEX2


Вот то, что вы должны видеть в мониторе последовательного порта


21-02-2000 00:58:52 - Wednesday

Sleep

Wake UP

21-02-2000 00:59:52 - Wednesday

Sleep


таймер выставляется в минутах тут

setSleepTimer(1); - в данном случае стоит 1 минута


также, если вам нужно, чтобы платка перезагружалась после выхода из сна и заново выполнялся бы setup(), вы можете раскомментировать строку resetFunc();


В данном посте я не рассматривал примеры работы с модулем RTC DS3231, для этого есть примеры в библиотеке. Но если нужно, могу ответить на вопросы или сделать пост.


В следующем посте собираюсь описать возможности прошивки WiFi модуля ESP8266

Arduino & Pi

1.5K постов20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества