demo1984s 的个人博客 demo1984s 的个人博客

记录精彩的程序人生

目录
DIY 电子墨水屏天气/日历程序Arduino项目代码说明
/        

DIY 电子墨水屏天气/日历程序Arduino项目代码说明

IMG4382.jpeg

账号准备

  到 心知天气 - 高精度气象数据 - 天气数据API接口 - 行业气象解决方案 (seniverse.com) 注册一个账号,复制出来密钥,后面代码里面用到的key就是这个密钥。
image.png

备份固件恢复

esptoo.py 命令行烧录

在备份固件目录下命令行执行以下命令即可。

“esptool.py” --chip esp32c3 --port "/dev/cu.usbmodem11201" --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 "EPD4in2WeatherStationESPPro.ino.bootloader.bin" 0x8000 "EPD4in2WeatherStationESPPro.ino.partitions.bin" 0xe000 "boot_app0.bin" 0x10000 "EPD4in2WeatherStationESPPro.ino.bin"

ESP8266/ESP32开发板安装

  已安装可忽略这一步骤,本文内容基于 Arduino IDE 2.1.0 编写。ESP8266/ESP32开发板环境安装详细见文章 Arduino 1.8、Arduino IDE 2.0上配置ESP8266/ESP32开发板开发环境 - 自由向往的程序猿 (demo1984s.com)

依赖库安装

Time

  安装方式:依次打开菜单“工具 - 管理库“,搜索”Time“进行安装。
image.png

GxEPD2

  安装方式:依次打开菜单“工具 - 管理库“,搜索”GxEPD2“进行安装。
image.png

U8g2

  安装方式:依次打开菜单“工具 - 管理库“,搜索”U8g2“进行安装。
image.png

ArduinoJson

  安装方式:依次打开菜单“工具 - 管理库“,搜索”ArduinoJson“进行安装。
image.png

U8g2_for_Adafruit_GFX

  安装方式:依次打开菜单“项目 - 导入库 - 添加 .ZIP 库“,选择提供的文件“U8g2_for_Adafruit_GFX.zip”进行安装。
image.png

U8g2_wqy

  安装方式:依次打开菜单“项目 - 导入库 - 添加 .ZIP 库”,选择提供的文件“U8g2_wqy.zip”进行安装。这里要注意 U8g2_wqy汉字字体库的使用。
U8g2_wqy采用文泉驿点阵宋体作为源本,提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库:

  • chinese1chinese2chinese3u8g2 官方提供的小字符集。
  • gb2312 是完整的GB2312简体中文编码 字符集。(作者强烈推荐使用这种字体,汉字全)
  • gb2312a 只有 GB2312 0102 16 55 以及部分 08 区的编码。没有包含全角标点符号,如 ,请用半角 ! 代替。
  • gb2312b 只有 GB2312 01 55 的编码,其中 10 15 区为空区。比gb2312a 多一些额外的符号。

  字库选择以最简适用为原则,否则会导致程序过大编译的时候抛出 section '.irom0.text' will not fit in region 'irom0_0_seg' 的失败提示。

字体名字符数字节
u8g2_font_wqy12_t_chinese14119,491
u8g2_font_wqy12_t_chinese257413,701
u8g2_font_wqy12_t_chinese399325,038
u8g2_font_wqy12_t_gb2312a4041111,359
u8g2_font_wqy12_t_gb2312b4531120,375
u8g2_font_wqy12_t_gb23127539208,228
u8g2_font_wqy13_t_chinese141110,341
u8g2_font_wqy13_t_chinese257414,931
u8g2_font_wqy13_t_chinese399327,370
u8g2_font_wqy13_t_gb2312a4041121,327
u8g2_font_wqy13_t_gb2312b4531130,945
u8g2_font_wqy13_t_gb23127539227,383
u8g2_font_wqy14_t_chinese141111,368
u8g2_font_wqy14_t_chinese257416,443
u8g2_font_wqy14_t_chinese399330,200
u8g2_font_wqy14_t_gb2312a4040133,898
u8g2_font_wqy14_t_gb2312b4530143,477
u8g2_font_wqy14_t_gb23127538251,515
u8g2_font_wqy15_t_chinese141112,590
u8g2_font_wqy15_t_chinese257418,133
u8g2_font_wqy15_t_chinese399333,165
u8g2_font_wqy15_t_gb2312a4041147,563
u8g2_font_wqy15_t_gb2312b4531158,713
u8g2_font_wqy15_t_gb23127539276,938
u8g2_font_wqy16_t_chinese141114,229
u8g2_font_wqy16_t_chinese257420,245
u8g2_font_wqy16_t_chinese399337,454
u8g2_font_wqy16_t_gb2312a4041169,286
u8g2_font_wqy16_t_gb2312b4531182,271
u8g2_font_wqy16_t_gb23127539318,090

ESP-Seniverse

  安装方式:依次打开菜单“项目 - 导入库 - 添加 .ZIP 库”,2023年5月10日前的选择“ESP-SeniverseV0.0.1.zip”进行安装,2023年5月10日后的选择“ESP-SeniverseV0.0.2.zip”进行安装,V0.0.2相对V0.0.1改动较大,不兼容。

驱动板与开发板引脚接线

  代码修改引脚的地方在文件 GxEPD2_display_selection_new_style.h 里面。
  ESP8266开发板:
image.png
  ESP32开发板:
image.png

  样例代码:

GxEPD2_DISPLAY_CLASS display(GxEPD2_DRIVER_CLASS(/*CS=*/ 2, /*DC=*/ 0, /*RST=*/ 4, /*BUSY=*/ 5));

NodeMCU-12F(CP2102), 4MB(ESP8266)

本图片来源网络

  以下是我使用的墨水屏驱动板与开发板引脚连接关系,可供参考(注意数字的含义:以BUSY为例,5表示GPIO5):

驱动板 开发板(GPIO)
BUSY	D1(5)
RST	D2(4) // 部分驱动板上标注的是RES
DC	D3(0)
CS	D4(2)
CLK	D5(14) // 部分驱动板上标注的是SCK
SDA	D7(13) // 部分驱动板上标注的是DIN
GND	GND
3V3	3.3V // 部分驱动板同时支持或者只有3V或5V,根据实际情况连接

  具体也可根据自己的实际需要进行修改。

ESP32-DevKitC, 4MB(32D、32E)

  引脚分布图,可见原文 https://docs.espressif.com/projects/arduino-esp32/en/latest/boards/ESP32-DevKitC-1.html

image.png

  以下是我使用的墨水屏驱动板与开发板引脚连接关系,可供参考:

ESP32-DevKitC-32D, 4MB

驱动板 开发板(GPIO)
BUSY	21
RST	16 // 部分驱动板上标注的是RES
DC	17
CS	5
CLK	18 // 部分驱动板上标注的是SCK
SDA	23 // 部分驱动板上标注的是DIN
GND	GND
3V3	3.3V // 部分驱动板同时支持或者只有3V或5V,根据实际情况连接

ESP32-DevKitC-32E, 4MB

  与32D差异是BUSY换了一个脚,也可以使用其他GPIO脚。需要注意的是网上买的开板引脚布局和乐鑫官方的可能会有一点差异,一般卖家都会提供引脚布局图。建议引脚统一接在开发板同一侧,这样会比较方便。

驱动板 开发板
BUSY	4
RST	16 // 部分驱动板上标注的是RES
DC	17
CS	5
CLK	18 // 部分驱动板上标注的是SCK
SDA	23 // 部分驱动板上标注的是DIN
GND	GND
3V3	3.3V // 部分驱动板同时支持或者只有3V或5V,根据实际情况连接

合宙ESP32C3, 4M

  引脚分布图,可见原文 ESP32C3-CORE开发板 - LuatOS 文档

footprint

驱动板 开发板
BUSY	11
RST	10 // 部分驱动板上标注的是RES
DC	5
CS	7
CLK	4 // 部分驱动板上标注的是SCK
SDA	6 // 部分驱动板上标注的是DIN
GND	GND
3V3	3.3V // 部分驱动板同时支持或者只有3V或5V,根据实际情况连接

  这里需要注意的是BUSY引脚用到了特殊引脚GPIO11(GPIO11默认为SPI flash的VDD引脚),这里因为之前捣鼓项目已经配置过GPIO11引脚(ESP32C3解锁使用IO11),所以直接用了。

  以上引脚对应连接关系具体也可根据自己的实际需要进行修改。有问题可以到小黄鱼上找,部分文章为方便已购买的鱼友而写,部分文章日常爱好捣鼓过程中有感而发。


更多内容可到小黄鱼上找我

小黄鱼账号