ESP32 + ENC28J60 作为TCP服务端
(电脑通过 网络调试助手 连接ESP32,实现双向通信)
完整代码
#include <SPI.h>
#include <EthernetENC.h> // 或 UIPEthernet.h
// 网络配置
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址
IPAddress ip(192, 168, 1, 100); // ESP32静态IP
const int serverPort = 8080; // 监听端口
EthernetServer server(serverPort); // TCP服务器
EthernetClient client; // 客户端对象
void setup() {
Serial.begin(115200);
delay(1000);
// 初始化ENC28J60
SPI.begin(18, 19, 23, 5); // SCK=18, MISO=19, MOSI=23, CS=5
Ethernet.begin(mac, ip);
// 启动TCP服务器
server.begin();
Serial.println("TCP Server Started");
Serial.print("ESP32 IP: ");
Serial.println(Ethernet.localIP());
Serial.println("Waiting for client...");
}
void loop() {
// 检查是否有新客户端连接
client = server.available();
if (client) {
Serial.println("\n[Client Connected]");
// 持续处理客户端数据
while (client.connected()) {
// 接收数据并打印到串口
if (client.available()) {
char c = client.read();
Serial.write(c); // 打印收到的数据
}
// 示例:若收到"ping",回复"pong"
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
client.print("ESP32 Reply: " + cmd); // 发送到客户端
}
}
client.stop();
Serial.println("[Client Disconnected]");
}
}
功能说明
-
作为TCP服务端:
- 监听端口
8080
,等待电脑连接。 - 实时打印客户端(网络调试助手)发送的数据。
- 可通过串口监视器输入内容,主动回复客户端。
- 监听端口
-
通信流程:
- 电脑连接ESP32的IP
192.168.1.100:8080
。 - 电脑发送任意数据 → ESP32串口显示。
- ESP32串口输入内容 → 发送到电脑。
- 电脑连接ESP32的IP
使用步骤
-
硬件接线:
- ENC28J60与ESP32连接:
SCK=18, MISO=19, MOSI=23, CS=5, VCC=3.3V, GND=GND
- ENC28J60与ESP32连接:
-
电脑端操作:
- 打开网络调试助手,选择 TCP客户端模式。
- 连接ESP32的IP
192.168.1.100
,端口8080
。
-
ESP32调试:
- 上传代码后,打开串口监视器(波特率115200)。
- 观察客户端连接状态和接收的数据。