你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

水墨电子日历

[复制链接]
丿灬幸灬 发布时间:2018-11-8 20:04
7848001462176188557.jpg 2 J$ `- `1 ?0 _2 u  ?! B
一个基于水墨显示器和stm32单片机的日历4 y2 r: q% {% R* q3 u0 g( F) u

9 x" ~. s9 R1 Q5 S描述! e1 D% {2 Z$ R: k* X  i
可以显示日期,时间和背景图像。图像存储在SD卡中。超低功耗,始终处于显示状态,非常适合基本信息显示目的。
8 h  O* k8 D1 [* c下一步将尝试使用ESP-32来取代STM32F4,使他能从互联网上获取信息
( ~1 W; s- C! i( z
5 k. ]9 R0 h9 ]; n细节
+ ^. ]6 P: D  F; @. r; g- c硬件规格:
& Y, Y! \0 d# ?& E
! B. j  B8 I1 nRev1:, E8 |( v7 q4 V: m  Z; l/ z$ a
处理器——STM32F407ZET6# l' f8 N7 v- E/ J: K

( o& r! n9 Y7 i3 {$ B' o# ~( _$ `/ D内存- 512K * 16bit SRAM
5 d$ R$ ]# h6 s% A+ V% T# {* F) m; T" o% a  N: H7 b7 _* b
Rev1.1(降低成本):9 v$ _: p, @+ V/ U3 G) R1 q
处理器——STM32F407VGT6
- W6 C$ @% k" P, e' C! |- ?( J* U: H: ~0 V, {4 `+ c) X; p: p, a
内存-所有移动到内部SRAM
- [0 K1 z2 s2 i, p; a+ e! N+ e2 {' t1 V+ Q% q/ S
屏幕- ED060SC4 800*600 EPD(16级灰度模式)
) L* s: P% }. {; t4 S  ?) J$ Z  r* o6 z4 n9 _2 ^: g: k% @
特点:
" C7 b7 H' p  _. m' m1 d  b* {1 k' w) [  @, ~
显示日期和时间。) q5 s* @2 r9 I1 M- D$ b

7 H9 C1 M  U# u/ B8 d6 L* K以SD卡为背景显示BMP。
) ]" i% w+ ?; \2 y; X" _' j8 x- c9 O, U

( m4 w, a) V* u$ p驱动细节:
# R$ D% c% J6 k/ [多达16种深浅不一的灰色。完全刷新和部分刷新。800 * 600分辨率
5 f& J! E; R% M9 N1 J
' P0 y1 O5 H- x2 T快速响应1位模式(可达10fps+,取决于所使用的屏幕)1 V5 j5 F/ J) Z
* {* K8 M' Z/ m  U. e3 ^/ C& L2 ]# o
有关详细信息,请参阅源代码。软件驱动,不使用特殊控制器。
$ Z4 r, _5 T& P$ l$ h4 N5 d" e6 x* }: \7 I/ @) w7 d
在工程日志中写一篇关于EPD驱动程序的文章,看看吧!* F1 |1 S4 F  }6 l& X" Z

5 u2 S- E; Q1 j! h) v组件7 F! S8 w5 P$ t# m* Q7 f
1×STM32F407VG
! _( E% e+ D0 V' ^  B5 U微处理器,微控制器,DSPs / ARM,基于risc的微控制器
8 o4 Q9 F0 F6 J6 _. J# q/ w1×DS32318 S7 h0 T9 t* c- }; P" R3 a. @0 C$ x
时钟和计时器ICs /实时时钟8 t% z0 Y' X5 m# J& H! z
1×LT1615$ C0 V8 C" W5 q/ D. F! Y; _: f
电源管理ic /开关调节器和控制器8 A  s( }8 x) W0 P4 c; L
1×ED060SC4
1 U/ e% F& f: e. kPVI 800*600电子墨水屏
* Y% D, D5 L: k' N5 u4 {% X7 Q3 d' y3 u. J9 t, V" ]; I( k& @

% \7 e* i( p& Q% W: {你能从电子墨水显示器中得到32级灰度吗?
5 j# d- }5 d4 h. V# i/ V' F6 d# p8 n1 ~. M
1.jpeg
. V; F/ [' {8 f4 i" s& \! B8 W$ k% p3 u
$ T2 [: j: j8 F2 s
一项研究表明,目前所有的商业电子墨水设备的最大灰度级别为16。这是硬件限制吗?或者我们能得到更多的灰度,就像我们在CGA, Commodore 64, GameBoy Color和许多其他有颜色限制的老式硬件上所做的那样?' e+ o0 R) z3 O7 P7 a$ k; q

  F; e! Z6 C; q) ]& ~& P1 E答案是肯定的。看我的结果0 k2 t# T9 z% k8 ~) q( C
( _: a. n( o( Y; u! `; H. H0 D" L

  x. _6 E8 F! `6 Z1 W正如屏幕上所说,2018年新年快乐!(右上角为4bpp模式参考)4 ], u9 R8 A7 u4 E9 H2 d
& C0 ]7 J" I( Z9 ?/ B! h8 T7 a+ D
这是怎么做到的呢?基本上,要在Eink显示器上显示图像,需要在屏幕上应用多个帧,叠加的结果就是图像。为了决定用什么来显示特定的颜色,使用了一个查找表,它被称为“波形表”。这通常是由驱动解决方案提供商提供的,我们没有直接访问它,因为它是保密的。现在所有的商业显示器只能做4bpp,因为根本没有5bpp LUT可用。
$ I. `4 \- T* I( `0 v
0 }: r" c: @3 V( |% R如果我们能创建一个它就能做5bpp,对吧?是的,但如果可以的话。波形表实际上是一个4维LUT,输出取决于之前的灰度,目标灰度,帧数和温度。基本上我们很难创造出这样一个LUT。也许这也是为什么没有商业5bpp LUT的原因?
9 A* E0 {' F( g& k
9 k$ w. g6 L9 J0 z& V+ {" J9 g" |因此,为了存档,我需要首先“修剪”LUT。4D太多了。首先,我决定忽略温度。然后我们总是可以从白色开始。现在它已经是2D LUT了。然后我决定让目标灰度等于帧数:5bpp模式使用固定的32帧序列,一个帧对应一个级别的灰度。这需要对LUT进行很大的更改:它不再查找要输出的数据,因为我们已经使其匹配,输出必须等于灰度输入。相反,它会查找行时间。通过调整行时间,可以很好地控制灰度。就是这个。& S3 m/ C3 e/ d" q
* _( |! |& z- t8 Z
电子墨水上的烂苹果?( }  t7 ]( }- K% ^
6 f* W* a" q: x2 T" a" G7 R
好吧,只是为了好玩,这段视频肯定被加速了。实际上,电子墨水屏幕以2.4fps左右的帧速率刷新,所以10倍的速度就会产生这种有趣的效果。
- L- n# ?& w8 L8 |
  `# }& Y$ Y0 z; W) u+ u; J  I) C
' J' _( z6 ^" R) s( GED060SC4与ED060SC4 H2的比较
" U5 h" `; ^# B+ O 2.jpg & K; I; ^- c8 N( {/ v& k, G
上面的是ED060SC4 H2,下面的是ED060SC4。看到差别。H2屏幕具有更高的对比度和更快的响应。4 r  Y% n) i' K" ]( K
但是我需要为新屏幕调整Gamma LUT。! e2 X& B$ t3 |# u/ \

8 V4 B) P* x9 l& [+ Q 2305981493178640527.jpg
; `" `0 v+ v! q" f( [! T5 B 3683871493178573216.jpg 9 i  X0 K/ _2 O3 A- O
本项目所使用的EPD驱动方法描述
! w4 \4 l* Q$ x  I6 R( Z9 v, z) T9 c2 A, m
环保署的屏幕被称为“电子纸”,因为一旦完成“印刷”,即使电源断开,它仍能保留内容。所以你可以想象,当我们实际驱动EPD屏幕时,我们有三个不同的操作:写(0b01编码),擦除(0b10编码),让它保持原样(0b00编码)。第一个操作将把一个白色像素变成黑色,第二个操作将把一个黑色像素变成白色,第三个操作将什么都不做。稍后将详细介绍这些操作。但EPD显示屏有一个很大的缺点,就是EPD像素需要一些时间才能从黑变白,或者从白变黑。这段时间通常超过300毫秒,所以我们说环保署的反应时间很长。
: g. a( i/ H% E  v. R: b0 N3 @7 C& h4 R2 ]  Z- y  ]$ b0 p
然而,EPD通常以更高的帧速率刷新,比如60Hz。所以你可以看到在60Hz的设置下,像素不能在一帧内完全旋转。有两种方法,一种是降低刷新率,也就是保持一个帧长,另一种是增加更多帧。例如,如果您的屏幕的响应时间是1/3s(333ms),您可以将帧速率降低到3Hz,或者发送20个低于60Hz的相同帧。我的司机使用了后来的方法。原因是,当使用第一个方法时,实际上可以看到屏幕从上到下刷新,因为数据是以这种速度发送的。第二种方法(更多的帧)不会有这种效果。你会看到整个屏幕都在刷新。(虽然实际上还是从上到下,但你看不见)所以这里的全部想法是:假设我们从一个分辨率为2px * 1px的白色屏幕开始,我们想让它显示一个轻像素,然后是一个暗像素:
  • 。所以对于第一个像素,它已经是白色的(我们从白色开始),所以发送第三个操作(保持原样)到屏幕。对于第二个像素,它需要是黑色的,所以我们将第一个操作(写入)发送到屏幕。这是一个帧,我们运行在60Hz以下,所以发送20次。我们应该得到我们所希望的。
    ) h: O( ^) H. V+ W8 `7 w+ i" f: P8 Q) S/ p& S% M& q
    但是,如果你在一个像素完全转向之前就停止驱动它呢?比如,在上一个例子中,我们只发送了10个帧。答案是它会保持灰色。这就是EPD面板上灰度显示的基本原理。通过控制驾驶时间,我们可以创建4个甚至16个灰色阴影。我的驱动程序使用了4bpp(16shades)模式来获得更好的图像质量,但是如果你能理解这个原理,你可以很容易地将它修改为4个阴影或者32个阴影。好吧,事情是这样的。在4bpp模式中,有16种灰色阴影。让我们继续我们关于响应时间的假设,1/3,从一个白色的屏幕开始。如果我们把1/3s平均分成15片,也就是1/45片。然后我们把帧速率变成45Hz,一个帧是1/45s。对于黑色的像素,很明显我们想要向屏幕发送“写”命令15帧,它会变成黑色。对于白色的像素,只需在所有16帧中发送“leave as is”,它就会留下白色。这和之前是一样的。但如果我们想让它是第一个灰色阴影(即亮度的1/15,请注意15/15是黑色的,0/15是白色的),只需在第一个框架中发送“write”,在所有其他框架中发送“leave as is”即可。所以,第四个灰度是4帧的“写”加上11帧的“保持原样”。如果我们想要32度的灰色呢?调整帧速率到93Hz,我们几乎准备好了。5 o9 I3 |; L! a- |
    : T& o' w) z* I' l. v
    不幸的是,事情并没有那么简单。首先,我们的STM32软件驱动方法无法实现60Hz的刷新率。实际上它只能达到12Hz。所以4帧足够让像素从黑到白或者从白到黑。如果我坚持使用单色模式或2bpp(4级)灰度模式就可以了。但是如果我想做4bpp模式,我必须使用一些技巧。通常情况下,单片机将数据发送给屏幕的源驱动程序,当发送完成后,它让源驱动程序锁定数据并实际驱动像素。同时,单片机开始发送下一行的数据。当完成时,单片机将数据锁住,并告诉门驱动器切换到下一行。所以线路驱动时间大致就是数据发送过程的时间。现在由于CPU/GPIO慢,数据发送速度太慢,所以给我设定了一个驾驶时间的下限。但是正如我之前所说,更多的灰度需要更高的帧速率,这实际上意味着每帧的驱动时间更短。通常情况下,驱动时间大致是帧速率的倒数。但通过一个技巧,我们可以打破这种关系,使驾驶时间大大低于帧率的倒数。它实际上是一件容易的事。当单片机发送完一行数据后,它会锁定数据,等待t1短时间,然后关闭源驱动。当实际发送数据时,源驱动关闭,实际驱动时间是t1。这种方法会使帧速率更低,显示图像速度变慢,因为MCU发送数据的时间是“浪费”的。但这对我来说是一个很好的解决方案,因为我不经常刷新屏幕。5 N; k. N% l- G& T
    * r' j0 ?6 j; V) h, \
    第二个问题是亮度与时间的关系不是线性的。例如,7/45s的驾驶时间应该是7/15的亮度,但实际上可能是1/2,有一点偏移。偏移通常是可以的,但真正的问题是有些时候有些阴影太近了以至于无法分辨。因此,许多细节都丢失了。信不信由你,使用我之前提到的方法比使用常规方法更容易解决这个问题。我只是添加了一个t1的查找表,所以不同的帧甚至可以有不同的驾驶时间!结果很好。3 ~8 k3 o! W8 J8 A# t( Z5 j

    . T0 B+ {! T8 N+ o9 Q" J. \最后,我想简单介绍一下发送给环保署的实际数据。环保署采用2bpp格式。注意,2bpp并不意味着2bpp灰度。这只意味着在传输中,1个像素使用2位。还记得我一开始说的三个操作吗?我说的是编码0bxx,这是实际发送给环保署的东西。例如,如果我将0b01001000 (0x48)发送到屏幕上,它将“写入”第一个像素,“擦除”第三个像素,对第二个和第四个像素什么也不做。
    4 ^8 q7 y6 f& g3 [& [- _' k$ E 5563741493178631967.jpg
    # w6 w3 |7 |3 @1 k$ w
    9 ~; v2 N  {8 p0 `$ Q4 {具体工程请见GitHub
    - c* e+ Z5 ?! N" s: |/ E; e) s6 r' G/ `1 O8 a5 g* D

    , L; ]  ]6 X4 J! ^+ M6 i
    $ k6 c8 U4 y& O原文请见hackaday
    , C/ r( H& i9 {2 C/ r5 f
    * P4 Q5 y$ W& C7 }
    / }, V* K- C# y" S2 n& j6 R
  • 收藏 4 评论9 发布时间:2018-11-8 20:04

    举报

    9个回答
    yangjiaxu 回答时间:2018-11-8 21:54:45
    好漂亮 支持一波
    湉湉 回答时间:2018-11-8 23:24:26
    月如意 回答时间:2018-11-9 09:04:44
    楼主,请问哪里有套件呢?
    埃斯提爱慕 回答时间:2018-11-9 10:31:03
    提示: 作者被禁止或删除 内容自动屏蔽
    mzy2364 回答时间:2018-11-9 11:21:12
    这个厉害
    西点钟灵毓秀 回答时间:2018-11-9 11:39:55
    电子墨水这玩意哪里有卖
    火龍的滑稽123 回答时间:2018-12-2 11:33:31
    水墨屏贵
    Bowen 回答时间:2018-12-2 17:40:57
    做的不错,nice!
    xujiantj 回答时间:2019-1-9 14:49:29
    厉害,支持一下!!!

    所属标签

    关于
    我们是谁
    投资者关系
    意法半导体可持续发展举措
    创新与技术
    意法半导体官网
    联系我们
    联系ST分支机构
    寻找销售人员和分销渠道
    社区
    媒体中心
    活动与培训
    隐私策略
    隐私策略
    Cookies管理
    行使您的权利
    官方最新发布
    STM32N6 AI生态系统
    STM32MCU,MPU高性能GUI
    ST ACEPACK电源模块
    意法半导体生物传感器
    STM32Cube扩展软件包
    关注我们
    st-img 微信公众号
    st-img 手机版