• Система автоматизации с открытым исходным кодом на базе 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 :) операциями гасить его - чтобы плэйер и еспшка не мешали друг другу во время работы с флэхой.
Закончили редактирование файлов с помощью есп - перещёлкиваем оба ключевика - отключаем есп от флэхи и поднимаем обратно плэйер.
Всё готовое при этом можно использовать, всё просто.
 
Сверху Снизу