三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

告别黑屏!手把手教你用ESP8266驱动1.44寸ST7735屏幕,从接线到显示第一个Hello World

告别黑屏!手把手教你用ESP8266驱动1.44寸ST7735屏幕,从接线到显示第一个Hello World

从零点亮你的第一块TFT屏幕:ESP8266与ST7735的极简实战指南

刚拿到NodeMCU开发板和1.44寸TFT屏幕的新手们,往往会被密密麻麻的引脚和复杂的库配置吓退。本文将用最直观的方式,带你完成从拆包到显示"Hello World"的全过程,避开那些让初学者头疼的技术术语堆砌,专注于"怎么做"而不是"为什么"。

1. 开箱准备:认识你的硬件装备

打开包装后你会看到两块核心组件:NodeMCU ESP8266开发板和1.44寸ST7735驱动的TFT屏幕。先花两分钟认识它们:

  • NodeMCU ESP8266:这块蓝色小板子是你的大脑,板载WiFi功能但我们现在暂时用不到。重点关注右侧那排数字引脚(D0-D8)和左侧的3.3V/GND电源引脚
  • 1.44寸TFT屏幕:通常带有SD卡槽(本次不用),背面标签会注明"ST7735"驱动芯片。屏幕排针可能有8-9个引脚,我们只需要连接其中6个

常见问题:部分屏幕的引脚顺序可能与常见教程不同,建议用手机拍下屏幕背面的引脚标注,接线时随时对照。

2. 软件环境搭建:Arduino IDE极简配置

访问Arduino官网下载最新IDE版本(1.8.x以上),安装后需要三个关键步骤:

  1. 添加ESP8266支持:
    文件 > 首选项 > 附加开发板管理器网址 输入:http://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. 安装开发板包:
    工具 > 开发板 > 开发板管理器 搜索并安装"esp8266"(约需2-3分钟)
  3. 安装TFT_eSPI库:
    项目 > 加载库 > 管理库 搜索安装"TFT_eSPI"(作者Bodmer)

完成这些后,在开发板选择中定位到"NodeMCU 1.0(ESP-12E Module)",其他参数保持默认即可。

3. 关键配置:User_Setup.h的精简修改

库安装后,在Arduino安装目录下找到:

Arduino/libraries/TFT_eSPI/User_Setup.h

用记事本打开这个文件,只需修改以下五处:

  1. 取消注释此行(约第35行):
    #define ST7735_DRIVER
  2. 设置屏幕尺寸(约第85行):
    #define TFT_WIDTH 128 #define TFT_HEIGHT 128
  3. 修改引脚定义(约第158行):
    #define TFT_CS D8 // 屏幕片选 #define TFT_DC D3 // 数据/命令选择 #define TFT_RST D4 // 复位引脚
  4. 确认SPI设置(约第72行):
    #define SPI_FREQUENCY 27000000
  5. 保存文件并重启Arduino IDE

注意:如果屏幕显示颜色异常,可能需要调整第94-102行的初始化设置,不同批次屏幕可能需要尝试INITR_BLACKTAB/INITR_REDTAB等选项。

4. 硬件连接:六线制接线方案

根据上一步的引脚定义,按以下方式连接:

TFT引脚NodeMCU引脚线材颜色建议
VCC3.3V红色
GNDGND黑色
CSD8黄色
DCD3绿色
RSTD4蓝色
SDAD7橙色
SCLD5紫色

接线时建议先连接电源线(VCC/GND),再接信号线。使用面包板时注意避免接触不良,这是导致80%的"屏幕不亮"问题的元凶。

5. 第一个显示程序:从测试到定制

打开Arduino IDE,新建草图并粘贴以下代码:

#include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); void setup() { tft.init(); tft.setRotation(3); // 根据屏幕方向调整 tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); tft.setTextSize(2); tft.drawString("Hello World!", 20, 50); } void loop() {}

上传程序后,你应该能看到白色文字显示。如果遇到问题,按以下顺序排查:

  1. 屏幕全白/全黑:检查背光是否亮起(需接VCC),测量3.3V供电是否正常
  2. 花屏/乱码:降低SPI频率(将27000000改为20000000),检查接线是否松动
  3. 无任何显示:确认TFT_RST引脚已正确连接,尝试在setup()开头添加pinMode(D4, OUTPUT); digitalWrite(D4, HIGH);

6. 进阶显示:打造你的个性界面

成功显示文字后,可以尝试更多基础功能:

彩色方块绘制(添加在setup()末尾):

tft.fillRect(10, 80, 50, 30, TFT_RED); tft.drawRect(65, 80, 50, 30, TFT_BLUE);

简单动画效果(替换loop()内容):

int x = 0; void loop() { tft.fillCircle(x, 20, 10, TFT_GREEN); delay(50); tft.fillCircle(x, 20, 10, TFT_BLACK); x = (x + 5) % 128; }

多字体显示(需要先安装字体库):

tft.loadFont("NotoSansBold20"); tft.drawString("中文测试", 20, 100); tft.unloadFont();

7. 常见问题解决方案速查表

现象可能原因解决方案
上传失败驱动未安装/端口错误安装CP2102/CH340驱动
屏幕发热电源短路立即断电检查VCC-GND是否短路
显示偏移旋转设置错误尝试tft.setRotation(0-3)
颜色异常初始化参数不匹配更换User_Setup.h中的INITR_*
文字模糊未设置背景色添加tft.setTextBgColor()
屏幕闪烁电源功率不足使用外部3.3V电源供电

当你想深入更多功能时,可以探索TFT_eSPI库示例中的"Sprite"功能,它能在内存中创建第二块画布,实现更复杂的动画效果而不闪屏。不过对新手来说,先把基础显示玩熟练更重要——试着用tft.drawLine()和tft.fillTriangle()函数画个简单的房屋图形吧!

← 返回列表