Tetris Time Clock on a RGB Matrix With ESP8266

9976年

26

17

使用ESP8266的RGB矩阵俄罗斯方块时间时钟

我把这个RGB LED矩阵放了一段时间。我用arduino mega(效果很好,但不容易上网)和覆盆子pi(灵活,但开销大,启动时间长)来使用它。所以我在寻找一个更好的解决方案,当我在hackaday上看到这篇文章时,我找到了它:https://hackaday.com/2017/11/28/a-minimalist-weath..。

多米尼克·巴克斯托勒建了一个整洁的图书馆为ESP8266驱动这些RGB led矩阵。因此,连接到互联网进行NTP同步不再是问题。它还可以立即启动,并可以在不关闭系统的情况下关机。

我有一个想法,建立一个NTP同步时钟,并正在寻找一个创造性的方式,以显示时间使用可用的颜色。在谷歌上搜索了一下之后,我在一些瓷器店找到了一个单色版的俄罗斯方块时钟。所以我决定用颜色做一个类似的东西。

第一步:零件清单

对于这个构建,您需要以下部分:

  • 距当地DIY商店9 x 20毫米的木条(链接
  • 亚克力玻璃22 x 13厘米,距离当地的DIY商店(链接
  • 窗户用单向镜箔(灰色)(链接
  • NodeMCU ESP8266板(如loin) (链接
  • Micro USB <- > USB线,也许你有一个备用的从你的手机
  • USB电源,至少有2a电源驱动矩阵
  • Adafruit 32x16 RGB LED Matrix (链接)或中国的廉价版(链接
    请注意:这些矩阵存在于不同的间距尺寸P10意味着10mm,结果是32x16厘米的面板。最新的版本是基于大约20x10厘米大小的P6矩阵。
  • 杜邦跨接电缆母对母(链接
  • 3D打印零件https://www.thingiverse.com/thing:2846368(适合P6矩阵)
    • 矩阵网格
    • 网格夹
    • 左右站
    • ESP8266持有人
  • M3螺丝
  • 可选:用一张纸做扩散器

步骤2:可选:将矩阵平铺

在第一个版本中,我对像素的清晰度不是很满意。矩阵不是平的,因为前面板有薄的水平脊,以便光流到邻近像素。

多米尼克·巴克斯托勒给了我一个提示:
你可以松开面板上的所有螺丝(见图片),这样前面板就可以被取走。然后你有两个选择:

  1. 离开前板,重新拧上支架。然后led就可以很好地融入打印网格中。
    缺点是你不能在矩阵和打印网格之间使用扩散器。
  2. 把前板转一圈,这样就形成了一个平面,然后再重新切。
    我选择了这个选项,它看起来好多了。

步骤3:硬件组装

要进行组装,请按照上面的图像所示的下一步步骤进行:

  1. 将木条切成两段23.5厘米长和两段14.5厘米长45度角。
  2. 用木胶把这些碎片粘在一起,得到一个足够大的木制框架。
  3. 把丙烯酸玻璃切成合适的尺寸。
  4. 把镜箔贴在玻璃上。
  5. 用热胶把玻璃粘在镜框上。
  6. 用热熔胶将打印出来的矩阵网格粘在玻璃上
  7. 可选:剪一张纸到矩阵的大小作为扩散器。
  8. 把LED矩阵放入网格中。
  9. 用热胶把夹钳固定在网格上。
  10. 使用M3螺钉将支架固定在LED底座上。
    如果螺丝太长,要小心不要撞到PCB。
  11. 将ESP支架拧到LED矩阵上。
  12. 用杜邦公司的电缆把所有东西连接起来。你可以在电线上找到说明PxMatrix库描述。根据板的类型(黑色或绿色PCB)的标签是不同的。

对于矩阵的电源供应,我直接从ESP和焊接一根杜邦电线直接到矩阵的电源输入。然后将这两根电缆连接到NodeMCU单板的“GND”和“Vin / VV / 5V”。

步骤4:软件安装

这个项目构建在platform.io上。如果构建,所有依赖项都是自动安装的。我建议将它与Visual Studio Code和PlatformIO扩展一起使用。也可以使用Arduino IDE,然后您必须手动安装所需的库(参见tetris_clock.ino)。

安装带有ESP8266内核的Arduino IDE

如果您还没有安装,请从这里下载并安装arduino IDE。然后打开首选项并输入http://arduino.esp8266.com/stable/package_esp8266..。进入附加板管理器url字段。通过“Tools > Board”菜单打开板管理器,安装esp8266。

安装Visual Studio Code和PlatformIO IDE扩展

  1. 下载并安装官方的Microsoft Visual Studio Code。PlatformIO IDE是构建在它之上的。
  2. 打开VSCode包管理器
  3. 搜索并安装官方的“platform -ide”扩展。

你可以在这里找到详细的说明:http://docs.platformio.org/en/latest/ide/vscode.h..。

如截图所示,选择您的板类型和COM端口来配置PlatformIO IDE。

闪烁的软件

你可以在这里获得俄罗斯方块时钟软件:https://github.com/toblum/esp_p10_tetris_clock/以ZIP格式下载或通过git克隆。

在Visual Studio Code中打开项目,并使用底部栏中的复选标记构建它。所有需要的依赖项都应该自动安装。当构建成功时,单击右箭头标志开始上传。如果一切正确,上传就会成功终止。

无线网络连接

该项目使用伟大WiFiManager图书馆。所以你可以很容易地设置Wifi连接。如果你启动它,ESP会打开一个名为“tetris_clock”的热点。使用设备连接该热点。使用wifi密码“tetromino”。然后打开地址"http://192.168.4.1在你的浏览器里。这将打开一个配置页面。在这里输入您的家庭wifi证书。ESP重新启动,现在已连接到互联网。

5 .下一步是什么?

未来有许多可能的扩展:

  • 温度/湿度传感器
  • 气象站
  • Youtube计数器
  • 替代watchface
  • 配置页面

你有进一步的想法或想贡献什么吗?请让我知道

第六步:延长时间

扩展项目如你喜欢:
在2020年,我制作了一个32x32矩阵的版本,完全适合宜家的里巴框架。我使用Brians D1矩阵板,使电缆更可靠:https://www.tindie.com/products/brianlough/d1-mini-matrix-shield/看看他提供的广告板。

2个人制作了这个项目!

建议

  • 时钟速度的挑战

    时钟速度的挑战
  • 玩具游戏大赛

    玩具游戏大赛
  • 大挑战vs小挑战

    大挑战vs小挑战

17日评论

0
FrancesDK

问题2个月前

你好,托拜厄斯,希望你一切都好。
谢谢你这个伟大的项目。这是我最喜欢的。
如果你能回答我只有两个问题:
在你的视频动画中,每分钟都会对所有的数字进行动画处理,但在我的例子中,动画只对“变化的数字”进行处理……
在代码中找不到修改的地方。你能帮助吗?
《俄罗斯方块时间》的介绍文本对我来说也不适合。
否则它就像符咒一样有效。再次感谢。)

0
TobiasB48

2个月前的回复

嗨@FrancesDK,
谢谢你的反馈。听到别人喜欢这个项目总是很高兴。

回答你的问题:
这是代码中决定数字是否发生变化的位置:https://github.com/toblum/esp_p10_tetris_clock/blo..。
我没有尝试它,但是注释这一行应该使所有的数字每次更新。

我不确定介绍有什么问题。它出现了吗?

问候!

0
FrancesDK

2个月前的回复

嗨@TobiasB48,
谢谢你的快速回复。
完美! !现在所有的数字都在变。就好:)

关于人物介绍:
如果我做对了,它应该只在ESP8266连接到互联网之前存在…但是每次我上传代码,它总是从更新4个数字开始:..没有任何介绍文本。

我对ESP很陌生,我想可能与一些WifiManager或ntp_h错误配置有关…
我试过把"drawIntro();"命令放在"void setup()"之前,但没有成功。同样的事情发生了。
我不认为这是代码问题。

无论如何,我对这个关于ESP的第一个项目非常满意。我一定会尝试更多地了解它。
祝贺你出色的工作。再次感谢你的所有帮助。

干杯,)

0
TobiasB48

2个月前的回复

太棒了!很好,它像预期的那样工作。

是的,介绍应该是这样的。也许在drawIntro()之后直接调用display_updater(),但这是我目前唯一的想法。我现在不能尝试它,因为我没有任何未使用的矩阵。

问候!

0
Kml_s实验室

问题3年前

这种类型的显示需要哪种扫描方法?

我尝试了一些组合,但仍然得到垃圾屏幕。

输出的> >PATTERN_TEST。伊诺TETRIS_TIME。伊诺两张图片都在这里....

0
aitgelion

答案2年前

我得到了相同的加密输出。我需要添加D定义和改变初始化来纠正它(如果我的不工作,就尝试一些组合):

/ /在definitions.h

# defineP_D12

PxMATRIX显示(32,16,P_LAT, P_OE, P_A, P_B, P_C, P_D);

/ /在tetris_clock.ino

display.begin (4);

display.setScanPattern (ZAGGIZ);

display.setMuxPattern(直);

0
aitgelion1

答案2年前

我有相同的杂乱输出(8266,32x16矩阵)…我必须添加D定义,并更改初始化:

/ /在definitions.h

# defineP_D12

PxMATRIX显示(32,16,P_LAT, P_OE, P_A, P_B, P_C, P_D);

/ /在tetrisclock.ino

display.begin (4);

display.setScanPattern (ZAGGIZ);

display.setMuxPattern(直);

0
TobiasB48

答案3年前

嗨@Kml_s实验室,

我用的是PATTERN4,但每个显示可能都不一样。我建议在PxMatrix库项目中打开一个问题:https://github.com/2dom/PxMatrix/issues我认为你会得到帮助,因为图书馆的主人在这方面比我有更多的见解。

致以最亲切的问候
托拜厄斯

0
witnessmenow

3年前

托拜厄斯了不起的工作!我一定要在64x32版本上试试这个

1
witnessmenow

答案3年前

它确实有效!

0
TobiasB48

答案3年前

嗨amaze1,

我还没有尝试它与D1到目前为止,但就我所知,D1有D0到D8绑到相同的ESP端口,所以它应该工作。你也可以在PxMatrix项目中问,作者是否已经有使用这个板的经验。

问候
托拜厄斯

0
smeek111

问题3年前

我喜欢这样,我准备好全身心投入了。问题是我的脚刚刚接触arduino,我是新手。你能把arduino IDE的编程指导贴出来吗?谢谢!

0
TobiasB48

答案3年前

使用Arduino IDE应该不是问题。我开始的时候也用过这个。但请注意platform.io,这太好了。

只需在IDE中安装以下库即可:

Adafruit GFX Library(通过Arduino Library Manager)https://github.com/2dom/PxMatrix.gitWiFiManager(通过Arduino库管理器)

NtpClientLib(通过Arduino库管理器)


然后使用NodeMCU板设置来刷新它。

0
Thorondor95

3年前

另一个用途:电脑电池充电器,以艺术的方式显示电池电压,这样你就不会再抱怨把你的“垃圾”放在客厅的桌子上了。

0
TobiasB48

3年前的回复

是的,为什么不呢?如果是木质框架的话,WAF就会更高。:-)