2.13inch e-Paper Cloud Module使用教程

产品简介

参数、特点说明

自我介绍

我是针对2.13inch e-Paper设计的无线网络驱动板。
我有电池接口,可以使用电池供电。
我使用Type-C接口,紧跟社会潮流。
我支持Arduino开发,你可以像使用其它Arduino板一样使用我。
我可以通过WiFi或者蓝牙从PC机或智能手机上获取图片信息,并将信息通过电子墨水屏显示出来。

产品参数

  • WiFi 标准:802.11b/g/n
  • 通信接口: SPI
  • 蓝牙标准:4.2,包含传统蓝牙(BR/EDR)和低功耗蓝牙(BLE)
  • 通信接口:3-wire SPI、4-wire SPI(默认)
  • 供电方式:电池供电
  • 充电电流:1A
  • 外形尺寸:71mm × 30.2mm
  • 显示尺寸:48.55mm × 23.7mm
  • 点距:0.194* 0.194
  • 分辨率:250*122
  • 显示颜色:黑、白
  • 灰度等级:2
  • 局部刷新 :0.3s
  • 全局刷新 :2s

【备注】: 刷新时间:刷新时间为实验测试数据,实际刷新时间会有误差,以实际效果为准。全局刷新过程中会有闪烁效果,这个是正常现象
功耗:功耗数据为实验测试数据,实际功耗由于驱动板的存在和实际使用情况的不同,会有一定误差,以实际效果为准

特点

  • 板载 ESP32,支持 Arduino 开发
  • 无需背光,断电可长时间保持最后一屏的显示内容
  • 电压检测电路,可以检测电池电路避免过度放电
  • 拥有电池接口和充电电路,可以离线使用
  • 提供安卓手机 APP 程序,可通过蓝牙 EDR 更新显示内容,方便使用
  • 提供 HTML 上位机程序,可通过网页远程更新显示内容,方便集成到各种网络应用中
  • 支持 Floyd-Steinberg 抖动算法,以获得更多的颜色组合,对原始图片进行更好的阴影渲染
  • 支持多种常用图片格式(BMP、JPEG、GIF 和 PNG 等)
  • 出厂内置电子墨水屏驱动程序(开源)

产品应用

本产品配合墨水屏,适用于无线刷图的应用场景。

  • 电子名片
  • 设备标签
  • 货架标签
  • 信息储存
  • 串口信息显示牌等


功能引脚

功能引脚ESP32描述
VCCVCC电源正(3.3V电源输入)
GNDGND电源地
KEY12用户按键
SCK13SPI的CLK,时钟信号输入
DIN14SPI的MOSI,数据输入
CS15片选,低电平有效
BUSY25忙状态输出引脚(表示忙碌)
RST26复位,低电平有效
DC27数据/命令,低电平表示命令,高电平表示数据
ADC36ADC输入引脚,电压为1/3电池电压

PS:以上为板子固定连接,无需用户额外操作


使用准备

使用准备

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

硬件连接

  • 将屏幕接入 2.13inch e-Paper Cloud Module:


  • 使用一条 Type-C线将 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的权重添加到这四个像素点的值中去。感兴趣的用户可以去了解该算法,网络上有很多资源。

两种算法的处理效果比较

原图

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