ESP32 驱动 HUB75 LED 矩阵屏双屏级联显示WiFi 配网 TCP 推流 NTP 时钟前言HUB75 接口的 LED 矩阵屏亮度高、刷新快是做信息屏、时钟、动态画面的常见选择。但 HUB75 的扫描时序如果自己用 GPIO 模拟很难做到不闪烁好在有现成的 I2S-DMA 驱动库。本文记录我用ESP32 两块 64×64 HUB75 屏级联实现「WiFi 按需配网 TCP 推流显示 默认 NTP 时钟」的完整过程并给出双屏级联的快速验证方法。代码地址完整工程已开源在 Gitee欢迎 Star / 交流仓库地址https://gitee.com/chen-changyiEAsycc/two-esp32hub75eoledSSH 克隆git clone gitgitee.com:chen-changyiEAsycc/two-esp32hub75eoled.git一、硬件准备名称说明ESP32 开发板普通ESP32即可带 PSRAM 更稳HUB75 LED 矩阵屏64×641/32 扫描带 E 脚×2排线 / 杜邦线屏之间级联用排线屏到 ESP32 用杜邦线独立 5V 电源屏功耗大不能只靠 ES⚠️ 64×64 屏是 1/32 扫描比 32×321/16多一根E地址线接线时务必接上否则花屏或不亮。二、接线表HUB75ESP32 GPIOR125G126B127R214G212B213A23B19C5D17E18LAT4OE15CLK16两块屏之间第一块屏的输出排线接第二块屏的输入排线即可ESP32 这边引脚不变级联由库内部处理。三、依赖库在 Arduino IDE「库管理器」安装ESP32-HUB75-MatrixPanel-I2S-DMA作者 mrfaptastic—— 核心 DMA 驱动WiFiManager—— 按需配网AP 配置门户四、级联原理重点这个库的级联是纯参数配置不需要改任何接线HUB75_I2S_CFGmxconfig(PANEL_WIDTH,// 单屏宽 64PANEL_HEIGHT,// 单屏高 64PANEL_CHAIN// 链长2 表示两块横向级联);第三个参数chain_length设为 2 后库会把整个显示当作一个128×64 的虚拟屏来寻址左半区 x0~63 对应第 1 块屏右半区 x64~127 对应第 2 块屏。drawPixelRGB888(x,y,r,g,b)直接用 0~127 的 x 坐标即可GPIO 完全不变两块屏靠排线菊花链连接。五、完整工程架构整体流程上电 - WiFi 自动配网 - 启动 TCP 服务5000 端口- 接收 128×64×3 的 RGB888 帧 - 逐像素绘制空闲时显示 NTP 时钟。关键点按需配网用 WiFiManager首次启动无配网信息时生成ESP32_Setup热点手机连上配置 WiFi之后自动连接。推流协议每帧128×64×3 24576字节TCP 连续接收凑满一帧绘制一帧。默认时钟没有客户端连接时每秒刷新一次 NTP 时间避免空屏NTP 用国内服务器cn.pool.ntp.org、ntp.aliyun.com更稳。六、双屏级联验证左屏 1、右屏 2颜色不同配好级联后最直观的验证方式左屏画1、右屏画2且颜色不同一眼就能看出两块屏是否各自正常、级联方向对不对。// 在指定区域内画一个大号字符并居中void drawBigCharCentered(char c, uint16_t color, int regionX, int regionW, int regionH){matrix-setTextSize(8);matrix-setTextColor(color);matrix-setTextWrap(false);char s[2] {c, \0}; int16_t tbx, tby; uint16_t tbw, tbh; matrix-getTextBounds(s, 0, 0, tbx, tby, tbw, tbh); matrix-setCursor(regionX (regionW - tbw) / 2 - tbx, (regionH - tbh) / 2 - tby); matrix-print(s);}void setup() {Serial.begin(115200);setupMatrix();// 左屏(0~63) 青色 1右屏(64~127) 黄色 2drawBigCharCentered(‘1’, matrix-color565(0, 255, 255), 0, 64, 64);drawBigCharCentered(‘2’, matrix-color565(255, 255, 0), 64, 64, 64);}void loop() { /* 固定显示无需刷新 */ }预期效果左边屏青色 1右边屏黄色 2。根据现象排查 - 只显示一个数字 - 另一块屏排线/电源有问题 - 两个数字都在同一块屏上 - 级联线没接实际链长还是 1 - 左右颠倒 - 两块屏物理顺序与库默认相反对调排线或交换 1/2 即可。 ## 七、常见问题 1. **屏完全不亮**先查 E 脚64×64 必须、OE/LAT/CLK再查独立电源与共地。 2. **花屏 / 上下半屏错位**R1/G1/B1 与 R2/G2/B2 接反。 3. **NTP 不同步导致黑屏**国内 pool.ntp.org 可能超时换成 cn.pool.ntp.org、ntp.aliyun.com并在未同步时显示 -- 兜底别让屏空着。 4. **级联后内存不足**128×64 的 DMA 缓冲 帧缓冲更大必要时降低色深或换带 PSRAM 的 ESP32。 5. **文字偏左**1 这类窄字符用 getTextBounds 取真实边界再居中比按字符宽度居中更准。 ## 八、总结 - HUB75 双屏级联只需把库的 chain_length 设为 2硬件接好排线即可软件上是一个 128×64 虚拟屏无需改 GPIO。 - 用「左 1 右 2、颜色不同」可以快速验证级联是否成功、方向是否正确。 - 配合 WiFiManager 按需配网 TCP 推流就能做成一个可远程刷新画面的 LED 显示终端空闲时还能当 NTP 时钟用。 如果你也在玩 LED 矩阵屏欢迎留言交流。