ESP32 Display Controller (VGA, PAL/NTSC Color Composite, SSD1306, ST7789, ILI9341), PS/2 Mouse and Keyboard Controller, FabGL

ESP32 ⭐⭐☆☆☆ (2/5) 已发布
fdivitto 1672 Stars NOASSERTION BOM 完整度: /5 教程完整度: /5

项目简介

ESP32 Display Controller (VGA, PAL/NTSC Color Composite, SSD1306, ST7789, ILI9341), PS/2 Mouse and Keyboard Controller,


FabGL 是一个专为 ESP32 微控制器设计的综合性图形库,由 Fabrizio Di Vittorio 创建。它最引人注目的能力是让 ESP32 输出 VGA 信号(通过简单的电阻网络实现数模转换),以及生成彩色 NTSC/PAL 复合视频信号,无需额外复杂硬件。此外,它还支持 I2C 和 SPI 接口的常见显示屏,如 ILI9341、ST7789 和 SSD1306。

标签

项目特点

支持多种显示输出:VGA、PAL/NTSC 彩色复合、OLED(SSD1306)、TFT(ST7789、ILI9341)
集成 PS/2 键盘与鼠标控制器,可直接连接标准外设
内置图形库、声音引擎和游戏引擎,适合开发复古游戏和交互应用
提供 ANSI/VT100 终端模拟器,可模拟经典计算机终端
基于 ESP32 双核处理器,性能足以运行模拟器和实时图形
开源社区活跃,GitHub 星数超过 1600,文档和示例丰富

技术规格

支持芯片
显示接口
视频分辨率(VGA)
视频分辨率(PAL)
视频分辨率(NTSC)
输入接口
音频输出
图形库
终端模拟
许可证

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
ESP32 开发板(如 ESP32-DevKitC) 1 推荐 4MB Flash 以上
VGA 显示器或支持 VGA 的屏幕 1 可选,用于 VGA 输出
复合视频显示器(PAL/NTSC) 1 可选,用于复合视频输出
SSD1306 OLED 模块(128×64) 1 可选,I2C/SPI
ST7789 TFT 模块(240×240) 1 可选,SPI
ILI9341 TFT 模块(320×240) 1 可选,SPI
PS/2 键盘 1 标准 PS/2 接口
PS/2 鼠标 1 可选
杜邦线/面包板 若干 用于连接外设
USB 数据线(Micro USB) 1 供电与编程

所需工具

工具用途是否必需
Arduino IDE 或 PlatformIO 编写、编译、上传代码 ✅ 是
ESP32 板支持包 在 Arduino IDE 中支持 ESP32 ✅ 是
USB 转串口驱动(CP210x/CH340) 连接 ESP32 与电脑 ✅ 是
示波器或逻辑分析仪 调试视频时序和 PS/2 信号 ▢ 推荐
万用表 检查连接和电压 ▢ 推荐

能力画像

**记忆与知识检索**:3/5 — 项目文档和示例较为完整,但部分细节需查阅源码和社区讨论。
**动手与操作**:4/5 — 需要焊接和连接外设,但整体硬件接线简单,适合动手实践。
**编程与算法**:3/5 — 使用 C++ 编写,涉及图形渲染、终端模拟和音频合成,有一定编程门槛。
**设计与建模**:2/5 — 项目主要聚焦于底层驱动和库,不涉及复杂硬件设计或 3D 建模。
**实验与调试**:4/5 — 支持多种显示和输入设备,适合反复调试和实验不同配置。
**协作与分享**:3/5 — 开源项目,可通过 GitHub 提交 Issue 和 PR,但社区规模中等。
**学习与研究**:4/5 — 适合学习嵌入式图形、视频信号生成、PS/2 协议和终端模拟。
**系统集成**:3/5 — 可与其他 ESP32 项目集成,但需注意资源占用和引脚冲突。

所需技能

基础 C/C++ 编程 了解 Arduino 或 PlatformIO 开发环境 熟悉 ESP32 的 GPIO、SPI、I2C 接口 基本电子知识(面包板、杜邦线连接) 对视频信号(VGA、PAL/NTSC)有基本了解更佳 对 PS/2 协议有基本了解更佳

适用场景

制作复古终端或 VT100 模拟器
开发基于 ESP32 的简易游戏机
构建带图形界面的嵌入式控制面板
学习视频信号生成和显示驱动
制作带键盘鼠标交互的 IoT 信息屏
教育和演示嵌入式系统原理