返回

ESP8266 TCP 服务器数据透传

人工智能

ESP8266 搭建 TCP 服务器实现数据透传

引言

随着物联网 (IoT) 技术的飞速发展,ESP8266 模块因其低成本、低功耗和强大的功能性而备受青睐。本文将重点介绍如何使用 ESP8266 建立一个 TCP 服务器,实现数据透传,从而为物联网设备提供无缝通信。

所需材料

  • ESP8266 模块 (如 NodeMCU、Wemos D1 Mini)
  • Arduino IDE
  • USB 数据线
  • 路由器或以太网连接

软件安装

  1. 下载并安装 Arduino IDE(集成开发环境):https://www.arduino.cc/en/Main/Software
  2. 打开 Arduino IDE 并转到“文件”>“首选项”。
  3. 在“其他板管理器 URL”字段中,添加 ESP8266 核心网址:https://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. 单击“确定”。
  5. 转到“工具”>“板”,然后选择您的 ESP8266 模块。

TCP 服务器程序

  1. 打开 Arduino IDE 并新建一个草图。
  2. 复制并粘贴以下代码:




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

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const int port = 80;

WiFiServer server(port);
WiFiClient client;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  client = server.available();

  if (client) {
    while (client.connected()) {
      if (client.available()) {
        String data = client.readStringUntil('\n');
        Serial.println(data);
      }
      if (Serial.available()) {
        String data = Serial.readStringUntil('\n');
        client.print(data);
      }
    }
    client.stop();
  }
}

程序详解

  • WiFi 设置 :使用 WiFi.begin() 连接到 WiFi 网络。
  • TCP 服务器 :使用 WiFiServer.begin() 创建一个 TCP 服务器,监听指定端口 (port)。
  • 客户端处理 :使用 client.available() 监听客户端连接,并使用 client.readStringUntil('\n') 读取客户端发送的数据。
  • 数据透传 :程序在客户端和串口之间中继数据,实现数据透传。

运行程序

  1. 将代码上传到 ESP8266 模块。
  2. 打开串口监视器(在 Arduino IDE 中:工具 > 串口监视器)。
  3. 在串口监视器中,将波特率设置为 115200。
  4. 使用 Telnet 客户端(如 PuTTY)连接到 ESP8266 的 TCP 服务器。

测试数据透传

  1. 在 Telnet 客户端中,输入数据并按 Enter 键。
  2. 查看 Arduino IDE 的串口监视器,您将看到接收到的数据。
  3. 在串口监视器中,输入数据并按 Enter 键。
  4. 在 Telnet 客户端中,您将看到发送的数据。

结论

本文展示了如何使用 ESP8266 建立一个 TCP 服务器,实现数据透传。此技术在构建各种物联网应用中至关重要,包括远程控制、数据采集和设备管理。