• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP-01 - куда подключить светодиод

pazyzy

New member
pvvx, спасибо.
Получается, что данная схема подключения не всегда будет приводить к включению модуля.

Нашел еще один пример включения тут. Сама схема во вложении.
e26e654775a9c9fcd48ffe75a81f160d[1].png

Реле - нижняя левая четверть схемы.
На схеме кратко: SV1 - для реле, JP2 - для выхода в режим прошивки, питание всей схемы 5В.

Цитата автора статьи:
мне хотелось, чтобы реле управлялось напряжением=напряжению питания. При использовании pnp транзистора, ток эмиттера (при напряжении питания > напряжения модуля ESP8266) пойдет в модуль, что совсем не хорошо. Использовать только npn транзистор я не мог, так как тогда порт GPIO0 все время будет подтянут к минусу, а в этом случае модуль будет входить в режим программирования каждый раз, когда мы рестартим модуль. Таким образом, подключив pnp + npn транзисторы, я управляю минусом реле.
Однако из данной схемы скилов не хватает понять, подтянут ли GPIO0 к питанию (мне нужно прочитать статью про транзисторы, мне нужно прочитать статью про транзисторы).
Как вы считаете, данный способ подключения лучше, чем первый?

Может, уже есть готовый пример, как все организовать "правильно"? И вообще, возможно ли это сделать с ESP-01, не выводя дополнительные GPIO?

Я понимаю, что все проверю на практике через пару недель, когда транзисторы приедут. У кого-то на форуме ESP работает от 5В и прямым подключением к реле, так что все может быть :)
 

SergeyR

New member
Я использую такую схему, на два выхода вешаются два светодиода и два микрика. Нажатия на кнопки никак не влияют на светимость светодиода ни в режиме когда он включен ни в режиме когда он отключен.
Безымянный.png
кусок кода крутится в прерывании от таймера

gpio_output_set(1<<GPIO0, 0, 1<<GPIO0, 0 ); // output 1
gpio_output_set(1<<GPIO2, 0, 1<<GPIO2, 0); // output 1
gpio_output_set(0, 0, 0, 1<<GPIO0); // enable input
gpio_output_set(0, 0, 0, 1<<GPIO2); // enable input
if (!GPIO_INPUT_GET(GPIO0)) {currBtnState1=1; ets_uart_printf("1");}
if (!GPIO_INPUT_GET(GPIO2)) {currBtnState2=1; ets_uart_printf("2");}
// enable output
if(1==currLedState1) gpio_output_set(0, 1<<GPIO0, 1<<GPIO0, 0); else gpio_output_set(1<<GPIO0, 0, 1<<GPIO0, 0);
if(1==currLedState2) gpio_output_set(0, 1<<GPIO2, 1<<GPIO2, 0); else gpio_output_set(1<<GPIO2, 0, 1<<GPIO2, 0);
 
Сверху Снизу