使用 NodeMCU 和 Tasmota 在 OLED 液晶屏幕上显示文本
Tasmota Display 是一个用于支持外部显示屏的 ESP 固件,支持 OLED、TFT 等显示屏。在完成基本设置后,发送命令给 Tasmota,即可在显示屏上显示自定义的文本等。本文以 SSD1306 OLED 显示屏为例,介绍搭建这套环境的简单步骤。
Tasmota Display 介绍 🔗
Tasmota 固件默认不支持显示功能,因此在烧录固件时,必须使用 Tasmota Display 固件。烧录固件之后,对于不同类型的显示屏幕,还需要进行一些配置,才可以显示文本。官网文档的《Displays》 页面介绍了“显示”相关的配置,
需要注意的是,较新版的 Tasmota 似乎并不能通过 DisplayModel
命令修改显示模块的类型(即驱动)。这应该是因为 Tasmota 在逐步使用 Universal Display 驱动替换这些特定的驱动。具体见文档 《Universal Display and Universal Touch drivers (uDisplay/uTouch)》。它所支持的驱动见代码中的 tasmota/displaydesc 目录。
物料准备 🔗
- NodeMCU 开发板
- 0.96寸OLED液晶屏(4针,SSD1306驱动,分辨率 128*64,工作电压 3.3v)
- 杜邦线若干(母对母)
- USB 数据线(连接电脑和NodeMCU开发板)
注意:市面上有多种驱动的 OLED 液晶屏,比如 SSD1306,SSD1315 等。Tasmota Display 固件支持 SSD1306,但应该还不支持 SSD1315。在购买时需要留意。一块已经焊接了排针的 SSD1306 液晶屏幕的价格在 7 元左右,而 SSD1315 屏幕比它低几毛钱。
搭建步骤 🔗
连线 🔗
连线如下所示:
NodeMCU | OLED液晶屏幕 |
---|---|
3.3V | VCC |
GND | GND |
GPIO5 (D1) | SDL |
GPIO4 (D2) | SDA |
可参考下图(圖片来源: https://randomnerdtutorials.com/esp8266-0-96-inch-oled-display-with-arduino-ide/ ):
烧录固件 🔗
使用 USB 数据线连接了 NodeMCU 和 电脑后,在 Tasmota 的 WebInstall 页面烧录固件。注意,选择 Tastoma Display
固件。烧录成功后,配置 Wifi,然后打开 WebUI 页面。如下图所示:
注意页面上有一个 Toggle
按钮,将用于控制显示屏的开关。
配置模块 🔗
将模块类新修改为 Generic (18)
后,更新以下模块参数:
GPIO0
设置为Option A3
GPIO4
设置为I2C SDA
GPIO5
设置为I2C SDL
如下图所示:
更新之后点击 Save
保存并重启。重启后会回到 WebUI 主页。
此时如果在控制台使用 DisplayMode 2
验证屏幕输入的话,显示屏上是没有内容的。因为还需要配置显示屏。
配置显示屏 🔗
在重启之后,还需要配置显示屏。详情可见文档《Step 5. Configure the display.ini descriptor file》(https://tasmota.github.io/docs/Universal-Display-Driver/#step-5-configure-the-displayini-descriptor-file) 。
128*64 的 SSD1306 显示屏的描述符文件为 SSD1306_128x64_display.ini。其内容为:
:H,SSD1306,128,64,1,I2C,3c,*,*,*
:S,0,2,1,0,30,20
:I
AE
D5,80
A8,3F
D3,00
40
8D,14
20,00
A1
C8
DA,12
81,9F
D9,F1
DB,40
A4
A6
AF
:o,AE
:O,AF
:A,00,10,40,00,00
:i,A6,A7
#
由于 NodeMCU 不带文件系统,因此使用 Rule 3
进行设置。为此,需要将描述符文件里的多行文本合并成一行。即使用空格连接每一行,然后使用 rule3
命令在控制台执行。因此,进入 Console
(控制台)页面,输入以下命令后:
rule3 :H,SSD1306,128,64,1,I2C,3c,*,*,* :S,0,2,1,0,30,20 :I AE D5,80 A8,3F D3,00 40 8D,14 20,00 A1 C8 DA,12 81,9F D9,F1 DB,40 A4 A6 AF :o,AE :O,AF :A,00,10,40,00,00 :i,A6,A7 #
按回车键执行。然后回到 WebUI 主页,点击 Restart
重启。
验证 🔗
重启之后,点击 Toggle
按钮,使其处于打开状态(ON
)。再次进入 Console
页面,输入:
DisplayMode 2
这时,就会看到显示屏上显示了系统信息。比如 Mac 、IP地址、SSID等。
注意:如果显示屏没有输出。那么可能需要 Toggle 在 ON 或者 OFF 下拔下 USB 供电;然后再打开
Toggle
,运行DisplayMode
命令。
也可以使用 DisplayText
显示自定义文本,比如:
DisplayText hello
更为复杂和强大的显示控制见文档 《Displays》。