基于ESP8266+网络调试助手点灯实验

ESP8266串口wifi模块

在这里插入图片描述

简介

ESP8266 是一种低成本、高性能的 Wi-Fi 模块,内置了 TCP/IP 协议栈,它可以作为单独的无线网络控制器,或者与其他微控制器进行串口通信。它具有以下特点:
1、采用CH340芯片,是一款高性价比开发板;
2、设计,使USB接口更加牢固;
3、文档资料齐全,任何人可免费获取,仅供传阅;
4、每一块出货板子都是经过严格测试(测试一块板子需2-5分钟),严格把控质量。

支持无线802.11 b/g/n标准;
支持STA/AP/STA+AP三种工作模式;
内置TCP/IP协议栈,支持多路TCPClient连接(5MAX);
传输速率:110-460800bps:支持UART/GPIO数据通信接口;支持远程固件升级(OTA);工作温度:-40℃~+125℃;驱动形式:双路大功率H桥驱动

在本次实验中实现ESP8266手机点灯,即通过手机 APP 控制 ESP8266 来实现点亮LED和熄灭LED。

实验准备

ESP8266模块 1个
LED 1个
Microusb数据线(用于板子下载程序和供电) 1条
杜邦线 若干
网络调试助手APP 1个

硬件接线

首先确定led要连接在esp8266的哪个引脚,查看esp8266引脚定义:
在这里插入图片描述
本次实验点亮LED使用esp8266模块的D2引脚,通过引脚定义可以知道它为GPIO4. 所以在arduino中定义led引脚为4, 其中led正极固定接vin给高电平,led负极通过D2引脚给高低电平变化,控制led的亮灭。硬件连接图如下:

在这里插入图片描述
在这里插入图片描述

程序下载

#include <ESP8266WiFi.h>

#define led 4 //led接在esp8266的GPIO4上
const char *ssid     = "YXDZ_8266";    //要连接的wifi名称
const char *password = "12345678";    //连接的wifi密码
const char *host = "172.21.150.2";    //要连接的手机端IP,手机和8266要在同一网络下

WiFiClient client;           //创建WiFiClient对象client,用于处理TCP连接
const int tcpPort = 8080;  //创建服务器时指定的端口号


void setup()
{
    
    
    Serial.begin(9600);               //初始化串口通信,波特率为9600
    pinMode(led,OUTPUT);             //将LED引脚设置为输出模式
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);          //通过串口显示连接的wifi名称

    WiFi.begin(ssid, password);   //建立WiFi连接

     //等待连接建立
    while (WiFi.status() != WL_CONNECTED)
    {
    
    
        delay(500);
    }

 //连接成功信息及打印8266ip地址
    Serial.println("");
    Serial.println("Connection established!");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}

void loop()
{
    
    
    while (!client.connected())             //若未连接到主机,则客户端进行连接
    {
    
    
        if (!client.connect(host, tcpPort))//如果客户端未连接,使用client.connect()函数尝试连接主机并在500毫秒后再次尝试
        {
    
    
            Serial.println("connection....");
            delay(500);
        }
    }
    while (client.available())   //如果客户端连接成功,使用while (client.available())循环处理从主机接收到的数据
    {
    
    
        char val = client.read();   //将接收到的字符存储在变量val中
        if(val=='1'){
    
                  //如果val等于'1',则通过将LED引脚设置为LOW来关闭LED

           digitalWrite(led, LOW);
        }
        if(val=='0')             //如果val等于'0',则通过将LED引脚设置为HIGH来打开LED
        {
    
    
            digitalWrite(led, HIGH);
        }
    }
}

上面的代码实现了以下功能:

WiFi连接:通过WiFi.begin(ssid, password)语句连接到指定的WiFi网络。在setup()函数中,代码会一直等待,直到成功连接到WiFi网络为止。连接成功后,通过WiFi.localIP()获取并打印ESP8266的IP地址。

与手机端通信:使用client.connect(host, tcpPort)建立与手机端的TCP连接。在loop()函数中,代码会检测是否已连接到手机端。如果未连接,则通过延迟等待一段时间,并重试连接。一旦成功连接,代码会继续执行。

接收和处理数据:通过client.available()检测是否有数据可用。如果有数据可用,通过client.read()读取数据。在这个例子中,代码会判断接收到的数据是否为1或0,并根据接收到的值点亮或熄灭连接到ESP8266的LED。

综上所述,上述代码实现了通过ESP8266连接到指定的WiFi网络,并与手机端建立TCP连接进行数据交互。通过接收来自手机端的指令,控制LED的亮灭。这个代码可以作为一个简单的远程控制示例,可用于控制远程设备的开关状态。

程序完成后我们将程序上传至esp8266模块:

在这里插入图片描述
程序下载后esp8266会连接wifi,通过串口可以查看wifi连接相关信息:
在这里插入图片描述

手机连接与esp8266连接的同一wifi,

在这里插入图片描述

手机上打开网络调试助手,新建服务器:
在这里插入图片描述
点击新建的服务器进入,会自动监听,显示已连接,表示手机端与esp8266已经连接成功,此时就可以通过手机与esp8266通信了,
在这里插入图片描述

选中最下面的纸飞机可以进行快捷发送,这样就能比较方便的控制led的亮灭了。
在这里插入图片描述

在这里插入图片描述
实验效果:
在这里插入图片描述

注意事项

在使用以上代码实现功能时,请注意以下几点:

  1. 替换ssid和password变量的值为您要连接的WiFi网络的凭据。确保凭据正确,以便ESP8266能够成功连接到WiFi网络。

  2. 替换host变量的值为您要连接的主机的IP地址。确保IP地址正确,以便ESP8266能够成功建立TCP连接。

  3. 确保连接的主机在指定的端口上监听TCP连接。在代码中,端口号为8080,如果您的主机使用了不同的端口,请相应地修改tcpPort常量的值。

  4. 根据您的硬件连接,确保将LED正确连接到ESP8266模块的指定引脚。在代码中,LED连接到引脚4,如果您将LED连接到其他引脚,请相应地修改led常量的值。

  5. 如果您的主机发送的数据是按照不同的格式或协议进行的,请根据您的需求修改loop()函数中处理接收数据的代码。目前的代码只是简单地根据接收到的字符来控制LED的状态。

  6. 如果手机上没有对应的网络调试助手,也可以通过电脑PC端的网络调试助手进行连接,这里推荐一个方便好用的软件NetAssist,支持快捷指令发送,和手机上的实验效果一样。

在使用代码之前,确保您已经安装了适用于ESP8266开发板的Arduino开发环境,并正确配置了开发环境。这包括选择正确的开发板和端口,并安装了ESP8266库。

总结

本文主要介绍了ESP8266连接WiFi并与手机端通信的功能。使用ESP8266WiFi库来连接WiFi网络,并使用WiFiClient库与手机端进行通信。代码中定义了一个LED连接到ESP8266的GPIO4上,然后在setup()函数中初始化串口、LED引脚和WiFi连接。在loop()函数中,首先检测是否已连接到服务端,并在连接成功后开始接收来自手机端的数据。如果收到的数据是1,则点亮LED,如果是0,则熄灭LED。

通过本文,我们学习了如何使用ESP8266模块连接到WiFi网络,并通过与主机建立TCP连接来控制LED。这是一个简单的示例,说明了ESP8266在物联网应用中的潜力。您可以根据自己的需求和创意,进一步扩展该示例,实现更复杂的功能。希望这篇文章对您有所帮助,以上如有错误,欢迎各位留言指正!谢谢阅读!

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/131967561