风筝
发表于: 2021-10-14 14:04:13 | 显示全部楼层

电子墨水屏,通常也称为电子纸(E-Paper),是一种模仿纸上墨水外观的技术。电子纸显示屏与LCD的不同之处在于它们反射光而不是发光,类似于纸张。在本篇文章中,我们介绍电子纸显示屏的简要介绍和工作原理,并且将小型电子纸显示屏与Arduino UNO连接起来。本文中,我们将在电子纸显示器中打印字符和图像,文章结尾,还将介绍功耗以及讨论电子纸显示屏的优缺点。


1.54寸电子墨水屏简介

1.54-inch-E-Paper-Display.jpg


1.54寸电子墨水纸显示模块采用SPI接口,分辨率为200x200像素,并具有嵌入式控制器模块。它通过SPI接口进行通信并允许部分刷新。这些显示器具有超低功耗的巨大优势,因为它们没有背光面板,也不需要连续电源来在屏幕上显示(具有周期性间隔的静态数据)数据。它还提供宽广的视角和良好的阳光下观看效果,使其成为货架标签、工业仪器和其他类似应用的绝佳选择。


电子纸显示屏的工作原理

电子纸显示是基于微封装电泳显示(MED)技术,是著名的图像显示技术之一。在这项技术中,第一步是制造微球,其中带电的彩色颜料悬浮在透明油中,并随着电子电荷而移动。在电子纸显示器中,没有背景光,因为电子纸屏幕通过反射环境光来显示图案。电子纸屏幕提供 180 度的宽视角,在环境光下非常清晰,因此由于视角范围广,电子纸显示器被广泛用于电子阅读的数字平板电脑中。


电子纸显示屏与Arduino UNO开发板的连接原理图

现在,我们将使用Arduino UNO连接1.54寸电子纸显示屏。电子纸显示器提供200x200像素的分辨率,并使用SPI接口。电子纸显示器支持3.3V,因此Vcc必须连接到Arduino Uno的3.3V输出。显示器的其他引脚可承受5V电压。第二个引脚是 GND,它连接到Arduino UNO的 GND 引脚。第三个引脚名为DIN,它连接到数字引脚11。第四个引脚是 CLK,它连接到数字引脚 13。第五个引脚 (CS) 连接到数字引脚 10,第 6 个引脚 (DC) 连接到数字引脚 9 ,第 7 个引脚 (RST) 连接到数字引脚 8 (BUSY),最后一个引脚连接到数字引脚 7。


下图中展示了Arduino UNO和1.54寸电子纸显示屏的硬件连接图。

Interfacing-E-Paper-Display-with-Arduino-UNO.jpg

在下图中,您可以看到电子纸显示器和 Arduino UNO接口电路的实际图像。

Arduino-with-E-Paper-Display.jpg



代码说明

现在,我们将在电子纸显示屏上打印欢迎信息。因此,首先打开Arduino IDE软件并开始编写代码。我们将解释一些重要的代码行,因此首先,我们将使用以下库。您可以使用此链接下载这些库和代码。这里我们使用 spi.h 库进行 SPI 通信,使用 imagedata.h 库在电子纸显示器上打印图像。

  1. #include <SPI.h>
  2. #include "epd1in54_V2.h"
  3. #include "imagedata.h"
  4. #include "epdpaint.h"
  5. #include <stdio.h>
复制代码

这里使用 Serial.println 函数在第一行打印语句“welcome to”。电子墨水屏只有两种颜色,第一种是黑色,第二种是白色。所以我们使用 Paint.DrawString 为文本赋予颜色和大小。

  1.   Serial.println("WELCOME TO");
  2.   paint.Clear(COLORED);
  3.   paint.DrawStringAt(30, 4, "WELCOME TO", &Font16, UNCOLORED);
  4.   epd.SetFrameMemory(paint.GetImage(), 0, 10, paint.GetWidth(), paint.GetHeight());
  5.   paint.Clear(UNCOLORED);
  6.   paint.DrawStringAt(30, 4, "CIRCUIT DIGEST", &Font16, COLORED);
  7.   epd.SetFrameMemory(paint.GetImage(), 0, 30, paint.GetWidth(), paint.GetHeight());
  8.   paint.SetWidth(64);
  9.   paint.SetHeight(64);
  10.   epd.DisplayFrame();
  11.   delay(2000);
复制代码

现在,将显示电路文摘的标志。所以首先我们必须为图像生成十六进制。可以使用 Image2cpp 之类的转换器生成图像的 HEX 代码。在这里,我们给出了CircuitDigest图标的十六进制代码。我们需要在 imagedata.cpp 库中编写此代码。

  1. const unsigned char IMAGE_DATA[] PROGMEM = {
  2. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5. …………………………………..
  6. …………………………………..
  7. };
复制代码

在下图中,您可以在电子墨水屏看到图标。在这里,我们使用很少的代码将图像打印在电子墨水屏上,但它消耗了 Arduino - UNO 的大量内存,因此我们需要使用另一块具有更多内存的开发板,如ESP8266、ESP32、STM32和树莓派。刷新整个显示屏大约需要2秒。

E-Paper-Display-with-Arduino-UNO.jpg



电子墨水屏的功耗

我们将使用USB电流计测量电子墨水屏的功耗。当电子墨水屏刷新时,它需要大量电流(大约 7-9mA),当电子墨水屏不刷新内容时,它只消耗0.02mA电流。所以电子墨水屏的功耗非常低。我们可以在电池供电的项目中使用电子墨水屏。在下图中,您可以看到更新期间和更新后两种不同的功耗。

E-Paper-Display-Power-Consumption.jpg



电子墨水屏的优势

电子墨水屏不用发光而是采用反射方式。这些显示屏与传统的LCD或OLED不同,它就像纸上的墨水。这一特性使得电子墨水屏阅读起来非常舒适,并且在阳光直射下仍然具有出色的可读性。电子墨水屏的另一个优点是它们可以在没有电的情况下保存静态文本和图像持续数月。显示屏即使在关闭时也能显示文字和图像!这使得电子墨水屏成为低功耗项目的理想选择。


电子墨水屏的缺点

与其他显示屏相比,电子墨水屏的价格非常高。另一个显着的缺点是电子墨水屏显示需要很多时间来更新,多达2-3秒。所以,它们只对静态文本和图像有用,对动画没有帮助。因此,这些显示仅用于阅读目的。我们不能将电子纸显示器用于动画和视频。


以上这就是如何将Arduino UNO与电子墨水屏连接。希望你喜欢这个项目并学到了一些有用的东西,如果有任何问题,请随时在本帖下面进行回复。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-21 20:53 , Processed in 0.052817 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表