我在确保我的项目确实可行时遇到了麻烦。
我想要存档的内容:通过互联网控制我的 Senseo 咖啡机。它归结为简单地控制 2 个按钮。
第一个简单的解决方案:
- 在我的 Raspberry Pi 上设置一个 NodeJS 服务器。
- 我将 Raspberry GPIO 连接到 2 个晶体管,以控制咖啡机按钮
- 我可以直接在 Javascript 中控制 Raspberry GPIO。例如调用http://myraspberrypi.com/makemeacoffee激活 GPIO,激活按钮,咖啡流动
但是:我不想将树莓派插入咖啡机(我需要将 Pi 用于其他目的),并且我认为将 Web 服务器和控制器本身解耦是一个好主意。如果明天我想监控我浴室的温度,或者控制第二台咖啡机(使用另一个 ESP8266),我希望能够在不重新考虑整个事情的情况下做到这一点。
我需要存档的是带有 NodeMCU 的 ESP8266,以将其用作 Wi-Fi 无头控制器(请参阅此链接)。不再使用 Raspberry GPIO(这就是重点)。Pi 上只有一个 NodeJS Web 服务器。
让我澄清一下主要组件的作用:
- Raspberry Pi:托管 NodeJS Web 服务器
- NodeJS Web 服务器:向最终用户提供网页。基本上是一个带有“给我泡杯咖啡”按钮的页面。在幕后,我们需要“按下”加热水按钮,等待 30 秒,然后“按下”咖啡按钮。Web 服务器通过向 ESP8266(通过 Wi-Fi)发送 HTTP 请求来实现。NodeJS 服务器也做日志和数据分析(你今年喝了多少咖啡?)
- ESP8266:使用 NodeMCU。它的 GPIO 连接到控制咖啡机按钮的晶体管。我不在乎如何为 ESP8266 供电。它运行一个 Web 服务器来侦听 Raspberry Pi 请求并相应地对 GPIO 执行操作。
这种架构可行吗?这种架构灵活吗?
编辑,回答 Sean Houlihane(剧透以保持帖子相对较短):
我对此不是 100% 确定,但晶体管似乎就足够了。咖啡机开关在低电压 (3,3V) 下工作,ESP8266 不会与咖啡机共用地面。
关于温度感应和水位控制,Senseo咖啡机内置了这个。典型用途:按中央按钮启动加热过程,按“单”或“双”按钮选择咖啡大小。一旦加热过程结束,咖啡就会开始流动。如果没有足够的水,它会结束并且 LED 闪烁。
我期望的进展:
- 1.0 版将是“只需运行咖啡机,我确定它已准备就绪”。我控制单杯按钮和加热按钮。
2.0 版将是“运行机器并给我反馈”我有另一个 ESP8266,插入到反馈 LED 上(这样我就可以知道它何时加热以及何时缺水)和另一个 ESP8266 以确保在运行咖啡机之前,杯子就在那里。我也可能会在咖啡机运行时添加一个警报,告诉用户更换豆荚。
3.0 版本将找到一种方法来判断 pod 是否已更改,通过使用某种开关跟踪机制的打开情况。但这目前超出了我的项目范围。