触摸屏¶
触摸屏不仅仅是显示屏。它是显示屏加用户输入。它不仅必须显示温度或按钮,还必须告诉设备你在哪里触摸。
因此,触摸屏几乎总是比 OLED 更复杂。你需要选择不仅大小和分辨率,还要理解谁绘制界面、谁处理触摸、使用什么界面以及所选固件是否支持它。
触摸屏何时有用¶
如果设备需要完整的本地界面,触摸屏是有意义的:
- 选择干燥模式;
- 设置温度和时间;
- 材料配置文件列表;
- 确认错误;
- 手动风扇、照明或阻尼器控制;
- Wi-Fi 设置;
- 在没有电话或计算机的情况下查看状态。
如果你只需要显示温度、错误和模式,通常 OLED、几个按钮、编码器或网络界面就足够了。触摸屏增加成本、电源、机箱空间、固件、线和另一个故障点。
主要问题:谁绘制界面¶
购买前,回答主要问题:用户界面住在哪里。
有几种不同的屏幕类:
原始 TFT 是带有 ILI9341、ILI9488、ST7789 等控制器的简单屏幕,加上 XPT2046 或 FT5x06 等单独的触摸控制器。你的微控制器或固件绘制界面。这很灵活但需要代码、内存、驱动程序和标定。
智能 UART/HMI 显示是带有自己固件和界面编辑器的屏幕,如 Nextion。微控制器通过 UART 发送命令,屏幕显示页面和元素。这减少了 MCU 负载,但将你的项目绑定到该屏幕的工具和协议。
打印机 TFT,如 BTT TFT35,通常通过 UART 有自己的触摸屏模式,通过 EXP 连接器有经典 12864 LCD 模拟。这个屏幕对于 Marlin/3D 打印机板很方便,但它不是任何 DIY 设备的通用面板。
HDMI/DSI/USB 屏幕用于 Linux 主机,其工作方式像 Raspberry Pi 或其他 Linux 计算机的常规监视器和触摸设备。这适合 KlipperScreen,但不能作为简单模块直接连接到小型 ESP32。
连接接口¶
触摸屏使用不同的接口。
常见选项:
- SPI - 通常在 ESP32/Arduino 的小型 TFT 上;
- I2C - 通常在电容触摸控制器上,有时在触摸控制器上;
- UART - 在智能显示和一些 3D 打印机 TFT 上;
- EXP1/EXP2/EXP3 - 在与 3D 打印机板兼容的屏幕上;
- HDMI + USB - 在用于 Raspberry Pi 的 Linux 屏幕上;
- DSI - 在某些 Raspberry Pi 屏幕上;
- 并行 RGB/8080 - 在更快的 TFT 上,但更多线和要求。
你不能仅按对角线选择屏幕。两个 3.5" 屏幕可能完全不同:一个 ESP32 的 SPI 模块,第二个带自己固件的 UART 面板,第三个用于 Raspberry Pi 的 HDMI 屏幕。
电阻和电容触摸¶
触摸部分也有所不同。
电阻触摸:
- 响应手指、触笔或指甲压力;
- 通常需要标定;
- 通常对手势更差;
- 可能更便宜;
- 使用
XPT2046等控制器进行。
电容触摸:
- 响应手指;
- 通常使用更好;
- 可以支持多触摸;
- 通常有
FT5x06、GT911等单独控制器; - 使用厚手套和某些保护套效果更差。
对于车间设备,电阻触摸有时更实用,因为你可以用指甲或触笔按它。对于机箱上的漂亮面板,电容通常感觉更现代。
电源、背光和电流¶
TFT 屏幕吸取比小型 OLED 更多的功率。主要功率消费者是背光。
连接前,检查:
- 屏幕电源电压;
- 背光电流;
- 你是否需要单独的 5V 源;
- 背光亮度是否可调;
- 逻辑电平是否兼容;
- 屏幕是否过载板稳压器;
- 背光打开时电源是否下降。
如果屏幕变白、闪烁、重启控制器或失去触摸事件,首先检查电源和地,而不是接口代码。
对于有加热器的设备,屏幕不应从随机弱引脚供电。它应该是清晰裕度的适当电源方案的一部分。
固件和兼容性¶
如果所选固件不支持,漂亮的屏幕就没用了。
对于 ESP32/Arduino 方法,你需要检查:
- 是否有显示驱动器;
- 是否有触摸控制器驱动器;
- GPIO 是否充足;
- 缓冲区是否有足够的 RAM/PSRAM;
- 使用什么图形框架;
- 谁将编写菜单。
对于 ESPHome,检查特定显示驱动器和触摸屏组件的支持。例如,ILI9xxx 显示和 XPT2046 触摸需要 SPI 和单独的配置,电阻触摸需要标定。
对于 Klipper,通常有两个不同的世界:
- 连接到 MCU 的小显示,在 Klipper 配置中描述;
- Linux 主机上的 KlipperScreen,屏幕作为监视器和触摸设备工作。
KlipperScreen 通常需要一个 Linux 可以显示桌面或控制台的屏幕。这与连接到打印机板的小型 UART TFT 不同。
对于 Marlin/打印机板,检查特定屏幕是否支持所需模式:UART 触摸模式、12864 模拟、EXP1/EXP2/EXP3、固件配置中的特定控制器类型。
智能显示和 Nextion 类屏幕¶
智能显示很方便,因为屏幕存储页面、按钮、字体和图像。控制器通过 UART 发送命令并获取触摸事件。
优点:
- 减少微控制器负载;
- 主固件中的图形代码更少;
- 你可以在屏幕编辑器中绘制界面;
- 只需 UART 和电源。
缺点:
- 你需要学习单独的编辑器和协议;
- 界面通常存储在屏幕中;
- 更难保持 UI 和设备固件版本同步;
- 不是所有元素的行为都像普通应用程序;
- 替换屏幕可能需要重新设计。
对于简单的设备,如果你需要漂亮的面板而不是 Linux 主机,智能显示可以是一个好的解决方案。但它不是"普通显示器":它是一个带自己逻辑的单独模块。
机箱、线和维修¶
触摸屏是用户用手触摸的东西。所以机制很重要,不仅仅是线。
提前检查:
- 屏幕不在热区;
- 有框架或保护安装;
- 打开盖时线缆不会急剧弯曲;
- 线可以断开以进行维修;
- 连接器不能向后进入;
- 机箱不按压屏幕;
- 如果需要,有权限到 SD 卡或 USB 以进行更新;
- 用户在使用屏幕时不触摸电源部件;
- 触摸/显示线与加热器线分离。
对于有加热器的设备,最好将屏幕移到用户区,远离热空气和电源部件。
购买前的检查清单¶
购买触摸屏前,检查:
- 对角线和分辨率;
- 显示类型:原始 TFT、智能 UART、打印机 TFT、HDMI/DSI;
- 显示接口;
- 触摸接口;
- 显示控制器:例如
ILI9341、ILI9488、ST7789; - 触摸控制器:例如
XPT2046、FT5x06、GT911; - 电源和背光电流;
- 逻辑电平;
- 固件中的支持;
- 文档和示例的可用性;
- 库的可用性;
- RAM/PSRAM 要求;
- 板尺寸、孔和线;
- 工作温度;
- 固件/界面更新方法。
如果产品描述缺少显示控制器、接口、电源和连接示例,最好不要在第一个项目中使用这样的屏幕。
典型错误¶
- 购买了"用于 Arduino"的屏幕,但项目是 Linux 上的 KlipperScreen;
- 购买了 HDMI 屏幕并尝试直接连接到 ESP32;
- 购买了 UART 智能显示,但期望像普通 TFT 一样工作;
- 选择了原始 TFT,但没有为菜单和图形代码计划时间;
- GPIO 不足以用于 SPI 显示和触摸控制器;
- 屏幕缓冲区的 RAM 不足;
- 没有检查触摸控制器;
- 没有标定电阻触摸;
- 屏幕由于背光电源弱而闪烁;
- 线缆靠近加热器电源线;
- 屏幕安装在热区;
- 界面看起来不错,但主错误很难看到。
主要点¶
按体系结构而不是对角线选择触摸屏。首先决定谁绘制界面:微控制器、屏幕本身、打印机固件或 Linux 主机。然后检查接口、电源、触摸控制器、固件支持和机箱机制。
对于简单的加热器、干燥机或过滤器,通常 OLED、按钮或网络界面就足够了。当用户真正需要本地界面时,使用触摸屏。
参考资料¶
- KlipperScreen: Hardware - KlipperScreen 的要求和屏幕示例,包括 HDMI/DSI/Raspberry Pi 选项。
- BIGTREETECH TouchScreenFirmware - 固件和 BTT TFT 模式:触摸模式、Marlin/12864 模拟、EXP 连接器和设置。
- BIGTREETECH TFT35 V3.0 repository - 流行的 3D 打印机 TFT35 的文档和文件。
- Adafruit 3.5 inch TFT Touchscreen Breakout - 原始 TFT 与 SPI/8 位模式、单独触摸和库的示例。
- ESPHome: Touchscreen Components - 触摸组件文档、标定和将原始触摸坐标链接到显示坐标。
- ESPHome: ILI9xxx TFT LCD Series - ESPHome 上原始 TFT 显示支持的示例和重要内存限制。