乐鑫技术交流
直播中

笔画张

13年用户 1070经验值
私信 关注
[问答]

为esp8266-01创建了一个扩展板来运行两个继电器,如何确定网页中的命令是否正确编程?

我为esp8266-01创建了一个扩展板来运行两个继电器,但我不确定网页中的命令是否正确编程,因为任何按钮都显示 gpio 引脚没有变化,有人可以验证代码是否正确吗?
init.lua,如下所示:

wifi.setmode(wifi.station)

wifi.sta.config("ssid","weppassword")

print('n太阳能光伏控制器 - ESP8266服务器 v1bn')

tmr.alarm(0, 1000, 1, 函数()

如果 wifi.sta.getip() == nil 那么

print("Connecting to AP...n")

else

IP、NM、GW=wifi.sta.getip()

macAdd = wifi.sta.getmac();

print("IP Info: nIP Address: ",ip)

print("Netmask: ",nm)

print("Gateway Addr: ",gw,'n')

print("Mac Addr: ",macAdd,'n')

tmr.stop(0)

end

end)

继电器 1 = 0

继电器 2 = 2

gpio.mode(中继1, gpio.输出)

gpio.mode(中继2, gpio.输出)

SRV=net.createserver(net.tcp)

SRV:听(80,函数(conn)

conn:on("receive", function(client,request)

local buf = "";

local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");

if(method == nil)then

_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");

end

本地_GET = {}

如果 (vars ~= nil)那么

for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do

_GET[k] = v

end

end

buf = buf.."

Solar Relay ESP8266 Web Server

";

buf = buf.."

IOT Project irun4fun 2016

";

buf = buf.."

Battery Bank Power ON Power OFF

";

buf = buf.."

Solar Array Power ON Power OFF

";

local _on,_off = "",""

if(_GET.pin == "ON1")then

gpio.write(中继1,gpio。高);

elseif(_GET.pin == "OFF1")then

gpio.write(中继1,gpio。低);

elseif(_GET.pin == "ON2")then

gpio.write(中继2, gpio.高);

elseif(_GET.pin == "OFF2")then

gpio.write(中继2, gpio.低);

end

客户:send(buf);

客户:close();

collectgarbage();

end)

end)


跑步nodemcu_integer_0.9.5_20150318.bin
                                                                                            

回帖(1)

LL-LING宁

2024-7-22 17:05:52
根据您提供的代码片段,我将逐步分析并提供一些建议来确保您的代码正确编程。

1. 首先,确保您已经正确地初始化了WiFi模块:
```lua
wifi.setmode(wifi.STATION)
```

2. 接下来,配置您的WiFi SSID和密码:
```lua
wifi.sta.config("ssid", "weppassword")
```

3. 打印欢迎信息:
```lua
print('n太阳能光伏控制器 - ESP8266服务器 v1bn')
```

4. 使用tmr.alarm创建一个周期性任务,以检查WiFi连接状态:
```lua
tmr.alarm(0, 1000, 1, function()
```

5. 在周期性任务中,检查WiFi是否已连接:
```lua
if wifi.sta.getip() == nil then
    print("Connecting to AP...")
else
    IP, NM, GW = wifi.sta.getip()
    macAdd = wifi.sta.getmac()
    print("IP Info: ...")
end
```

6. 为了控制继电器,您需要设置GPIO引脚的模式和状态。例如,要设置GPIO2为输出并将其设置为高电平,您可以使用以下代码:
```lua
gpio.mode(2, gpio.OUTPUT)
gpio.write(2, gpio.HIGH)
```

7. 要在网页上控制继电器,您需要创建一个简单的HTTP服务器。以下是一个基本示例:
```lua
srv = net.createServer(net.TCP, 30)
srv:listen(80)
srv:on("receive", function(conn, payload)
    local buf = payload
    local cmd = buf:match("GET /%?cmd=(.*)")
    if cmd == "on" then
        gpio.write(2, gpio.HIGH)
        conn:send("继电器已打开")
    elseif cmd == "off" then
        gpio.write(2, gpio.LOW)
        conn:send("继电器已关闭")
    else
        conn:send("无效命令")
    end
    conn:on("sent", function(conn) conn:close() end)
end)
```

8. 确保您的HTML页面包含用于控制继电器的按钮,例如:
```html


```

请确保将“你的ESP8266_IP”替换为您的ESP8266设备的IP地址。

通过以上步骤,您应该能够正确地编程您的ESP8266扩展板以控制两个继电器。如果仍然遇到问题,请检查您的硬件连接和GPIO引脚配置。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分