Сброс настроек NodeMCU при долгом нажатии на RST

Добрый день!

Собственно, вопрос изложен в теме поста.

Устройство на базе NodeMCU (ESP8266), которое я делаю, должно иметь возможность:

1. При первом запуске создавать собственную точку доступа с IP и Web-интерфейсом.


2. При подключении к ней с компьютера, смартфона и т.п. после ввода IP в браузере выдавать экран для ввода имени точки доступа Wi-Fi и ее пароля.


3. После ввода - сохранять введенную информацию в EEPROM и  в дальнейшем подключаться к указанной точке доступа.


4. При долгом нажатии кнопки RST в процессе включения - сбрасывать сохраненную точку и вновь возвращаться к п. 1.


Я нашел в Интернете скетч для Arduino IDE, который проделывает почти всё из вышеперечисленного.


НО!


Для сброса настроек используется кнопка, подключенная к GPIO5.


Как вместо этого "отловить" долгое нажатие на RST?


Спасибо!


UPD: наверное, стоит уточнить, что я не выдумал это из головы.


Цитирую собственный комментарий:


"Когда мне лень писать свою прошивку, я генерирую готовую на сайте https://wifi-iot.com/.


Вот как там это устроено:


"При первом включении модуль включается в режим safe mode автоматически, так как не содержит имени точки доступа.


В режиме safe mode в эфире появится точка с именем WiFi-IoT, к которой можно подключиться, используя смартфон или ноутбук.


В режим safe mode еще можно попасть, замкнув между собой RX и TX и перезапустив модуль, или нажать 3 раза подряд (с интервалом нажатия около секунды) кнопку RESET на ESP8266".


Т.е. длинного нажатия нет, но есть несколько коротких.

Как-то же это реализовано..."

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

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

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

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

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

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

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

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

Вы смотрите срез комментариев. Показать все
1
DELETED
Автор поста оценил этот комментарий

Скорее всего никак

раскрыть ветку (5)
Автор поста оценил этот комментарий

Я бы так и подумал, но есть нюанс...


Когда мне лень писать свою прошивку, я генерирую готовую на сайте https://wifi-iot.com/.


Вот как там это устроено:


"При первом включении модуль включается в режим safe mode автоматически, так как не содержит имени точки доступа.


В режиме safe mode в эфире появится точка с именем WiFi-IoT, к которой можно подключиться, используя смартфон или ноутбук.


В режим safe mode еще можно попасть, замкнув между собой RX и TX и перезапустив модуль, или нажать 3 раза подряд (с интервалом нажатия около секунды) кнопку RESET на ESP8266".


Т.е. длинного нажатия нет, но есть несколько коротких.


Как-то же это реализовано...

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Как уже и писали - можно отловить X нажатий за Y секунд. Долгое нажатие reset отловить не получится. По крайней мере без дополнительных прибамбасов вроде внешних счетчиков итд.

1
DELETED
Автор поста оценил этот комментарий

Без вникания и изучения исходников могу предположить как такой резет можно сделать: Храним в памяти (EEPROM)  счетчик нажатий кнопки резет (на самом деле кол-во включений). Если с момента включения прошло больше ~5 сек, то обнуляем счетчик. Если счетчик =3, то выполняем что там требуется для сброса и обнуляем счетчик.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Да, надо обнулять по софтверным часам, так как RTC там нету.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну или просто ставить, например, delay (5000) перед обнулением.


В принципе, тоже своего рода использование внутреннего таймера...

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку