У меня есть ESP-12, припаянный к этой плате адаптера . Я использую прошивку на основе NodeMCU Lua для кодирования логики.
Я запланировал node.restart
выполнять периодически. 1 из контактов GPIO используется для управления внешним компонентом в состоянии HIGH или LOW. Я могу восстановить состояние GPIO (HIGH/LOW) после, node.restart
но во время перезапуска состояние GPIO не определено. Я хочу поддерживать это состояние, особенно если оно было ВЫСОКИМ.
Один из подходов, который я имею в виду, заключается в том, чтобы иметь другой микроконтроллер, такой как ATTinyX, который подключен к ESP-12 через UART. ESP-12 может передать строку/символ ATTinyX для поддержания состояния (вывод GPIO ESP-12 и вывод ATTinyX подключены к внешнему компоненту через вентиль ИЛИ), а затем перейти к перезагрузке. После завершения перезагрузки ESP-12 он может указать ATTinyX не поддерживать состояние, потому что ESP-12 может поддерживать его сейчас после перезагрузки.
Это добавляет немного стоимости и компонентов, есть ли другой способ добиться того же? Я больше разбираюсь в программном обеспечении, меньше разбираюсь в электронике. Любая помощь приветствуется. Может быть, это похоже на 1-битную память, которая устанавливается/сбрасывается ESP-12, могу ли я использовать флип-флоп в этом случае?
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Рис. 1. Конденсатор удержания состояния.
Подключите запасной GPIO, как показано на рисунке. При сбросе считайте состояние конденсатора и установите соответствующий выход. Это даст вам кратковременную 1-битную память.
//Pseudo code to go early in boot sequence.
pinPullup(pin) = false; //Turn off the pull-up.
pinMode(pin) = input; //Set the pin to input mode, if required.
pdState = pinRead(pin); //Read the input to get the power-down state.
pinMode(pin) = output; //Configure as output.
pinWrite(pin) = pdState; //Restore the power-down state.
Вы можете изменить порядок последних двух строк (в зависимости от микро), чтобы избежать мгновенного срабатывания.
Обратите внимание, что в этой конфигурации штифт нельзя использовать ни для чего другого.
Взгляните на расширители I2C, такие как MCP23008. В основном такая же настройка, как у вашего ATtiny, за исключением другой прошивки. Он просто сохранит любое состояние, которое вы пожелаете, независимо от перезагрузки ESP.
Попробуйте использовать конденсатор, который обеспечит необходимое напряжение на время перезагрузки. Следующая ссылка может помочь вам найти подходящее значение конденсатора.
http://www.electronics-tutorials.ws/rc/rc_2.html
редактировать:
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Чтобы быть более конкретным, я предполагаю, что время, необходимое для перезагрузки, составляет менее двух секунд, поэтому теперь постоянная времени сети RC должна почти вдвое превышать время перезагрузки. Выбор постоянной времени 4,7 секунды.
Постоянная времени T = R * C
т.е., 4,7 с = 4,7 кОм * 1000 мкФ
Причина, по которой мы должны иметь постоянную времени, вдвое превышающую требуемое время, заключается в том, что, когда конденсатор начинает разряжаться, при половине постоянной времени напряжение на конденсаторах будет составлять около 60% напряжения при полной зарядке, что составляет 3 вольта при 2,35. во-вторых, поскольку время перезагрузки меньше, будет поддерживаться высокий уровень.
Если известно состояние вывода перед отключением питания, вы можете использовать функцию подтягивания вверх или вниз, чтобы сохранить это состояние во время загрузки my. Большие конденсаторы также могут помочь.
Проблема в том, что контакты обычно по умолчанию имеют входные или не GPIO-функции, поэтому вы смотрите их состояния при сбросе.
Попробуйте использовать простую защелку, но вам может понадобиться три контакта GPIO. Во время работы, если выход на GPIO, который вы используете, имеет ВЫСОКИЙ уровень, подайте высокий-низкий импульс на SET, а если НИЗКИЙ, сделайте то же самое на RESET. Во время включения питания проверьте состояние Q, если ВЫСОКИЙ, поддерживайте требуемый контакт GPIO как ВЫСОКИЙ, иначе сделайте его НИЗКИМ.
Свананд
ритещ
придурок
Капил Сингх