5.79inch e-Paper Module (B) Manual
来自Waveshare Wiki
| ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
说明
各项参数
尺寸 | 5.79英寸 |
驱动板尺寸 | 152.50mm × 58.50mm |
外形尺寸(裸屏) | 150.92mm × 56.94mm × 1.00mm |
显示尺寸 | 139.00mm × 47.74mm |
工作电压 | 3.3V / 5V(IO电平电压要和供电电压一致) |
通信接口 | SPI |
点距 | 0.1755 × 0.1755 |
分辨率 | 792 × 272 |
显示颜色 | 红、黑、白 |
刷新时间 | 24s |
刷新功耗 | < 50mW(typ.) |
休眠电流 | < 0.01uA(接近0) |
- 刷新时间:刷新时间为实验测试数据,实际刷新时间会有误差,以实际效果为准。全局刷新过程中会有闪烁效果,这个是正常现象。
- 刷新功耗:功耗数据为实验测试数据,实际功耗由于驱动板的存在和实际使用情况不同,会有一定误差,以实际效果为准。
通信方式
工作原理
本产品使用的电子纸采用“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,在环境光下,电子纸显示屏清晰可视,可视角度几乎达到了 180°。因此,电子纸显示屏非常适合阅读。
编程原理
- 对于黑白图片,我们可以规定,如果如果是黑色我们定义成0,如果是白色就定义成1,那么有了表示颜色的方式:
- 白色:□,对应1
- 黑色:■,对应0
- 白色:□,对应1
- 一个点在图形上一般称之为像素点(pixel),而颜色不是1就是0,也就是1个位就可以标识颜色:1Pixel = 1bit,那么一个字节里面就包含了8个像素点。
- 以16个像素点为例,我们假设前8个像素点为黑,后8个像素点为白色,那么可以这么认为,像素点1-16,对应这0位到15位,0表示黑色,1表示白色:
- 对于计算机而言,它的数据存储方式是高位在前,低位在后,且一个字节只有8个位,因此会有一点改变:
- 这样只需要2个字节即可表示16个像素点了。
- 对于2.9inch e-Paper (B),是红黑白三色,我们需要把图片拆成2张图片,一张黑白图片,一张红白图片,在传输的时候因为一个寄存器是控制黑白显示的,一个寄存器是控制红白显示。那么黑白部分就是1个字节控制8个像素点,红白部分1个字节控制8个像素点。
- 假设有8个像素点,前面4个是红色,后面4个黑色。把他们拆成一个黑白图片,一个红白图片,这两个图片都是8个像素点,只不过黑白图片前四个像素为白色,后4个像素点为黑色,而红白图片前4个像素点为红色,后四个像素点为白色
- 如果我们规定,白色存储为1,红色或者黑色存储为0,那么就有了如下的表示:
- 而黑白部分1个字节控制8个像素点,红白部分1个字节控制8个像素点,那么可以如下表示:
双IC编程解析
5.79inch e-Paper (B) 是一块双IC控制的墨水屏,除了上述的编程原理外,还要注意一下以下内容
- 如上图,每个IC控制一半的屏幕
- 因为是平均分配控制,所以x轴会舍弃掉第50个字节的低四位(396/8=49.5)
- 两个IC控制屏幕的方向是镜像的,因此在初始化的时候需要进行镜像配置,也就是一个IC从0计数到396,一个IC从396计数到0
- 所有控制引脚公用,使用寄存器区分两个IC的控制
- 刷新、睡眠、VGH电压、VGL电压等控制寄存器共用
- 方向、起始位置、显示区域等控制寄存器以 0x80 为界
- M控制器的寄存器地址为0x00至0x79
- S控制器的寄存器地址为M控制器的寄存器地址+0x80
注意事项
- 支持局刷的屏幕,注意使用的时候不能一直用局刷对屏幕进行刷新,需要在做几次局刷之后,对屏幕进行一次全刷清屏。否则会造成屏幕显示效果异常。
- 注意屏幕不能长时间上电,在屏幕不刷新的时候,要将屏幕设置成睡眠模式,或者进行断电处理。否则屏幕长时间保持高电压状态,会损坏膜片,无法修复。
- 使用墨水屏的时候,建议刷新时间间隔至少是180s, 并且至少每24小时做一次刷新,如果长期不使用墨水屏的话,要将墨水屏刷白存放。(具体储存环境需求参考数据手册)
- 屏幕进入睡眠模式之后,会忽略发送的图片数据,只有重新初始化才能正常刷新。
- 控制 0x3C 或 0x50 (具体参照数据手册)寄存器可以调节边框颜色,在例程中可以调节 Border Waveform Control 寄存器或者 VCOM AND DATA INERTVAL SETTING 进行设置。
- 如果发现制作的图片数据在屏幕上显示错误,建议检查一下图片大小设置是否正确,调换一下宽度和高度设置再试一下。
- 墨水屏的工作电压要求是 3.3V,如果您购买的是裸屏的话,设计电路的时候如果需要配合 5V 工作环境的话,建议做一下电平转换处理。新版驱动板(Rev2.1及后续版本)加入了电平处理电路,可以同时支持 3.3V 和 5V 工作环境,老版本只能支持 3.3V 工作环境,使用的时候可以先确认一下版本号(版本号在板名下)。
- 屏幕的 FPC 排线比较脆弱,请注意:不要沿屏幕垂直方向弯曲排线,避免排线被撕裂;不要反复过度弯曲排线,避免排线断裂;不要往屏幕正面方向弯曲排线,避免排线与面板的连接断开。调试研发时建议固定排线后使用。
- 墨水屏屏幕较为脆弱,注意尽量避免跌落、碰撞、用力按压。
- 我们建议客户拿到屏幕之后,先用我们提供的示例程序,使用对应的开发板进行测试。
Raspberry Pi
硬件连接
使用 9PIN 排线连接,请参考下方的引脚对应表格:
e-Paper | Raspberry Pi | |
BCM2835编码 | Board物理引脚序号 | |
VCC | 3.3V | 3.3V |
GND | GND | GND |
DIN | MOSI | 19 |
CLK | SCLK | 23 |
CS | CE0 | 24 |
DC | 25 | 22 |
RST | 17 | 11 |
BUSY | 24 | 18 |
PWR | 18 | 12 |
开启SPI接口
- 打开树莓派终端,输入以下指令进入配置界面:
sudo raspi-config 选择Interfacing Options -> SPI -> Yes 开启SPI接口
- 重启树莓派:
sudo reboot
- 检查 /boot/config.txt,可以看到 'dtparam=spi=on' 已被写入
- 为了确保 SPI 没有被占用,建议其他的驱动覆盖暂时先关闭。可以使用 ls /dev/spi* 来检查 SPI 占用情况,终端输出 /dev/spidev0.0 和 /dev/spidev0.1 表示 SPI 情况正常
运行C语言例程
- 安装 lg 库
#打开树莓派终端,并运行以下指令: wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master make sudo make install # 更多的可以参考源码:https://github.com/gpiozero/lg
- 安装 gpiod 库(可选)
#打开树莓派终端,并运行以下指令: sudo apt-get update sudo apt install gpiod libgpiod-dev
- 安装 BCM2835(可选)
#打开树莓派终端,并运行以下指令: wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
- 安装 wiringPi(可选)
#打开树莓派终端,并运行以下指令: sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行 gpio -v 会出现 2.52 版本,如果没有出现,说明安装出错。 #Bullseye 分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行 gpio -v 会出现 2.60 版本,如果没有出现,说明安装出错。
- 下载程序(已下载可跳过)
wget https://www.waveshare.net/w/upload/7/71/E-Paper_code.zip unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 备用解压方式
sudo apt-get install p7zip-full 7z x E-Paper_code.zip -O./e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 通过 GitHub 下载程序(备用方式,已下载可跳过)
目前访问 GitHub 并不是很流畅,建议使用上面的方法从我们官网下载。
git clone https://github.com/waveshare/e-Paper.git cd e-Paper/RaspberryPi_JetsonNano/
- 编译程序(说明:-j4 为使用4线程编译,数字可自行修改;EPD=epd5in79b 是指定一个宏定义,epd5in79b 对应主函数中的测试程序)
# 此时在 e-Paper/RaspberryPi_JetsonNano 位置 cd c sudo make clean sudo make -j4 EPD=epd5in79b
- 运行程序
sudo ./epd
运行python例程
- 安装函数库
sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-pil sudo apt-get install python3-numpy sudo pip3 install spidev
- 安装函数库(python2)
sudo apt-get update sudo apt-get install python-pip sudo apt-get install python-pil sudo apt-get install python-numpy sudo pip install spidev
- 安装gpiozero库(系统默认已安装,如果没有安装请按照以下命令进行安装)
sudo apt-get update # python3 sudo apt install python3-gpiozero # python2 sudo apt install python-gpiozero
- 下载程序(已下载可跳过)
wget https://www.waveshare.net/w/upload/7/71/E-Paper_code.zip unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 备用解压方式
sudo apt-get install p7zip-full 7z x E-Paper_code.zip -O./e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 通过 GitHub 下载程序(备用方式,已下载可跳过)
目前访问 GitHub 并不是很流畅,建议使用上面的方法从我们官网下载。
git clone https://github.com/waveshare/e-Paper.git cd e-Paper/RaspberryPi_JetsonNano/
- 运行程序
# 确保在 e-Paper/RaspberryPi_JetsonNano/ 位置 cd python/examples/ python3 epd_5in79b_test.py
- 如若运行没反应,请重启再调用python文件
Arduino
硬件连接
使用 9PIN 排线连接,请参考下方的引脚对应表格:
e-Paper | Arduino UNO | Mega2560 |
VCC | 5V | 5V |
GND | GND | GND |
DIN | D11 | D51 |
CLK | D13 | D52 |
CS | D10 | D10 |
DC | D9 | D9 |
RST | D8 | D8 |
BUSY | D7 | D7 |
PWR | D6 | D6 |
安装IDE
运行程序
- 在资料界面下载程序,然后解压进入 E-Paper_code 目录可以看到下面的内容
- 打开测试程序:E-Paper_code\Arduino\epd2in13g\epd5in79b.ino
- 在 Arduino IDE 中的工具栏(Tools)选择对应的开发板(Board)和端口(Port)
- 最后点击上传即可,上传成功如下(Arduino 1.8.13)
Jetson Nano
硬件连接
Jetson Nano 的 40PIN 引脚是兼容树莓派的 40PIN 引脚的,并且提供了一个 Jetson.GPIO 库跟树莓派的 RPI.GPIO 库的 API 是一致的,所以这里连接的序号跟树莓派的是一样的。
使用 9PIN 排线连接的话,请参考下方的引脚对应表格:
e-Paper | Jetson Nano Developer Kit | |
BCM2835编码 | Board物理引脚序号 | |
VCC | 3.3V | 3.3V |
GND | GND | GND |
DIN | 10(SPI0_MOSI) | 19 |
CLK | 11(SPI0_SCK | 23 |
CS | 8(SPI0_CS0) | 24 |
DC | 25 | 22 |
RST | 17 | 11 |
BUSY | 24 | 18 |
PWR | 18 | 12 |
运行C语言例程
- 下载程序(已下载可跳过)
wget https://www.waveshare.net/w/upload/7/71/E-Paper_code.zip unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 备用解压方式
sudo apt-get install p7zip-full 7z x E-Paper_code.zip -O./e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 通过 GitHub 下载程序(备用方式,已下载可跳过)
目前访问 GitHub 并不是很流畅,建议使用另一种方法从我们官网下载。
git clone https://github.com/waveshare/e-Paper.git cd e-Paper/RaspberryPi_JetsonNano/
- 编译程序(说明:JETSON 是指定设备为 jetson nano,不指定默认为树莓派;-j4 为使用4线程编译,数字可自行修改;EPD=epd5in79b 为指定一个宏定义,epd5in79b 对应主函数中的测试程序)
# 此时在 e-Paper/RaspberryPi_JetsonNano 位置 cd c sudo make clean sudo make JETSON -j4 EPD=epd5in79b
- 运行程序
sudo ./epd
运行python例程
- 安装函数库
sudo apt-get update sudo apt-get install python3-numpy sudo apt-get install python3-pip sudo pip3 install Jetson.GPIO
- 下载程序(已下载可跳过)
wget https://www.waveshare.net/w/upload/7/71/E-Paper_code.zip unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 备用解压方式
sudo apt-get install p7zip-full 7z x E-Paper_code.zip -O./e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 通过 GitHub 下载程序(备用方式,已下载可跳过)
目前访问 GitHub 并不是很流畅,建议使用上面的方法从我们官网下载。
git clone https://github.com/waveshare/e-Paper.git cd e-Paper/RaspberryPi_JetsonNano/
- 运行程序
# 确保在 e-Paper/RaspberryPi_JetsonNano/ 位置 cd python/examples/ python3 epd_5in79b_test.py
Sunrise X3 Pi
硬件连接
使用 9PIN 排线连接,请参考下方的引脚对应表格:
e-Paper | Sunrise X3 Pi | |
BCM编码 | Board物理引脚序号 | |
VCC | 3.3V | 3.3V |
GND | GND | GND |
DIN | MOSI | 19 |
CLK | SCLK | 23 |
CS | CE0 | 24 |
DC | 25 | 22 |
RST | 17 | 11 |
BUSY | 24 | 18 |
PWR | 18 | 12 |
开启SPI
运行python程序
- 对应的库在函数中已安装完成,如果不小心卸载,请使用下面的命令进行安装
sudo apt-get update sudo apt-get install python-pip sudo apt-get install python-pil sudo apt-get install python-numpy sudo pip install Hobot.GPIO sudo pip install spidev
- 下载程序(已下载可跳过)
wget https://www.waveshare.net/w/upload/7/71/E-Paper_code.zip unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 备用解压方式
sudo apt-get install p7zip-full 7z x E-Paper_code.zip -O./e-Paper cd e-Paper/RaspberryPi_JetsonNano/
- 通过 GitHub 下载程序(备用方式,已下载可跳过)
目前访问 GitHub 并不是很流畅,建议使用上面的方法从我们官网下载。
git clone https://github.com/waveshare/e-Paper.git cd e-Paper/RaspberryPi_JetsonNano/
- 运行程序
# 确保在 e-Paper/RaspberryPi_JetsonNano/ 位置 cd python/examples/ python3 epd_5in79b_test.py
STM32
硬件连接
使用 9PIN 排线连接,请参考下方的引脚对应表格:
e-Paper | STM32 |
VCC | 3.3V |
GND | GND |
DIN | PA7 |
CLK | PA5 |
CS | PA4 |
DC | PA2 |
RST | PA1 |
BUSY | PA3 |
PWR | PA6 |
运行程序
- 点击下载程序,然后解压进入 E-Paper_code 目录可以看到下面的内容
- 使用 Keil 打开 E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM 目录下的 epd-demo.uvprojx
- 打开 Keil 的编译工具栏(一般情况已经打开了)
- 在图片所示位置选择 EPD_5in79b_test 目标
- 点击编译。
- 确保已连接合适的烧录器,然后点击下载(LOAD)将程序下载到单片机中
资料
文档
程序
开发资料
相关链接
FAQ
软件问题
- 我们例程使用的是 STM32f103ZET6,如果客户在 MDK 中修改其他的型号,例如 STM32F103RBT6,RAM 空间变小了,需要在原基础上修改启动文件中的 stack size 和 heap size。
- 在 Data Start Transmission 1 时,发送上一次的数据,即所谓的“OLD”数据,一般在程序中就直接发送 0x00;在 Data Start Transmission 2 时,就发送需要刷新的数据,即所谓的“NEW”数据。
- 我们的例程的中文字库是使用 GB2312 的编码方式,请将您的 xxx_test.c 文件改成 GB2312 编码格式编译下载后即可正常显示。
- 可以通过 Border Waveform Control 寄存器或者 VCOM AND DATA INTERVAL SETTING 寄存器设置边框显示颜色。
- 这种情况需要客户减少局刷位置并且在局刷5次后进行一次清屏。
- 电子墨水屏重新唤醒的过程,实际是重新上电的过程,所以 EPD 在 wake up 时,要先进行清屏的动作,这样才能最大程度地避免残影现象。
- 可能是 SPI 驱动不成功导致的:
- 1.先检查接线是否正确。
- 2.在检查 SPI 是否开启,参数是否配置正确。(波特率、模式等参数)
- 墨水屏从局刷切换为全刷时需要加入全刷初始化函数。
- 可能是之前运行过C语言的基于 BCM2835 库的例程,此时需要重启树莓派再运行 python 例程。
- 使用指令 "sudo apt-get install python-imaging" 安装一下 imaging 函数库。
硬件问题
- 可以,现在已经板载了电平转换芯片,支持 5V 驱动。
- 墨水屏额定输入电压是 2.3~3.6V,如果是 5V 系统需要做电平转换,另外电压最好不要低于 2.5V,以免影响墨水屏显示效果。
- 器件选型可以使用我们提供的原理图中的型号或者根据数据手册选择都是可以的。
- 可以,注意需要时序正确。
- 确认 SPI 通信是否正常。
- 确认 BUSY 引脚是否正常初始化为输入模式。
- 可能是没有正常复位,尝试缩短复位时低电平的持续时间。(因为驱动电路加入了断电开关,复位低电平过长会导致驱动板断电导致复位失败)
- 如果判忙函数有发送 0x71 命令,可以尝试注释掉。
- 1.64inch、2.36inch、3inch,为0.5mm 间距,26Pin
- 1.02inch,为0.5mm 间距,30Pin
- 4.37inch、7.3inch,为0.5mm 间距,50Pin
- 其余(非并口),为0.5mm 间距,24Pin。
- 排线插座 0.5-XXpin 后翻盖式 2.0H(FPC连接器)。
屏幕问题
- 【工作条件】温度范围:0~50°C;湿度范围:35%~65%RH。
- 【存储条件】:温度范围:30°C以下; 湿度范围:55%RH 以下;存储最长时间:6个月。
- 【运输条件】:温度范围:-25~70°C;运输最长时间:10天。
- 【拆包后】:温度范围:20°C±5°C; 湿度范围:50±5%RH;存储最长时间:72小时内完成组装。
- 刷新模式:
- 全刷:电子墨水屏在刷新过程中会闪烁多次(闪烁次数取决于刷新时长),闪烁是为了清除残影达到最佳的显示效果。
- 局刷:电子墨水屏在刷新过程中无闪烁效果。使用局刷功能的用户注意在刷新几次之后,要进行一次全刷操作清除残影,否则残影问题会越来越严重,甚至损坏屏幕。(目前只有部分黑白电子墨水屏支持局刷,具体参考产品页面说明)
- 刷新频率:
- 使用过程中,建议客户设置电子墨水屏的刷新间隔至少为180秒。(支持局刷功能的产品除外)
- 待机过程(即刷新操作后)建议客户将电子墨水屏设置为睡眠模式,或者断电操作(可以将墨水屏供电部分用模拟开关断开), 降低功耗并且延长电子墨水屏寿命。(部分电子墨水屏如果长时间处于上电状态的话,会出现屏幕损坏无法修复的情况)
- 使用场所:
- 电子墨水屏建议是在室内使用,不建议在户外使用。
- 如果使用场景是在户外,我们不保证其显示效果,如果因为是在户外使用导致出现的墨水屏损坏,我们不提供保修服务
- 以下是一些户外使用的防护,我们不保证做好这些防护后墨水屏可以正常使用
- 避免电子墨水屏受阳光直射,同时要做好紫外线防护措施,因为带电粒子长时间在强光的照射下会发干,导致失去活性无法刷新,这种情况是不可逆的。
- 在墨水屏连接排线上面白胶部分,使用3M胶将其完全覆盖,完全覆盖与不加,在紫外线下是有不同反应的。
- 将墨水屏放在相对阴凉的区域,如树荫底下、屋檐阴影下面
- 在设计电子墨水屏产品的时候,客户注意要确定好使用环境是否满足电子墨水屏的要求。
- 理想情况下,正常使用,可以刷新 1000000次(100万次)。
- 长时间上电开发板,在每次刷新操作之后,建议将屏幕设置为睡眠模式或者直接断电处理,否则屏幕长时间处于高电压状态下可能烧坏屏幕。
- 可以,但是需要用软件重新做电子纸初始化操作。
- 可能 SPI 速率过高,导致数据丢失,尝试降低 SPI 速率。
- 供电不足或者电源不稳定导致数据丢失。
- 数据线过长导致数据丢失,延长线最好不要超过20cm。
- 电泳电子纸的显示灰阶由粒子在微胶囊或者微杯的空间位置所决定,黑色粒子与白色粒子在电压的作用下发生电泳现象,这种促使粒子发生电泳运动的电压时序就是电子纸的驱动波形。驱动波形为电子纸显示器的核心部分,对驱动波形的优化将直接影响显示器的显示效果。而驱动波形文件是用来说明促使粒子发生电泳运动的电压时序而形成的参数,在电子纸刷新时需要定期被调用。
- 不同批次的电子纸膜片,电泳矩阵因为材料、制作工艺等原因,在驱动显示时所需电压值会有所差异,反映在灰度与电压、温度关系的就是电子墨水屏的波形。一般来说,每一批次的电泳矩阵生成后,会有相应的波形文件,以 .wbf 文件形式存在,由膜片生产商将波形文件和电泳矩阵提供给生产电子纸屏的厂家,再由生产电子纸屏厂家集成保护板、基板和驱动器以后提供给客户;如果波形文件和屏幕不对应,很可能造成无法显示或者显示效果不理想。一般出厂时波形文件已经 OTP 内置于墨水屏的驱动 IC 内,并且我们提供的部分程序也有调用外部的波形文件来驱动电子墨水屏。
- LUT 是 LOOK UP TABLE 的缩写,OTP 是 ONE TIME PROGRAM 的缩写,LUT 本意就是加载波形文件,而波形文件分 OTP 和 REGISTER 两种,其中 OTP 为内置波形存储方式,REGISTER 为外置波形存储方式。
- 主要有两种类型的墨水屏:
- 一种是先刷背景图。
- 另外一种是交替刷新旧数据和新数据。
- 在不同位置同时局刷需要在程序设计进行操作,即先把不同位置的数据刷到电子纸 IC 内,最后统一做好 Updata/TurnOnDisplay。
- 有覆膜。
- 目前所有屏幕都有内置温度传感器,也可以使用 IIC 管脚外置 LM75 温度传感器。