亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

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

基于ESP32 的吃豆子时钟

发布时间:2021-11-20
分享到:

基于ESP32 的吃豆子时钟

发布时间:2021-11-20
分享到:

该时钟由带触摸屏的 ESP32 驱动,它的组件很少,并通过 wifi 同步时间。用户还可以通过触摸屏以及吃豆子人和可变动画速度与角色之间的战斗进行互动。

制作或送给您的 DIY 电子产品或复古游戏朋友的绝佳礼物!

背景

几年前,我为 Pacman 时钟开发了代码,事实证明它非常受欢迎,但是,构建复杂,零件昂贵,因此我想让其他制造商更容易使用它。首先是将代码移植到 ESP32 平台,并寻找启用 2.8" 并行控制触摸屏的替代方法。使用 ESP32 创造了消除对 RTC 模块、昂贵的 LCD 显示器和音板的需求的机会。它还创造了在未来版本中使用蓝牙进行配置的机会。

补给品

  • ESP32 开发套件 1
  • HW-104 功放板
  • ILI9341 2.8" TFT 触摸屏,适用于 Arduino UNO,带电阻式触摸屏
  • 40mm 直径 8 欧 3w 扬声器(虽然您可以使用占用空间更小的 4 欧和 16 欧扬声器)
  • 原型条板1 x 切割至 53 毫米 x 80 毫米
  • 母头条- 切割成 2 x 15 针、2 x 6 针、2 x 8 针尺寸
  • 100 欧姆 1/4 瓦电阻器
  • 连接线
  • 1m USB Micro 数据线

第 1 步:制作自己的 DIY ESP 保护壳

我从面包板开始,然后转移到原型板,然后设计制造的屏蔽PCB。
如果您选择此选项,请注意:您将需要中间焊接技术和工具来完成DIY ESP屏蔽连同烙铁,焊锡吸盘,焊锡芯。这并不是一项简单的任务,我发现我在完成它之前犯了很多接线错误。我的建议是,在根据提供的电路图对每个点对点连接进行测试和复检之前,不要连接LCD或ESP32。

注意:在教程的第 6 步之前不要将 USB 电缆连接到 ESP32,因为在构建过程中提供给电路板的电源可能会短路。

  1. 用铅笔标出原型板所需的尺寸(53 毫米 x 80 毫米),并确保其按照提供的照片正确定向。
  2. 使用美工刀和钢尺将 Prototype 板放在坚固的表面(木制砧板)上,并仔细擦拭板的两侧多次。用力按下,但要小心你的手和手指。使用钳子将多余的板折断。
  3. 轻轻打磨电路板的边缘,以去除可能在未来构建过程中导致问题的任何毛刺或短路轨道。
  4. 将母头条放在 ESP32 和 LCD 屏幕上并标记长度。通过牺牲接头上的下一个未使用的引脚来将它们切割成一定长度。然后用砂纸清理边缘。
  5. 将 ESP 32 放入母接头插针中,并将其放置在电路板轨道侧的原型板上。这里的关键是将标题升高几毫米,以便按照照片将轨道焊接在电路板的顶部。我发现最好在 ESP 的每一侧做几个引脚,然后取下 ESP 以便更好地接触烙铁。
  6. 将原型板翻转到组件侧,并根据提供的照片定位 LCD 母接头。在这种情况下,插头引脚可以一直推过电路板并焊接,塑料环绕和印刷电路板之间没有间隙。
  7. 最后取一小段绝缘线,按照提供的电路图仔细连接 ESP32 和 LCD 之间的每个连接。
  8. 将电线连接到 HW-104 音频放大器板的输入和输出右声道,并按照电路图连接到 PCB。连接两根电线作为 8 欧姆扬声器的输出,稍后可以连接。
  9. 接下来轻轻加热 HW-104 放大器板的引脚 5 并从板上吸取焊料。小心地抬起引脚并将电线焊接到其上,然后将其绝缘并用热胶将电线锁定到位,以避免将来损坏芯片。此引脚用于在不使用时将音频放大器静音。
  10. 最后,转到 Instructable 的测试部分来测试单元。

第 2 步:3D 模型

您必须打印的最大部分是 130 毫米 x 75 毫米 x 48 毫米,因此该项目可以在大多数 3D 打印机上打印。打印由 5 个组件组成

  • 前挡板
  • 前面板
  • 贴花
  • 后壳- 包括扬声器孔、通风孔和 USB Micro 电缆(避免切割和焊接电源线,并允许在组装后上传代码!!
  • 扬声器外壳- 这是重要的添加,以避免组装时电子设备与扬声器的任何短路

3d 文件可以在 Thingiverse 上找到

第 3 步:上传 ESP 代码

现在您已经成功地将您的 ESP 连接到您的 LCD 您的 Shield,您可以加载位于此处的代码。上传和测试以下单元的步骤

使 ESP32 Pacman Clock 正常工作有四个高级步骤

  • 通过USB端口连接ESP32并加载代码
  • 配置 ESP32 以与您的 Wifi 路由器配合使用,以便它可以同步时间
  • 为您所在的位置设置正确的时区
  • 校准触摸屏

1. 让您的计算机准备好上传代码

  • Arduino IDE
  • 串行电缆
  • Mac 与 Windows IDE 和驱动程序安装
  • 加载正确的正确库

有关如何执行此操作的说明在此处进行了清楚的描述,并且涵盖了 Windows 和 Mac 安装。

我已经将一个 zip 文件与所需的库放在一起,所以我的建议是您将现有的库移动到另一个位置,然后将此zip 文件展开到 Arduino IDE 库子目录中。这可以省去很多麻烦的库,因为其中一些已经为 ESP32 和指定的屏幕定制。

一旦您的 PC/Mac 成功与 ESP32 通信,您就可以加载提供的代码。

2. 设置 Wifi 网络访问

为了使时钟与正确的时间同步,当时钟通电时,会通过互联网轮询 NTP 服务器。这需要您添加您的 Wifi 访问路由器名称和密码。请放心,该代码仅在开机时连接到互联网,从时间服务器获取时间,然后断开连接直到重新启动。

没有互联网数据收集正在进行,只是因为不必为时钟添加实时时钟板和电池。

第 52 行和第 53 行需要您的路由器名称和密码,以便时钟可以使用它来访问互联网。

const char* ssid = "************";
const char* 密码 = "************";

3. 设置时区

代码的第 102 行包含您所在国家/地区时区的特定配置。在此处导航到此位置并确定您所在时区的地理位置。

例如,我住在新西兰,所以我添加的代码位于语音标记之间

const char* TZ_INFO = "NZST-12NZDT-13,M9.4.0/02:00:00,M4.1.0/03:00:00";

4.加载代码并测试单元操作

在此阶段,您将能够加载代码,并且应该会看到开机序列结果成功显示时间并播放“Pacman”启动音频剪辑。

如果有问题,请返回前面的每个步骤并验证每个步骤都已仔细执行。如果您有任何其他问题,请给我留言。

5. 校准触摸屏

屏幕确实需要校准。我使用了一个为5v电源设备设计的LCD,而ESP32使用3.3v,这使触摸屏成为一个挑战。所以我创建了一个校准草图,你需要加载和记下根据你使用屏幕坐标的过程只需要3分钟,不过需要你的电脑打开和Arduino的IDE打开准备改变183 - 196行。

  • 下载文件并加载到“Instructables_ESP32_Pacmanclock__Screen_Calibration_V3”
  • 上电后,您将看到校准屏幕,屏幕上有12个字母,屏幕顶部LHS上有一些红色的X和Y坐标。
  • 更新这12行代码的X和Y坐标,用你的手指触摸每个字母,并将读数转移到 X 和 Y 坐标来更新这十二行代码
  1. 整数轴 = 800; int Ay = 2450; // 闹钟时间递增按钮
  2. 整数 Bx = 500; int By = 3180; // 闹钟分钟增量按钮
  3. INT Dx = 1600; int Dy = 2170; // 闹钟时间递减按钮
  4. int Ex = 1150; int Ey = 3036; // 闹钟分钟递减按钮
  5. int Ix = 616; 整数 = 2600; // 吃豆子向上 int Jx = 1700;
  6. int Jy = 2000; // 吃豆子左
  7. INT Kx = 940; 整数 ky = 3400; // Pacman Right int Hx = 1600;
  8. int Hy = 2204; // 吃豆子下来
  9. INT Cx = 1500; int Cy = 2800; // 退出屏幕 int Fx = 2200;
  10. int Fy = 1650; // 报警设置/关闭按钮和速度按钮 int Lx = 300;
  11. 整数 Ly = 3500; // 报警菜单按钮 int Gx = 1300;
  12. 整数 Gy = 2500; // 设置菜单和更改吃豆人角色
  • 最好的方法是系统地将手指放在屏幕上的字母上并保持几秒钟。这些值会稍微移动,但稍等片刻以使其稳定,然后记下 X 和 Y 值。在 IDE 中编辑代码并更新值以反映您发现的内容。我的建议是逐步检查代码中的字母,以便您可以勾选每一行。

第 4 步:添加您自己的自定义声音

ESP32 很酷的一点是它有足够的内存和资源来存储和播放数字化音频。

这意味着您可以为闹钟和时钟上的按钮创建自己的声音效果。

用于在 ESP32 中产生声音的库是“XT_DAC_Audio.h”,它使用转换为十六进制文件的音频文件,然后将这些文件与 ESP32 的草图一起存储在头文件中。使用您自己的音频文件更新它们的过程如下。

我已经存储了两个现有的声音,包括头文件 PM[34468] 中的 Pacman 启动主题和 gobble[15970] 下的菜单选择声音。

要修改或替换这些使用以下过程

1. 选择并下载您想要的 Wav 格式的音频文件。这可以通过使用 youtube 下载器或音频文件转换器来完成。

2. 从这里将 Audacity 应用程序下载到您的桌面设备上。使用 Audacity 将声音组合成单声道。

3. 将夹子缩短到正确的长度

4. 使用项目选项将采样率更改为 8000。关键是保持数据样本的数量少于40,000。

5.在曲目菜单下选择所有音频并重新采样

6. 将选定的音频文件导出到 WAV Microsoft,无符号 8 位保存文件

7. 前往https://hexed.it/并上传文件。

8. 右键单击​​并选择所有菜单选项

9. 右键单击​​并将选定的字节导出为代码片段(检查 40k 样本下的数量)

10. 将窗口中的文本复制到 Sound.Data.h

11.在文本末尾添加分号

12.将文件正确命名为“unsigned char PROGMEM Force”

有关详细教程,您可以在此处查看库作者在此处提供的示例

第 5 步:菜单设置

1. 进入设置模式

您可以通过轻按屏幕中央来进入设置模式。

2. 将吃豆人角色改为吃豆人女士

在设置模式下,按住屏幕中央的“角色”字样会将 Pacman 角色更改为 Ms Pacman,通过播放的声音和图标的变化来指示。

3.改变游戏速度

屏幕上角色的动画速度可以从“正常”变为“快速”再到“疯狂!!” 速度。选择后会发出声音,当您退出屏幕时,动画将就位。

4. 设置闹钟

如果按下闹钟菜单按钮,闹钟响起的时间和设置功能可以启用。当按下“保存并退出”按钮时,这些将被保存。

注意:在进入设置模式之前,Pacmans 方向可以通过按屏幕的左、右、上和下四肢进行交互。

现在用你的 Pacman Clock 来玩玩吧

第 6 步:后续步骤

这个教学的下一步是

将蓝牙合并到代码中,以便移动设备可用于设置时区和 wifi 设置
将设置参数存储到 ESP32 内的 NVRAM 中,以便在重新启动或重启后调用它们。
结合 LDR 自动调节背光亮度。
包括额外的街机游戏作为菜单中的选项,以赋予它真正的复古感觉。
我有兴趣获得关于您认为什么是好的改进的反馈,请评论或给我留言您的想法。

以上内容来源于网络,如涉及侵权可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论