从咸鱼上淘了两块2.9寸的墨水屏价签,可以结合ESP32-C3做个低功耗的时钟+温湿度计。
1、所需硬件
合宙的ESP32-C3:
电子价签拆出来的2.9寸墨水屏:
——电子价签型号为:Stellar-L,墨水屏型号为:E029A01。电子价签比较难拆,B站上好多拆解视频,可以参考。这块是参考B站视频从前面玻璃拆进去的,拆完边角的玻璃破裂的比较多。
自己设计的一块墨水屏驱动板:
——这块PCB比较复杂了,贴片电容、电阻、二极管有10多个,再加上24P的FPC,焊接难度有点大,建议上加热台和焊锡膏。
2、原理图
墨水屏使用SPI协议,8个引脚分别与ESP32-C3连接:
mosi = Pin(3)
sck = Pin(2)
cs = Pin(7)
dc = Pin(4)
rst = Pin(5)
busy = Pin(6)
3、所需驱动
Github上有墨水屏驱动,下载地址:https://github.com/mcauser/micropython-waveshare-epaper
选择2.9寸的epaper2in9.py,里面有相应的示例test.py。
4、测试代码
由于合宙ESP32-C3的SPI0被flash占用了,只能使用SPI1,test.py需要修改下引脚、SPI就能使用。前面部分代码如下:
import epaper2in9
from machine import Pin, SPI
mosi = Pin(3)
sck = Pin(2)
cs = Pin(7)
dc = Pin(4)
rst = Pin(5)
busy = Pin(6)
# SPI0已被flash占用,只能使用SPI1
spi = SPI(1, baudrate=2000000, polarity=0, phase=0, sck=sck, mosi=mosi)
# 初始化epaper,定义宽高,起始位置为0,0
e = epaper2in9.EPD(spi, cs, dc, rst, busy)
e.init()
w = 128
h = 296
x = 0
y = 0
将驱动epaper2in9.py和example文件下的image_dark.py、image_light.py放到ESP32-C3的根目录下,运行test.py。
显示效果:
墨水屏依次测试图片、文本、文本框的显示,文本默认竖着显示,需要横着显示还有待研究。
5、显示图片
墨水屏要显示图片比较麻烦,需要生成一张296*128的JPG图片:
再用Image2Lcd转成16进制数据,依下图设置,保存为.c文件:
复制.c文件中的16进制数据,保存为image_16.py文件:
将image_16.py上传到ESP32-C3要目录,执行以下代码:
import epaper2in9
from machine import Pin, SPI
mosi = Pin(3)
sck = Pin(2)
cs = Pin(7)
dc = Pin(8)
rst = Pin(10)
busy = Pin(6)
# SPI0已被flash占用,只能使用SPI1
spi = SPI(1, baudrate=2000000, polarity=0, phase=0, sck=sck, mosi=mosi)
# 初始化epaper,定义宽高,起始位置为0,0
e = epaper2in9.EPD(spi, cs, dc, rst, busy)
e.init()
w = 128
h = 296
x = 0
y = 0
# 显示图片
from image_16 import image_16
e.clear_frame_memory(0xFF)
e.set_frame_memory(image_16, x, y, w, h)
e.display_frame()
显示效果:
PS:我们设计了一个白色的PCB驱动板,加上一个白色面板,整个墨水屏看起来好看多了。