Добрый день, Радио-любители!
Подскажите пожалуйста, пытаюсь собрать на ESP8266-01 управление шаровым краном.
Вот по этой схеме:
Логика работы такая. После подачи напряжения, выходы GPIO0,GPIO2 в LOW.
После подачи команды на включение, GPIO0 на 5 сек переводиться в состояние HIGH, а затем опять в LOW.
Пока писал/отлаживал программу, на выходах были диоды – всё работало хорошо.(крана ещё нет)
Решил собрать схему – и получается следующая ситуация. При подаче напряжения, на коллекторах транзисторов (назовём их VT1 и VT2) +3.3в… А при подаче команды открыть/закрыть 0в.
Т.Е. Всё наоборот.
Как-то не логично получается…
Подскажите, как лучше изменить схему или переписать логику?
ЗЫ. Извините, если вопрос бестолковый… ESP два дня назад первый раз в руки взял…
Спасибо!
Логика:
--WiFi Settup
wifi.setmode(wifi.STATION)
local cfg={}
cfg.ssid="222"
cfg.pwd="111"
wifi.sta.config(cfg)
cfg = nil
collectgarbage()
--Set Pin mode
my_pin_nummber = 3
my_pin_nummber2 = 4
gpio.mode(my_pin_nummber, gpio.OUTPUT)
gpio.mode(my_pin_nummber2,gpio.OUTPUT)
local boolean kran_open = false
--Create HTTP Server
http=net.createServer(net.TCP)
function gpio0_off()
gpio.write(my_pin_nummber, gpio.LOW)
end
function zakrit_kran()
if kran_open == true then
gpio.write(my_pin_nummber2, gpio.HIGH)
tmr.alarm(1,5000, tmr.ALARM_SINGLE, function() gpio.write(my_pin_nummber2, gpio.LOW) end)
kran_open = false
else
print('Kran ZAKRIT')
end
end
function ShowKranStatus()
local string s =''
if kran_open == true then
s = 'OPEN'
return s
else
s = 'CLOSE'
return s
end
end
function receive_http(sck, data)
local request = string.match(data,"([^\r,\n]*)[\r,\n]",1)
if request == 'GET /on HTTP/1.1' then
kran_open = true
gpio.write(my_pin_nummber, gpio.HIGH)
tmr.alarm(0,5000, tmr.ALARM_SINGLE, function() gpio.write(my_pin_nummber, gpio.LOW) end)
--Максимальное значение 6870947
tmr.register(2,6870947,tmr.ALARM_AUTO,zakrit_kran)
tmr.start(2)
end
if request == 'GET /off HTTP/1.1' then
--gpio.write(my_pin_nummber, gpio.LOW)
kran_open = false
gpio.write(my_pin_nummber2, gpio.HIGH)
tmr.alarm(3,5000, tmr.ALARM_SINGLE, function() gpio.write(my_pin_nummber2, gpio.LOW) end)
end
sck:on("sent", function(sck) sck:close() end)
local response = "HTTP/1.0 200 OK\r\nServer: NodeMCU on ESP8266\r\nContent-Type: text/html\r\n\r\n"..
"<html><title>NodeMCU on ESP8266</title><body>"..
"<h1>NodeMCU on ESP8266</h1>"..
"<hr>"..
"<a href=\"on\">On</a> ------ <a href=\"off\">Off</a>"..
--"<p> KRAN OPEN TIME- "..tmr.now(2).."</p>"..
"<p> KRAN OPEN ? - "..ShowKranStatus().." ! </p>"..
"</body></html>"
sck:send(response)
end
if http then
http:listen(80, function(conn)
conn:on("receive", receive_http)
end)
end
print("Started.")