Mam problem z upewnieniem się, że mój projekt jest naprawdę wykonalny.
Co chcę zarchiwizować: Kontroluj mój ekspres do kawy Senseo przez Internet. Sprowadza się do zwykłego sterowania 2 przyciskami.
Pierwsze łatwe rozwiązanie:
- Skonfiguruj serwer NodeJS na moim Raspberry Pi.
- Podłączam moje Raspberry GPIO do 2 tranzystorów, aby kontrolować przyciski ekspresu do kawy
- Mogę kontrolować Raspberry GPIO bezpośrednio w JavaScript. Na przykład wywołanie http://myraspberrypi.com/makemeacoffee aktywuje GPIO, aktywuje przyciski i kawa płynie
Ale: Nie chcę podłączać mojej maliny do ekspresu do kawy (potrzebuję Pi do innych celów) i uważam, że oddzielenie serwera WWW i samego kontrolera to dobry pomysł. Jeśli jutro chcę monitorować temperaturę w mojej łazience lub sterować drugim ekspresem do kawy (za pomocą innego ESP8266), chcę móc to zrobić bez ponownego przemyślenia całej sprawy.
To, co muszę zarchiwizować, to ESP8266 z NodeMCU, aby używać go jako bezgłowego kontrolera Wi-Fi (patrz ten link ). Raspberry GPIO nie są już używane (o to chodzi). Na Pi jest tylko serwer sieciowy NodeJS.
Oto krótki szkic architektury:
Pozwól, że wyjaśnię rolę głównych elementów:
- Raspberry Pi: Hostuje serwer sieciowy NodeJS
- Serwer sieciowy NodeJS: Obsługuje strony internetowe dla użytkownika końcowego. Zasadniczo strona z przyciskiem „Zrób mi kawę”. Za kulisami musimy „nacisnąć” przycisk podgrzewania wody, odczekać 30 sekund, a następnie „nacisnąć” przycisk kawy. Serwer WWW robi to, wysyłając żądania HTTP do ESP8266 (przez Wi-Fi). Serwer NodeJS wykonuje również rejestrowanie i analizę danych (ile kawy wypiłeś w tym roku?)
- ESP8266: Używa NodeMCU. Jego GPIO są podłączone do tranzystora sterującego przyciskami ekspresu do kawy. Nie dbam o to, jak zasilić ESP8266. Działa serwer WWW, aby słuchać żądań Raspberry Pi i odpowiednio wykonywać działania na GPIO.
Czy ta architektura jest wykonalna? Czy ta architektura jest elastyczna?
EDYCJA, aby odpowiedzieć Sean Houlihane (spoiler, aby post był stosunkowo krótki):
Nie jestem tego w 100% pewien, ale tranzystor wydaje się wystarczający. Przełącznik ekspresu do kawy działa przy niskim napięciu (3,3 V), a ESP8266 nie dzieli ziemi z ekspresem do kawy.
Ekspres do kawy Senseo ma wbudowaną funkcję wykrywania temperatury i kontroli poziomu wody. Typowe zastosowanie: Naciśnij środkowy przycisk, aby rozpocząć proces podgrzewania, wybierz rozmiar kawy, naciskając przycisk „pojedynczy” lub „podwójny”. Po zakończeniu procesu podgrzewania kawa zaczyna płynąć. Jeśli nie ma wystarczającej ilości wody, kończy się, a dioda LED miga.
Postęp, którego oczekuję:
- Wersja 1.0 będzie brzmiała: „Po prostu uruchom ekspres do kawy, jestem pewien, że jest gotowy”. Kontroluję przycisk pojedynczej filiżanki i przycisk podgrzewania.
Wersja 2.0 będzie brzmiała „Uruchom maszynę i przekaż mi informację zwrotną”. Miałem kolejny ESP8266, podłączony do diody LED sprzężenia zwrotnego (aby wiedzieć, kiedy się nagrzewa i kiedy nie ma wody) i jeszcze jedną na skalę, aby upewnić się, że filiżanka jest tam przed uruchomieniem ekspresu do kawy. Mogę również dodać alert, gdy ekspres do kawy jest uruchomiony, aby poinformować użytkownika o zmianie kapsuły.
Wersja 3.0 będzie znaleźć sposób, aby stwierdzić, czy kapsuła została zmieniona, śledząc otwarcie mechanizmu za pomocą pewnego rodzaju przełącznika. Ale obecnie nie wchodzi to w zakres mojego projektu.