【史上最全面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时退出


代码分析:


先连接wifi

定义WiFiServer

打开客户端

loop函数中看是否有客户端连接

如果有客户端发信息,则使用readStringUntil,直到\n时才停止

判断字符串,执行对应操作

如果不知道ip,可以使用localIP()获取,并打印到串口.

#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();
    }
  }
}
相关文章
|
7月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
1063 1
|
9月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
1334 0
|
11月前
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
2227 13
|
6月前
|
网络协议 Linux 虚拟化
配置VM网络:如何设定静态IP以访问主机IP和互联网
以上就是设定虚拟机网络和静态IP地址的基本步骤。需要注意的是,这些步骤可能会因为虚拟机软件、操作系统以及网络环境的不同而有所差异。在进行设定时,应根据具体情况进行调整。
490 10
|
9月前
|
监控 安全 Go
使用Go语言构建网络IP层安全防护
在Go语言中构建网络IP层安全防护是一项需求明确的任务,考虑到高性能、并发和跨平台的优势,Go是构建此类安全系统的合适选择。通过紧密遵循上述步骤并结合最佳实践,可以构建一个强大的网络防护系统,以保障数字环境的安全完整。
192 12
|
10月前
|
监控 安全 网络安全
网络安全新姿势:多IP配置的五大好处
服务器配置多IP地址,既能提升网络速度与安全性,又能实现多站点托管和故障转移。本文详解多IP的五大妙用、配置方法及进阶技巧。从理论到实践,合理规划IP资源,让服务器性能跃升新高度。
313 2
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1512 31
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
467 12
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
845 7