本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:BigBubbleGum
逛闲鱼的时候发现了这样一种墨水屏——电子价签,大家在盒马、7Fresh、小米之家等互联网线下店里面应该见到过,用电子价签替代传统的纸质价签,可以统一管理显示价签内容,并给消费者营造出一种科技感、高端感。
常见的价签尺寸有 2.13 寸、2.9 寸和 4.2 寸,海鲜市场上价格分别为几块钱、十几块钱和二三十块钱。电子价签个人是没法直接更改其显示内容的,需要有专门的基站才能改写。电子价签的内部就是单片机驱动板+电子墨水屏,于是我研究了下如何让这块墨水屏显示自定义图案。
内容比较多,我将分为上下两篇,本文将介绍下电子墨水屏的工作原理、价签拆解、各种硬件驱动方案。下一篇将介绍墨水屏驱动板故障排除、通讯协议和驱动程序相关的内容。
我也是从零开始接触的电子墨水屏,各种 QQ 群潜水、论坛找资料,学习途中遇到了不少坑,相信这将是你能找到最详细的电子价签 DIY 攻略。
一、电子墨水屏简介
电子墨水屏也叫电子纸,常见的电子纸采用“微胶囊电泳显示”技术(EPD)。其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子墨水涂布在一层塑料薄膜上,再贴覆上薄膜晶体管(TFT)电路,经由驱动 IC 控制,形成像素图形。
电子墨水由数百万个微胶囊所构成,微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子,悬浮于透明液体中。
利用正负相吸的原理,当电场接通时,该区块对应的黑或白粒子会移动至微胶囊的顶端,使用者在该区块上,就能看见白色或黑色。
常见的电子纸是黑白色的,电子价签还有一种三色电子墨水屏,系统运作原理与双色系统类似,施加不同的电压,使不同颜色的粒子移动至上层,看见不同的颜色。
电子墨水屏易于阅读:电子纸显示屏是靠反射环境光来显示图案的,它具有纸张印刷般的效果;
轻薄灵活 : 因为结构上比较简单外,加上电子纸本身是基于柔软的塑料薄膜的材料,造就了它天生柔韧、可弯曲的特点,可以根据需要任意裁切成各种形状。
省电节能 :当显示静态图像的时候,电子纸可以完全不耗电,就是即使断开所有电源,电子纸显示器依然能够保留最后一幅画面。
比如下面这款应用了电子纸技术的智能卡,就具备了显示余额的功能。
还有这种 NFC 无源智能吊牌,可以通过手机 NFC 刷新显示内容,可以用作电子「狗牌」、电子行李牌,放在店里展示收款二维码,放在车上显示挪车电话啥的。
二、价签拆解
言归正传,首先来拆解这块 2.13 寸的电子价签,2.9 寸和 4.2 寸方法一样。
价签背面是电池仓,可以用拆机撬棒撬开,里面是两枚 CR2450 锂电池并联。(不拆电池仓不影响下面的步骤)
2.13 寸价签的型号为 Stellar-M;2.9 寸型号为 Stellar-L;4.2 寸型号为 Stellar-XL。
价签正面的塑料面板是胶水固定,无法无损拆解。
用刀片以四周边缘为突破口,刀片插入部分后就能轻松撬开整个面板。
过程一定要注意安全,千万小心别割到手指,血与泪的教训!
取下盖板,就能掀开墨水屏,主板是卡在塑料外壳中的,轻轻一撬就能取下。
2.9 寸/4.2 寸墨水屏与主板是插座连接,可以轻松取下;
2.13 寸墨水屏跟主板是粘在一起的,首先刮除表面白色软胶,用 180 度热风枪(吹风机应该也可以的)边吹边撕,别用力,就能取下屏幕。
2.9 寸/4.2 寸屏幕是 24P 的,2.13 寸屏幕是 34P,都是 2015 年产的。
最后看一下主板,左侧为墨水屏驱动电路,中间是一颗德州仪器的单片机 MSP4302553,顶上有一颗兆易 SOP8 存储器芯片 25VQ21BT,右侧是 2.4G 射频收发芯片 A7106,负责与基站通讯。
三、墨水屏驱动基础
1. 墨水屏驱动原理
墨水屏内置驱动器 IC,采用 COG 封装, IC 厚度 300um,根据 FPC(柔性电路板)宽度的不同,分为 24P 和 34P。墨水屏正面朝向自己,排线朝左边,从上往下分别是引脚 1-24。
24P 墨水屏比较常见,一些驱动板的排座也是 24P 的。
2.13 寸电子墨水屏的排线宽度是 34P 的,实际引脚数量是 26 个,裁剪时需要将上下两个没有连接的引脚一并减掉,就变成 24P 了。
电子价签里面墨水屏丝印 HINK-E0213A04,跟大连佳显公司(Good Display)的“ GDEH0213B73”屏幕型号一样,可以在他们的网站上查询到详细的信息,或者去资料更齐全的微雪(Waveshare)家查看更多内容。电子墨水屏通用驱动电路如下。(24P 引脚定义和驱动电路原理详解放在下一篇)
单片机的话推荐使用 ESP8266 模块,比较常用的是 12E 和 12F。网络上有丰富的例程,使用 Arduino 的开发环境,简单易上手。
ESP8266 模块加上串口通讯电路和电源电路就是 NodeMCU 开发板,直接用杜邦线连接墨水屏驱动板就行。
墨水屏与单片机采用 SPI 协议通讯(原理见下一篇),墨水屏的 9-14 号引脚与单片机连接,加上 3V3 和 GND,需要使用 8p 的排线将墨水屏驱动板和 NodeMCU 开发板连接。
其中引脚 10 和引脚 12、13、14 这四个墨水屏引脚 ESP8266 的连接一般是固定的,不同人写的程序里面 BUSY 和 DC 引脚与 ESP8266 的连接会有不同,在烧录程序的时候需要注意在源程序里面修改相关定义。
微雪家的墨水屏产品功能引脚定义如下表。
2. 24P、34P、上接、下接
刚接触墨水屏时,被上接还是下接搞得比较迷糊,这里对这些概念做一个详细的解释。
24P 和 34P 是指墨水屏 FPC 排线的宽度,比如 2.9 寸和 4.2 寸以及微雪自家的墨水屏是 24P 的,排线引脚数量也是 24P;而 2.13 的价签墨水屏排线宽度是 34P 的,排线引脚数量是 26 个,修剪掉两旁空白部分和上下两个引脚就是 24P 了。24P 和 34P 墨水屏引脚定义是一样的,驱动电路通用。
对应插排线的座子叫做 FPC 母座,因为 FPC 排线只有一面有引脚,如果 FPC 座子的上面跟排线接触就是 FPC 上接,FPC 座与排线的接触面在下面的话就是 FPC 下接。
通常上接的 FPC 座子是抽拉式的,下接的座子是翻盖式的,24P 还有上下面都有触点的 FPC 座。
一般 DIY 的话屏幕跟主板平放在桌面上,排线朝上与 FPC 座子相连,用抽拉上接的座子。
2.9 寸价签里的屏幕是翻折到 PCB 顶部,用的是 24P 翻盖下接母座。
24P 的墨水屏的排线比较厚,跟 FPC 母座连接较紧。2.13 寸电子价签里的 34P 墨水屏是粘贴在 PCB 上的,排线很薄,在 FPC 座子里压不紧,可以用胶带增加厚度。
四、墨水屏驱动方案
1. 破解通讯协议,直接驱动
真正的大佬可以不用管上面的驱动电路,自己 DIY 一个基站,连价签外壳都不用拆,直接给墨水屏传图。
比如 CSDN博主 @myfish3 使用一块伊拉克成色的 STM32 开发板和 A7105 射频芯片在廉价的电木洞洞板上搭建了一个简单电路,在 PC 机运行上位机,使用串口和 STM32 通信,STM32 使用 A7105 和价签的 A7106 通信,MSP430 从 A7106 获取并执行命令。
技术大牛往往就是这么朴实无华。
2. 下载器直接写入程序
如果你懂 MSP430 单片机开发的话,可以用 430 launchpad 直接往电子价签主板上的单片机烧录程序,这个相对来说会简单一点,网上也有很多的例程。
3. 原生墨水屏驱动电路板
对于普通的 DIYer,使用墨水屏驱动板+ESP8266 更加简单易学。
第一种方案可以利用电子价签 PCB 板上的原有驱动电路,首先将 msp430 和 A7106 拆下,防止干扰,节约电能。
虽然板子上留有测试点,但是与墨水屏没有关系,不能直接利用。
经过测试,驱动电路的 9-14 号通讯引脚如下图所示,分别接在了 430 单片机的左上部分 6 个引脚,BS 引脚要接地,方框里面有一个 MOS 管,原用于控制墨水屏的电源通断,拆除后把红点处的两个引脚相连即可。
用细导线将焊盘引出,与 ESP8266 开发板相连。
3V3 和 GND 可以从背面的电池正负极上引线,这样无需拆下电子墨水屏,也不用单独购买驱动板,利用价签原来的驱动电路,直接就能刷入程序改写显示画面。
4. 墨水屏驱动板
上面的飞线操作过于繁琐,建议买一个墨水屏驱动板,也就几块钱,用排线跟 ESP8266 相连也更加稳定。
5. ESP8266 墨水屏驱动开发板
微雪有款墨水屏开发板,将 ESP8266 和墨水屏驱动电路集成到一起,省去了排线的连接,开发更方便。
但是这种成品开发板的墨水屏跟 8266 的引脚是固定的,比如微雪开发板的引脚定义如下,网上一些墨水屏应用程序只提供固件,没有源代码,如果引脚定义跟微雪不一样的话就不能使用了。
而且微雪开发板的 FPC 座是 24P 的,34P 的 2.13 寸墨水屏使用时需要裁减排线,开发板的价格也比较贵,要六七十元。
五、DIY 墨水屏驱动板
于是我自己画了一个 ESP8266 墨水屏驱动板,毕竟嘉立创的羊毛不薅白不薅,成本只要十几块钱,墨水屏引脚与 8266 的连接根据自己需求修改(图中是微雪定义),此外还有以下优点:
- 采用 Type-C 接口;
- 24p/34p FPC 座均可使用
- 体积小巧,仅跟 2.13 寸墨水屏一样大;
- 贴片元件采用 0805 封装,串口通讯芯片采用 CH340C,Type-C 和 FPC 焊盘加长,所有元件均在正面,方便手工焊接;
电路中有两个地方可供选择,一是 BS 接地(0)为默认的 4 线 SPI,接 3V3(1)为 3 线 SPI;二是 RESE 电阻通过拨动开关选择,1.54/2.13/2.9 寸墨水屏选择 3R,2.7/4.2 以及三色墨水屏选择 0.47R。
PCB 已打样验证能用,电路里面用到的电阻电容电感、三极管 MOS 管都可以从价签 PCB 上获取。16P 的 Type-C 和 0.5mm 间距的 FPC 插座引脚密集,对于新手来说可能有些难焊,建议大量使用助焊剂。
PCB 四周留有螺丝孔,可以加上锂电池。3D 打印个外壳,做一个墨水屏时钟。
PCB 留有 8 个墨水屏通讯排针接口,可以只焊接墨水屏驱动电路部分,当做独立的驱动板使用。
原理图和 PCB 都是基于立创 EDA 设计,已开源,可以自行打样。
国产的立创 EDA 和嘉立创免费打印真是太好用了,让我来继续安利一下。
PCB打样全免费!手把手教你在嘉立创0元下单创作立场声明:种草免费PCB打印网站-嘉立创我最早接触电子电路设计是刚上大学那会,加入了一个叫做「电信科协」的学校社团学习51单片机,部长手把手教我们焊接最小系统板,后来焊接技术有了长进,陆续将数码管、点阵、按键、各种传感器全都焊接了上去,把一块15x10cm的洞洞板焊的满满当当。几年下来单片机编程BigBubbleGum|赞15评论7收藏71查看详情
六、上传自定义图片
ESP8266 墨水屏驱动的硬件部分搞定后,就可以往里面上传程序,显示自定义图案,这里以 2.13 电子价签墨水屏为例,使用的是上面我自己做的 ESP8266 墨水屏驱动板。
软件部分使用的是 Arduino IDE 环境,下载和安装可以看我之前的教程。
1. 微雪本地例程
在微雪官网下载示例程序。
进入 example 文件夹中,把 esp8266-waveshare-epd 文件夹整个复制到 %LOCALAPPDATA%Arduino15packagesesp8266hardwareesp82662.7.1libraries,其中“2.7.1”需要根据安装的 ESP8266 支持包版本进行相应更改。
打开 IDE,选择正确的开发板和端口号。
打开”文件-示例-NodeMCU 1.0-waveshare-e-Paper“,找到 2.13 屏幕驱动程序。
如果你是按照微雪的引脚定义设计的驱动板的话,直接编译下载,墨水屏就能显示图案了。
如果你是其他的引脚定义,需要修改下 DEV_Config.h 里的引脚定义。
新手估计很难一次性成功点亮墨水屏,我也翻车了好多次。下一篇中将介绍下硬件电路常见问题以及故障排除思路。
2. 自定义图片上传程序
微雪的示例程序作为出厂测试用的,我精简了下,只保留了自定义图片上传功能。
- 2.13 寸墨水屏的分辨率为 250x122,先用 PS 或者画图软件制作一张 250x122 像素的.bmp 格式的图像。
- 打开取模软件,扫描模式设置为垂直扫描,宽度和高度设置为 250x122,取消勾选包含图像头数据,勾选颜色反转,设置为上下颠倒,点击保存为 .c 文件。
- 图传程序由很多文件组成,引脚定义在 epdif.h 文件里修改。
- 将取模软件生产的 .c 文件里面{}里面的内容复制到图传程序 imagedata.cpp 文件里 gImage 数组的大括号里。
- 编译下载,此时屏幕就能显示这张图片了。
墨水屏断电后能保持最后显示的画面,可以当做电子相册或者挪车电话牌。
拆解电子价签,获得墨水屏并成功点亮,相信没有比这更全面的新手教程了。
ESP8266 电子墨水屏驱动电路原理图与 PCB、取模软件与示例程序,已发布到立创开源广场。
下一篇将进一步介绍电子墨水屏驱动电路原理、DIY 注意事项、故障排除,SPI 通讯,驱动程序讲解等内容,敬请期待。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~