描述
动机
我们最终厌倦了夜间照亮我们车道边缘的通用太阳能充电草坪灯(它们最终都失效了),并用一串市电供电的 LED 灯取而代之。
现在我们需要一个日落驱动开关,以便每天日落后自动将它们打开几个小时。是时候对Wemos D1 Mini进行一些爱和矫枉过正了。
哲学
如果它昨天起作用而你没有碰它,那么它今天应该起作用。 永远。没有更新。没有“您是否尝试过再次打开和关闭电源”。
另外,在建造东西时,先尝试使用手头的零件,然后再购买新的零碎零件。
Wemos LOLIN D1 迷你
如果不是很明显,我非常喜欢这些微控制器板。我已经尝试迁移到更新的更闪亮的那些,但我只是不断回到这个旧的最爱,原因之一是:它很管用。
主要特征:
足够小的外形
足够强大,有足够的存储空间
比较便宜
从 Arduino IDE 编程总是微不足道的
足够老且成熟,可以为 3rd 方外围设备提供良好的驱动程序
可靠的内置 WiFi 以及良好的客户端和服务器驱动程序
Wemos LOLIN D1 迷你
为了快速参考,这是我从Renzi Mischianti找到的最好的引出线图:
Wemos LOLIN D1 迷你引出线
特征
以下是我希望该设备具备的功能:
日落时点亮一段可配置的时间
覆盖模式以在其他时间轻松打开它们(例如凌晨 3 点)
自动计时(没有这种闪烁的12:00垃圾)
全年自动调整日落时间
使用覆盖、检查和配置的简单浏览器 Web 界面
点击以显示 IP 地址(以便将来不可避免地重新分配)
我不会给出按数字绘画的说明。相反,我将只提供完整的原理图和我的 Arduino 草图的来源,以及关于每个功能实现的一些注释。我怀疑没有人会构建这个确切的设备,但可能会从出于其他目的复制一个或多个功能中受益。
网络界面
我利用了 D1 mini 的内置 Wifi 和网络功能。我在其他项目中同时使用了服务器和客户端部分,所以我已经有了代码来克服大多数常见问题。我将串行输出保留在实时版本中,这样我就可以轻松连接 USB 电缆并在将来失败时诊断初始化。
下图是显示我的简单 Web 用户界面的屏幕截图:
网页界面功能
我ESP8266WebServer 用于网络服务器,这个文档实际上非常好。我对标签和
刷新的使用是让一些 Web 按钮起作用的快速而肮脏的方法。
设备接口
在设备上安装 OLED 显示屏的唯一原因是,我们可以很容易地知道分配给它的 IP 地址,这样我们就可以在浏览器中实际找到 Web 服务器。但是,一旦你有了一个显示,你也可以包含其他诊断信息:我只是复制了与 Web UI 相同的东西:
然而,OLED 显示器确实会随着时间的推移(约 4-5 年)而烧毁,因此不要让它们“始终开启”是有道理的。出于这个原因,我使用麦克风传感器作为开关来打开 OLED 15 秒。外壳构成了一个方便的音箱,因此您只需用指关节轻敲音箱即可打开 OLED。我有一个关于使用MAX9814 作为音频开关的项目,更详细地描述了这个技巧。
MAX9814麦克风
功率继电器
最初我以为我可以使用像VO12642T这样的 MOSFET 开关简单地切换 12V 电源,因为它可以处理 2A 并将该电流与精密电子设备隔离开来。然而,在测量外部 LED 灯的电流消耗为 1.7A 后,我不得不换成容量更大的东西,以免接近 2A 的限制。我手头有一个 10A 继电器分线板,所以我用它代替。
10A继电器——无魔蓝烟!
原理图
添加一个 7805 稳压器,从 12V LED 驱动器为我们提供 5V 电源,电路就差不多完成了。我为精密的电子设备添加了一个 1A 的保险丝(因为我变老了,也变聪明了)。另一件需要记住的重要事情是,并非所有精致的东西都是 5V:OLED 和 MAX9814 都有 3.3V 逻辑电平,并且足够小,可以使用 D1 mini 的 3.3V 电源供电。
日落开关原理图
网页服务
我一直在使用 Arduino millis(),它并不是非常准确,并且每大约 50 天就会循环一次。我的解决方案是使用免费的公共网络服务worldtimeapi.org每 24 小时重置一次时间。我在新西兰的 API 是:http://worldtimeapi.org/api/timezone/pacific/auckland
注意:http://,不是https://
我使用第二个免费的公共网络服务来获取我所在位置今天的日落时间(是的,我可以算一下,但我很懒,我已经上网了)。在我打电话更新时间的同时,我还打电话给sunrise-sunset.org来获取我所在位置今天的日落时间。使用谷歌地图获取经度和纬度。API 调用类似于:http://api.sunrise-sunset.org/json?lat=-YY.YYYY&lng=XX.XXXX
注意:http://,不是https://
这些 Web 服务调用是使用可靠的 WiFiClient 进行的,该文档非常好。
这两个 Web 服务都以 JSON 格式返回响应。我发现这个JSON 库非常适合解析这些响应。
因此,作为提醒,您需要根据您的详细信息在我的代码中自定义三件事:
STASSID 和STAPSK - 您自己家庭 WiFi 的 ssid 和密码
根据您的时区进行网络调用的 URLworldtimeapi.org
根据您的位置进行网络调用的 URLsunrise-sunset.org
使用的 Arduino 库
Arduino IDE 2.x 的屏幕截图以防万一您在寻找正确的驱动程序时遇到困难:
https://arduinojson.org
https://github.com/adafruit/Adafruit_SSD1306
https://arduino.esp8266.com/stable/package_esp8266com_index.json
最后一个可能是您为使用 Wemos LOLIN D1 mini 而安装的,我相信它包括 Web 服务器和客户端库。
集会
我将微控制器电路安装在同一个外壳内,该外壳装有交流电源到 LED 灯的 12V 直流电源。我在以前的项目中犯过把东西做得太紧太小的错误。我也犯了一个错误,就是把东西弄得太难拆开并带出现场并放回工作台。
为什么不用木头?
使用我的 Dremel 的切割刀片可以很容易地取下 4 毫米厚的“工艺”胶合板,并使其尺寸完美适合挤压配合:紧贴在外壳中,但仍然可以轻松移除。
主要部件用螺丝固定在胶合板上。微控制器上的 USB 端口仍然可以访问。与 12V 电源和 LED 的 3 个连接很容易断开和重新连接。
结语
我一开始提到的“哲学”是有抱负的:设计需要进化到这种理想状态。
所以,当我将来发现这个系统有什么问题时,我会修复它并更新这个项目。东西只需要可靠地工作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !