• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Deep sleep с пробуждением по кнопке

Beerukoff

New member
В во всех примерах, находимых поиском, deep sleep используется в паре с таймером пробуждения.

А как сделать так, чтобы ЕСПшка (nodemcu) засыпала и пробуждалась только при нажатии кнопки?

Устройство будет питаться от батареек и функционал ЕСПшки нужен только при фактическом использовании устройства, в результате хочется чтобы устройство максимально глубоко спало и экономило батарейку.
 

Evgeniy163

New member
Поставить кнопку на вклчение питания с самоподхватом (реле, мосфет) сигналом от ЕСП.
 

Сергей_Ф

Moderator
Команда форума
@Beerukoff так таймер просто дергает Reset для выхода из сна. В чем проблема поставить кнопку? На вывод Reset, естественно.
 

Beerukoff

New member
так таймер просто дергает Reset для выхода из сна. В чем проблема поставить кнопку? На вывод Reset, естественно.
Я только начал знакомится с Ардуиной, поэтому понимаю пока немного.
Но мое личное ТЗ к устройству (детская музыкальная игрушка) подразумевает только одну кнопку, которая используется для управления. А в таком случае нажатие на кнопку будет вместо проигрывания звуков резетить устройство.

Может для экономии энергии будет достаточно гасить WiFi?
Ожидаю, что работать устройство будет максимум час в день, все остальное время будет просто лежать и ждать нажатия на кнопку. Хотелось бы, чтобы оно делало это максимально энергоэффективно, чтобы батарейки подольше жили.

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

Сергей_Ф

Moderator
Команда форума
в таком случае нажатие на кнопку будет вместо проигрывания звуков резетить устройство.
именно это подразумевает выход из сна. Дальнейшая логика работы прописывается в Вашей программе - будет это ресет или что то другое, решать Вам.
 

Beerukoff

New member
именно это подразумевает выход из сна. Дальнейшая логика работы прописывается в Вашей программе - будет это ресет или что то другое, решать Вам.
Если не сложно, можете чуть поподробнее написать или ссылкой на такую реализацию поделиться?

Мне не понятно несколько моментов:
- как отправить в deep sleep без таймера пробуждения?
- к какой ноге в таком случае цеплять кнопку?
- и правильно я понимаю, что в программе я могу продолжать использовать данную кнопку как кнопку, а вот в deep sleep она будет пробуждающим резетом?
 

Сергей_Ф

Moderator
Команда форума
- как отправить в deep sleep без таймера пробуждения?
- к какой ноге в таком случае цеплять кнопку?
- и правильно я понимаю, что в программе я могу продолжать использовать данную кнопку как кнопку, а вот в deep sleep она будет пробуждающим резетом?
1. Можете с таймером, если нет резистора между GPIO16 и RESET , то это ни на что не влияет.
2. Кнопка к Reset.
3. Сложно, но можно. Только кнопка всегда будет ресетом, а в программе надо определить из какого состояния он произведен и сделать выбор дальнейших действий.
 

Beerukoff

New member
Ну или хотя бы какие-то моменты.

Потому что я пока даже никак не пойму как в DS отправить :(
 

Сергей_Ф

Moderator
Команда форума
@Arthur можете сами это сделать. Мне в отпуске без компьютера это не с руки, как то. Тем более, все необходимые разъяснения я дал. ТС и сам сможет, если захочет.
 

pvvx

Активный участник сообщества
Ну или хотя бы какие-то моменты.
RESET что при выходе из deep_sleep, что просто при включении выполняет функцию старта загрузки. После deep_sleep вы имеете только флаг, что загрузка произошла после команды deep_sleep. Если нога часов RTC не соединена с RESET, то модуль не загрузиться от срабатывания таймера в RTC и будет ждать пока вы его не запустите сигналом RESET.
В итоге использование deep_sleep при одной кнопке не имеет смысла.

Если вам надо включение и управление устройства по одной кнопке - то придется выдумывать схему, такого плана:
Кнопка сидится на вход SET триггера. По нажатию кнопки триггер включает питание модулю ESP. Выключение питания (сброс триггера) - заводиться от порта i/o ESP.
Кнопка так-же проводится на другой вывод i/o ESP, для отслеживания дальнейших её нажатий, когда ESP загрузится.
 

Arthur

Active member
Добавлю свои пять копеек, даже если хоть меня тут забанят :).
По пункту 3 - вы можете писать на внутреннюю флэху состояние, при запуске еспшки можете читать индикатор прошлого состояния с помощью SPIFFS.
То есть просто - записали в файлик на флэхе номер статуса. При старте (reset) модуля читаем этот файлик, переходим сразу к этому статусу.
 

Beerukoff

New member
А если не погружать в DS, а просто отключать все, что можно отключить (кроме канала контроля кнопки), то насколько меньше проработает устройство от батареек?

Просто, тем сложнее будет устройство, тем меньше вероятность, что у ребенка в итоге будет игрушка.


Тем более идея игрушки очень проста:
- при нажатии на кнопку играется произвольный трек с mp3 (используется dfplayer mini), причем последующие нажатия в течение 2-х секунд игнорируются
- во время проигрывания мигают 4 светодиода
- через веб-сервер с помощью андроид приложения регулируется звук (это важно сделать именно удаленно)
- через 30 секунд после окончания трека при отсутствии активности устройство засыпает

Я уже сделал 2 программы: на 1 и 2 пункты и на 1 и 3 пункты, сейчас не совсем понимаю как сделать сводную программу (я 2-й день этот язык изучаю) и как реализовать 4-й пункт
 
Последнее редактирование:

Arthur

Active member
А если не погружать в DS, а просто отключать все, что можно отключить (кроме канала контроля кнопки), то насколько меньше проработает устройство от батареек?

Просто, тем сложнее будет устройство, тем меньше вероятность, что у ребенка в итоге будет игрушка
В случае со SPIFFS всё будет очень просто.
Давайте будем пердельно честным - изначально игрушку хочет папа, а не ребёнок, не так ли? :)
 

Beerukoff

New member
В случае со SPIFFS всё будет очень просто.
Давайте будем пердельно честным - изначально игрушку хочет папа, а не ребёнок, не так ли? :)
Конечно :) Дочке год и 4. Она сама не просила такую игрушку :) Я только вижу, что сейчас ей очень нравятся различные музыкальные игрушки. Но у всех игрушек весьма скудный набор звуков (чаще 1, реже немногим больше)
Вот я и решил для знакомства с Ардуиной (что мне, конечно, самому хочется) сделать для нее (на базе одной из имеющихся игрушек) музыкальную игрушку с большим количеством разных звуков (сколько папа в сети найдет, столько и будет), но при этом еще и учесть пожелание мамы сделать регулировку звука (в т.ч. до нуля).

В целом, за 2 дня изучения данной темы я уже, как мне думается, в чем-то начал разбираться, да и делать реальный проект интереснее, чем повторять ютуб уроки "давайте помигаем светодиодом"
 
Последнее редактирование:

Arthur

Active member
Конечно :) Дочке год и 4. Ей сейчас очень нравятся различные музыкальные игрушки. Но у всех игрушек весьма скудный набор звуков (чаще 1, реже немногим больше)
Вот я и решил для знакомства с Ардуиной (что мне, конечно, самому хочется) сделать для нее (на базе одной из имеющихся игрушек) музыкальную игрушку с большим количеством разных звуков (сколько папа в сети найдет, столько и будет, но при этом еще и учесть пожелание мамы сделать регулировку звука (в т.ч. до нуля).
Няшное начинание, прямо-таки ути-пути.
Тогда уж можно сделать и загрузку звуков на флэху через Web-морду - это Я Вам идею подкидываю. Не нужно будет каждый раз флэшку выдёргивать...
Это можно будет сделать через тот же самый SPI...
 

Beerukoff

New member
Тогда уж можно сделать и загрузку звуков на флэху через Web-морду - это Я Вам идею подкидываю. Не нужно будет каждый раз флэшку выдёргивать...
Думал на этим, но насколько я понимаю, dfplayer mini это отдельное устройство и что-то записывать на его карточку памяти не получится.

Вторым этапом подумываю сделать, чтобы при удержании кнопки игрушка переходила из режима в режим (типа "разные коротки звуки" > "песенки" > "сказки"), т.к. чтение мануала к dfplayer показало, что он может играть треки не только из штатной папки mp3, но и из любых других. Правда насколько я понял, он не может переходить из папки в папку, а необходимо четко указывать из какой папки и какой трек играть (но думаю, что потом у меня хватит знаний, чтобы придумать как это обойти).

А сейчас я уже нереально доволен смотря на мелки девайсы и кучу проводочков, которые соединенные вместе с помощью небольшой программы выполняют какие-то действия :)
 

Arthur

Active member
Думал на этим, но насколько я понимаю, dfplayer mini отдельное устройство и что-то записывать на его карточку памяти не получится.
Получится, почему нет? Что мешает припаяться к слоту карточки и чутка почикать контакты на плате player'a?
 

Beerukoff

New member
Что мешает припаяться к слоту карточки и чутка почикать контакты на плате player'a?
Мешает мой уровень паяния и понимания электросхем :) А также отмена кружков радиолюбительства, где можно было бы немного подучиться.

Поэтому мой вариант - это использование готовых элементов и фантазии
 

Arthur

Active member
Мешает мой уровень паяния и понимания электросхем :) А также отмена кружков радиолюбительства, где можно было бы немного подучиться.

Поэтому мой вариант - это использование готовых элементов и фантазии
Мне кружки РТки ничего, кроме как халявных деталей, ничего не дали... Фигня эти все, кружки, главное - желание и наличие средств.
А там и так всё будет готовое. И всё просто сравнительно.
Да и чикать не нужно-то.
Моно попробовать проще сделать. Подпаяться к сокету флэшки, поставить шлюз типа ключевика двустороннего (например, мультиплексор или демультиплексор) подсоединить еспшку к флэхе через него.
Во время записи на флэху с помощью ключа отдельного гасить плэйер по команде с есп. Или, вернее, перед CRUD :) операциями гасить его - чтобы плэйер и еспшка не мешали друг другу во время работы с флэхой.
Закончили редактирование файлов с помощью есп - перещёлкиваем оба ключевика - отключаем есп от флэхи и поднимаем обратно плэйер.
Всё готовое при этом можно использовать, всё просто.
 
Сверху Снизу