描述
ESP8266通用墨水屏开发板使用说明
======================================
目录
——————————————————————
1.简介 2
1.1 用途说明 2
1.2 外观参数 3
2.支持屏幕与测试图 4
3.工作原理 4
4.原理图 5
5.开发环境安装 7
5.1 安装Arduino IDE 7
5.2 安装ESP8266开发环境 8
5.3 安装USB转串口驱动 10
6.常用案例 11
6.1 微雪例程使用方法 11
6.2 佳显例程使用方法 22
6.3 “甘草”开源固件的下载及测试方法 24
7.使用注意事项 28
8.一般故障的定位排查 28
======================================
1.简介
1.1 用途说明
墨水屏,作为一个显示器件,在项目设计过程中需要反复的调试、测试、优化,并且现在市面上型号、规格众多,所以在开发、调试各类屏幕的过程中亟需一个通用的接口板,其中24P接口规格的使用最为广泛,它的接口定义是标准的、统一的,驱动电路也是基本通用的,基于此通用性,为了方便开发调试,一般选择把接口驱动电路和控制部分做在一起,于是便有了该通用驱动板。
之所以选择esp8266这个平台,一是考虑其具备WiFi功能具有物联属性,更适合做一些所谓的创意项目,其次是esp8266用户比较广泛且依托Arduino的生态,有很多现成的库和开源项目、开源资料可以参考和使用。还有esp8266这个模组性能够用且价格不高,比较容易控制成本。
综上所述,就做成了这个集成了esp8266单片机和屏幕接口升压电路的驱动板,也可以叫墨水屏开发板,主要在开发阶段用来接驳各种墨水屏进行评估、开发、调试、测试之用。
在墨水屏成品厂商中,国内有两个厂家对个人用户比较友好,提供了开放的手册和例程还有一些学习资源和工具。分别是微雪和佳显,在此也顺便对这两个厂家提供开放资料的行为表示感谢!(如果你作为个人用户在电子这个行业里足够久,接触过的厂商足够多的话,你应该知道一些或者说大部分国内的厂商在向个人用户提供资料方面是个什么德形。)
为了方便测试各种型号的屏,该驱动板采用了微雪官方例程的引脚分配方式,如果你的屏在微雪的产品列表中有对应的型号,那么你可以直接使用它的本地例程和WIFI例程而不用做任何修改。佳显的每个型号墨水屏的例程都是独立的,没有写成库的形式,更加方便移植和整理,只需改动程序中的引脚定义即可。
微雪和佳显这两个厂商所提供的各种型号墨水屏例程,基本可以囊括市面上全部的24p接口型号,包括你在电子价签中拆出来的各种拆机屏。
此外,在前一版驱动板的使用过程中,很多小伙伴经常问我这个支不支持一个叫做“甘草”的开源作者的天气牌阅读器开源项目,我大体看了一下,在这版中对屏幕引脚增加了电阻跳线,可以通过修改电阻跳线来使该板可以运行他的程序驱动屏幕,当然只是屏幕显示部分做了兼容,其他如传感器RTC等并不具备。
1.2 外观参数
外观尺寸:50mm x 35mm;
正面:

底面:

2.支持屏幕与测试图
微雪全系24Pin墨水屏;
佳显全系24Pin墨水屏;
各类28P或者34P排线宽度,但是实际只使用24P的焊接式FPC接口的墨水屏(需要自行修剪排线)。


3.工作原理
本质就是一个esp8266的单片机,然后屏幕接口处有一个小的升压电路。单片机引脚引出6根控制线,和屏幕引脚是直接相连的,单片机给屏幕发送初始化指令和刷新指令后,屏幕开始做出响应,因为墨水屏工作时候需要一个高压,这部分电路集成不到屏幕内部,所以需要外置,这个升压部分是完全只受屏幕发出的指令控制的,和单片机无关。屏正常刷图时2号脚会产生脉冲控制信号,RESE脚反馈,控制升压电路达到所需电压。所以,给屏幕发出初始化和刷图指令后,2脚有无输出波形是判断屏幕是否正常工作的一个依据。
4.原理图
(部分器件选型及参数要求见前一版的链接:https://oshwhub.com/lingdy2012/mo-shui-ping-_esp8266-qu-dong-ban-_0603_wos_v0-1
)




5.开发环境安装
前文说了,本质是个8266单片机,能给esp8266单片机编程的方法、方式、工具均可使用,Arduino,米思齐,IDF,PIO,MicroPython。使用Arduino的人最多,这里就介绍一下Arduino的环境安装方法。其实b站、百度上随便一搜都有很详细的教程,具体使用什么开发工具和环境,请根据需要自行准备。
5.1 安装Arduino IDE
Arduino官网下载IDE:https://www.arduino.cc/en/software,我安装的版本是Arduino IDE 1.8.16,目前又有新版本的,可以安装最新的,不过基础功能相差不大。
根据自己使用的平台,点击右侧的下载。

如果你下载的是windows安装版(exe后缀),那么直接安装即可,其他则直接解压即可使用,注意路径不要存在中文目录。这里所用的Arduino IDE版本是1.8.5,启动Arduino,会出现如下图所示界面:

5.2 安装ESP8266开发环境
因为Arduino IDE默认是给Arduino开发板用的,默认只有Arduino开发板的相关开发资源。要想在在Arduino IDE中使用ESP8266,需要额外安装ESP8266的开发包。
以window版本为例,可以安装以下顺序安装:
打开Arduino IDE->菜单项文件->首选项,然后会看到附加开发版管理器网址,填入http://arduino.esp8266.com/stable/package_esp8266com_index.json,重启IDE;

重启IDE之后->菜单项工具->开发板->点击开发板管理器->滚动找到ESP8266平台;

从下拉选项中选择你想下载的版本,点击安装,需要等待一段时间安装完毕。可以下载最新的版本。
安装成功的话,会可以看到下图所示。

如果你因为网络问题而安装失败,那么你可以百度一下离线安装方式,直接下载别人分享的离线安装包也可以完成安装。
5.3 安装USB转串口驱动
该板采用沁恒CH340C USB转串口芯片,电脑上如果没有装过该芯片驱动,连接驱动板前需要手动安装该驱动。
官网驱动下载地址:https://www.wch.cn/downloads/CH341SER_EXE.html

安装好串口驱动后,用可以传输数据的USB Type-C线连接板子到电脑,注意有些Type-C线只具有充电功能,是不能传输数据的。如果一切正常,设备管理器中应能够看到识别出了CH340的串口设备,如图:

6.常用案例
6.1 微雪例程使用方法
如果你想驱动的屏幕型号是微雪所支持的,可以直接使用微雪提供的例程和开源资源,无需做任何改动,该驱动板默认所有引脚分配与微雪驱动板完全相同,所以直接兼容微雪的软件例程。
微雪官方资料页链接:
6.1.1 微雪提供的整套开发资料特性
–提供HTML上位机程序,可通过网页远程更新内容,方便集成到各种网络应用中
–提供了Floyd-Steinberg抖动算法,以获得更多的颜色组合,对原始图片进行更好的阴影渲染
–支持多种常用图片格式(BMP、JPEG、GIF和PNG等)
–开源了所有供货中的电子墨水屏的驱动程序
–提供完善的配套资料手册
–可以应用于电子标签的无线更新,用于开发、实现超市的电子价格标签、客户服务窗口的信息标签,比如名字标签、广告小标签等相关功能需求。
6.1.2 使用前准备
按照前一小节的介绍,安装好Arduino IDE和esp8266的支持包。
在微雪官方资料页(https://www.waveshare.net/wiki/E-Paper_ESP8266_Driver_Board)页面的“资料”标签内可以找到示例程序并下载
将下载下来的压缩包解压出来,可以得到以下文件:
examples:本地例程
Loader:WiFi例程
6.1.3 使用WIFI例程的方法
该WiFi例程提供了带HTML上位机的WiFi应用
程序使用:
–进入Loader文件夹,双击Loader.ino文件打开工程
–选择Tools->Boards->ESP8266 Boards->NodeMCU 1.0,并且选择好对应的串口:Tools->Port

–将Loader.ino中的 ssid和password改成实际使用的WiFi用户名和密码

–按下win + R 键,输入CMD,打开命令行,获取电脑IP


–打开srvr.h文件,将图片所示位置的网段修改成对应的网段;注意:ESP8266的IP地址(也就是第四位)不要和电脑的地址一样,其他的要和电脑的IP地址要一模一样

–然后点击上传,把程序编译并下载到ESP8266驱动板上面
–打开串口监视器,设置波特率为115200,可以看到串口将ESP8266驱动板的IP地址打印出来:

–电脑或者手机(注意电脑/手机接入的网络需要时跟ESP8266接入的wifi是同一个网段的才可以)打开浏览器,在网址输入栏输入ESP8266的IP地址并打开,可以看到操作界面如下:

–整个操作见面分为五个区域:
1.图像操作区域:
Select Image file: 点击在电脑或者手机里面选择一张图片
Level: mono: 黑白色阶图像处理算法
Level: color: 多色色阶图像处理算法(只对多色屏幕生效)
Dithering: mono: 黑色抖动图像处理算法
Dithering: color: 多色抖动图像处理算法(只对多色屏幕生效)
Update image: 上传图像
2.IP信息显示区域:这里显示的是你当前连接的模块的IP地址信息
3.图像大小设置区域:这里x和y可以设置你要显示的起始位置,这个设置是相对于你选择的图片文件的,比如选择一张800×480的图片,但是连接的墨水屏是2.9寸的,这时候墨水屏并无法显示整张图片的信息,所以在选择图像处理算法的时候,算法会自动从左上角开始截取一部分图片传到墨水屏显示,这里设置x和y可以自定义截取的起始位置。w和h是当前墨水屏的分辨率大小。
注意:如果修改了x和y的指的话,需要重新点击一下处理算法生成新的图像
4.型号选择区域:这里可以选择你接入的墨水屏型号
5.图像显示区域:这里会显示你选择的图片以及处理之后的图像
PS:在上传图像的时候,底部会显示上传的数据进度
区域①点击Select image file 选择一张图片,或者直接将图片拖拽至Original image的区域内
区域④选择对应的墨水屏型号,例如:1.54b
区域①点击一种图像处理算法, 例如:Dithering: color
区域①点击Upload image将图片上传到墨水屏显示。

图例:


6.1.4 使用本地例程的方法
该例程包提供基于ESP8266的本地例程,无需WiFi和其他设备
例程使用
打开 Arduino IDE 查看项目文件夹位置(不要随意修改)


进入 E-Paper_ESP8266_Driver_Board_Code\examples 目录,把整个 esp8266-waveshare-epd 文件夹复制到项目文件夹目录下的 libraries 目录下


关闭所有的 Arduino IDE 窗口,再重新打开 Arduino IDE ,按图选择对应的示例程序

选择对应的开发板[NodeMcu1.0]和对应的串口号:


最后编译下载即可。
图例:

6.2 佳显例程使用方法
6.2.1 找到对应型号
找到你手上的墨水屏对应的佳显官网中的对应型号,例如以1片价签拆机出来的2.66寸的黑白红三色墨水屏为例,假设已知该屏幕的内部芯片型号是SSD1680,翻阅佳显产品列表发现正好有一款2.66寸的三色屏是SSD1680芯片的,如下图:

那么就可以直接使用该商品页面下方提供的开发资料。
6.2.2 下载使用例程
下载相应例程并修改引脚分配为本驱动板实际引脚。
这里我们在页面下方直接下载esp8266的例程:

下载并解压好后,用Arduino打开该例程,将文件中的引脚定义和引用修改成到你手上的驱动板的实际使用引脚(注意查看你是否更改过引脚的电阻选择跳线,程序中的定义一定要和实际硬件电路的连接关系一一对应)。
例如,这个驱动板默认状态是使用的微雪的引脚定义,即
BUSY—D1;
RES—D4;
DC—D2;
CS—D8;
按照此定义将佳显例程中“ESP8266.ino”文件和“Display_EPD_W21_spi.h”中的相关定义修改好:


修改好之后,编译下载即可运行该例程。
图例:
.
6.3 “甘草”开源固件的下载及测试方法
6.3.1 修改板上电阻跳线
将驱动板上的3个引脚跳线电阻均修改为靠右侧连接,使引脚连接关系变更为该项目使用的引脚定义(可参考该板PCB工程图纸或者板子背面的丝印提示)。
如图:


6.3.2 下载项目资料
打开该作者的开源项目,下载固件和工具。
项目链接:https://oshwhub.com/jie326513988/SDka-mo-shui-ping-yue-du-qi
资源链接:https://gitee.com/Lichengjiez/weather-ink-screen
可以看到该项目几乎支持所有尺寸的常见型号屏幕,且项目页面和资源下载页面均有详细的操作说明,这里仅以4.2寸双IC型号E042A03作为示例进行简要演示说明。
下载好固件和烧录工具:

6.3.3 烧录固件并测试
打开烧录工具,按如下设置进行烧录:

烧录后,连接显示屏,按一下复位按钮,程序开始运行。安装屏幕提示信息进行设置即可。
图例:

其他不同尺寸、型号的屏幕同样安装上述方法烧录各自对应的文件即可。
图例——2.9寸:

图例——1.54寸:

7.使用注意事项
–屏幕不要插反;
–电阻跳线设置要和程序里的引脚分配相对应。
不同型号的屏对应的反馈电阻阻值不同,主要有0.47R,2.2/3R可选,板子连接屏之前注意先把选择开关拨到对应的阻值,具体应该选哪种阻值需查阅该屏的规格书中电路DEMO部分。有的屏选不对的话可能直接就不显示了,或者效果不佳,有的屏可能无论选哪个都能正常显示,看不出差别。但这个阻值如果不对应的话,在你频繁上电,频繁刷图的过程中,屏幕确实更容易损坏,尤其是小尺寸的支持快刷的黑白屏,在频繁快刷过程中尤为明显。这个我在做转接板批量测试的过程中反复验证过的。
–先下载好程序后再连接墨水屏:
错误的硬件参数、软件驱动,尤其是不当的VCOM设置和LUT写入均可能造成屏幕显示异常或者损坏。请务必确保驱动电路和软件程序正确无误,再连接墨水屏。
不同型号屏幕的初始化序列和寄存器控制字写入不同,不对应型号的驱动可能会刷坏墨水屏,不要盲目乱试;
–不要在墨水屏正在刷图的过程中拔掉墨水屏或者断开电源连接,否则会大大增加墨水屏损坏的风险。
8.一般故障的定位排查
— Arduino程序下载失败
检查开发板型号(NodeMcu1.0)选对没有。
检查设备管理器里板子的串口识别出来没有,Arduino串口号选对没有。
串口波特率设置是否过高,降低波特率试试。
检查Arduino Esp8266的包装好没有,如果使用的是微雪的例程库,看看文件路径对不对。
睁睁眼,动动手,把报错信息复制下来,在百度翻译里粘贴进去,看看那些西洋字母翻译过来是什么意思,如果没有得到什么启发,打开百度搜索栏把报错信息粘贴进去,看看聪明的网友是怎么说的。
如果还不行,再找一块别的任意esp8266开发板,插上,看看能不能正常下载,如果能的话,就是先前那块驱动板折腾坏了;如果都不能,就是软件安装、系统环境问题了,重装软件,或者换个电脑试试。
— 屏幕刷图时有不规则的横纹或者竖纹: 可能是FPC处接触不良,拔下墨水屏,按住排线金手指在硬纸来回擦几下,装回去,插座按紧一些。
— 屏幕刷图发灰,或者有明显的黑色边框,里面的内容颜色很淡: 检查程序驱动和屏幕的芯片型号是否完全匹配。比如你接的屏幕芯片型号是UC8151D,而你是用的UC8151C的配置去初始化,虽然也能显示,但是效果会打折扣。如果发现屏幕显示效果不理想,就不要再用当前的程序继续刷了,不匹配的话有可能会彻底把屏刷坏。应当先查清楚芯片型号,用微雪或者佳显等厂商提供的对应的官方例程去测试,然后再比对、移植正确的初始化和驱动代码。
— 屏幕完全没反应:
检查屏幕有没有插反、插紧;
确认程序有没有正确下载进去。
确认程序对应的型号和所接的屏幕芯片型号是否准确对应的。不同型号的屏驱动乱刷会烧坏。
有没有其他能点屏的设备,如果有,现在,此刻,把这个屏装在那个设备上测试一下能不能亮,如果不能,就是屏坏了,如果能亮,就是驱动板这侧的问题,再来确定是板子硬件还是软件程序的问题;
同理,当前这个板子能不能点亮其他的屏,如果其型号屏能点亮,就是板子硬件本身没问题,是软件程序或者屏幕本身的问题。
总之,就是先确定一方面是正常的,把故障点的范围一点一点缩小,是板子还是屏的问题,如果是板子,再推断是硬件还是软件程序问题,控制变量法初中没学过么,自己先排查排查,不要张嘴就是我屏点不亮怎么办,没反应怎么办。屏幕点不亮可能的原因有很多,别人很少有耐心给你猜谜语似的一条一条排查分析,信意儿支持的话动不动就是半小时搭进去了,不要把别人的时间不当回事儿,现在人工多贵呢!
——“哎!不对啊,你这板子有问题啊,程序都下载不进去啊!”
——“怎么下载不进去?”
——“一下载就报错,提示’Compilation error: DEV_Config.h: No such file or directory’ !”
解决办法:如果舍不得电信流量又没时间的话,就放弃吧,这个本来也没什么好玩的。
“我手上就这一个屏,没法测,我都按照教程做了,别人下了这个固件都能点亮,我这个就死活点不亮,没反应,你这个啥板子,辣鸡!”
——打开原理图,找到ESP8266模组与FPC插座接口直接相连的6根信号线,不接屏,在程序里将这6个引脚拉高,用万用表测FPC座子对应脚对地是否都为3V以上,再在程序里将这6个引脚拉低,测FPC对应脚是否都为0V。如果都正常,说明所有信号线控制是没问题的。
下载好你所谓的固件或者程序驱动,接上屏,用示波器或者万用表监测FPC 2号脚测试点GDR信号的对地电压,按一下复位键,看一下屏幕初始化后GDR引脚有没有产生脉冲波形,万用表上看就是有没有一段稳定时间的电压值。如果没有电压,说明你的屏接收到单片机指令后就没有正常的响应,这就能够判定是你程序有问题或者屏幕本身故障了。
设计图
Epad_8266DB_UDB
原理图