电子说
第1步:时钟程序功能
关于时钟的某些软件功能的一些评论。
时间设置:许多使用rtc的Arduino示例在设置时间方面都很随意。他们经常使用草图的编译时间来设置rtc(如果尚未设置)。由于您不知道编译和下载需要多长时间,这很笨拙,如果先前已设置时钟,则时间不会更新。
我在代码中放了一个标志(KBSetTime = true | false),如果在下载时设置,将导致打开一个串行窗口并提示输入时间。按下输入时,时间精确设置为rtc。
准确度:DST3231模块的指定精度为+/- 2 ppm,在常温下每年约1分钟。为了校正这种漂移,提供了“碰撞”按钮。我们的想法是,当您听到通过收音机广播的时间源信号点数时,按下按钮按钮并将时间调整为“时间最高”。为了防止手指徘徊,我将此功能限制为仅在一小时内的五到五个范围内有效。
夏令时:有问题!时钟没有同步到任何可识别DST的外部源,因此没有办法自动调整,就像电话会因为它连接到网络塔而做。在旧版本的Windows中,他们只使用一个文件,其中包含日期,指定何时发生更改,为此您需要事先知道并确定更改日期 - 我们走了多远,预期寿命是多少时钟,如果我们移动司法管辖区怎么办?其他方法依赖于固定的规范,例如3月的第2个星期日,但这也有问题 - 不是每个地方同时调整,特殊事件可能会移动这个“固定”的变化点。出于这些原因,我决定采用不同的方法让用户轻松进行调整 - 设置滑动开关以指定进入或退出夏令时,然后按下按钮。这将在当前时间恰好增加或减少一小时。保留日期的准确性,以防你在23:45小时进行。
扩展:时钟显示为12h格式,有四个LED小时,最大值为8 + 4 + 2 + 1 = 15,因此如果需要24小时格式,您可以添加额外的LED。或者,您可以添加指示上午或下午的方式。软件库和时钟模块的接口都可以在需要时轻松实现这些。
第2步:位和块 - 片断
Arduino世界有一系列有趣的位,都非常显着便宜从ebay,ali barber等。还有很多指导和建议。这是我用过的东西;
Nano arduino,便宜,功能强大,具有教育意义 - 该项目最终使用了约80%的代码空间
DS3231 - 实时时钟模块,可维持时间,2 ppm精度约为1分钟/年
SSD1306 oled显示屏,128 x 32像素
WS8212 LED - 串行控制LED,3线,单个LED颜色由3字节RGB字符串设置
DHT22 - 温湿度模块。电容式湿度传感器和热敏电阻
其他开关,按钮 - 带连接器的电源适合Arduino
使用电容式触摸开关可能更好按钮。一个例子是TTP223
关于DS3231 rtc模块的注意事项:如果你使用像锂电池那样的锂电池(大多数人会),你需要切断模块上的电池充电痕迹。互联网搜索将揭示信息和原因。上图说明了要切割的痕迹。
步骤3:接线
该图显示了接线连接。
第4步:代码
此处显示代码,您只需下载并使用它即可。你需要安装Arduino环境。
希望它被充分评论,允许任何具有一些Arduino技能的人来跟踪和修改。
Arduino世界有许多智能民间的图书馆让我们其他人可以轻松使用设备。没有必要重新发明轮子,所以我使用了以下库;
TimeLib.h - 用于时间函数的使用和管理
DS3223RTC.h - 用于访问rtc模块
Adafruit_NeoPixel.h - 用于使用串行LED
DHT.h - 用于湿度和温度传感器
Streaming.h - 便于与串行窗口交互
U8glib.h - 用于Oled显示
使用了IC2总线,它内置于Arduino,rtc和oled模块以及相关的库中 - 由于上面提到的库,它们对使用都是透明的
中断。这些用于碰撞到小时和夏令时调整例程。前者因为它需要以时间关键的方式发生而后者因为它不经常使用。
每个显示特征的显示时间的暂停延迟可以通过show_xxxx_delay常量来调整。例如,显示的红色温度LED被设置为4000毫秒或4秒
const unsigned long show_temp_delay = 4000;
颜色的变化可以通过编辑线条来实现 - 它只是每个00的三个十六进制值。 RGB的ff
#define Yellow leds.Color(0xff, 0xff, 0x00) // colour for day display
步骤5:木工
我开始在车库里放一块松木,切成一定长度如所须。大理石位于凹陷的口袋中,因此从正面钻出一个更大的孔,大理石的直径达到您想要的深度,然后钻一个小孔,让光线看到大理石的背面。钻孔后,我使用了一个插入式路由器从后部划出一个口袋来容纳电子设备。
我在顶部表面上切了一个小凹槽,这样Oed显示器就会齐平。
后面的部分被切割成适合按钮和DHT传感器的尺寸。
我用自制的污渍混合物对松树进行染色并涂上一层蜡以产生缎面效果
步骤6:电子装配
《我将LED安装在一条木条上 - 这主要是为了让它们更容易处理,因为我正在玩耍和原型制作。他们需要连接5V,0V和数据。来自arduino的数据引脚连接必须首先到达一分钟,因为LED是通过字符串中的位置来寻址的。 8小时led是字符串中的最后一个,并且不需要终结器。
钻几个孔,将开关和传感器安装在后面板上。热胶可用于将物品固定到位。为这些设备使用触摸开关可能更好。
Arduino和rtc模块安装在配线板上。这样可以更容易地将所有东西焊接在一起。链接由单股铜线制成。
带状电缆提供与后面板安装的开关和传感器的完美连接,并允许打开外壳。
在LED灯条之间使用一块牛奶瓶塑料和补丁板,以防止任何短路。
拧紧背部,你就完成了。时钟可以通过USB端口从计算机或插头包装到墙上。没有USB电源,没有显示器,但rtc模块上的电池可以保持时间。
在光线昏暗的房间里享受它,并对访客进行测验,因为它以的形式吸引了一些注意力。 “那是什么!?”
全部0条评论
快来发表一下你的评论吧 !