Ich habe Probleme damit, sicherzustellen, dass mein Projekt wirklich machbar ist.
Was ich archivieren möchte: Steuern Sie meine Senseo-Kaffeemaschine über das Internet. Es läuft darauf hinaus, einfach 2 Tasten zu steuern.
Erste einfache Lösung:
- Richten Sie einen NodeJS-Server auf meinem Raspberry Pi ein.
- Ich schließe meine Himbeer-GPIOs an 2 Transistoren an, um die Tasten der Kaffeemaschine zu steuern
- Ich kann den Raspberry GPIO direkt in Javascript steuern. Wenn Sie beispielsweise http://myraspberrypi.com/makemeacoffee aufrufen, wird der GPIO aktiviert, die Tasten aktiviert und der Kaffee fließt
Aber: Ich möchte meine Himbeere nicht an meine Kaffeemaschine anschließen (ich brauche den Pi für andere Zwecke), und ich denke, dass es eine gute Idee ist, den Webserver und den Controller selbst zu entkoppeln. Wenn ich morgen die Temperatur meines Badezimmers überwachen oder eine zweite Kaffeemaschine (mit einem anderen ESP8266) steuern möchte, möchte ich dies tun können, ohne das Ganze zu überdenken.
Was ich archivieren muss, ist ein ESP8266 mit NodeMCU, um ihn als Headless-WLAN-Controller zu verwenden (siehe diesen Link ). Himbeer-GPIO werden nicht mehr verwendet (das ist der Punkt). Auf dem Pi befindet sich nur ein NodeJS-Webserver.
Hier ist eine kurze Skizze der Architektur:
Lassen Sie mich die Rolle der Hauptkomponenten klarstellen:
- Raspberry Pi: Hostet den NodeJS-Webserver
- NodeJS-Webserver: Versorgt die Webseiten mit dem Endbenutzer. Grundsätzlich eine Seite mit einem Button "Mach mir einen Kaffee". Hinter den Kulissen müssen wir den Wasserknopf "aufheizen", 30 Sekunden warten und dann den Kaffeeknopf "drücken". Der Webserver sendet dazu HTTP-Anforderungen an den ESP8266 (über WLAN). Der NodeJS-Server führt auch Protokollierung und Datenanalyse durch (wie viel Kaffee haben Sie dieses Jahr getrunken?)
- ESP8266: Verwendet NodeMCU. Die GPIOs sind an einen Transistor angeschlossen, der die Tasten der Kaffeemaschine steuert. Es ist mir egal, wie ich den ESP8266 mit Strom versorge. Es wird ein Webserver ausgeführt, um die Raspberry Pi-Anforderungen abzuhören und entsprechende Aktionen für GPIOs auszuführen.
Ist diese Architektur machbar? Ist diese Architektur flexibel?
EDIT, um Sean Houlihane zu antworten (Spoiler, um den Beitrag relativ kurz zu halten):
Da bin ich mir nicht 100% sicher, aber ein Transistor scheint zu reichen. Der Schalter der Kaffeemaschine arbeitet mit Niederspannung (3,3 V) und der ESP8266 teilt den Boden nicht mit der Kaffeemaschine.
Über die Temperaturerfassung und die Wasserstandsregelung verfügt die Senseo-Kaffeemaschine über diese integrierte Funktion. Typische Verwendung: Drücken Sie die mittlere Taste, um den Aufheizvorgang zu starten. Wählen Sie Ihre Kaffeegröße durch Drücken der Taste "Einfach" oder "Doppel". Sobald der Aufheizvorgang beendet ist, beginnt der Kaffee zu fließen. Wenn nicht genug Wasser vorhanden ist, endet es und eine LED blinkt.
Der Fortschritt, den ich erwarte:
- Version 1.0 lautet "Einfach die Kaffeemaschine laufen lassen, ich bin sicher, sie ist fertig". Ich steuere den einzelnen Tassenknopf und den Aufheizknopf.
Version 2.0 lautet "Führen Sie die Maschine aus und geben Sie mir Feedback". Ich hatte einen anderen ESP8266, der an die Feedback-LED angeschlossen war (damit ich weiß, wann er aufheizt und wann kein Wasser mehr vorhanden ist) und einen weiteren auf einer Skala, um sicherzustellen, dass die Tasse ist da, bevor die Kaffeemaschine läuft. Ich kann auch eine Warnung hinzufügen, wenn die Kaffeemaschine betrieben wird, um den Benutzer anzuweisen, den Pod zu wechseln.
In Version 3.0 können Sie feststellen, ob der Pod geändert wurde, indem Sie die Öffnung des Mechanismus mit einem Schalter verfolgen. Dies liegt jedoch derzeit nicht im Rahmen meines Projekts.