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

文章目录

  • ESP8266串口wifi模块
  • 简介
  • 实验准备
  • 硬件接线
  • 程序下载
  • 注意事项
  • 总结

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个
LED1个
Microusb数据线(用于板子下载程序和供电)1条
杜邦线若干
网络调试助手APP1个

硬件接线

首先确定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在物联网应用中的潜力。您可以根据自己的需求和创意,进一步扩展该示例,实现更复杂的功能。希望这篇文章对您有所帮助,以上如有错误,欢迎各位留言指正!谢谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/49466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据面试题之Elasticsearch:每日三题(七)

大数据面试题之Elasticsearch:每日三题 1.Elasticsearch索引文档的流程&#xff1f;2.Elasticsearch更新和删除文档的流程&#xff1f;3.Elasticsearch搜索的流程&#xff1f; 1.Elasticsearch索引文档的流程&#xff1f; 协调节点默认使用文档ID参与计算(也支持通过routing)&a…

SpringBoot集成Lock4j 底层使用Redission 实现分布锁

Lock4j 在分布式系统中&#xff0c;实现锁的功能对于保证数据一致性和避免并发冲突是非常重要的。Lock4j是一个简单易用的分布式锁框架&#xff0c;而Redisson是一个功能强大的分布式解决方案&#xff0c;可以与Lock4j进行集成。 操作步骤 第一步&#xff1a;添加依赖 首先&…

Vite+Typescript+Vue3学习笔记

ViteTypescriptVue3学习笔记 1、项目搭建 1.1、创建项目(yarn) D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages...success Installed…

Debian LNMP架构的简单配置使用

一、LNMP简介 LinuxNginxMysqlPHP组成的网站架构&#xff0c;常用于中小型网站服务。 二、环境 Debian 6.1.27-1kali1 (2023-05-12) Nginx/1.22.1 10.11.2-MariaDB&#xff08;mysql&#xff09; PHP 8.2.7 &#xff08;Debian 6.1.27包含以上包&#xff0c;直接使用即…

爬虫003_pycharm的安装以及使用_以及python脚本模版设置---python工作笔记021

这里我们用ide,pycharm来编码,看一看如何下载 这里我们下载这个社区办,这个是免费的,个人版是收费的 然后勾选以后 安装以后我们来创建一个项目 这里可以选择python的解释器,选择右边的... 这里我们找到我们自己安装的python解释器

sql server导入.back文件

使用SQL server官方的连接工具 SQL server Management studio 有两种方式 第一种&#xff1a; 前提是&#xff0c;提前知道数据库名称&#xff0c;建好数据库 以数据库 TEST为例子 右键数据库选型&#xff0c;选择新建数据库 输入数据库名字&#xff0c;点击确定 创建完成之…

python爬虫(一)_爬虫原理和数据抓取

关于Python爬虫&#xff0c;我们需要学习的有&#xff1a; Python基础语法学习(基础知识)HTML页面的内容抓取(数据抓取)HTML页面的数据提取(数据清洗)Scrapy框架以及scrapy-redis分布式策略(第三方框架)爬虫(Spider)、反爬虫(Anti-Spider)、反反爬虫(Anti-Anti-Spider)之间的斗…

【设计模式】观察者设计模式解析

目录 一、观察者模式定义 二、观察者模式角色 三、观察者模式类图 四、观察者模式实例 五、观察者模式优缺点 5.1、优点 5.2、缺点 六、观察者模式应用 6.1、Spring 中观察者模式的四个角色 6.2、coding~~~~~~ 一、观察者模式定义 观察者模式(Observer Pattern)&#…

【MySQL基础】

目录 一、概述 1.什么是数据库 2.数据库能干什么 2.1 企业应用 2.2 金融行业 2.3 电子商务 2.4 社交媒体 2.5物联网 3.为什么要用数据库&#xff0c;优势、特性&#xff1f; 3.1 可靠性和稳定性 3.2 数据管理能力 3.3 数据共享和集成 3.4 数据安全性和隐私保护 3…

使用langchain与你自己的数据对话(三):检索(Retrieval)

之前我已经完成了使用langchain与你自己的数据对话的前两篇博客&#xff0c;还没有阅读这两篇博客的朋友可以先阅读一下&#xff1a; 使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割使用langchain与你自己的数据对话(二)&#xff1a;向量存储与嵌入 今天我们…

vue2+wangEditor5富文本编辑器(图片视频自定义上传七牛云/服务器)

1、安装使用 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save在main.js中引入样式 import wangeditor/editor/dist/css/style.css在使用编辑器的页…

java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

文章目录 一、记录文件相关操作方法二、代码1.读取路径返回List\<File>2.读取路径返回List\<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代码 1.读取路径返回List<File> import org.slf4j.LoggerFactory; import org.slf4j.Logger;impo…

【Rust笔记】意译解构 Object Safety for trait

意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…

性能测试 Linux 环境下模拟延时和丢包实现

在性能测试过程中&#xff0c;我们还需要模拟网络异常的情况下&#xff0c;是否会出现一些异常数据。最常见的就是写库操作&#xff0c;比如说我们下单的场景&#xff0c;如果出现网络异常的时候是否会出现数据对不上这种情况。 如我们JMeter发送成功的请求数量和最终数据库表…

向量vector与erase()

运行代码&#xff1a; //向量vector与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}frien…

将AWS S3大文件文件上传相关的API集成为js文件,功能包括 多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示

地址 https://github.com/gk-1213/easy-s3/tree/main easy-s3 将AWS S3大文件文件上传相关的API集成为js文件&#xff0c;功能包括多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示。 暂时不包括文件分片下载相关功能&#…

【论文阅读】利用道路目标特征的多期车载激光点云配准

目录 引 言1 道路场景点云特征2 配准方法2.1 配准基元获取2.2 特征点提取2.3 两期道路场景车载点云的配准 2.3.1 基于特征点的4PCS 粗配准 3 实验与分析4 结论5 参考文献 摘 要 针对车载移动测量系统获取的城市道路点云场景巨大、目标复杂多样&#xff0c;多期道路场景重访车载…

redis(10):spring+redis+mysql缓存实现

1 新建spring项目 2 修改pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="ht…

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测 近年来&#xff0c;随着城市化的不断推进和基础设施建设的不断发展&#xff0c;隧道建设也日益成为城市交通发展的必需品。然而&#xff0c;隧道建设中存在着一定的安全隐患&#xff0c;如地质灾害、地下水涌流等&…