|
|
ESP32 负责:
接收 串口数据
通过 WiFi 或蓝牙发送给电脑
接收电脑回复
再转发回 串口
WiFi TCP 透明串口
原因:
速度高
稳定
延迟低
Windows/Linux/macOS 都容易写上位机
可以远距离
不依赖蓝牙驱动
ESP32-S3 WiFi 非常成熟
源芯片
UART
↓
ESP32-S3
WiFi TCP Server
↓
电脑客户端
电脑只需要连接 TCP 即可
ESP32-S3 Arduino 固件
适用于:
ESP32-S3-N16R8
Arduino IDE
UART 双向透明转发
WiFi STA 模式
TCP Server
接线
ESP32-S3:
源芯片 ESP32-S3
TX GPIO18(RX)
RX GPIO17(TX)
GND GND
注意:
必须共地
F321 如果是 5V TTL,需要电平转换
ESP32 是 3.3V
Arduino 代码
#include <WiFi.h>
/*========================
WiFi 配置
========================*/
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
/*========================
TCP Server
========================*/
WiFiServer server(8899);
WiFiClient client;
/*========================
UART 配置
========================*/
HardwareSerial SerialUART(1);
/*
ESP32-S3 UART1 引脚
RX = GPIO18
TX = GPIO17
*/
#define UART_RX 18
#define UART_TX 17
/*========================
初始化
========================*/
void setup()
{
Serial.begin(115200);
/* UART 初始化 */
SerialUART.begin(
115200,
SERIAL_8N1,
UART_RX,
UART_TX
);
/* WiFi 连接 */
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println();
Serial.println("Connecting WiFi...");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
/* 启动 TCP Server */
server.begin();
Serial.println("TCP Server Started");
}
/*========================
主循环
========================*/
void loop()
{
/* 检查客户端连接 */
if (!client || !client.connected())
{
client = server.available();
if (client)
{
Serial.println("PC Connected");
}
}
/*------------------------------------------------
UART -> TCP
源芯片 发给电脑
------------------------------------------------*/
while (SerialUART.available())
{
uint8_t c = SerialUART.read();
if (client && client.connected())
{
client.write(c);
}
}
/*------------------------------------------------
TCP -> UART
电脑发给 源芯片
------------------------------------------------*/
while (client && client.connected() && client.available())
{
uint8_t c = client.read();
SerialUART.write(c);
}
}
Arduino IDE 配置
开发板:ESP32S3 Dev Module
建议参数:
参数 值
USB CDC On Boot Enabled
Flash Mode QIO
Flash Size 16MB
PSRAM OPI PSRAM
Upload Speed 921600
ESP32 启动后会打印
IP: 192.168.1.88
电脑连接:
192.168.1.88:8899
即可。
Windows 测试方法
推荐:
TCP Socket Tool
网络调试助手
Hercules
NetAssist
也可以:
telnet 192.168.1.88 8899
数据流
F321 UART TX
↓
ESP32 UART RX
↓
TCP发送
↓
PC
PC回复
↓
TCP接收
↓
ESP32 UART TX
↓
F321 UART RX
延迟
通常:
WiFi 局域网
延迟 2~10ms
已经足够实时。
后续可升级功能
你后面还可以继续扩展:
1. 自动重连
WiFi 断开自动恢复。
2. 多客户端
允许多个电脑同时查看数据。
3. UDP模式
更低延迟。
4. WebSocket
浏览器直接查看数据。
5. BLE 串口
手机 APP 连接。
6. 数据缓存队列
避免高速 UART 丢包。 |
|