【史上最全面esp32教程】网络篇和tcp/ip的使用

这篇具有很好参考价值的文章主要介绍了【史上最全面esp32教程】网络篇和tcp/ip的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

ESP32是一款集成Wi-Fi和蓝牙的开发板,它可以轻松地和其他设备进行网络和TCP/IP通信


提示:以下是本篇文章正文内容,下面案例可供参考

esp32网络学习路线

ESP32网络学习:

了解网络协议:
在了解ESP32的网络功能之前,需要了解一些基本的网络协议,例如TCP,IP,DNS和HTTP等。这可以帮助您更深入地了解如何使用ESP32与其他设备进行通信。

配置Wi-Fi:
可以通过在代码中编写Wi-Fi网络的SSID和密码来配置ESP32连接到Wi-Fi网络。您需要通过WiFi.begin()函数初始化Wi-Fi连接。该函数返回一个值,表示设备是否成功连接到网络。

获取IP地址:
一旦ESP32连接到Wi-Fi,您可以使用WiFi.localIP()函数获取ESP32的IP地址。此IP地址将用于与其他设备进行通信。

使用ping测试连接:
您可以使用ping命令测试您的ESP32是否可以与其他设备进行连接。只需要键入ping后跟ESP32的IP地址即可。

进行HTTP请求:
您可以使用HTTP请求库(例如ArduinoHttpClient)在ESP32和应用程序之间进行通信。使用HTTP的一个优点是它是面向Web的,因此它非常适用于与Web API进行通信。

使用WebSocket:
WebSocket可以让ESP32与其他设备进行双向通信,这对于实时应用程序非常有用。您需要使用一个WebSocket客户端库(例如ArduinoWebSocket)。

ESP32连接网络

配置Wi-Fi
使用ESP32连接到Wi-Fi网络有多种方式。可以通过在代码中编写Wi-Fi网络的SSID和密码、通过SoftAP模式创建一个热点以及使用WiFiManager库等方式。以下是通过代码配置ESP32连接到Wi-Fi网络的步骤:

  1. 包含Wi-Fi库。
#include <WiFi.h>
  1. 指定要连接的Wi-Fi网络的SSID和密码。
const char* ssid = "SSID";
const char* 密码 = "...";
  1. 在setup()函数中初始化Wi-Fi连接。
WiFi.begin(ssid, password);//开始WiFi连接
  // 等待Wi-Fi连接
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

在第二步中,我们可以定义变量去存储wifi名称和密码,也可以在WiFi.begin的参数里直接添加我们需要的名称和密码。

WiFi.begin(ssid, password);//开始wifi连接
WiFi.status()获取wifi状态

获取IP地址:

String ip = WiFi.localIP();
Serial.print("IP address: ");
Serial.println(ip);

我们可以使用WiFi.localIP();函数获取ip,返回值为String
我们可以通过串口打印出来。

ESP32 TCP/IP通信

包含头文件:

#include <WiFiClient.h>
#include <WiFiServer.h>

创建服务端并指定端口:
使用WiFiServer类开启tcp服务端

WiFiServer server(80); //使用TCP端口80创建一个WiFi服务器
server.begin(); //开启服务器

接收响应,进行判断是否为合法的客户端:

WiFiClient client = server.available(); //检查是否有新的客户机连接
if (client) {
    //如果为真,则代表有客户端了
}

使用server.available();返回一个WiFiClient,他是其他的客户端 的类。

接收客户端的信息:

char c = client.read();

我们也可以使用下面的读取字符串:

String rea = client.readStringUntil('\n');

client.readStringUntil(‘\n’);直到读到’\n’时才停止读取

给客户端发信息:
我们可以直接使用print或println函数进行发送信息:

client.println(变量);
client.print("Message");

停止与客户端的通信:

client.stop();

示例程序

发送LedOn时d0亮,LedOff则相反。
发送RelaysOn时继电器吸气磁铁,RelaysOff则相反。
发送BeepOn时,响一次。
发送quit时退出

代码分析:

  1. 先连接wifi
  2. 定义WiFiServer
  3. 打开客户端
  4. loop函数中看是否有客户端连接
  5. 如果有客户端发信息,则使用readStringUntil,直到\n时才停止
  6. 判断字符串,执行对应操作

如果不知道ip,可以使用localIP()获取,并打印到串口.文章来源地址https://www.toymoban.com/news/detail-444492.html

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
#define Led 2
#define Relays 5
#define beep 7

WiFiServer server(8080);

void setup() {
  // 设置串口通信
  Serial.begin(115200);
  pinMode(Led,OUTPUT);
  pinMode(Relays,OUTPUT);
  pinMode(beep,OUTPUT);

  // 连接到Wi-Fi
  WiFi.begin("wifi", "12345678");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("连接到Wi-Fi...");
  }
  Serial.println("连接到Wi-Fi成功!");

  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if(client)
  {
    String rea = client.readStringUntil('\n');
    if(rea == "LedOn")
    {
        digitalWrite(Led,HIGH);
    }
    else if(rea == "LedOff")
    {
      digitalWrite(Led,LOW);
    }
    else if(rea == "RelaysOn")
    {
      digitalWrite(Relays,HIGH);
    }
    else if(rea == "RelaysOff")
    {
      digitalWrite(Relays,LOW);
    }
    else if(rea == "Beep")
    {
      for(char i = 0;i<10;i++)
        digitalWrite(beep,!digitalRead(beep));//读取现在的状态,并切换状态,响
    }
    else if(rea == "quit")
    {
      client.stop();
    }
  }
}

到了这里,关于【史上最全面esp32教程】网络篇和tcp/ip的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C生万物 | 指针入门到进阶史上最全面教程

    文章篇幅较长,可前往电脑端进行学习💻 之前很多粉丝私信我说 C语言指针 怎么这么难,看了很多视频都学不懂,于是我写了一篇有关指针从入门到进阶的教学,帮助那些对指针很困扰的同学有一个好的学习途径,下面是本文的参考配套视频,出自b站【鹏哥C语言】,鹏哥讲

    2024年02月04日
    浏览(28)
  • 提供最全面最详细的ESP32从零开始搭建一个物联网平台教程(从最基本的配网和内建WEB服务器开始到自已搭建一个MQTT服务器)

    目录 教程大纲  硬件需求 教程说明 教程章节链接 ESP32搭建WEB服务器一(AP配网) ESP32搭建WEB服务器二(STA模式) ESP32搭建WEB服务器三(AP模式与STA模式共存) ESP32搭建WEB服务器四(最简单的WEB服务器) ESP32搭建WEB服务器五(内嵌HTML) ESP32搭建WEB服务器六(利用SPIFFS存放html,css,js等文件(读取

    2024年02月13日
    浏览(50)
  • 网络安全面试题大全(整理版)300+面试题附答案详解,最全面详细

    随着国家政策的扶持,网络安全行业也越来越为大众所熟知,想要进入到网络安全行业的人也越来越多。 为了拿到心仪的Offer之外,除了学好网络安全知识以外,还要应对好企业的面试。 作为一个安全老鸟,工作这么多年,面试过很多人也出过很多面试题目,也在网上收集了

    2024年02月08日
    浏览(43)
  • Vscode搭建开发调试STM32/RISC-V环境IDE(最全面)

    单片机开发IDE环境如KeilMDK,虽然操作简单 ,方便调试。但就是代码编辑风格很老套,中文符号乱码还是常有的事。而如今流行的vscode编辑器很不错,免费且相当轻量级,用来代码开发体验很不错,看着都舒服。Clion IDE体验更好,但就是它不免费且体积较大。Stm32cubeIDE生成工

    2024年02月16日
    浏览(50)
  • 网络安全面试题大全(整理版)500+面试题附答案详解,最全面详细,看完稳了

    随着国家政策的扶持,网络安全行业也越来越为大众所熟知,想要进入到网络安全行业的人也越来越多。 为了拿到心仪的Offer之外,除了学好网络安全知识以外,还要应对好企业的面试。 作为一个安全老鸟,工作这么多年,面试过很多人也出过很多面试题目,也在网上收集了

    2024年02月09日
    浏览(38)
  • 【JaveWeb教程】(26) Mybatis基础操作(新增、修改、查询、删除) 详细代码示例讲解(最全面)

    学习完mybatis入门后,我们继续学习mybatis基础操作。 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除

    2024年01月17日
    浏览(30)
  • 【JaveWeb教程】(25) JDBC、数据库连接池、Lombok 详细代码示例讲解(最全面)

    2.1 介绍 通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。 Mybatis框架,就是对原始的JDBC程序的封装。 那到底什么是JDBC呢,接下来,我们就来介

    2024年01月16日
    浏览(50)
  • 【JaveWeb教程】(22) MySQL数据库开发之多表查询:内连接、外连接、子查询 详细代码示例讲解(最全面)

    1.1.1 数据准备 SQL脚本: 1.1.2 介绍 多表查询:查询时从多张表中获取所需数据 单表查询的SQL语句:select 字段列表 from 表名; 那么要执行多表查询,只需要使用逗号分隔多张表即可,如: select 字段列表 from 表1, 表2; 查询用户表和部门表中的数据: 此时,我们看到查询结果中包

    2024年01月22日
    浏览(44)
  • SpringCloud最新最全面试题

    目录 一、简单说一说什么是微服务? 二、微服务有哪些优缺点? 三、微服务、分布式、集群的区别? 四、什么是Eureka? 五、Eureka有那两大组件? 六、actuator是什么? 七、Discovery是什么? 八、什么是Eureka的自我保护机制? 九、微服务有很多注册中心组件,说说你知道的有

    2024年02月12日
    浏览(34)
  • Flutter最全面试题大全

    在理解这些问题之前,建议看一下Flutter架构原理,如下链接: https://blog.csdn.net/wang_yong_hui_1234/article/details/130427887?spm=1001.2014.3001.5501 1.使用overflow属性 2.使用maxLines属性 3.使用Expanded或Flexible 4.使用ListView或SingleChildScrollView Widget是UI的声明式描述,它们通常是层次结构的顶部。

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包