Сброс настроек 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 запрещен)

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

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

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

Долгое нажатие на RST ты никак программно не отловишь. Это перезапуск процессора по сути.

У ребят (с 3-хкратным нажатием), реализовано к примеру так:

При запуске проверяем значение некоей ячейки памяти в EMMC.

- Если 0 - пишем 1, ждем секунду, пишем 0.

- Если 1 - пишем 2, ждем секунду, пишем 0.

- Если 2 - пишем 3, ждем секунду, пишем 0.

- Если 3 - пишем 0, выполняем сброс настроек.

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

Перезагрузка происходит по нажатию или отжатию RST?


Т.е. - по переднему или заднему фронту?


Если по переднему - была надежда, что кнопке соответствует какой-то зарезервированный номер порта, который можно опросить через DigitalRead() в функции setup().

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

Некорректный немного вопрос. По нажатию - проц идёт на 0-й адрес, и похрен чего там было в памяти и где что выполнялось. По отпусканию - понеслось исполнение чего-то там с нулевого адреса. Резет у настольного компа так же работает. Там по отпусканию выполняем зашитое в биос, начиная с нулевого адреса.


А в данном примере - если мы успели сбросить через RST девайс за секунду после старта, то прога не успеет сбросить счетчик нажатий, и проверит его при следующем выполнении. И так 3 раза. А вы точно программист?

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

Эээ... Причем здесь - программист я или нет?


Принцип работы кнопки Reset мне до сих пор не требовался, поэтому я его не знал.


Кстати, спасибо, что объяснили :)


Алгоритм Ваш я понял, просто надеялся, что есть способ попроще...

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

Проще - именно через gpio =)

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