ESP8266之esp-01s 第二阶段:模块发出wifi手机连
第一阶段:使用arduino实现通信
第二阶段:模块发出wifi手机连接,实现继电器控制
第三阶段:无线局域网内实现继电器控制:待续。。。
第四阶段:连接服务器实现继电器控制:待续。。。
原理及思路:
第二阶段方案 原理图
一.刷固件&导入lua程序。
需要使用USB-TTL第一阶段的刷固件用这个成功了,这次的没成功买了个esp-01专用下载器刷机成功。网上还有说用arduino当下载器的,我试了也没成功。
1)下载固件及脚本的软件
软件在 tools 文件夹中。
- FLASH_DOWNLOAD_TOOLS_V3.6.4(下最新的,现在是3.6.7了) 用于下载ESP8266 固件。使用的是 Nodemcu 固件
- LuaLoader 用于上传 LUA 脚本。
其中init.lua代码如下:
print("Ready to start soft ap")
local str=wifi.ap.getmac();
local ssidTemp=string.format("%s%s%s",string.sub(str,10,11),string.sub(str,13,14),string.sub(str,16,17));
cfg={}
cfg.ssid="ESP8266_"..ssidTemp;
cfg.pwd="12345678"
wifi.ap.config(cfg)
cfg={}
cfg.ip="192.168.1.1";
cfg.netmask="255.255.255.0";
cfg.gateway="192.168.1.1";
wifi.ap.setip(cfg);
wifi.setmode(wifi.SOFTAP)
str=nil;
ssidTemp=nil;
collectgarbage();
print("Soft AP started")
print("Heep:(bytes)"..node.heap());
print("MAC:"..wifi.ap.getmac().."\r\nIP:"..wifi.ap.getip());
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
buf = buf.."HTTP/1.1 200 OK\n\n"
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
if(_GET.pin == "ON1")then
gpio.write(led1, gpio.HIGH);
print("led1 on")
elseif(_GET.pin == "OFF1")then
gpio.write(led1, gpio.LOW);
print("led1 off")
elseif(_GET.pin == "ON2")then
gpio.write(led2, gpio.HIGH);
print("led2 on")
elseif(_GET.pin == "OFF2")then
gpio.write(led2, gpio.LOW);
print("led2 off")
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
2)刷固件操作
1.将 ESP-01/01S 正确的插到下载器上。如下图所示
image.png
2.将 USB 下载器插到电脑 USB 端口上,如果电脑没有安
装 CP2104 的驱动,请在下面链接中下载驱动并安装:http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
(我接上去能识别就没下这个驱动)
3.运行 FLASH_DOWNLOAD_TOOLS_V3.6.7 软件并加载文件,设置参数。
- 点击开始后就刷固件,等待显示完成字样。
3)上传 LUA 脚本文件
-
运行 LuaLoader 软件 配置参数
image.png
image.png
设置 USB 端口及参数好后点 OK.
-
点 Connect,连接下载器。
image.png
出现如下打印信息
image.png -
点击 Upload File, 把要下载的 lua 文件加载进来。点击“打开”开始上传程序,等待上传完。
image.png
4.点击 dofile,运行程序
image.png
到此,固件程序下载完成。
二、手机控制继电器
-
硬件连接:
将 ESP-01/01S 插回到继电器底板中。GND VCC 5-9v供电。
注意,不要将电源接反(我直接使用arduino的5v供电)。
image.png -
安卓手机安装 ESP8266_Controller.apk,界面如下:
image.png - 将手机网络连接上 ESP-01/01S 发出的热点:
ESP8266_XXX, 密码是:12345678 - 设置 IP,默认 IP 是:192.168.1.1(此配置可以在lua代码里面修改)
5.点击 GPIO0 ON OFF,进行控制。可以看到两个开关开启关闭继电器和wifi模块上的灯会跟着点亮/熄灭,开关GPIO0的时候还能听到继电器开关的响声。
TODO:后期等我抓个包,把安卓APP的接口发出来。。。
相关工具
送上相关工具和代码网盘链接
提取码: erhw