Sto avendo un problema ma assicurandomi che il mio progetto sia davvero fattibile.
Cosa voglio archiviare: controlla la mia macchina da caffè Senseo via Internet. Si riduce a controllare semplicemente 2 pulsanti.
Prima soluzione semplice:
- Installa un server NodeJS sul mio Raspberry Pi.
- Collego i miei GPIO Raspberry a 2 transistor, per controllare i pulsanti della macchina da caffè
- Posso controllare Raspberry GPIO direttamente in Javascript. Ad esempio, chiamando http://myraspberrypi.com/makemeacoffee si attiva il GPIO, si attivano i pulsanti e il caffè scorre
Ma: non voglio collegare il mio lampone alla mia macchina per il caffè (ho bisogno del Pi per altri scopi) e penso che disaccoppiare il web server e il controller stesso sia una buona idea. Se domani voglio monitorare la temperatura del mio bagno o controllare una seconda macchina da caffè (usando un altro ESP8266), voglio poterlo fare senza ripensare il tutto.
Quello che devo archiviare è un ESP8266 con NodeMCU per usarlo come controller senza testa Wi-Fi (vedi questo link ). Raspberry GPIO non viene più utilizzato (questo è il punto). C'è solo un web server NodeJS sul Pi.
Ecco un breve schizzo dell'architettura:
Vorrei chiarire il ruolo dei componenti principali:
- Raspberry Pi: ospita il web server NodeJS
- Server web NodeJS: fornisce le pagine Web all'utente finale. Fondamentalmente una pagina con un pulsante "Fammi un caffè". Dietro la scena, dobbiamo "spingere" il riscaldamento del pulsante dell'acqua, attendere 30 secondi, quindi "spingere" il pulsante del caffè. Il server Web lo fa inviando richieste HTTP a ESP8266 (tramite Wi-Fi). Il server NodeJS esegue anche la registrazione e l'analisi dei dati (quanti caffè hai bevuto quest'anno?)
- ESP8266: utilizza NodeMCU. I suoi GPIO sono collegati a un transistor che controlla i pulsanti della macchina da caffè. Non mi interessa come alimentare ESP8266. Gestisce un server Web per ascoltare le richieste di Raspberry Pi ed eseguire di conseguenza le azioni sui GPIO.
Questa architettura è fattibile? Questa architettura è flessibile?
EDIT, per rispondere a Sean Houlihane (spoiler per mantenere il post relativamente breve):
Non ne sono sicuro al 100%, ma sembra che un transistor sia sufficiente. L'interruttore della macchina da caffè funziona a bassa tensione (3,3 V) e ESP8266 non condivide il terreno con la macchina da caffè.
Per quanto riguarda il rilevamento della temperatura e il controllo del livello dell'acqua, la macchina per caffè Senseo ha questo incorporato. Uso tipico: premere il pulsante centrale per avviare il processo di riscaldamento, scegliere la dimensione del caffè premendo il pulsante "singolo" o "doppio". Una volta terminato il processo di riscaldamento, il caffè inizia a fluire. Se non c'è abbastanza acqua, termina e un LED lampeggia.
I progressi che mi aspetto:
- La versione 1.0 sarà "Basta avviare la macchina da caffè, sono sicuro che sia pronta". Controllo il pulsante della tazza singola e il pulsante di riscaldamento.
La versione 2.0 sarà "Avvia la macchina e inviami un feedback" Avevo un altro ESP8266, collegato al LED di feedback (in modo da poter sapere quando si sta riscaldando e quando è fuori dall'acqua) e un altro su una scala per assicurarsi che il la tazza è lì prima di far funzionare la macchina da caffè. Potrei anche aggiungere un avviso quando la macchina da caffè viene avviata per dire all'utente di cambiare il contenitore.
La versione 3.0 sarà per trovare un modo per capire se il pod è stato modificato, monitorando l'apertura del meccanismo con una sorta di interruttore. Ma questo non rientra nell'ambito del mio progetto al momento.