E-Paper ESP32 Driver Board使用准备

使用准备

硬件操作、环境搭建和程序说明等

硬件连接

本产品出货的时候配有一个 ESP32 网络驱动板,一个转接板和 FFC 延长线。
使用的时候你可以直接将屏幕接入到驱动板,或者是通过延长线和转接板接入。

  • 将屏幕接入 ESP32 驱动板:

直接接入驱动板:

通过延长线接入:

  • 设置型号开关,根据使用的墨水屏型号设置型号开关


Trigger stateE-Paper
A1.54inch e-Paper, 2.13inch e-Paper, 2.13inch e-Paper (D), 2.9inch e-Paper
B1.54inch e-Paper (B), 1.54inch e-Paper (C) , 2.13inch e-Paper (B), 2.13inch e-Paper (C), 2.7inch e-Paper (B), 2.9inch e-Paper (B), 2.9inch e-Paper (C), 4.2inch e-Paper (B), 4.2inch e-Paper (C), 5.83inch e-Paper (B), 5.83inch e-Paper (C), 7.5inch e-Paper (B), 7.5inch e-Paper (C)
  • 使用一条 micro USB 线将 ESP32 驱动板接入到电脑或者 5V 电源

下载例程

我们有提供本地、蓝牙、WiFi三种例程,本页面的“资料”标签内可以找到示例程序,或者点击 示例程序 下载
将下载下来的压缩包解压出来,可以得到以下文件:

  • ePape_Esp32_Loader_APP:蓝牙App源码(Android Studio)
  • examples:本地例程
  • Loader_esp32bt:蓝牙例程
  • Loader_esp32wf:WiFi例程
  • app-release.apk:蓝牙例程App安装包

环境配置

  • 如果您电脑之前没有安装 Arduino IDE,或者 IDE 的版本比较老。建议到 Arduino 官方网站根据自己的系统下载最新的 IDE 并安装。
    官方链接:https://www.arduino.cc/en/Main/Software
  • 下载 Arduino-ESP32 支持包:https://codeload.github.com/espressif/arduino-esp32/zip/master (GitHub国内访问比较慢)并将压缩包里面的文件解压到 Arduino IDE 安装目录下的 hardware\espressif\esp32 路径。(注意:如果在安装目录没有该路径,可以手动创建)

  • 打开 tools,并以管理员身份运行以下 get.exe 文件
  • 等待安装完成后,可以在 IDE 的 Tools - Boards 里面找到 ESP32 Dev Module 的型号选项即可

图像处理算法

在蓝牙和WiFi例程中,提供了两种图像处理算法,分别是 Level(色阶法)以及 Dithering(抖动法)

色阶法

一张图像,我们可以把它划分为几个大的颜色域,图像上的每个像素点根据颜色跟这几个色域的趋近程度,被划分到这些颜色域中去。这种方法比较适用于颜色不多的图像,例如亮色或者三色的形状或者文字图像。以黑白红三色墨水屏为例,处理图像的时候我们希望把它处理成黑白红三色,因此对于一张图像来说,我们可以把图像的所有颜色划分三个大的颜色区域:黑色区域,白色区域,红色区域。
比如根据下图,如果灰度图中的某个像素点的值等于或者小于127的话,我们把这个像素点视为黑色像素,否则,就是白色

对于彩色图来说,我们都知道RGB有三色通道,相对于红色通道来说,我们可以把蓝色和绿色统称为蓝-绿通道,或者是非红通道。根据下面的图,彩色图像上的某个像素点,如果它红色通道的值很高,但是蓝-绿通道的值很低的话,我们将它归为红色像素;如果说它红色通道和蓝-绿通道的值都很低的话,我们将它归为黑色像素;红色和蓝-绿通道值都很高的话我们把它归为白色。

算法中,对于颜色定义是根据RGB值以及预期颜色值的平方和的差值计算的。其中预期颜色值是指的像素点最趋近的那个颜色值,这些值被保存在 curPal 数组中。

抖动法

对于那些颜色比较多,或者渐变区域比较多的图像,上面的色阶法并不太合适,很多时候图像里面的渐变区域的像素可能跟所有颜色域都很接近,如果用色阶法的画就会让图像丢失很多图像细节。很多摄像头拍摄的图片,通过混合颜色的方法来绘画阴影和过度区域,这些图像中,渐变区域占了大部分
对于人眼来说,很容易把特别小的颜色混淆了,比如两种颜色红和蓝并列,如果把它缩小到足够小的手,在人眼看来会变成一种由红和蓝混合而成的颜色。人眼的缺陷意味着我们可以通过欺骗人眼,利用“混合”的方法来获取更多可以表现的颜色,抖动算法就是采用了这一种现象。
我们提供的例程中使用了Floyd-Steinberg 抖动算法-基于错误扩散 (由Robert Floy 和Louis Steinberg在1976年发表)。公式是根据下面的图像的方式进行错误扩散

X 就是错误 (原始颜色和灰度值(颜色值)之间的一个标量(矢量)差值),这个错误会向右边,右下, 下边,和左下四个方向扩散, 分别以7/16, 1/16, 5/16和3/16的权重添加到这四个像素点的值中去。感兴趣的用户可以去了解该算法,网络上有很多资源。

两种算法的处理效果比较

原图

“黑白色阶处理”和“多色色阶处理”
 
“黑白抖动处理”和“多色抖动处理”