4.2inch e-Paper Cloud Module
| |||||||||||||||||||||||||||||
|
说明
本设备可以通过wifi连接指定主机的6868端口,根据其指令进行图片刷新。
本设备可以通过wifi和蓝牙进行设备配置,但初次配置必须蓝牙进行配置。
本设备必须通过按键进行唤醒。
特点
- 适合作为设备标签,货架标签,信息储存等
- 无需背光,断电可长时间保持最后一屏的显示内容
- 可以通过设定不同ID进行区分,方便集中管理和对标签进行追踪
- 显示的内容可由用户通过服务器随时自主定制、控制,方便灵活
- 电压检测电路,可以检测电池电路避免过度放电。
- 板载SW6106芯片,支持双向快充,支持PD/QC/FCP/PE/SFCP 等多种快充协议
- 提供配套安卓APP,帮助用户配置和管理设备
- 提供完善的配套资料手册
参数
- 供电方式:电池供电
- 分 辨 率:400 x 300
- 点 距:0.212 × 0.212
- 显示颜色:黑、白
- 刷新时间:4s
- 可视角度:>170°
- 外形尺寸:96.5mm × 85mm
- 显示尺寸:84.8mm × 63.6mm
- 最大刷新次数(电池容量为1000mah): 1500+
e-Paper Cloud Module用户手册
前置信息
本设备每次开机时会局部刷新屏幕,并显示对应状态的标志。
以下图表分别是等待标志、设置标志、低电压标志、wifi连接标志和主机连接标志
- 等待标志表示此时正在等待指令中。
- 设置标志表示是否设置完成。
- 低电压标志表示电池电压低于警告电压。
- wifi连接标志表示wifi已连接。
- 主机连接标志表示已经连接到指定IP地址的服务器。
- 一般情况下,开机后等待标志均会出现,但电池电压低于警戒电压(默认值为3600mv)150mv,为保护整个系统的稳定性,设备将自动关机。
设备配置
首次配置
如果设备尚未配置,按下设备唤醒键①后,设备将进行刷屏后②,此时可以使用我们提供的app进行设置③,见1.3。
注:
①4.2inch为唤醒键,2.13inch为复位键.
②尚未配置的正常情况下,仅在右上角显示等待标志。如果显示低电压标志,且无等待标志则检测到电池电压低于3450mv将自动关机。
③如果没有蓝牙连接到设备将在开机刷屏过后90s后自动关机。
- 未设置设备运行流程图(此流程图仅做参考
再配置
如果设备已经配置,按下设备唤醒键后,设备将进行刷屏①并在右上角将显示已设置标志,此时蓝牙默认关闭,需要长按唤醒键②超过5S,用以开启蓝牙③。此时wifi刷屏动作将会照常进行④,配置操作与未配置设备一致⑤。
注:
①配置后设备的刷屏时间与wifi连接速度有直接联系,通常在开机后30s内进行刷新。
②2.13inch与4.2inch不同,按键被分离到蓝牙唤醒键.
③建议长按至手机搜索到设备蓝牙。没有蓝牙连接到设备将在开机刷屏过后90s后自动关机,若有蓝牙连接到设备则设备不会自动关机。
④如果开启蓝牙情况下,接收到wifi设备的关机指令则等待30s蓝牙设备连接,若有蓝牙连接到设备则设备不会在蓝牙断开前关机;若无蓝牙连接到设备则关机。
⑤通常配置完成后,需要进行重启,以使新配置生效。如果重启时,wifi正在传输数据,可能导致数据丢失。
- 已设置设备运行流程图(此流程图仅做参考)
- 主机端示例程序流程图
APP界面介绍
- 设备密码,上锁后需输入密码才能进行操作
注:树莓派例程使用密码为123456,如果上锁并密码不为123456则可能导致无法正常运行。
警告电压,低于电池设定电压则开机时显示低电量标志,若低于设定电压150mv则自动关机。
使用APP进行配置
通讯协议
通讯主要分为两个模式,数据模式和指令模式,指令模式用于传输各种指令,数据模式则是用来传输屏幕刷新数据,两个发送数据格式也各有不同,具体如下:
指令格式
‘;’+指令(+数据)+'/'+校验
数据格式
0x57+4Byte addr+ 4Byte len +1Byte num + len Byte data +校验
返回格式
'$'+数据+'#' 无论数据格式还是指令模式,返回格式均一致。
注:校验为红色数据部分的异或。
指令模式下
- 指令格式
- ‘;’+指令(+数据)+'/'+校验
- 未解锁可用指令:
指令 | 格式 | 返回值(每个数据分多帧返回) |
查看是否上锁 | ‘C’ | 校验+上锁标志位‘0’或者‘1’(‘0’表示未上锁,‘1’表示上锁) |
解锁 | ‘N’+设备密码 | 校验+解锁标志位‘0’或者‘1’(0表示解锁失败,1表示解锁成功) |
获取ID名 | ‘G’ | 校验+ID名 |
- 解锁可用指令:
指令 | 格式 | 返回值(每个数据分多帧返回) |
修改ID名 | ‘0’+name | 校验 |
修改HOST地址 | ‘1’+IP地址 | 校验 |
修改WIFI名 | ‘2’+SSID | 校验 |
修改WIFI密码 | ‘3’+password | 校验 |
修改设备密码 | ‘P’+userpassword | 校验 |
设备锁 | ‘L’+'0'或者'1'(0表示不上锁,1表示上锁) | 校验 |
设置标志位 | ‘s’+'0'或者'1'(0表示未设置,1表示设置完成) | 校验 |
进入数据模式 | ‘F’ | 校验 |
开启蓝牙 | ‘B’ | 校验 |
当前电池电压 | ‘b’ | 校验+电池电压(单位:mv) |
关机 | ‘S’ | 校验 |
重启 | ‘R’ | 校验 |
数据模式下
- 数据格式
0x57+4Byte addr+ 4Byte len +1Byte num + len Byte data +校验
数据名 | 数据长度 | 数据内容 |
addr | 4byte | 数据存储地址 |
len | 4byte | 传输数据长度 |
num | 1byte | 当前扇区第几帧 |
data | len byte | 传输数据 |
- 注意:
- 建议使用等长帧传输
- 每次传输数据长度不应超过1100Byte,否则将会导致数据丢失.
- num因版本升级而失去作用,可为恒定值。
- 数据帧无结束位,应当等待返回对应校验位后才能发送下一帧,否则可能导致系统崩溃或重启。
- 当addr和len均为0时,退出刷新模式。并自动刷新屏幕。
具体流程也可以参考我司提供的python3例程
RPI使用教程
本程序均在Raspberry Pi 4B上进行验证。
安装库
#python3 sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-pil sudo apt-get install python3-tqdm sudo apt-get install python3-numpy sudo apt-get install python3-progressbar
下载测试程序
打开树莓派终端,执行:
sudo apt-get install p7zip-full sudo wget https://www.waveshare.net/w/upload/2/2e/Cloud_RPI.7z 7z x Cloud_RPI.7z cd Cloud_RPI
python
- 本例程仅可使用python3
- 请务必在Cloud_RPI文件夹,运行以下命令
#该程序会根据程序生成对应尺寸的图形和读取一张图片并发送给从机显示 python3 ./examples/4.2inch_display_EPD
Windows使用教程
本教程均在windows 10专业版下进行验证
- 注意:
- 因为windows环境比较复杂,而且一个系统下可能存在多个版本,请自行用可以正常使用的python3替代下文的python。
- 因为正常情况下windows安装python时会自动安装pip,这里不对pip安装进行讲解。
- 因为windows防火墙的缘故,需要关闭或者允许python通过windows防火墙
安装库
#python3 python -m pip install tqdm python -m pip install pillow python -m pip install numpy python -m pip install pypiwin32 python -m pip install progressbar
下载测试程序
下载Windows示例程序,解压并进入到Cloud_WIN文件夹下
python
- 本例程仅可使用python3
- 请务必在Cloud_WIN 文件夹,打开CMD或者PowerShell终端运行以下命令
#该程序会根据程序生成对应尺寸的图形和读取一张图片并发送给从机显示 python ./examples/4.2inch_display_EPD
API详解
在lib目录下有三个文件夹分别为http_get、tcp_server和waveshare_epd,分别对应抓取http图片、TCP服务器、墨水屏相关的函数
tcp_sver.py
目录:Cloud_RPI/lib/tcp_server
在tcp_sver.py中创建了一个tcp_sver类,使用过程中需要对其进行继承,并重构它的handle函数
def handle(self)
每次有新客户端连接到服务器都会调用handle函数进行处理
接收信息函数
- 其会自动解析返回格式,并返回原信息,具体可以参考用户手册第二章的返回格式部分
def Get_msg(self)
接收信息 | 返回信息 |
---|---|
'$'+数据+'#' | 数据 |
指令发送函数
- 其会自动生成帧头、帧尾和校验发送并校验返回值,具体可以参考用户手册第二章的指令格式部分
def Send_cmd(self,cmd)
参数cmd为需要发送的字符串
需要发送内容 | 实际发送内容 |
---|---|
cmd | ‘;’+cmd+'/'+校验 |
数据发送函数
- 其会自动生成帧头、帧尾和校验发送并校验返回值,具体可以参考用户手册第二章的数据格式部分
def Send_data(self,data)
参数data为需要发送的队列信息(包含地址长度等信息),具体可以参考用户手册第二章的数据格式部分,建议使用下方的flush_buffer函数
需要发送内容 | 实际发送内容 |
---|---|
data | 0x57+data+校验 |
可以将Send_cmd和Send_data这两函数理解为两种封包模式
设置画面大小函数
def set_size(self,w,h)
参数w为图像宽度,参数h为图像高度,用于确定需要发送的数据长度
因为我们以黑白墨水屏为例,一个像素点的数据长度为1bit,不难推出一下公式
数据总长=(图像宽度(w)/8)*图像高度(h) |
---|
刷新画面函数(仅指令模式下使用)
- 其会将图像队列拆分成指定长度,并发送给从机显示
#ID含有中文时,可能导致进度条出现错位现象 def flush_buffer(self,DATA)
参数DATA为需要为图像队列,图像队列可以由image对象经过下文中的getbuffer函数转化而来
发送数据 | 发送次数 | 单帧数据长度(len) | 发送内容 |
---|---|---|---|
DATA(图像队列) | 数据总长/单帧数据长度(len) | 1024 Byte(用户可定义) | 0x57+4 Byte addr+ 4 Byte len +1 Byte num + len Byte data+校验 |
每次传输数据长度不应超过1100Byte,否则将会导致数据丢失.
具体请参考用户手册第二章通讯协议
电池电压检测函数
- 返回当前电压值
def check_batter(self)
关机函数
- 关机或低功耗状态
def Shutdown(self)
重启函数
- 重启设备
def Reboot(self)
http_get.py
目录:Cloud_RPI/lib/http_get
- 下载图片函数
def Get_PNG(Url,Name)
该函数会从Url参数对应的网址下载图片,将其以Name参数为文件名,存储到当前目录下。
目录:Cloud_RPI/lib/waveshare_epd
- 将图片信息转为队列
def getbuffer(self, image):
FAQ
- 【工作条件】温度范围:0~50°C ;湿度范围:35%~65%RH
- 【存储条件】:温度范围:30°C以下; 湿度范围:55%RH以下;存储最长时间:6个月
- 不带电池厚度:4.42mm
- 带电池厚度:14.31mm