确保我的项目确实可行时,我遇到了麻烦。
我要存档的内容:通过互联网控制我的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服务器通过将HTTP请求发送到ESP8266(通过Wi-Fi)来实现。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版将通过某种开关跟踪机制的开启,从而找到一种方法来判断容器是否已更改。但这目前不在我的项目范围内。