本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Arduino的WiFi俄罗斯方块时钟

发布时间:2021-05-27
分享到:

基于Arduino的WiFi俄罗斯方块时钟

发布时间:2021-05-27
分享到:

俄罗斯方块—几乎每个人都可以立即识别出它的标志性跌落块,无论他们对视频游戏的兴趣如何。但是,我们不是使用块来清除行,而是要使用它们来指示时间!
该项目使用LED矩阵显示器上的经典俄罗斯方块形状绘制出时钟数字。

尺寸约为19厘米x 9.5厘米,实际上是一个很大的显示屏,非常明亮,因此结果令人难以置信。

与传统的Arduino时钟项目不同,该项目的另一个缺点是,它不使用RTC模块保存时间,而是通过互联网设置时钟的时间。这样做的一大优点是,您只需要设置时区,时钟就会自动显示正确的时间,甚至可以根据夏令时进行调整。

这是一个非常容易完成的项目,总共只需要花费几个小时就可以轻松完成!

效果展示:

工具清单:

  • P3 64x32 RGB LED矩阵-Aliexpress *
  • ESP32开发板-我个人使用ESP32开发套件mini(Aliexpress * / Amazon *)
  • 5V电源-4 Amp或更大应该可以解决问题-Aliexpress *
  • 20cm母对母杜邦电缆
  • 桶形插孔插孔到螺钉式端子适配器-取决于电源上的头部
  • LED矩阵的3D打印支架-或保持直立的东西!

步骤1:视频说明:

步骤2:LED矩阵面板

我喜欢这些显示器!这是快速构建真正引人注目的arudino项目的绝佳方法。这些显示器的预期目的是将它们链接在一起,以构成巨大的屏幕,如在音乐会等上看到的,但是可以使用微控制器分别对其进行控制。显示器有许多不同的配置,但是我为此项目使用了64x32 P3矩阵。

分辨率为64 x 32的显示器表示将有64个LED跨度
和32个LED降频。该项目被编码为可以在64 x 32显示器上工作,但是如果需要,可以将其改编为其他显示器。

“ P3”部分表示显示器的间距为3mm。间距较大的显示器在物理上会更大。

这些显示器可以由许多不同的微控制器来驱动,人们通常将它们与Raspberry Pis一起使用,但是对于本项目,我们将使用ESP32。ESP32是一款廉价的,兼容Arduino的,内置WiFi的微控制器。

展台是3D打印的,您可以在somethingiverse上找到它们。它们是我使用Tinkercad重新混合后的现有设计。

步骤3:矩阵盾

我制作了一块PCB,使使用这些显示器变得非常容易!这些不是必需的,但是它们确实使它们更易于使用。

最初的版本使用PxMatrix库,而新的I2S矩阵则使用HuB75 DMA库。他们两个都有一个版本的代码。有关这两个库之间差异的更多信息,请查看此链接

如果您有兴趣购买一个,我会在我的丁迪商店里出售它们。

ESP32矩阵(PxMatrix)
ESP32 I2S矩阵屏蔽

步骤4:不使用屏蔽线进行布线

我们需要做的第一件事是将电源连接到显示器随附的电线上。为此,我使用了几个螺丝端子和一块穿孔板,制作了一个用于将电源连接到电线的小板,我对它的结果感到很满意!

Adafruit在他们的学习指南中建议将电线直接连接到桶形插孔连接器,如上图所示,但我无法(牢固地)使它牢固连接,但我是谁来质疑Adafruit的建议!如果您确实走这条路,请确保使用一些绝缘胶带或热收缩带来增强强度。

我们需要做的下一件事是将ESP32连接到矩阵面板。箭头移开的连接器是“ P-In”,ESP32将连接到该连接器,但是在连接该连接器之前,我们需要将一些P-in连接器连接到P-out连接器(箭头所指的方向之一)。您需要连接以下内容:

  • 点入->点出
  • R2-> R1
  • G1-> R2
  • G2-> G1
  • B1-> G2
  • B2-> B1

对于ESP32,您需要连接以下内容:

  • 插针-> 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

接下来,您需要设置要与ESP32一起使用的Arduino IDE。打开Arduino IDE,转到File-> Preferences,然后将以下URL粘贴到Additional Boards Manager URL中,然后单击“确定”。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

返回Arduino IDE的主屏幕,在此屏幕打开时,依次单击工具->板->板管理器,搜索“ ESP32”并安装它,这可能要花费几分钟,具体取决于您的Internet连接。

设置新板后,建议先做一个简单的眨眼草图,然后再尝试进行更复杂的操作,这样可以节省大量的麻烦!

步骤6:程式码设定

该项目的代码可在Github上获得。要安装它:

  • 转到项目的github页面。
  • 单击页面右侧的“克隆”或“下载”按钮,然后单击“下载Zip”。
  • 解压缩zip文件。
  • 在解压缩的文件夹内,打开“ ESP32或TinyPICO”文件夹,然后打开EzTimeTetrisClockESP32文件夹并打开EzTimeTetrisClockESP32.ino文件。

该草图需要安装一些其他的Arduino库

  • Tobias Blum制作的Tetris动画-处理时钟的俄罗斯方块风格动画
  • 2Dom的PxMatrix-用于控制矩阵显示。
  • ropg的EzTime-用于从互联网获取时间。
  • Adafruit的AdafruitGFX-构建PxMatrix的基础库。
  • 在草图顶部附近,包含需要哪些版本的库以及从何处获取这些库的详细信息。

安装完这些库之后,您应该在EzTimeTetrisClockESP32草图上单击“验证”按钮(形状像刻度线),以确保一切都能正常编译。

注意:如果您使用的是I2S矩阵屏蔽,则该项目的代码在此处,并且需要您安装HUB75 I2S DMA库

步骤7:代码配置

您将需要对草图进行一些更改,以便时钟能够正确为您工作。在“配置内容”部分,设置您的WiFi的SSID和密码。
在将您的时区设置为“欧洲/都柏林”格式的下方,带有可能时区的完整列表的链接是草图中的注释。

最后,如果您使用与TinyPICO不同的ESP32开发板,则需要更改接线。在草图中搜索“ Generic”,然后取消对找到的两行的注释,并注释掉包含“ TinyPICO”注释的相邻行。

完成配置后,将代码上传到ESP32,您应该会看到它充满了块状荣耀!

其他调整:

  • 您可以对时钟进行几项调整,以使其完全按照您希望的方式工作。
  • 如果您希望使用24小时制的时钟,可以将十二小时格式设置为false。
  • 该forceRefresh选项控制多少的数字拿得出每一分钟。如果将其设置为true,则将清除整个时钟,并再次绘制所有数字。如果设置为false,它将仅清除需要的数字,例如,如果当前时间是“ 10:29”并且需要更新,则仅将“ 2”和“ 9”替换,将“ 10”留在屏幕上。

最后,您可以通过更改触发animationTimer的值来调整tetris块掉落的速度。在草图中,默认情况下将其设置为100000,即100,000微秒,即0.1秒。减少此数字将使块下降得更快。将该值更改为50000将导致动画速度快一倍。

进行了这些更改之后,请再次上传代码,时钟将以您喜欢的方式工作。剩下要做的就是浪费时间看着积木掉落!

至此,项目结束,欢迎留言交流评论。

(以上内容来源于网络外文翻译,如侵删)

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论