【基于ESP8266,1.44 tft的时间天气显示成功案例】

本文档详细记录了基于ESP8266驱动1.44英寸TFT液晶屏显示时间与天气的项目复刻过程,包括配置代码、接线说明、遇到的问题及解决方案。通过连接心知天气和阿里云API获取数据,使用Arduino IDE编程,并创建汉字库和图片库。在复刻过程中注意USB数据线的选择、代码中时间变量的处理以及坐标设置的修正。提供了完整的工程源代码供下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复刻声明:

本demo在其它案例上复刻实现,demo效果相关参考文档见如下链接:
在这里插入图片描述

  1. ESP8266入门教程:推荐太极创客系列教程,ps:真心感谢太极创客团队的老师,系列视频之后有效的帮我快速了解了诸如http协议、jason语法、arduino入门、网站API使用方法及ESP8266使用方法等干货内容
    链接:太极创客网站

  2. ESP32+1.44tft 案例:本demo主要参考此案例复刻(请注意,参考案例开发板为ESP32,同时其blog评论中有小伙伴用同样的硬件,无法成功复刻,出现反复重启的故障;同时参考案例中对tft显示内容的坐标设置是有问题的下文会给出解决方案):
    链接:参考案例

  3. tft相关库的使用方法教程:可参考如下链接进行学习了解:

demo实现所用配置

  1. ESP8266开发板 + 1.44 tft,商品链接
  2. 接线说明:标准SPI使用4线制,ESP8266驱动tft只用3线即可,显示屏接收数据和指令即可,无需返回数据,即MOSI,对应需使用CLK、SDI、CS引脚
TFTESP8266
VCC3.3V
GNDG
LED3.3v
CLKD5
SDID7
RSD3
RSTD4
CSD8

Alt
3. miscro-usb数据线,arduino开发环境(我用的1.8.19)

代码功能简介

  1. WiFI连接
  2. 连接心知天气、阿里云网站:请求实况天气和时间,解析上述网站反馈回的jason信息
  3. 汉字库创建:Myfont_1.h
  4. 图片库创建:pic.h(图片在心知天气网站下载链接
  5. tft显示:将时间天气信息输出显示在tft液晶屏幕上

复刻过程问题及解决方法记录

  1. usb数据线问题:这个很容易小阴沟里翻船的,有的usb数据线只有供电功能,不具备串口功能,一定要使用带串口功能的数据线(另外,我买的这个esp8266开发板上串口芯片用的是CH340,如果您购买的开发板串口芯片用的cp2102,要下载对应的驱动才可以通讯);同时arduino中选择的串口即波特率要与实际使用的电脑端口一致
  2. Display_Time()函数中,存储格林威治时间(gmt)的变量epochTime 必须为全局变量,否则在tft屏幕上显示会出问题(调试发现:如果将epochTime 作为局部变量,则解析出的时间一直是错误的)
void Display_Time() {
  timeClient.update();
//  unsigned long epochTime = timeClient.getEpochTime();//epochTime必须作为全局变量,否则结果不正确
  epochTime = timeClient.getEpochTime();
  ...
  }
  1. 参考案例ESP32+1.44 tft的工程代码中,对于显示内容的坐标设置是有问题的,本demo工程代码进行了优化,可实现文章开头的图片效果
  2. Myfont_1.hpic.h文件包含时,要采用如下方式,不能使用<>,原因为:#include<库文件>#include"所有文件"Myfont_1.hpic.h文件不是库文件
#include <WiFiUdp.h>
#include "MyFont_1.h"//中文字符库,需要使用汉字取模软件PCtoLCD2002.exe
#include "pic.h"//天气图标库,需要使用图片取模软件ImageConverter565.exe
  1. 字库文件创建时,为了节约RAM,将字库文件加载到flash中,即使用PROGMEMPROGMEM放置位置需要如下方所示,有的arduino版本不支持下方注释掉的方式
//const unsigned char hz_Evening PROGMEM[] =
const unsigned char hz_Evening[] PROGMEM =
{
    0x00,0x80,0x00,0x80,0x79,0xF8,0x4A,0x08,0x4C,0x10,0x4B,0xFC,0x4A,0x44,0x7A,0x44,
    0x4A,0x44,0x4B,0xFC,0x48,0xA0,0x48,0xA0,0x79,0x22,0x49,0x22,0x02,0x1E,0x04,0x00/*"晚",54*/
};
  1. 字库文件中,汉字常量结构体数组不能加PROGMEM
//PROGMEM const FNT_HZ hanzi[] =
const Font_CN CHINESE[] =
{
  {"周", hz_zhou,16}, {"一", hz_Mon,16}, {"二", hz_Tue,16}, {"三", hz_Wed,16}, {"四", hz_Thu,16},
...
};

工程源文件下载地址:

链接:工程源代码
提取码:0116

const char* ssid     = "xxx";       // 连接WiFi名 ,改为自己的                                           
const char* password = "xxx";          // 连接WiFi密码,改为自己的                                            
  
// 心知天气HTTP请求所需信息
String reqUserKey = "xxx";   // 心知天气私钥,改为自己的

尾声:

  1. 本demo代码比较凌乱,因本人只是为了娱乐,没有进行梳理
  2. 本demo没有做自动配网的设置,您可以自己实现
  3. 如在复刻过程中遇到问题,欢迎留言讨论
  4. 致谢:感谢太极创客团队的良心教程,感谢引用到的文章作者的无私分享
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值