ESP32开发-作为TCP客户端发送数据到网络调试助手
简化版代码(仅作为TCP客户端)
#include <SPI.h>
#include <EthernetENC.h> // 使用EthernetENC库// 网络配置
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址
IPAddress ip(192, 168, 1, 100); // ESP32的IP
IPAddress serverIP(192, 168, 1, 150); // 电脑IP(网络调试助手)
const int serverPort = 8080; // 电脑端口EthernetClient client; // TCP客户端void setup() {Serial.begin(115200);delay(1000);// 初始化ENC28J60SPI.begin(18, 19, 23, 5); // SCK=18, MISO=19, MOSI=23, CS=5Ethernet.begin(mac, ip);Serial.println("ESP32 TCP Client Ready");Serial.print("Local IP: ");Serial.println(Ethernet.localIP());
}void loop() {// 如果未连接,尝试连接服务器if (!client.connected()) {Serial.println("Connecting to server...");if (client.connect(serverIP, serverPort)) {Serial.println("Connected to server!");client.print("Hello from ESP32!"); // 连接后立即发送一条消息} else {Serial.println("Connection failed!");}delay(2000); // 重试间隔}// 如果已连接,检查是否有数据可读if (client.available()) {char c = client.read();Serial.write(c); // 打印接收到的数据}// 示例:每5秒发送一次数据(可选)static unsigned long lastSend = 0;if (client.connected() && millis() - lastSend >= 5000) {lastSend = millis();client.print("ESP32 heartbeat"); // 定时发送心跳数据Serial.println("Sent heartbeat");}
}
功能说明
-
作为TCP客户端:
- 自动连接电脑(
192.168.1.150:8080
)。 - 连接成功后发送
"Hello from ESP32!"
。 - 每5秒发送一次心跳数据(
"ESP32 heartbeat"
)。
- 自动连接电脑(
-
接收数据:
- 实时打印从服务器(网络调试助手)接收的数据。
-
自动重连:
- 如果断开连接,每2秒尝试重连一次。
使用步骤
-
硬件接线:
- 确保ENC28J60与ESP32正确连接(SCK=18, MISO=19, MOSI=23, CS=5)。
- ENC28J60使用3.3V供电。
-
电脑端准备:
- 打开网络调试助手,选择TCP服务器模式,监听端口
8080
。 - 确保电脑IP为
192.168.1.150
(或修改代码中的serverIP
)。
- 打开网络调试助手,选择TCP服务器模式,监听端口
-
ESP32操作:
- 上传代码后,打开串口监视器(波特率115200)。
- 观察连接状态和接收到的数据。