为您生命中特别的人准备的 Dreamday 礼盒





准备工作:
材料:
这个小盒子记录了我和我爱人在一起生活的天数。当然,对你来说,日期可以是任何日期,它可以记录你们结婚以来的天数,也可以记录你和你的配偶相遇的天数,也可以记录你们同居的天数,或者其他对你来说很重要的事情。
8x8 像素矩阵可以显示任何符号,更改所需图片的代码非常简单。我选择了这颗闪闪发光的心来象征我们在日常生活中给予的爱和感情。(我也有点想在情人节之前完成这个项目,但 SARS-CoV-2 稍微推迟了一点)
电源由 USB 可充电 18650 锂离子电池供电,可持续显示 7 段和 8x8 矩阵约 24 小时,但请记住,如果盒子关闭,它们不会发光。因此实际电池寿命将长达数年。实时时钟 (RTC) 会保留用于计算过去天数的时间。它有自己的备用电池 (CR2032),可持续使用约 8 年。
底座是定制印刷电路板。我让 JLCPCB 生产的。Gerber 文件可以在GitHub 存储库中找到。您可以将它们上传到任何 PCB 制造商,这是一种通用文件格式。或者当然,您可以给我写一封电子邮件,我有一些多余的,我愿意寄出去,只需支付运费。
还包括一个 BOM 文件(物料清单),您可以在其中找到项目所需的每个电子零件。
不包括木箱或照片打印的总成本约为 30 美元,具体取决于 PCB 成本。
工具:
工具:
- 烙铁
- Arduino ISP 加密狗(请参阅我的其他 Instructables 了解如何制作)
- 通过 PC 或 Mac 进行编程
- 定制 PCB(包括 Gerber,或者问我,我有一些备用的)
- 电子零件(参见 BOM 文件)
- 某种盒子(或自己制作)
订购PCB和零件

前往JLCPCB并从GitHub存储库上传 gerber.zip ,您也可以选择所需的 PCB 颜色。
您也可以给我写一封电子邮件,我可能有一些多余的 PCB,我愿意以运费的形式寄给您。
BOM 文件包含填充 PCB 所需的所有电子零件。
我已经从 LCSC 和 Digi-key 订购了零件。但大多数东西都可以在任何电子产品供应商处找到。如果您很难找到某件东西或不确定它是否是合适的零件,请给我发电子邮件。
最小汇编(用于刻录引导加载程序)

为了成功烧录 Bootloader(下一步将解释),有些部件不应焊接到 PCB 上。关键部件是 ATmega32u4(显然……)、晶体及其两个负载电容器、六针接头和 ATmega32u4 的三个电容器。
重要的是不要在串行连接上焊接 0Ohm 电阻器/跳线。
烧录引导加载程序

在使用 Arduino IDE 将程序上传到 ATmega32u4 之前,需要先烧录 Bootloader。普通的 Arduino 已经烧录了 Bootloader,但由于我们在这里使用的是裸片,所以我们需要自己烧录。不过别担心,这真的一点也不难。
将您的 Arduino ISP 连接到 PCB 上的六针接头,确保极性正确。
如果你没有 Arduino ISP,请查看我的这份 Instructable。10分钟内即可构建一个。
在 Arduino IDE 中检查以下设置:
- 工具 -> 开发板:Arduino Leonardo
- 工具 -> 端口:[选择编程器的 COM 端口]
- 工具 -> 编程器:Arduino 作为 ISP
您可以在 Windows 设备管理器中找到 COM 端口。
最后,点击工具->刻录引导加载程序
PCB组装




成功烧录 Bootloader 后,您可以将所有剩余部件放在 PCB 上。我发现从电阻器和电容器等最小部件开始,然后是 IC,最后是电池座、7 段显示器和 8x8 像素矩阵,这样比较方便。
在背面焊接两个 90° 针头,以隐藏电池和开关电缆。我为电池使用了 3 针头,这样以后就不会接反了。
安装库并设置 RTC(实时时钟)上的时间

为了上传本说明书中提供的程序,您需要安装以下依赖项:
下载 .zip 文件并通过 Arduino IDE 导入:
Sketch -> 包含库 -> 添加 .ZIP 库
如果由于某种原因,下载链接不起作用,库的副本位于此GitHub 目录中。只需将它们拖到您的 Arduino 库文件夹中即可。
此后您可能需要重新启动 Arduino IDE。
检查我的GitHub以获取项目的最新版本/更新!
PCB 上的 DS3231 集成电路可保存计算过去天数所需的当前时间。但要实现这一点,您首先需要告诉它当前的时间/日期。这可以通过上传 RTC_set.ino 草图来完成。
上传前请确保您的设置如下:
- 工具 -> 开发板:Arduino Leonardo
- 工具 -> 端口:[选择 Arduino Leonardo 的端口,而不是 Bootloader 步骤中的 ISP]
- 工具 -> 编程器:AVR ISP 或 AVRISP mkII
点击上传按钮并等待上传完成。
修改程序代码并上传程序

检查我的GitHub以获取项目的最新版本/更新!
现在我们可以开始修改主程序了。使用 Arduino IDE 打开 main.ino 项目。代码中有几行您可以/需要更改一些值以适合您。我不会提及任何行号,因为它们可能会随时更改,但我尽量让它尽可能容易找到。
设置您的特殊日期:
您需要从日期中获取 Unix 时间戳。请访问此网站并输入您的日期:www.unixtimestamp.com
这将为您提供一个 10 位十进制数。将该数字复制到代码中显示“ const long special_date = ”的行,然后替换那里的数字。此数字是自 1970 年 1 月 1 日以来的秒数,也称为 Unix 时间。
设置您的 8x8 象形图:
您可以通过更改“const unsigned int matrix_heart_big[8]”中的值来更改 LED 矩阵上的图片。这 8 个 0x[XX] 值代表显示屏上从左到右的垂直线。如果您不知道这些值的含义,请尝试 0x00、0x01、0x02、0x04 并查看会发生什么,或者阅读十六进制表示法。(或者给我发电子邮件)
对所需的代码进行所有更改后,请确保在 Arduino IDE 中拨打以下设置:
- 工具 -> 开发板:Arduino Leonardo
- 工具 -> 端口:[选择 Arduino Leonardo 的端口,而不是 Bootloader 步骤中的 ISP]
- 工具 -> 编程器:AVR ISP 或 AVRISP mkII
点击上传按钮并等待上传完成。
准备盒子

为了支撑盒子中的 PCB 并防止其掉落,我切下了一些 8x10mm 的木条并将它们粘到位。
我建议用某种漆处理木头,这样它才能长久保持美观。也许你甚至可以用激光在上面刻上一些东西,我在想你遇到的地方的天际线或你的名字。
为了启动在盒子关闭时断开电池的开关,我在盖子的角落粘了一小块木头。无需详细阐述这种机制,有无数种方法可以做到这一点,我相信您可以想出更巧妙的方法。
我还使用了粘性 hock n' loop 条将电池座固定在底部。
最终组装






剩下要做的就是将所有东西插在一起,将 PCB 放入盒子中,然后根据需要将照片裁剪成合适的尺寸并放入盖子中。
我希望你的另一半能从这份小小体贴中找到快乐。











