×

小型电池供电时钟开源分享

消耗积分:0 | 格式:zip | 大小:0.34 MB | 2022-10-28

分享资料个

描述

这款小型电池供电时钟可配置为显示为模拟时钟、数字时钟、世界时钟或数字闹钟。这个时钟类似于我几年前制造的诺基亚模拟数字闹钟。它使用 ATtiny1614 微处理器(16k Flash,2k Ram)。不幸的是,它没有足够的闪存来容纳所有功能集。这次我使用了 ATtiny3216 微处理器。它有两倍的闪存,它不仅让我可以合并以前的功能集,还可以在世界各地的可选城市中添加当前时间。它会自动调整可能在任何选定城市中启用的夏令时。

建立案例

使用提供的 STL 文件,打印正面和背面。我使用了 0.2 毫米的层高并且没有支撑。打印正面时,用您选择的颜色制作前 2 层,在第 3 层开始时更改为对比色,并在第 5 层开始时切换回所选颜色。

前面有两个支架用于支撑印刷电路板。用 2.5 毫米的钻头将它们钻出来,然后用 3 毫米的丝锥创建一个螺纹。

构建电子产品

我遇到的问题之一是诺基亚 5110 显示器的不同变体。

pYYBAGNYuA2ASH3nAACAP22OhRA234.jpg
来自 eBay 的三种不同型号的诺基亚 5110 LCD 模块
 

PCB 专为中间变体而设计。中间变体上的标题更宽(设计为适合 0.1 英寸网格),右侧变体只有一个标题行。

如果您希望将电路板商业化或您可以自己制作,则已包含 Eagle 文件。我用碳粉的方法来制作我的。

首先添加 SMD 组件。我发现在焊接 SMD 元件时使用焊膏比使用卷盘中的焊料更容易。

将机器接头添加到电路板的铜面上。

poYBAGNYuBGAdmLjAAK0DxOsDmo142.jpg
添加 SMD 组件和加工接头
 

接下来添加顶部组件。我建议您先将按钮顶部粘到触觉开关上,然后再将其安装到板上。不要让胶水顺着轴流进开关。将按钮顶部朝下放在工作台上,在轴孔中添加一些强力胶,然后将开关轴放入孔中。让它倒置,直到胶水变干。

18650 电池座位于 PCB 安装孔上方。用双面胶粘住支架。从 PCB 的铜侧钻穿两个 3 毫米的安装孔,并穿过电池座的塑料。使用 10 毫米钻头在电池座上钻孔。

将 18650 电池座引线切割并焊接到电路板上。

poYBAGNYuBWAQ6blAAIknrIeU_c083.jpg
添加顶部组件和开关
 

将公机头添加到 LCD 并插入 PCB。将 PCB 拧入外壳。

pYYBAGNYuBmAWDAHAAGzjMZ0oB4362.jpg
将LCD和螺丝板添加到外壳中
 

编程时钟

ATtiny3216 处理器是 Microchip 新型微处理器的一部分。请阅读我关于如何对这些处理器进行编程的教程。

pYYBAGNYuByAf8M6AADdbqHsKFg429.jpg
时钟连接到我自制的 UPDI 程序员
 

您需要下载LCD5110_Graph 库并将其安装到 Arduino IDE 中。此外,您还需要DS1302RTC库。

设置世界时间表

在文件 World.h 中,从第 63 行开始有一个表格,定义了可以选择的城市/时区。它由两个 NULL 指针终止。这允许您添加您认为必要的城市/时区。

表中的每个条目都包含三个元素。第一个是代表城市或时区的 3 个字符的名称。第二个是指向确定夏令时开始时间的规则的指针。& 字符仅表示“地址”。第三个是指向确定夏令时何时结束的规则的指针。

RULE worldChoices[] = {
    :
  {"SYD", &AEDT, &AEST},
    : 
  {"", NULL, NULL}
}

这是澳大利亚悉尼的入口。该选项显示的名称是“SYD”,第二个元素是规则 AEDT(澳大利亚东部夏令时间)的地址,第三个元素是规则 AEST(澳大利亚东部标准时间)的地址。

规则本身在此表之前定义。在悉尼,规则在第 16 行和第 17 行。

const TimeChangeRule AEDT PROGMEM = {"AEDT", First, Sun, Oct, 2, 660};
const TimeChangeRule AEST PROGMEM = {"AEST", First, Sun, Apr, 3, 600};

规则的变量名称是您喜欢使用的任何名称,只要它在代码中是唯一的即可。规则的格式是:

TimeChangeRule myRule = {abbrev, week, dow, month, hour, offset};

在哪里:

abbrev是时区的字符串缩写;不得超过五个字符。

week是规则开始的月份中的第几周。

dow是规则开始的星期几。

小时是规则开始的本地时间小时 (0-23)。

offset是所定义时区的 UTC 偏移量(以分钟为单位)。

为方便起见,可以使用以下符号名称:

周:第一,第二,第三,第四,最后一个道:周日,周一,周二,周三,周四,周五,周六月:一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月

对于美国东部时区,TimeChangeRule可以定义如下:

const TimeChangeRule usEDT PROGMEM = {"EDT", Second, Sun, Mar, 2, -240};  //UTC-4 hrs
const TimeChangeRule usEST PROGMEM = {"EST", First, Sun, Nov, 2, -300};   //UTC-5 hrs

设置好表格后,您可以上传代码并进行测试。

最后添加电池并关闭外壳。

pYYBAGNYuCCAQjclAAG13dLAfXU540.jpg
添加电池并关闭外壳
 

使用时钟

时钟有三个按钮。最左边的是SELECT,中间的按钮是BACK,最右边的按钮是NEXT。

按下 SELECT 按钮时,背光将亮起 5 秒钟,让您在黑暗时读取显示屏。

再次按 SELECT 将在模拟、数字、世界和闹钟面之间循环。

要设置时间和日期:

在 TIME 屏幕上,按 BACK 或 NEXT 按钮。小时将开始闪烁。使用 BACK 和 NEXT 按钮以 24 小时格式设置小时值。再次按 SELECT,分钟将开始闪烁。再次使用 BACK 和 NEXT 按钮设置 Minutes 值。再次按下选择按钮将允许您设置年、月,最后是日。之后,SELECT 按钮将存储新时间。

选择世界时间:

在 WORLD 屏幕上,按 BACK 或 NEXT 按钮。第一个城市名称将开始闪烁。使用 BACK 和 NEXT 按钮设置城市。

显示的第一个城市被视为当地时间。选择的第二、三、四城市的时间将从第一城市时间开始计算。

再次按下 SELECT,列表中的下一个城市开始闪烁。再次使用 BACK 和 NEXT 按钮选择城市。再次按下 SELECT 按钮将允许您选择第三和第四行的城市。之后,SELECT 按钮会将所选城市存储在 EEPROM 中。

设置闹钟:

在 ALARM 屏幕上,按 BACK 或 NEXT 按钮。小时将开始闪烁。使用 BACK 和 NEXT 按钮以 24 小时格式设置小时值。再次按 SELECT,分钟将开始闪烁。再次使用 BACK 和 NEXT 按钮设置 Minutes 值。再次按下选择按钮将允许您打开或关闭警报。之后,SELECT 按钮会将新的报警参数存储在 EEPROM 中。(注意:闹钟时间始终以 24 小时格式显示)。

 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !