驴友花雕 发表于 2021-11-2 17:09:40

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


驴友花雕 发表于 2021-11-2 17:12:08

泰凌微TLSR8359相关参数



驴友花雕 发表于 2021-11-2 17:18:23

泰凌微TLSR8359结构框图



驴友花雕 发表于 2021-11-2 17:20:28

泰凌微TLSR8359芯片引脚图



驴友花雕 发表于 2021-11-2 17:30:58

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



驴友花雕 发表于 2021-11-2 17:36:03

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



驴友花雕 发表于 2021-11-2 17:40:14

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



驴友花雕 发表于 2021-11-2 17:43:00

泰凌烧录板


驴友花雕 发表于 2021-11-2 17:46:29

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

泰凌微TLSR8359相关技术文档
http://wiki.telink-semi.cn/wiki/chip-series/TLSR835x-Series/

http://wiki.telink-semi.cn/doc/ds/DS_TLSR8359-E_Datasheet%20for%20Telink%20ULP%202.4GHz%20RF%20SoC%20TLSR8359.pdf




驴友花雕 发表于 2021-11-5 05:46:40

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

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







用户手册
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)破解例子http://bbs.eeworld.com.cn/thread-1136730-1-1.html这个帖子是同样芯片的https://www.mydigit.cn/forum.php?mod=viewthread&tid=169620

CC2640R2F的芯片编程,使用CCS(TI Code Composer Studio)或者IAR(IAR Embedded Workbench)进行开发,详情参考此网页http://www.leconiot.com/download/cc2640r2f/get_started/development_environment_set_up/development_environment_set_up.html芯片使用JLink, ccdebuger或者ft2232h工具下载程序到CC2640R2F。CCS with Jlink:https://www.segger.com/products/debug-probes/j-link/technology/ides/ti-code-composer/
TLSR8359 是作为nRF24L01的国产替代芯片出现的,性能略高,RISC V架构。使用Telink自己的IDE(Eclipse based) Telink IDE进行开发。http://wiki.telink-semi.cn/wiki/IDE-and-Tools/IDE-for-TLSR8-Chips/使用Telink专用的Telink Burning and Debugging Tool (BDT) 下载程序http://wiki.telink-semi.cn/wiki/IDE-and-Tools/Burning-and-Debugging-Tools-for-all-Series/

驴友花雕 发表于 2021-11-5 07:01:57

第二、主版SPI破解从现有主板上接出SPI排针,仅使用主板上的SPI驱动。把主板上的MCU和MCU周边器件吹掉,不然SPI通信的时候原主板MCU有同样的vcc引脚连接,上电后原MCU有可能会输出电平到SPI口影响通信。主板SPI破解实例,不同厂家的墨水价签,仅参考https://www.youtube.com/watch?v=RUoMztFxUpE2.13寸破解SPIhttps://www.mydigit.cn/forum.php?mod=viewthread&tid=200156

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

附录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,不足的是还要一周后才能发货。





驴友花雕 发表于 2021-11-5 08:07:55

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





驴友花雕 发表于 2021-11-5 08:10:11

连接图



驴友花雕 发表于 2021-11-14 14:11:05

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



驴友花雕 发表于 2021-11-16 10:31:49

接入8排线插头



驴友花雕 发表于 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 实验接线



驴友花雕 发表于 2021-11-16 11:02:37

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

   实验开源代码

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

#include <SPI.h>
#include "epd2in13.h"
#include "epdpaint.h"
#include "imagedata.h"

#define COLORED   0
#define UNCOLORED   1

/**
   由于 Arduino UNO 中的 RAM 不足,不允许使用帧缓冲区。
   在这种情况下,分配了一个较小的图像缓冲区,您必须
   多次更新部分显示。
   1 个字节 = 8 个像素,因此您必须一次设置 8*N 个像素。
*/
unsigned char image;
Paint paint(image, 0, 0);
Epd epd;
unsigned long time_start_ms;
unsigned long time_now_s;

void setup() {
Serial.begin(9600);
if (epd.Init(lut_full_update) != 0) {
    Serial.print("e-Paper init failed");
    return;
    delay(1000);
}

epd.ClearFrameMemory(0xFF);   // 位设置 = 白色,位重置 = 黑色

paint.SetRotate(ROTATE_0);
paint.SetWidth(128);    // 宽度应该是 8 的倍数
paint.SetHeight(24);

//为简单起见,参数是明确的数字坐标
paint.Clear(COLORED);
paint.DrawStringAt(30, 4, "Hello world!", &Font12, UNCOLORED);
epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
delay(1000);
paint.Clear(UNCOLORED);
paint.DrawStringAt(30, 4, "e-Paper Demo", &Font12, COLORED);
epd.SetFrameMemory(paint.GetImage(), 0, 30, paint.GetWidth(), paint.GetHeight());

paint.SetWidth(64);
paint.SetHeight(64);

paint.Clear(UNCOLORED);
paint.DrawRectangle(0, 0, 40, 50, COLORED);
paint.DrawLine(0, 0, 40, 50, COLORED);
paint.DrawLine(40, 0, 0, 50, COLORED);
epd.SetFrameMemory(paint.GetImage(), 16, 60, paint.GetWidth(), paint.GetHeight());

paint.Clear(UNCOLORED);
paint.DrawCircle(32, 32, 30, COLORED);
epd.SetFrameMemory(paint.GetImage(), 72, 60, paint.GetWidth(), paint.GetHeight());

paint.Clear(UNCOLORED);
paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
epd.SetFrameMemory(paint.GetImage(), 16, 130, paint.GetWidth(), paint.GetHeight());

paint.Clear(UNCOLORED);
paint.DrawFilledCircle(32, 32, 30, COLORED);
epd.SetFrameMemory(paint.GetImage(), 72, 130, paint.GetWidth(), paint.GetHeight());
epd.DisplayFrame();

delay(2000);

if (epd.Init(lut_partial_update) != 0) {
    Serial.print("e-Paper init failed");
    return;
    delay(1000);
}

/**
         电子纸显示器中嵌入了2个内存区域
         一旦显示刷新,内存区域将自动切换,
         即 SetFrameMemory 的下一个动作将设置其他内存区域
         因此您必须设置帧存储器并刷新显示两次。
*/
epd.SetFrameMemory(IMAGE_DATA);
epd.DisplayFrame();
epd.SetFrameMemory(IMAGE_DATA);
epd.DisplayFrame();

time_start_ms = millis();
}

void loop() {
time_now_s = (millis() - time_start_ms) / 1000;
char time_string[] = {'0', '0', ':', '0', '0', '\0'};
time_string = time_now_s / 60 / 10 + '0';
time_string = time_now_s / 60 % 10 + '0';
time_string = time_now_s % 60 / 10 + '0';
time_string = time_now_s % 60 % 10 + '0';

paint.SetWidth(32);
paint.SetHeight(96);
paint.SetRotate(ROTATE_90);

paint.Clear(UNCOLORED);
paint.DrawStringAt(0, 4, time_string, &Font24, COLORED);
epd.SetFrameMemory(paint.GetImage(), 80, 72, paint.GetWidth(), paint.GetHeight());
epd.DisplayFrame();

delay(500);
}

驴友花雕 发表于 2021-11-16 11:06:30

   实验场景图


驴友花雕 发表于 2021-11-16 11:07:14


页: 1 [2] 3 4 5
查看完整版本: 【Arduino】168种传感器系列实验(217)---2.9寸红黑三色墨水屏