月相跟踪器是一种小巧的半便携式设备,允许你收集有关月球的重要信息。该设备报告了诸如可见光照,相位,月亮升高和设定时间等参数。
此设备对于对科学或天文学感兴趣并提供出色的桌面办公室装饰的任何人都是必不可少的。
该项目相当简单,需要连接互联网的设备,如ESP32,但您可以随时调整代码,使用WiFi屏蔽,以太网屏蔽或任何其他互联网连接您可能拥有的设备。 Lunar Phase Tracker设计用于处理锂聚合物电池和非常省电的电子墨水显示屏,它不仅可以提供精彩的屏幕,而且即使断电也可以保留最后的图像!
第1步:注册天文信息
这一步绝对必要(虽然很无聊)因为我们正在使用在线API收集我们的信息。虽然可以计算月相,照明等,但这样做是一项繁琐的工作。我们使用的API提供来自实时气象站和监测系统的最新信息,因此我们收到的数据是真实世界的结果,而不是计算值的结果。
前往Weather Underground,点击“注册”并填写您的所有信息。该帐户完全免费,您的API调用也是如此,只要您每分钟不要求太多结果或每天超过500个请求。请务必将此页面添加为书签,您可以随时返回并使用API进行天气统计和其他重要信息。创建帐户后,转到API站点,单击“购买密钥”并选择免费计划,您只需输入一些详细信息,您就会遇到devoloper 密钥ID的问题。 此ID对您而言是唯一的,应保密。我在示例Arduino代码中提供了我的密钥,稍后我们将对此进行介绍。我们非常欢迎您使用我的密钥ID进行测试,但我强烈建议您自己注册。
获得您的唯一ID后,您可以继续查看Astronomy API信息,即老实说非常光鲜您将找到一个如下所示的简单示例:
http://api.wunderground.com/api/8c6dc2e5c6f36de9/a 。..
此URL非常重要,因为这个是我们提供制作项目所需的所有信息的原因。来吧,点击链接,你会看到悉尼的结果,如月相,照明和其他好的信息。看一下URL,我们将看到悉尼,澳大利亚以及以“8c6dcwe 。..”开头的长代码。该代码是我们之前提到的密钥ID。使用您的唯一ID更改该代码并查看其工作原理,您应该得到完全相同的结果。尝试游玩地点。对于我自己在南非,我使用约翰内斯堡和ZA。
第2步:组件
所以现在有趣的东西。我们需要一些组件,而不是很多组件,并且它们都不是非常昂贵的,我已经为我使用的组件提供了Amazon链接。请记住,如果您喜欢编程,请随意使用您可用的任何显示器或互联网设备。对于我的构建,我使用了以下内容:
Waveshare E-Ink SPI 4.2“SPI显示器
ESP32开发板(通用)
Adafruit Power Boost 500
5000mAh Lipo电池组
Stripboard(Protoboard)
您将需要基本工具,例如:
烙铁
焊料
卡尺
钻头用于分隔原型板上的轨道
电线
线夹
胶水(热胶将起作用)
安装了Arduino IDE的笔记本电脑
唯一的高级您可能需要的工具是制作外壳的3D打印机。如果您没有,那就好了,用木头和手锯或任何可用的东西制作外壳。是的,我的3D打印机老了,尘土飞扬。/p》
第3步:计算机软件
在我们开始研究电路和编程之前,我们首先需要最新版本的Arduino IDE,可以在这里找到。
由于我们使用带有Arduino核心的ESP32,w e需要在Arduino IDE上安装此核心。按照Github的这个简单指南,它向您展示了您需要使用的软件和配置,以便在Arduino IDE中使用您的ESP32开发板。
我们还需要两个额外的库来使我们的系统正常工作。第一个是Arduino JSON库,它允许我们读取和解析JSON请求,这正是我们从Weather Underground获得的。您可以从我的个人Dropbox或下面的下载这两个库。获得文件后,将其解压缩并放入Arduino库文件夹中。它通常位于C: Users YOUR_NAME Documents Arduino libraries。确保你重新启动你的IDE,否则Arduino不会拿起新的添加。主要的Arduino SRC代码也在该文件夹中。该库还包含Waveshare显示提供的样本的修改版本。这些文件已被改变为在ESP32模块上运行其GPIO,我已经实现了一个新的“字体”,其中包含了月亮各个阶段的所有图像。
第4步:电路
好的,所以这个电路非常简单,只需要几个元件和电线。
一般的想法是我们有一个Lipo充电器电路,一个升压转换器给我们5V,然后是ESP32开发套件,它将电压降至3.3V。此3.3V也用于Waveshare电子墨水显示屏。是的,由于升压然后用线性稳压器降压,但效率稍低,但ESP32工作在非常可怕的电压范围内。大约2.5 - 3.6V。这不适用于电池项目,特别是那些使用锂聚合物电池的项目。
基本接线如下:
升压转换器 5V输出 - 》 Vin ESP32开发套件上的&GND
ESP32 3.3V - 》 3.3V&GND 电子墨水显示器
ESP32 PIN 18 - 》 CLK 电子墨水显示器
ESP32 PIN 23 - 》 DIN/MOSI 电子墨水显示器
ESP32 PIN 5 - 》 CS/SS 电子墨水显示器
ESP32 PIN 32 - 》 DC 电子墨水显示器
ESP32 PIN 33 - 》 RST 电子墨水显示
ESP32 PIN34 - 》忙》 电子墨水显示
你可以看到接线非常简单,我的DIY板只需要大约15分钟的时间来构建。在供电之前一定要用万用表检查是否有短路。
我还从我的ESP32和Lipo升压板上取下了LED,以便在睡眠模式下节省大约40mA的电量。这将有助于电池持续更长时间。如果您愿意,可以实现电源开关,省电电路,自动断开等。您可以扩展此项目并使其尽可能复杂。
第5步:代码
可以在步骤3 期间在提供的文件夹中找到代码,也可以从下面下载.ino文件。您将需要安装步骤3中提到的关联库,以使所有内容协同工作。由于代码是在工作条件下提供的,因此对于此步骤没有太多要说的。确保在测试程序之前输入您的SSID和网络密码,您始终可以运行ESP32 WiFi扫描以检测附近的任何无线网络,但在我的程序中,网络信息仅在代码和代码中设置。也许你可以修改它来询问你想要连接到哪个网络:)
代码非常简单,我会花一些时间在接下来的几周内对它进行评论和改进。我们基本上连接到网络,在我的情况下,我的家庭网络。然后,我们尝试连接到Weather Underground并从网页接收JSON文本。然后使用ArduinoJSON库进行提取。或者将JSON代码解析为char数组或字符串,允许我们在将值显示给用户之前对其进行操作。最后一段代码严格用于编程GUI,并通过反复试验完成。我查看了显示,增加或减少了资产位置并再次运行代码,直到我对字体大小,布局和图像的外观感到满意为止。
我为ESP32实施了深度睡眠例程以节省电力。默认值为60秒,但我建议您将值更改为一小时或两小时,因为更新不会发生至少几个小时。该示例接受秒数,因此请确保正确执行转换。
我还使用The Dot Factory程序为新字体生成十六进制数组。该字体用于生成月相的“图像”。如果您想编辑字体文件,请确保使用上述程序进行生成。这有点令人困惑,因为E-Ink库没有很好地记录,我的大部分成功归功于试验和错误。当我花更多时间使用此代码时,我将更新Instructable以提供有关我的发现的更多信息。
用于月相的字体必须按照标准的ASCII布局进行。如果在EPD-master文件夹中打开font24,则可以看到第一个图形由空格标识的布局,第二个是“!”。 (感叹号)等。您将看到我在代码的最后一位(函数getLunarChar)中使用数字3或主题标签符号拉出相关字体。这是因为Arduino期望ASCII标准从32到127.因为我们使用的字体与实际字体无关,而是与月相图形矩阵无关,我们需要确保ASCII字符引用我们选择的月相图像。这意味着使用了!我们的月相字体显示了该列表中的第二个月相图形。如果你看一下月相字体,你会看到一大堆月相,都有不同的照度。将来我会添加更多代码来使用我们实现的所有图形。目前我们只使用了一些,但是图形已经在月相字体中实现,只需要在代码中实现就可以使用它。
第6步:最终汇编
构建的最后一部分最令人满意的是装配过程。我设计并3D打印了一个适合我的电路板的外壳。该项目非常DIY,没有专业的PCB或单一的标准布局。在大多数情况下,我使用的盒子足够大,可容纳您选择使用的任何脂肪充电器或升压转换器。只要它们提供与本Instructable中提到的相同的基本功能,那么你应该没问题。
我用4个螺丝将机箱的顶部和底部一半固定在一起,用热胶粘住我的DIY电路。我用了一些很小的胶水来装电池,但如果我有更多的时间,我会为所有的电子产品定制支架。
我还决定为背面的锁定按钮打个洞。这会将电池与升压转换器断开连接,如果您不打算24/7全天候运行设备,这将非常有用。不幸的是,即使您的ESP32处于深度睡眠模式,升压转换器仍会使用电源。
总体而言,我对结果非常满意。我在使用ESP32的过程中学到了很多东西,并且可以看到自己将来将它用于各种项目。
-
跟踪器
+关注
关注
0文章
131浏览量
20008
发布评论请先 登录
相关推荐
评论