文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-13 14:23

关注

文章目录


前言

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 
  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 #include 

创建服务端并指定端口:
使用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()获取,并打印到串口.

#include #include #include #define Led 2#define Relays 5#define beep 7WiFiServer 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();    }  }}

来源地址:https://blog.csdn.net/m0_62599305/article/details/129114632

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯