19940浏览
楼主: 驴友花雕

[项目] 【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:09:40

主控芯片使用 泰凌微TLSR8359F512ET32 (带蓝牙的32-bit RISC V MCU,48MHz)

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:12:08

泰凌微TLSR8359相关参数


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:18:23

泰凌微TLSR8359结构框图


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:20:28

泰凌微TLSR8359芯片引脚图


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:30:58

泰凌微TLSR8359集成开发环境和工具
https://www.telink-semi.cn/for-developers/

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:36:03

泰凌微TLSR8359应用方案——电子货架标签
http://wiki.telink-semi.cn/wiki/solution/ESL/=

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:40:14

泰凌微TLSR8359相关资源
http://wiki.telink-semi.cn/wiki/solution/ESL/

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:43:00

泰凌烧录板

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-2 17:46:29

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 05:46:40

本帖最后由 驴友花雕 于 2021-11-17 14:04 编辑

这里要感谢aladdincp提供了四块电子标价签模块,才有了这次的学习与尝试的机会。


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图2

用户手册  
https://www.waveshare.com/w/uplo ... -user-manual-en.pdf


waveshare/e-Paper 相关库
https://github.com/waveshare/e-Paper/tree/master/Arduino


关于制作新字体的说明
https://wavesharejfs.blogspot.co ... -waveshare-spi.html



为电子纸制作BMP文件
https://www.waveshare.com/wiki/E-Paper_Floyd-Steinberg

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 06:52:06

本帖最后由 驴友花雕 于 2021-11-5 07:02 编辑

关于电子纸墨水屏价签模块的破解,最近一段时间查看了国内国外的不少文章,这里比较赞同杭州创酷动力研发工程师Xiaole.Tao的三层破解思路。

第一、主板MCU芯片破解
通过程序烧录接口直接重写主板的MCU程序
M3单色版本芯片(MSP430G)破解例子
这个帖子是同样芯片的


CC2640R2F的芯片编程,使用CCS(TI Code Composer Studio)或者IAR(IAR Embedded Workbench)进行开发,详情参考此网页
芯片使用JLink, ccdebuger或者ft2232h工具下载程序到CC2640R2F。
CCS with Jlink:

  
TLSR8359 是作为nRF24L01的国产替代芯片出现的,性能略高,RISC V架构。
使用Telink自己的IDE(Eclipse based) Telink IDE进行开发。
使用Telink专用的Telink Burning and Debugging Tool (BDT) 下载程序

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 07:01:57

第二、主版SPI破解
从现有主板上接出SPI排针,仅使用主板上的SPI驱动。把主板上的MCU和MCU周边器件吹掉,不然SPI通信的时候原主板MCU有同样的vcc引脚连接,上电后原MCU有可能会输出电平到SPI口影响通信。
主板SPI破解实例,不同厂家的墨水价签,仅参考
2.13寸破解SPI


第三、仅拆下屏幕使用
拆下屏幕当作裸屏使用。自己做驱动板(也可以买)。
可以单驱动引出spi线当作开发板屏幕,也可以直接做把屏幕插在驱动板上画上MCU做成产品。
拆屏幕用的例子


附录Xiaole.Tao原文链接:
《汉朔(Hanshow)三色电纸墨水价签研究》
https://oshwhub.com/article/research-of-hanshow-epaper
Xiaole.Tao的开源项目
https://tairraos.github.io/


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 07:36:44

使用裸屏,需要带FPC卡座的驱动板来连接MCU单片机,为保险起见,我在网上找到了二款驱动板,一款7元,一款45元。

7元这款买了三片,24p和34p,不足的是还要一周后才能发货。



【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 08:07:55

电子纸 墨水屏裸屏 驱动板大概这个样子

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-5 08:10:11

连接图


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-14 14:11:05

终于收到做实验用的四张驱动板实物


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-16 10:31:49

接入8排线插头


【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-16 10:35:33

驱动板接口说明
VCC   :3.3V/5V
GND   :GND
DIN     :SPI通信MOSI引脚
CLK    :SPI通信SCK引脚
CS      :SPI片选引脚(低电平有效)
DC      :数据/命令控制引脚(高电平表示数据,低电平表示命令)
RST    :外部复位引脚(低电平复位)
BUSY :忙状态输出引脚(低电平表示忙)

Arduino uno 实验接线

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-16 11:02:37

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十七:EPD Eink 电子墨水显示器 SUNY 2.9 英寸 EPD 屏幕无线数字电子纸显示器模块  DEPG0290RWS800F6黑白红三色墨水屏(珠海三一科技)
项目之一:黑白色电子钟(测试2.13黑白屏)

   实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:EPD Eink 电子墨水显示器 SUNY 2.9 英寸 EPD 屏幕无线数字电子纸显示器模块  DEPG0290RWS800F6黑白红三色墨水屏(珠海三一科技)
  4.   实验说明:使用傲雪驱动库e-Paper
  5.   项目之一:黑白色电子计时器(测试2.13黑白屏)
  6. */
  7. #include <SPI.h>
  8. #include "epd2in13.h"
  9. #include "epdpaint.h"
  10. #include "imagedata.h"
  11. #define COLORED     0
  12. #define UNCOLORED   1
  13. /**
  14.      由于 Arduino UNO 中的 RAM 不足,不允许使用帧缓冲区。
  15.      在这种情况下,分配了一个较小的图像缓冲区,您必须
  16.      多次更新部分显示。
  17.      1 个字节 = 8 个像素,因此您必须一次设置 8*N 个像素。
  18. */
  19. unsigned char image[1024];
  20. Paint paint(image, 0, 0);
  21. Epd epd;
  22. unsigned long time_start_ms;
  23. unsigned long time_now_s;
  24. void setup() {
  25.   Serial.begin(9600);
  26.   if (epd.Init(lut_full_update) != 0) {
  27.     Serial.print("e-Paper init failed");
  28.     return;
  29.     delay(1000);
  30.   }
  31.   epd.ClearFrameMemory(0xFF);   // 位设置 = 白色,位重置 = 黑色
  32.   paint.SetRotate(ROTATE_0);
  33.   paint.SetWidth(128);    // 宽度应该是 8 的倍数
  34.   paint.SetHeight(24);
  35.   //为简单起见,参数是明确的数字坐标
  36.   paint.Clear(COLORED);
  37.   paint.DrawStringAt(30, 4, "Hello world!", &Font12, UNCOLORED);
  38.   epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
  39.   delay(1000);
  40.   paint.Clear(UNCOLORED);
  41.   paint.DrawStringAt(30, 4, "e-Paper Demo", &Font12, COLORED);
  42.   epd.SetFrameMemory(paint.GetImage(), 0, 30, paint.GetWidth(), paint.GetHeight());
  43.   paint.SetWidth(64);
  44.   paint.SetHeight(64);
  45.   paint.Clear(UNCOLORED);
  46.   paint.DrawRectangle(0, 0, 40, 50, COLORED);
  47.   paint.DrawLine(0, 0, 40, 50, COLORED);
  48.   paint.DrawLine(40, 0, 0, 50, COLORED);
  49.   epd.SetFrameMemory(paint.GetImage(), 16, 60, paint.GetWidth(), paint.GetHeight());
  50.   paint.Clear(UNCOLORED);
  51.   paint.DrawCircle(32, 32, 30, COLORED);
  52.   epd.SetFrameMemory(paint.GetImage(), 72, 60, paint.GetWidth(), paint.GetHeight());
  53.   paint.Clear(UNCOLORED);
  54.   paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
  55.   epd.SetFrameMemory(paint.GetImage(), 16, 130, paint.GetWidth(), paint.GetHeight());
  56.   paint.Clear(UNCOLORED);
  57.   paint.DrawFilledCircle(32, 32, 30, COLORED);
  58.   epd.SetFrameMemory(paint.GetImage(), 72, 130, paint.GetWidth(), paint.GetHeight());
  59.   epd.DisplayFrame();
  60.   delay(2000);
  61.   if (epd.Init(lut_partial_update) != 0) {
  62.     Serial.print("e-Paper init failed");
  63.     return;
  64.     delay(1000);
  65.   }
  66.   /**
  67.          电子纸显示器中嵌入了2个内存区域
  68.          一旦显示刷新,内存区域将自动切换,
  69.          即 SetFrameMemory 的下一个动作将设置其他内存区域
  70.          因此您必须设置帧存储器并刷新显示两次。
  71.   */
  72.   epd.SetFrameMemory(IMAGE_DATA);
  73.   epd.DisplayFrame();
  74.   epd.SetFrameMemory(IMAGE_DATA);
  75.   epd.DisplayFrame();
  76.   time_start_ms = millis();
  77. }
  78. void loop() {
  79.   time_now_s = (millis() - time_start_ms) / 1000;
  80.   char time_string[] = {'0', '0', ':', '0', '0', '\0'};
  81.   time_string[0] = time_now_s / 60 / 10 + '0';
  82.   time_string[1] = time_now_s / 60 % 10 + '0';
  83.   time_string[3] = time_now_s % 60 / 10 + '0';
  84.   time_string[4] = time_now_s % 60 % 10 + '0';
  85.   paint.SetWidth(32);
  86.   paint.SetHeight(96);
  87.   paint.SetRotate(ROTATE_90);
  88.   paint.Clear(UNCOLORED);
  89.   paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
  90.   epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
  91.   epd.DisplayFrame();
  92.   delay(500);
  93. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-16 11:06:30

   实验场景图

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-11-16 11:07:14

【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail