??代碼(作為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)。
- 觀察連接狀態和接收到的數據。
效果:
?