ses价签墨水屏折腾-01

news2025/1/14 1:16:34

前言

一直想玩玩墨水屏,这次咸鱼找了全新的ses价签,而且价格还很便宜,于是买了一个2.66寸三色,和一个4.2寸三色的墨水屏幕,经过几天的折腾终于能正常显示了。
显示效果如下:
在这里插入图片描述
在这里插入图片描述
折腾来折腾去,发现这个墨水屏还是显示这种黑白的头像表情包效果比较好,显示彩色图片效果太差了。
再来看看显示黑白漫画
在这里插入图片描述
显示这些色调简单的漫画效果也可以。要想做一个实时的时钟的话,这个屏幕也不太行,主要是刷新太慢了。刷新一次需要15s左右。而且不能局部刷新,一刷新就是整体刷新。

价签型号介绍

这次一共是两个价签,其图片及特性如下:

2.66寸价签

  • 型号:2.6 BWR GL340
  • 主控型号:cc2510
  • 屏幕型号:SE2266FS092
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.2寸价签

  • 型号:2.6 BWR CU140
  • 主控型号:AX8052F143
  • 屏幕型号:SE2417FS051
    在这里插入图片描述
    在这里插入图片描述
    两块屏幕用的都是24pin FPC 0.5mm的接口。通过搜索找到了屏幕的官网
    https://www.pervasivedisplays.com/products/
    在官网没有找相同的型号,但有类似的型号,看封装是一样的。引脚定义应该也一样。

方案

原本打算无损改造,直接利用自带的板子进行开发,但无奈这两个单片机都没有蓝牙或者wifi。无法实现通过手机推送图片到屏幕上显示。所以干脆进一步改造,只要屏幕。采用ESP32作为主控。ESP32有蓝牙和wifi,未来的拓展性更强。

要用esp32来驱动屏幕,就需要用到屏幕接口板,网上找了一下,只有微雪的板子,且价格较贵。咸鱼上有一个卖的,也要30多一片,比价签本身都贵多了。既然如此,干脆自己做一个屏幕驱动板。
验证方案就是。

ESP32模块+屏幕驱动板+屏幕。

验证通过后,再做一块板子,把esp32和屏幕驱动板集成在一块板子上。

打板

这个板子比较简单,对比了微雪的原理图以及上述官网上找到推荐电路图基本移植。这次直接用立创的在线eda画板子。工程已经开源了,地址如下:
https://oshwhub.com/jackdesign/e-eink-driver

在这里插入图片描述
在这里插入图片描述
经过几天的等待,板子到了一共5片。
在这里插入图片描述
焊接之后如下:
在这里插入图片描述
上面的料基本都是从价签本身的板子上面拆下来的。最难焊接的FPC座子,手工焊接很容易焊短路。要特别注意,焊完之后要测下fpc引脚是否短路。

代码

最终连线效果如下:
在这里插入图片描述
引脚接口:

#define PIN_NUM_MOSI 23   //tft sda
#define PIN_NUM_CLK  18   //tft clk
#define PIN_NUM_CS   5   //tft cs

#define PIN_NUM_DC   22  //tft dc
#define PIN_NUM_RST  19  //tft rst  
#define PIN_NUM_BUSY 21   //ftf busy

用到的开发环境是ESP32IDF。其配置方法见https://blog.csdn.net/sinat_36568888/article/details/121424739。

这里没有用到arduino环境是因为一直做的是嵌入式开发。arduino这种对于初学者非常友好,几行代码就可以运行了。作为开发者,就不太适合进行自定义开发了。目前微雪以及网上找到的历程基本都是基于arduino的开发。所以整个过程只能自己重头来了。
注意这个屏幕直接用微雪的2.66寸屏幕例程是不能运行,这两块屏幕的寄存器与例程中的定义不一样。

首先搞定两大块。蓝牙和spi屏幕驱动。
蓝牙直接使用例程bt_spp_acceptor进行开发。spi屏幕驱动之前搞过,就直接现成拿来用了。这里就重点说明下屏幕的寄存器操作流程。

第一步:硬件初始化。

void EPD_2IN66B_Init(uint8_t type)
{
    EPD_2IN66B_Reset();
    EPD_2IN66B_ReadBusy();
    soft_reset();   //

    EPD_2IN66B_SendCommand(0xe5);//input_temp 25C
    EPD_2IN66B_SendData(0x19);
    EPD_2IN66B_SendCommand(0xe0);//active temperature
    EPD_2IN66B_SendData(0x02);
    EPD_2IN66B_SendCommand(0x00);//psr
    if(type == 35) //0x23   2.66 b  epaper
    {
        EPD_2IN66B_SendData(0xcf);
    }
    else if(type == 13) //0x0d   4.2 b  epaper
    {
        EPD_2IN66B_SendData(0xcf);
    }
}

void soft_reset(void)
{
    EPD_2IN66B_SendCommand(0x00);
    EPD_2IN66B_SendData(0x0E);
    EPD_2IN66B_ReadBusy();

}

软件reset的寄存器是0x00,写入的数值是0x0e。这是与微雪例程不一样的。

第二步,将突图片数据写入屏幕ram

void EPD_2IN66B_Display(UBYTE *ImageBlack, UBYTE*ImageRed)
{
    UWORD Width, Height,psx;
    Width = (EPD_2IN66B_WIDTH % 8 == 0)? (EPD_2IN66B_WIDTH / 8 ): (EPD_2IN66B_WIDTH / 8 + 1);
    Height = EPD_2IN66B_HEIGHT;
    
    psx = Width*Height;

    EPD_2IN66B_SendCommand(0x10);
        for (UWORD i = 0; i < psx; i++) {
            EPD_2IN66B_SendData(ImageBlack[i]);
        }
	
    EPD_2IN66B_SendCommand(0x13);
        for (UWORD i = 0; i < psx; i++) {
            EPD_2IN66B_SendData(~ImageRed[i]);
        }
}

先想0x10寄存器写入黑白图像。然后再向0x13寄存器写入红黑图像。

第三步,屏幕整体刷新

    power_on();
    display_refresh();
    power_off();
    void power_on(void)
{
    EPD_2IN66B_SendCommand(0x04);//power on
    EPD_2IN66B_SendData(0x00);
    EPD_2IN66B_ReadBusy();

}
void display_refresh(void)
{
    EPD_2IN66B_SendCommand(0x12);//power on
    EPD_2IN66B_SendData(0x0E);
    EPD_2IN66B_ReadBusy();
}
void power_off(void)
{
    EPD_2IN66B_SendCommand(0x02);//power on
    EPD_2IN66B_SendData(0x00);
    EPD_2IN66B_ReadBusy();

}

注意由于墨水屏的特性,在刷新完成后,最好将墨水屏幕关掉。以延长其寿命。最好是直接外部断掉供电,由于当前设计的驱动板电源不受控,所以没哟硬件断电的代码。

简单来说,要在屏幕上显示需要上述三步操作。

下面来说下busy检测。由于墨水屏刷新很慢,所以每步操作后要等到墨水屏是非busy状态,才能进行下一步操作。

static void EPD_2IN66B_ReadBusy(void)
{
    Debug("e-Paper busy\r\n");
    // vTaskDelay(50);
    while(gpio_get_level(PIN_NUM_BUSY) == 0) {      //LOW: idle, HIGH: busy
        vTaskDelay(10);
        // DEV_Delay_ms(10);
    }
    // vTaskDelay(50);
    // DEV_Delay_ms(50);
    Debug("e-Paper busy release\r\n");
}

判断忙的函数一定要注意,大部分的屏幕是高电平是忙。而很不幸上述两块屏幕都是第电平是忙。这里一开始没注意,一直卡在这个判断忙的函数了。排查了好久才发现是这里配置错误了。

使用说明

安装APP(见文末的代码及app下载路径)。这里直接用到了微雪官方的app,没有进行任何修改。
在这里插入图片描述

打开app,选择esp32的蓝牙,第一次连接需要配对,按照操作配对就行了。屏幕的型号后缀b代表的屏幕是黑白红三色。最后点击上传图像,等到上传100%后。屏幕将会刷新。
在这里插入图片描述

文中用到的代码以及app如下:
https://download.csdn.net/download/sinat_36568888/87855755?spm=1001.2014.3001.5503

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DMES-2023第十三届数字营销与电商峰会大会 火热报名中

2023第十三届数字营销与电商峰会将于7月6-7日在上海召开&#xff01; 本次峰会线上线下同步举行&#xff0c;将通过七大热点主题帮助品牌主突破模式能力&#xff0c;回归初心、精耕细作&#xff0c;实现可持续增长&#xff1b;提升产品能力&#xff0c;实现可持续长期增长&…

智能名片如何缓解社交商务时的尴尬场景?

2023年微信月活用户已超过13.1亿&#xff0c;而小程序也成为了一个神奇的窗口。透过这个窗口&#xff0c;越来越多的人发现了微信生态内的巨大商机&#xff0c;通过小程序也涌现出许多新颖的玩法。 智能名片小程序&#xff0c;基于微信与 AI 技术开发&#xff0c;将企业名片系…

强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应…

MKS SERVO4257D 闭环步进电机_系列6 串口(RS485)通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

CAR-T药物|疗法适应症|市场销售-上市药品前景分析

对患有癌症的人来说&#xff0c;能够幸运地度过5年大关是一种成功&#xff0c;而能够成功地度过10年大关则是一种奇迹。Emily作为全球第一个接受CAR-T治疗成功的白血病儿童患者&#xff0c;至今已成功摆脱癌症11年之久。 ①CAR-T细胞治疗&#xff08;Emily Whitehead治疗案例时…

Benewake(北醒) 中距 TF40 40m介绍以及资料整理

目录 1 前言2 产品介绍3 产品快速测试3.1 产品规格书及使用说明书3.2 通用上位机测试说明3.3 通用指令串口助手使用说明3.4 产品快速测试说明 4 基于开源硬件的运用整理4.1 在开源Arduino上的运用 1 前言 本文包含【Benewake(北醒) 】中距 TF40 40m介绍以及资料整理 详细请参考…

Arduino软件+ ESP8266 MCU开发项目之一键式配网操作(有掉电保护),可继续开发成为--WIFI放大器项目。

下载本次ESP8266 MCU开发项目之一键式配网 代码文件 (11条消息) 配网ESP8266MUC.rar资源-CSDN文库 流程图讲解 视频展示效果 配网ESP8266 项目可待 改进/升级 的地方 1&#xff1a;配网流程UI界面单调&#xff0c;可搭配复杂UI配网界面 2&#xff1a;配网流程可看作是WIFI放…

NSS周常刷密码(2)

[GWCTF 2019]babyRSA 解答过程在脚本内 from Crypto.Util.number import * import gmpy2 import sympy import z3e 0x10001 N63658514959457474690903016018269086622290925646484729178300065183722792133723789965128794359777327094438403485892529574488072710160684141…

移动云镜像配置BC-Linux --配置centos 6-7-8版本参考

移动云BC linux 也是一个非常不错的镜像站. 可以加速国内下载. 非常好用, 速度比阿里 等那些流行的镜像站快一些. 下面介绍详解操作配置, 供参考 移动云开源镜像站-Linux系统订阅服务 移动云开源镜像站&#xff0c;包含BC-Linux各版本的软件仓库&#xff0c;对外提供软件升级…

Apache Kudu入门学习

目录 一、概念 二、背景 三、特点 四、架构 五、应用场景 六、kudu的模式设计 1、列设计 2、主键设计 3、分区设计 1.范围分区Range Partitioning 2.哈希分区Hash Partitioning 3.多级分区Multilevel Partitioning 一、概念 官方概念&#xff1a; Apache Kudu i…

​细说websocket - php篇 ​

下面我画了一个图演示 client 和 server 之间建立 websocket 连接时握手部分&#xff0c;这个部分在 node 中可以十分轻松的完成&#xff0c;因为 node 提供的 net 模块已经对 socket 套接字做了封装处理&#xff0c;开发者使用的时候只需要考虑数据的交互而不用处理连接的建立…

代码随想录算法训练营day59 | 503.下一个更大元素II,42. 接雨水

代码随想录算法训练营day59 | 503.下一个更大元素II&#xff0c;42. 接雨水 503.下一个更大元素II解法一&#xff1a;单调栈&#xff08;两次遍历解决环状问题&#xff09; 42. 接雨水解法一&#xff1a;单调栈&#xff08;横向累计&#xff09;解法二&#xff1a;暴力解法解法…

听说今年 “金9银10” 变成 金七银八 了...

眼下虽然才6月份&#xff0c;但真正的金9银10已经悄然开始。从认识的HR那得知&#xff0c;有些公司甚至在6月就开始布局了。。而年前偃旗息鼓的&#xff0c;年后也势必加速进入这波抢人大战&#xff01; 因此&#xff0c;真的要等到9、10月份再做准备的话&#xff0c;就晚了。…

6-TET, SE,6-TET, SE 6-(4,6-二氯三嗪基)氨基荧光素,一种流行的氨基反应荧光探针

文章关键词&#xff1a;荧光反应探针 中文名称&#xff1a;6-TET, SE 6-(4,6-二氯三嗪基)氨基荧光素 英文名称&#xff1a;6-TET, SE 规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mg CAS&#xff1a;N/A 分子式&#xff1a;C25H11Cl4NO9 分子量&#xff1a;611.17 …

win命令窗口的常用命令

文章目录 一、端口号1、查看所有端口netstat -ano2、查看指定端口情况3、终止改端口4、 二、硬盘操作2.0、进入磁盘管理2.1、 查看磁盘2.2、 选择磁盘2.3、 查看分区2.4、 选择分区2.5、 进入分区删除分区 参考文章 一、端口号 1、查看所有端口netstat -ano netstat -ano 2、查…

【ZLM】ZLM源码阅读一

目录 初始化 RTP RTSP RTMP TCPServer的初始化 参考文档 初始化 RTP RTSP RTMP TCPServer的初始化 参考文档 本文参考&#xff1a; (17条消息) 《ZLToolKit源码学习笔记》&#xff08;20&#xff09;网络模块之TcpServer_秦时小的博客-CSDN博客 RTP https://blog.csdn.…

在嵌入式linux板子上搭建NFS服务器

使用portmapnfs-utils的工具在hi3536的linux系统上搭建nfs服务器&#xff0c;使用VM虚拟机中的ubuntu作为客户端挂载&#xff0c;进行文件的读写。 编译能够支持nfs server的内核 1.首先对linux内核进行修改&#xff0c;让linux内核支持nfs服务器的功能&#xff0c;修改方式是…

通过yum:mysql5.6-msyql5.7-mysql8.0升级之路

一 前言 mysql的yum源 https://dev.mysql.com/downloads/repo/yum/ https://dev.mysql.com/get/mysq57-community-release-el7-7.noarch.rpm服务器信息 2c2g40GB [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# una…

如何进行测试优先级划分

一般测试的优先级是从这三种情况进行划分&#xff1a;新模块测试、回归测试和特殊功能测试。 1、新单元模块的测试优先级 新模块单元&#xff0c;内部业务逻辑测试&#xff0c;优先级第一。新模块单元与其他模块的集成测试优先级第二。 对于新模块的测试&#xff0c;应以完成单…

消息队列的使用

消息队列 概念&#xff1a; 消息队列是System V IPC对象的一种 消息队列的使用&#xff1a; 发送端&#xff1a; 1 申请Key 2打开/创建消息队列 msgget 3向消息队列发送消息 msgsnd 接收端&#xff1a; 1打开/创建消息队列 msgget 2从消息队列接收消息 msgrcv …