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

Нужна помощь NodeMCU gpio.trig срабатывает постоянно

gropox

New member
Привет,

помогите бога ради, я новичок, может делаю что-то не так.

Написал скрипт на LUA для NodeMCU, который должен срабатывать на нажатие кнопки. Кнопка одним концом подключена к D3 пину. Другим концом подключена к 3.3V. Пин D3 притянут к земле через 10кОм сопротивление. По нажатию кнопки у меня переключается пин D1, к которому подключено реле и шлется сообщение в топик MQTT.

Вот код хендлера кнопки

Код:
    gpio.mode(PIN_WRITE, gpio.OUTPUT)
    gpio.mode(PIN_INPUT, gpio.INPUT)
    print("blink")
    changeState("on")    
    tmr.delay(500000)
    changeState("off")

    -- register callback for button
    gpio.trig(PIN_INPUT, "down", function(level, when)
        -- eliminate random presses
        print("button pressed " .. when)
        if(when > last_pressed + 300000) then
            last_pressed = tmr.now()
            switch()
        end   
    end)
Кажется ничего особенного. Если я все записываю в NodeMCU через ESPlorer и запускаю на исполнение, то все замечательно работает. Нажимаю кнопку, реле на пине D1 переключается, сообщение в Mqtt шлется.

Проблема начинается, когда я закрываю ESPlorer, выдергиваю шнурок из USB компьютера и снова его втыкаю в компьютер, в этот же USB разъем компьютера. То-есть NodeMCU запитанна от USB разъема компьютера, но связи по терминалу нету. Почему то gpio.trig срабатывает непрерывно. Реле переключается постоянно. В Mqtt непрерывно шлется то"on", то "off". Я там поставил задержку на 300 миллисекунд, потому все с такой частотой и мигает. Если зажать кнопку, то мигать перестает. Как только отпустил - светомузыка

*Если запущу ESPlorer и как только нажму кнопку [Open] для установки связи с нодой, как тут же все перестает мигать и работает, как и ожидается.*

Если я тот же USB проводок воткну в блок питания, то-есть NodeMCU запитанна от блока питания, а не от компьютера. То ничего такого нету, но и нода на кнопку не реагирует.

Померил прибором, на пине D3 0В, при нажатии кнопки там примерно 3.2В. От чего такая билеберда?

NodeMCU прошивку взял отсюда на днях.

NodeMCU custom builds

nodemcu-master-8-modules-2017-03-12-10-18-21-integer.bin

Спасибо
 

gropox

New member
Ха, подключил кнопку к другому пину и все стало работать как надо! В чем же дело?
 

Jury_78

New member
GPIO0 используется в схеме подключения к USB.

Все это можно посмотреть в файле описания NODEMCU_DEVKIT.
 

Вложения

AndrF

Active member
Померил прибором, на пине D3 0В, при нажатии кнопки там примерно 3.2В. От чего такая билеберда?
Вот в это на пине D3 0В не верится. Просто потому что GPIO0 на Nodemcu подтянут к питанию через 12 kОм. Прочитайте про особенность этого пина, ну и схему Nodemcu посмотрите...
 

nikolz

Well-known member
Приведенная вами схемка используется для программирования ESP-шки по USB-UART, чтобы не жать ручками на кнопки. На работу же влиять не должна.
Будет влиять, так как зависит от состояния DTR и RTS порта, а при отключении от Explorer эти сигналы у Вас очевидно иные.
 

AndrF

Active member
Будет влиять, так как зависит от состояния DTR и RTS порта, а при отключении от Explorer эти сигналы у Вас очевидно иные.
Не влияет. Эта схемка используется в Nodemcu - она присутствует постоянно и работает только в момент прошивки.

Explorer же я не использую. Работаю с Microsoft Visual Studio.
 
Сверху Снизу