Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Уникальная игра, в которой гармонично сочетаются знакомая механика «три в ряд» и тактические пошаговые сражения!

Магический мир

Мидкорные, Ролевые, Три в ряд

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
86
ahhx3m
Arduino & Pi

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

8 лет назад

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


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

Детальнее о прерываниях и о том, какие входа можно использовать под прерывания можно прочитать здесь  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

Показать полностью 1
[моё] Arduino Sleep Mode Rtc Interrupt Длиннопост
14
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии