美文网首页
ESP8266之esp-01s 第二阶段:模块发出wifi手机连

ESP8266之esp-01s 第二阶段:模块发出wifi手机连

作者: 对酒当歌的夜 | 来源:发表于2019-11-28 16:42 被阅读0次

    第一阶段:使用arduino实现通信
    第二阶段:模块发出wifi手机连接,实现继电器控制
    第三阶段:无线局域网内实现继电器控制:待续。。。
    第四阶段:连接服务器实现继电器控制:待续。。。

    原理及思路:


    第二阶段方案 原理图

    一.刷固件&导入lua程序。

    需要使用USB-TTL第一阶段的刷固件用这个成功了,这次的没成功买了个esp-01专用下载器刷机成功。网上还有说用arduino当下载器的,我试了也没成功。

    1)下载固件及脚本的软件

    软件在 tools 文件夹中。

    1. FLASH_DOWNLOAD_TOOLS_V3.6.4(下最新的,现在是3.6.7了) 用于下载ESP8266 固件。使用的是 Nodemcu 固件
    2. 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 软件并加载文件,设置参数。

    image.png
    1. 点击开始后就刷固件,等待显示完成字样。

    3)上传 LUA 脚本文件

    1. 运行 LuaLoader 软件 配置参数


      image.png
      image.png

      设置 USB 端口及参数好后点 OK.

    2. 点 Connect,连接下载器。


      image.png

      出现如下打印信息


      image.png
    3. 点击 Upload File, 把要下载的 lua 文件加载进来。点击“打开”开始上传程序,等待上传完。


      image.png

      4.点击 dofile,运行程序


      image.png
      到此,固件程序下载完成。

    二、手机控制继电器

    1. 硬件连接:
      将 ESP-01/01S 插回到继电器底板中。GND VCC 5-9v供电。
      注意,不要将电源接反(我直接使用arduino的5v供电)。


      image.png
    2. 安卓手机安装 ESP8266_Controller.apk,界面如下:


      image.png
    3. 将手机网络连接上 ESP-01/01S 发出的热点:
      ESP8266_XXX, 密码是:12345678
    4. 设置 IP,默认 IP 是:192.168.1.1(此配置可以在lua代码里面修改)

    5.点击 GPIO0 ON OFF,进行控制。可以看到两个开关开启关闭继电器和wifi模块上的灯会跟着点亮/熄灭,开关GPIO0的时候还能听到继电器开关的响声。

    TODO:后期等我抓个包,把安卓APP的接口发出来。。。


    相关工具

    送上相关工具和代码网盘链接
    提取码: erhw

    相关文章

      网友评论

          本文标题:ESP8266之esp-01s 第二阶段:模块发出wifi手机连

          本文链接:https://www.haomeiwen.com/subject/udybwctx.html