Wemos D1 Mini / nodeMcu / esp8266 + GUIslice库 驱动ST7789 TFT显示屏

本文介绍如何使用GUIslice框架配合TFT_eSPI库实现ESP8266/wemosD1MINI/nodeMCU的图形用户界面开发。涵盖硬件准备、软件配置及测试流程。
部署运行你感兴趣的模型镜像


GUIslice是一个轻量级的嵌入式端GUI开发框架。本文介绍了如何通过这个框架快速便捷对ESP8266/wemos D1 MINI/nodeMCU进行GUI开发。

所需硬件


  • Wemos D1 Mini / nodeMCU * 1块
    在这里插入图片描述
  • ST7789 240*240 spi TFT显示屏 *1块
    (1.3还是1.5的都可以,只要看像素大小)
    在这里插入图片描述
  • 杜邦线 *6根
    根据你的引脚焊接情况一般WemosD1Mini用6根公母线,nodeMCU用6根目目线,10cm长的就足够了)

硬件连接


按照TFT_eSPI官方配置文件中的建议进行的硬件连接,这样配置文件中引脚设置的部分就不用做过多改动了。

引脚连接表

TFT显示屏nodeMcu / WemosD1Mini
SCKD5
SDI/MOSI/SDAD7
DCD3
RESETD4
GNDGND
VCC3.3V

引脚连接图

在这里插入图片描述

STEP0: 配置文件结构思维导图


如下图所示,Adafruit_st7789_library 和TFT_eSPI都是ST7789芯片的驱动库。但是后者针对ESP8266/ESP32做了优化,速度快特别多。GUIslice是一个针对显示屏做GUI(用户界面)开发的轻量级框架,配有GUIBuilder.exe应用,快速通过拖拽的方式创建GUI,并修改参数值和变量。意见生成ino代码。非常方便。GUIslice官方文档中强烈建议使用TFT_eSPI库。使用TFT_eSPI库的时候需要在User_Setup.h文件中对显示芯片和引脚进行设定。GUIslice特定的文件可以直接调用这个修改后的配置。所以在使用GUIslice前保证TFT_eSPI例程可以顺利跑通是非常关键的一步。如果TFT_eSPI调试好了。在使用GUIslice时只要根据具体触摸和显示芯片型号选择官方给预置的相应头文件就好。
在这里插入图片描述

STEP1: TFT_eSPI库的安装和配置

因为GUIslice库依赖TFT_eSPI库,而且很多配置也是在TFT_eSPI中配置完成的(比如引脚定义,屏幕尺寸,显示芯片型号等)。所以在调试GUIslcie前需要先确认可以用TFT_eSPI库正确驱动ST7789显示屏。主要是对User_Setup.h文件的修改。分为两步:

  • 配置正确的显示器控制芯片
  • 根据硬件连接配置引脚

具体操作详见博主下面的这篇帖子:
ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏

STEP2: GUIslice配置文件设置


  • 经过上步,已经实现在ST7789上显示相关的内容了。接下来为了使用GUIslice需要对其配置文件进行修改。使其可以支持ST7789。本文选用的这块TFT显示屏并不带触摸功能,所以根据STEP0思维导图演示的结构,我们选用esp-tftespi-default-notouch.h这个配置文件。在"/src/GUIslice_config.h"#include "../configs/esp-tftespi-default-notouch.h"前的注释去掉。
    在这里插入图片描述
  • 可以通过如下的方式定位到GUIslice_config.h。在ArduinoIDE的菜单栏打开首选项页面,复制项目文件夹的路径到文件管理器中打开。
    在这里插入图片描述
    重要提示: 更新GUIslice库的时候确保已经备份了你的用户设置,因为Arduino IDE在做相关库版本更新操作的时候默认是将之前版本的文件全部删除处理的。
    想了解更多细节可以参考博主翻译的官方文档:
    Esp8266 / nodeMCU / wemos D1 MINI GUIslice的配置(官翻)

STEP3: 使用例程进行测试


  • 在Arduini IDE中,打开ex01_ard_basic例程。操作方式为:
    File → Examples → GUIslice → arduino → ex01_ard_basic

  • 打开Arduino IDE中的窗口调试器:
    Tools → Serial Monitor

  • 将串口波特率改为9600(在窗口的右下角),这个波特率时GUIslice例程默认使用的波特率(可以通过搜索Serial.begin(9600);来进行查找)。如果设置的波特率有例程使用的波特率不匹配,串口监视器中收到的信息将会是乱码。

  • 因为本例程使用的硬件是ST7789的240*240像素的TFT显示屏,为了更好的显示效果。将ex01_ard_basic例程中的下面这句代码的参数做如下修改:

    pElemRef = gslc_ElemCreateBox(&m_gui,E_ELEM_BOX,E_PG_MAIN,(gslc_tsRect){20,20,200,200});

    (这句代码的意思是在显示屏上(20,20)这个坐标点为基准画个长和宽均为200的正方形。因为显示屏本身为240*240。所以显示出来后是一个距四条边均为20像素的正方形。)

  • 上传程序到开发板。

  • 观察串口监视器中的报错信息,确认显示器是否如下图所示。
    在这里插入图片描述

参考文献


  1. Request: Support for ST7789v Display Driver #163
  2. 兼容硬件列表: https://github.com/ImpulseAdventure/GUIslice/wiki/Device-Compatibility
  3. 官方Esp8266&ESP32配置英文教程: https://github.com/ImpulseAdventure/GUIslice/wiki/Configure-GUIslice-for-ESP8266-&-ESP32
  4. 官方建议强烈建议的TFT_eSPI库下载地址: https://github.com/Bodmer/TFT_eSPI

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

ESP8266 NodeMCU是一个基于ESP8266 Wi-Fi模块的小型物联网开发板,常用于智能家居、传感器网络等项目。SHT30是一款温度和湿度传感器,SGP30则是一款环境空气质量传感器,ST7789是一块TFT彩色液晶屏,可用于显示测量数据。 要将这些组件连接并编写代码,首先我们需要做的是硬件布局: 1. **连接ESP8266NodeMCU**: - VCC(电源):连接到NodeMCU的3.3V或5V引脚。 - GND(地):连接到NodeMCU的GND引脚。 - TX/RX:将ESP8266的GPIO14(TX)连接到NodeMCU的GPIO0(RX),并将GPIO15(RX)连接到NodeMCU的GPIO2(TX)。 2. **连接SHT30**: - VCC(电源):连接到ESP8266的3.3V或5V引脚。 - GND(地):连接到ESP8266的GND引脚。 - SDA(串行数据):连接到ESP8266的IO口(如D4或D5)。 - SCL(串行时钟):连接到ESP8266的IO口(如D2或D3)。 3. **连接SGP30**: - I2C通信:同样通过SCL和SDA引脚与ESP8266进行I2C通信。 4. **连接ST7789液晶屏**: - VCC:连接到ESP8266的3.3V或5V。 - GND:连接到ESP8266的GND。 - SDA 和 SCL:连接到ESP8266的对应I2C接口。 - RS(数据/命令选择):连接到ESP8266的一个GPIO口,例如D1。 - R/W(读写信号):连接到ESP8266的一个GPIO口,例如D0。 - CE(片选):根据屏的具体型号连接到适当的IO口。 - DC(数据使能):连接到ESP8266的一个GPIO口,例如D2。 编写代码部分,你需要使用相关的,比如`Adafruit_Sensor`、`Adafruit_SGP30`、`Adafruit_ST7789`来控制各个传感器和屏幕。以下是一个基础的示例流程: ```cpp #include <Wire.h> #include <Adafruit_SHT3x.h> #include <Adafruit_GFX.h> #include <Adafruit_ST7789.h> #include <Adafruit_SGP30.h> Adafruit_SHT30 sht = Adafruit_SHT30(); Adafruit_ST7789 tft = Adafruit_ST7789(/*实例化参数*/); SGP30 sgp; void setup() { Serial.begin(115200); if (!sht.begin()) { Serial.println("Failed to initialize SHT30!"); return; } if (!tft.begin()) { Serial.println("Failed to initialize ST7789!"); return; } sgp.begin(); } void loop() { float temperature, humidity; uint16_t co2, tvoc; // 读取SHT30的温度和湿度 sht.measure(temperature, humidity); // 读取SGP30的CO2和TVOC浓度 co2 = sgp.readCarbonDioxide(); tvoc = sgp.readTVOC(); // 显示在LCD上 tft.clearDisplay(); tft.setTextSize(2); tft.setCursor(0, 0); tft.print("Temperature: "); tft.print(temperature); tft.setCursor(0, 10); tft.print("Humidity: "); tft.print(humidity); tft.setCursor(0, 20); tft.print("CO2: "); tft.print(co2); tft.setCursor(0, 30); tft.print("TVOC: "); tft.print(tvoc); delay(1000); // 更新数据频率 } ``` 记得替换`/*实例化参数*/`为实际初始化ST7789时所需的参数,并检查每个的文档以确保正确连接和配置。运行程序后,ESP8266会定期从SHT30和SGP30获取数据,并显示在ST7789屏幕上。 相关问题: 1. 如何在代码中处理SHT30的错误响应? 2. 如何优化ST7789屏幕刷新率? 3. 如何通过WiFi将数据上传至云端?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值