11122| 1
|
自制一个基于 ESP32 制造的超级马里奥主题时钟 |
这周和大家分享一款超级马里奥主题的时钟,基于 ESP32 和彩色点阵制造,非常有趣。 马里奥会站在舞台上顶起砖块来更新时间数字。 除了马里奥表盘之外,还有文字显示时间的表盘——显示世界时间的表盘和一个模拟时钟表盘。 所有这些资料都可以在 Clockwise的网站[1]上找到。 除了时钟的外观,之后还考虑添加一些其他功能,例如:电子邮件通知、天气预报、新闻、交通、向顺时针发送短信等。 组件清单
自制 PCB 板 初期开发的时候,作者使用 ESP32 来控制 LED 矩阵。对于没法自制 PCB 板的新手来说, ESP32 开发板是非常不错的选择。 可以按照 GitHub 上显示驱动程序的接线说明进行操作,也可以查看接线图来辅助。 具体可以参考:https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA#2-wiring-esp32-with-the-led-matrix-panel/ 在完成时钟的基本代码后,作者准备自制一块的 PCB 板。它可以控制显示器的电路板。 具体详情可查看: https://github.com/jnthas/clockwise/tree/main/firmware/ 另外,作者推荐了一个很棒的平台——Tindie,全球各地的制造商都会在这里创建和销售他们的项目。 在这里作者找到更好的板子——ESP32 Trinity,它带有触摸感应按钮、LDR(可以用它调节显示器的亮度)、USB-C、电源控制等。 具体可以查看:https://github.com/witnessmenow/ESP32-Trinity/ 刷固件 如果你不想了解代码的工作原理、设置和配置,只是想检查它是否正常工作,你可以使用 Mario Bros. Clock 安装程序,然后上传固件。因为它已经编译好了,无需安装任何其他东西。 只要把 ESP32 插入 USB 端口,然后单击 P-Switch 烧录即可。 安装器下载地址:https://jnthas.github.io/mariobros-clock/ 配置 WiFi 第一次运行时,需要配置 WiFi。通过手机或笔记本电脑连接到 Clockwise-Wifi,密码为:12345678,再点击配置 WiFi,选择AP,输入密码和时区并保存。然后时钟就可以连接到 NTP 服务器并获取正确的时间。 注意,需要使用2.4GHz WiFi,不适用于5G。 关于时区 WiFi Manager 可以收集时钟中使用的时区参数并确保显示正确的时间。例如 NTP 客户端时,默认时间为 UTC,我们需要在 Wifi 设置中告知正确的时区。所有时区可点解这里查看:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones/ 对于我们来说,在 WiFi 管理器的时区字段中输入Asia/Shanghai即可。如果你想了解更多关于 NTP 服务器工作的信息,可点击此处查看:https://lastminuteengineers.com/esp32-ntp-server-date-time-tutorial/ 源代码 通常,我们会使用 PlatformIO 开发固件,如果你不知道,推荐试试。但在本项目中,我们使用 Arduino IDE ,项目会更简单一些。 存储库中的代码与 ESP32-HUB75-MatrixPanel-I2S-DMA (网址:https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/ ) 库一起使用,同时我们也使用了 PxMatrix (网址:https://github.com/2dom/PxMatrix/ ) 并且一切正常。你只需要替换库不需要进一步更改代码,因为都是基于 Adafruit_GFX。 为了让它在 Arduino IDE 中工作,我们需要稍微修改一下项目结构,所有文件都与 mariobros-clock.ino 一起放进根目录。第一次看到时可能会有点混乱,会试着在这里整理一下。 源代码可点击这里查看:https://github.com/jnthas/mariobros-clock/ 该结构是由三个文件夹和文件树组成。
有了这种结构,组装好后就能够显示出与前面展示图片中一样的时钟了。在静态物体的风景的基本上,我们有两个动态的小精灵,马里奥和积木。并且马里奥会每分钟跳跃一次并击中积木。 代码逻辑如下:
IDE 设置 在运行之前,需要从 Arduino Library Manager 安装一些库。
安装所有库并选择正确的板后,将它们上传后就可以工作了。 按照固件部分提供的说明配置Wi-Fi。 3D 打印 为了让钟更容易挂在墙上,我们在 TinkerCAD 画了一个外壳。效果很不错(以家里的显示器为例建模) 不同的显示器,孔位可能会不一样。仅供参考:https://www.tinkercad.com/login?next=%2Fthings%2FgP3D1qztRwr-clockwise-case%2Fedit%3Fsharecode%3DLPX3iBTkKpqTlIak9r4VNBfhXKJX-1F97O5nIp6MXyw/ 可以改进的地方 1、通过 WebSerial API 更改表盘。创建一个网络应用程序,之后只需选择所需的表盘即可更新固件。可参考https://clockwise.page/ 2、创建通知小组件并在表盘上显示它们,它们可以在网络应用程序中进行配置 3、将 MQTT 集成到表盘中,好在任何地方都可以接收这些通知。 4、创建更多表盘。 这是一个开源的项目,大家也可以自行二次开发。 参考资料[1] Clockwise的网站: https://jnthas.github.io/clockwise/ 原文链接:https://www.instructables.com/Mario-Bros-Clock/ 原文作者:jnthas 译文首发于:趣无尽 转发请注明出处与原作者信息 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed