它标志性的下落方块几乎人人都能一眼认出,无论你是否喜欢电子游戏。但我们不是用方块来消除线条,而是用它们来报时!
这个项目用经典的俄罗斯方块形状在 LED 矩阵显示屏上绘制时钟的数字。
该显示屏尺寸约为 19 厘米 x 9.5 厘米,物理尺寸相当大,而且非常明亮,因此显示效果非常引人注目。
这个项目的另一个亮点在于,与传统的 Arduino 时钟项目不同,它不使用 RTC 模块来计时,而是通过互联网设置时钟时间。这样做的一大优势在于,您只需设置时区,时钟就会自动显示正确的时间,甚至会根据夏令时进行调整。
这是一个令人惊讶的简单项目,总共只需要几个小时,因此,有了本指南,您就没有理由不去做一个了!



## 补给品
P3 64x32 RGB LED 矩阵 - Aliexpress *
ESP32 开发板 - 我个人使用 ESP32 Dev kit mini(Aliexpress * / Amazon*)
5V 电源 - 4 安培或更大即可 - Aliexpress*
20cm 母对母杜邦电缆
母头插孔至螺丝端子适配器 - 取决于电源上的插头类型
3D 打印支架代表 LED 矩阵 - 或者让它保持直立的东西!
* = 附属链接
## 步骤1:视频
我制作了一个关于这个主题的视频,您可以在这里查看!
https://www.youtube.com/watch?v=ey2mjZ-UQNM

## 步骤2:LED矩阵面板
我太喜欢这些显示器了!它们能快速构建一个非常引人注目的 Arudino 项目,真是太棒了。这些显示器的预期用途是串联起来,组成像音乐会等场合那样巨大的屏幕,但它们也可以使用微控制器单独控制。显示器有很多不同的配置,但我在这个项目中使用了 64x32 P3 矩阵。
分辨率为 64 x 32 的显示器意味着它横向有 64 个 LED,纵向有 32 个 LED。本项目的代码适用于 64 x 32 的显示器,但如有需要,也可以调整至其他型号。
“P3”表示显示器的间距为3毫米。间距越大的显示器,实际尺寸也越大。
这些显示器可以用许多不同的微控制器驱动,人们通常使用树莓派 (Raspberry Pi),但在本项目中,我们将使用 ESP32。ESP32 是一款价格低廉、兼容 Arduino 且内置 WiFi 的微控制器。
这些支架是 3D 打印的,你可以在ThinGive上找到。它们是我用 Tinkercad 重新混合的现有设计。




## 步骤3:矩阵扩展板
我做了一个PCB,让这些显示器的使用变得非常容易!这些不是必需的,但它们确实让它们更容易使用。
原版使用 PxMatrix 库,而新版 I2S Matrix 使用 HuB75 DMA 库。这两个库都有对应的代码版本。如需了解更多关于这两个库之间差异的信息,请查看此链接。
如果您有兴趣购买,我可以在我的 tindie 商店里出售。
ESP32 矩阵 (PxMatrix)
ESP32 I2S 矩阵扩展板
如果你住在英国,Colin Hickey 也在他的商店里出售它们
ESP32 矩阵扩展板 (PxMatrix)
ESP32 I2S 矩阵扩展板


## 步骤4:无屏蔽接线
我们要做的第一件事是将电源连接到显示器自带的电线上。为此,我用了几个螺丝端子和一块穿孔板做了一块小电路板,用来连接电源和电线,我对最终的效果很满意!
Adafruit 在他们的学习指南中建议将电线直接连接到筒形插孔连接器(如上图所示),但我无法将其(物理上)牢固连接,但我又有什么资格质疑 Adafruit 的建议呢!如果您确实要这样做,请务必使用绝缘胶带或热缩材料来增强其强度。
接下来我们需要将 ESP32 连接到矩阵面板。箭头指向外侧的接口是“P-In”,ESP32 将连接到该接口。但在连接之前,我们需要将一些 P-in 接口连接到 P-out 接口(箭头指向的那个)。您需要连接以下设备:
P 输入 -> P 输出
R2 -> R1
G1 -> R2
G2 -> G1
B1 -> G2
B2 -> B1
对于 ESP32,您需要连接以下内容:
P-in -> ESP32
A -> 19
B -> 23
C -> 18
D -> 5
E -> 15
STB/LAT -> 22
P_OE -> 2
CLK -> 14
R1 -> 13
如果您使用的是 Adafruit Feather Huzzah 32,请使用引脚 21 作为 P_OE,因为它没有 2 引脚。






## 步骤5:ESP32软件设置
如果您尚未设置 ESP32 编程,则需要执行以下操作:
首先,您需要从 Arduino 网站下载 Arduino IDE 并安装它 - https://www.arduino.cc/en/Main/Software
接下来,您需要设置 Arduino IDE 以便与 ESP32 配合使用。打开 Arduino IDE,前往“文件”->“首选项”,将以下 URL 粘贴到“附加开发板管理器 URL”中,然后单击“确定”。
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
返回 Arduino IDE 主屏幕,工具->主板->主板管理器,当此屏幕打开时搜索“ESP32”并安装它,这可能需要几分钟,具体取决于您的互联网连接。
设置新电路板后,建议先获取一个简单的闪烁草图,然后再尝试任何更复杂的操作,这样可以省去大量的麻烦!

## 步骤6:代码设置
该项目的代码可以在 Github 上找到。安装方法如下:
转到该项目的 github 页面。
单击页面右侧的克隆或下载按钮,然后单击下载 Zip。
解压 zip 文件。
在解压的文件夹中打开“ESP32 或 TinyPICO”文件夹,然后打开 EzTimeTetrisClockESP32 文件夹并打开 EzTimeTetrisClockESP32.ino 文件。
此草图需要安装一些额外的 Arduino 库
Tobias Blum 制作的俄罗斯方块动画 - 处理时钟的俄罗斯方块风格动画
2Dom 的 PxMatrix - 用于控制矩阵显示。
ropg 的 EzTime - 用于从互联网获取时间。
Adafruit 的 AdafruitGFX - PxMatrix 所基于的基础库。
草图顶部附近包含了需要哪些版本的库以及从哪里获取它们的详细信息。
安装这些库后,您应该单击 EzTimeTetrisClockESP32 草图上的“验证”按钮(形状像勾号),以确保一切编译正常。
注意:如果您使用 I2S 矩阵屏蔽,则项目代码在这里,并且需要您安装HUB75 I2S DMA 库。


## 步骤7:代码配置
您需要对代码进行一些修改,以使时钟正常工作。在“配置部分”,设置您的 WiFi 的 SSID 和密码。
在下方,以“Europe/Dublin”格式设置时区。代码注释中有一个包含所有可用时区列表的链接。
最后,如果您使用的 ESP32 开发板与 TinyPICO 不同,则需要更改接线。在代码中搜索“Generic”,取消注释找到的两行代码,并注释掉包含“TinyPICO”注释的相邻两行代码。
配置完成后,将代码上传到您的 ESP32,您应该会看到它在其所有块状荣耀中动起来!
其他调整:
您可以对时钟进行一些调整,使其完全按照您的意愿运行。
如果您更喜欢 24 小时制的时钟,请将“ twelveHourFormat ”设置为 false。
forceRefresh选项控制每分钟绘制多少位数字。如果设置为true,则整个时钟将被清除,并重新绘制所有数字。如果设置为false,则仅清除需要清除的数字。例如,如果当前时间为“10:29”,并且需要更新,则仅替换“2”和“9”,“10”将保留在屏幕上。
最后,你可以通过更改触发animationTimer的值来调整俄罗斯方块下落的速度。在 Sketch 中,它的默认值是100000,即 100,000 微秒,或者 0.1 秒。减小这个值会使方块下落得更快。将值更改为50000会使动画速度加快一倍。
完成这些修改后,重新上传代码,时钟就能按照你喜欢的方式运行了。接下来,就等着看方块掉落,消磨时间吧!





## 第 8 步:感谢阅读!
附录
项目链接:https://www.instructables.com/Arduino-WiFi-Tetris-Clock/
项目作者:爱尔兰 Brian Lough
项目视频 :https://www.youtube.com/watch?v=ey2mjZ-UQNM
项目代码:https://github.com/witnessmenow/ESP32-i2s-Matrix-Shield/tree/master
https://github.com/witnessmenow/WiFi-Tetris-Clock
3D 文件:https://www.thingiverse.com/thing:3663720
HUB75 I2S DMA 库:https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA
两个库之间差异: https://github.com/witnessmenow/ESP32-i2s-Matrix-Shield/blob/master/FAQ.md#should-i-buy-this-version-or-the-pxmatrix-version

评论