Sommario:

JavaStation (Caffettiera IoT completamente automatica a riempimento automatico): 9 passaggi (con immagini)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico): 9 passaggi (con immagini)

Video: JavaStation (Caffettiera IoT completamente automatica a riempimento automatico): 9 passaggi (con immagini)

Video: JavaStation (Caffettiera IoT completamente automatica a riempimento automatico): 9 passaggi (con immagini)
Video: Sun javastation "krups" booting Debian GNU/Linux 2024, Luglio
Anonim
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)
JavaStation (Caffettiera IoT completamente automatica a riempimento automatico)

L'obiettivo di questo progetto era realizzare una caffettiera completamente automatica a comando vocale che si auto-riempiesse d'acqua e tutto ciò che devi fare è sostituire gli avventori e bere il tuo caffè;)

Passaggio 1: Introduzione

introduzione
introduzione

Dato che questa era la mia seconda mod per il caffè, ho imparato molto nel processo, in particolare che più la macchina è complessa che modifichi, più problemi/bug che incontrerai durante il funzionamento quotidiano. La macchina precedente era solo una semplice vecchia caffettiera a 1 interruttore con un relè mod.

Il Circolo (versione completamente automatica) è il top di gamma delle macchine premium di Dolce Gusto. Ho dovuto passare ore a cercare la macchina giusta perché tutte le altre macchine di questa serie utilizzano la leva meccanica superiore per alternare i flussi di acqua fredda e calda come mostrato nell'immagine.

Passaggio 2: scegli la macchina giusta

Scegli la macchina giusta
Scegli la macchina giusta

La mia macchina base non è solo completamente automatica, ma ha caratteristiche notevoli come lo spegnimento automatico dopo 5 minuti e il ricordo dell'ultima quantità di caffè (che renderà le cose molto più facili in seguito nel modding). Il funzionamento di base della macchina:

1, pulsante di accensione premuto

2, pulsante dell'acqua fredda premuto (disperderà immediatamente l'acqua nella tazza)

3, pulsante dell'acqua calda premuto (riscalderà la caldaia ~20-60 secondi e inizierà a rilasciare acqua calda nella tazza) La spia di alimentazione lampeggerà in rosso durante il periodo di standby, quindi diventerà verde in modo permanente quando la caldaia è pronta.

Questa macchina ha anche la capacità di rilevare i seguenti errori:

Il serbatoio dell'acqua è vuoto

Il portabicchieri non è a posto

In entrambi i casi la spia di alimentazione lampeggerà tra rosso/verde.

Passaggio 3: modifiche hardware

Modifiche hardware
Modifiche hardware

In questo scritto non descriverò in dettaglio lo smontaggio e il rimontaggio della custodia perché ci sono video a riguardo su YouTube. Il microprocessore principale è nascosto proprio sotto il pannello principale dove si trovano i 2 interruttori. La caldaia è sul lato destro del case separata da tutto il resto, il pannello pompa e alimentazione è sul lato sinistro.

La macchina da caffè è un ambiente pesante per l'elettronica, nessuno dei lati è perfettamente adatto per integrare un circuito. La destra in corrispondenza della caldaia ha più spazio ma ti occuperai del calore, ovviamente il circuito potrebbe non toccare la piastra della caldaia e nemmeno starci vicino. Ho scelto il lato alimentazione/pompa ma qui si ha a che fare con forti risonanze provenienti dal funzionamento della pompa a membrana che può distruggere il circuito di controllo/far sfilare i fili dai connettori nel tempo.

Il pannello di alimentazione non contiene nulla di utile ma può essere utilizzato per assorbire un +5V stabile (un pollice in più per questa macchina) che può essere collegato direttamente al pin VIN di Arduino bypassando il regolatore di tensione di bordo.

Elenco hardware rapido (non completo BOM, non include le basi):

  1. Dolce Gusto Circulo versione completamente automatica
  2. Modulo relè 5V 4 canali con fotoaccoppiatore per PIC AVR DSP (suggerisco di utilizzare 4 relè reed SIP-1A05)
  3. Arduino Micro (suggerisco di usare SparkFun Pro Micro o più recente in futuro)
  4. Fototransistor di fotoaccoppiatori FSC 2PCS 4n35
  5. Elettrovalvola 1/2" per Acqua Aria N/C Normalmente Chiusa DC 12V
  6. Modulo ad ultrasuoni HC-SR04 Sensore trasduttore di misurazione della distanza (acquista alcuni extra, vedrai più tardi perché)
  7. Modulo sensore di rilevamento umidità goccia di pioggia 2 pezzi Rilevamento pioggia per Arduino
  8. 1 Xbee
  9. Raccordi per tubi per blocchi d'acqua (possono variare a seconda della casa, meglio acquistarlo in un negozio di ferramenta e metterlo insieme lì prima dell'acquisto)

Passaggio 4: collegamenti principali e scheda controller

Connessioni principali e scheda controller
Connessioni principali e scheda controller
Connessioni principali e scheda controller
Connessioni principali e scheda controller
Connessioni principali e scheda controller
Connessioni principali e scheda controller

È necessario collegare i seguenti punti del circuito:

1, tasto caldo

2, pulsante freddo

3, led rosso

4, led verde

5, pulsante di accensione principale

6, GND condiviso

Sfortunatamente ho perso le mie note/immagini su dove saldarle sulla scheda, ma tutto può essere facilmente rintracciato con un multimetro (basta usare la modalità di test del diodo per rintracciare i fili). La saldatura non era troppo difficile, scegli i punti con le gambe SMD e salda i fili lì.

I LED rosso/verde si trovano entrambi uno accanto all'altro sull'interruttore di alimentazione. Servono per determinare gli stati della macchina (accesa, pronta per fare il caffè (caldaia riscaldata), errore). Li ho tolti direttamente dalla scheda madre, perché è difficile armeggiare con il piccolo circuito attorno all'interruttore di alimentazione.

Stavo usando gli accoppiatori ottici di 4N35 per interfacciarmi in sicurezza con Arduino e leggere gli stati dei LED. L'idea originale era di usarne 5 e fare sia le letture che i controlli degli interruttori (creare un circuito completamente silenzioso). Sfortunatamente questo chip non è stato in grado di generare una resistenza abbastanza bassa da emulare la pressione di un pulsante, quindi sono stato costretto a utilizzare i relè. Ho usato il modulo relè generico a 4 canali quello che avevo in mano ma se dovessi rifare questo progetto userei solo piccoli relè Reed (SIP-1A05 Reed Switch Relay con diodi flyback interni) che possono essere collegati direttamente all'uscita di Arduino pin (carico ~7mA) in modo che tutto possa essere messo su una struttura della scheda a 2 livelli.

I 5 cavi piccoli possono essere facilmente calati vicino ai cavi di alimentazione sotto la scheda di alimentazione.

Per utilizzare lo spazio in macchina in modo più efficiente ho deciso di suddividere l'elettronica in 2 pannelli principali:

La sinistra è la scheda di controllo principale, la destra (quella che chiamo la scheda di comunicazione) contiene l'Xbee e sebbene non sia mostrato nell'immagine i 2 sensori dell'acqua (per il rilevamento del trabocco) sono schiacciati dietro di essa. In alto l'orologio in tempo reale (opzionale per uptime:)) e la scheda relè a 4 canali che si trova accanto alla pompa in basso avvolta in una spugna, anch'essa incollata un po' per proteggere dalla risonanza.

Per la scheda di comunicazione, non mi sono preoccupato di realizzare PCB, ho usato solo una normale breadboard perché non c'è molto da fare lì. Dispone di 6 connessioni alla scheda madre:

Vcc (5V), GND, Xbee (TX), Xbee (RX), Sensore acqua1 (Dati), Sensore acqua2 (Dati)

Passaggio 5: controllo del flusso d'acqua e meccanismo di riempimento

Controllo del flusso d'acqua e meccanismo di riempimento
Controllo del flusso d'acqua e meccanismo di riempimento
Controllo del flusso d'acqua e meccanismo di riempimento
Controllo del flusso d'acqua e meccanismo di riempimento
Controllo del flusso d'acqua e meccanismo di riempimento
Controllo del flusso d'acqua e meccanismo di riempimento

Ho progettato questa macchina pensando alla sicurezza, rendendo impossibile per gli aggressori/malfunzionamenti causare seri danni d'acqua alla casa poiché la macchina sarebbe collegata sia al rubinetto che a Internet 24 ore su 24, 7 giorni su 7. Questo è ciò che fa il seguente circuito di protezione 555 sopra il solenoide.

Si noti inoltre che il solenoide funziona da un alimentatore a 12V quello che sono ancora riuscito a spremere nella parte inferiore della macchina del caffè accanto alla pompa e alla scheda relè. Per non sprecare energia la scheda relè a 4 canali commuta la rete 230V direttamente all'adattatore che poi accenderà il solenoide. C'è ovviamente un ritardo di spegnimento di un paio di microsecondi che devi calcolare per il collasso del campo magnetico sia sul solenoide + sull'adattatore quando si stacca la spina.

Sto usando un jack standard da 3,5 mm per collegare il blocco dell'acqua esterno con un cavo lungo 3 m e un tubo in PVC di piccolo diametro che esce dal blocco e va alla caffettiera.

La parte superiore del serbatoio dell'acqua viene forata per accogliere questo tubo che poi viene portato sul fondo del serbatoio. Tengo a precisare che è molto importante far scorrere il tubo verso il basso sul lato senza passare per il centro e interferire con i sensori a ultrasuoni.

Dopo che il solenoide è stato acceso, il circuito si spegne automaticamente dopo ~ 4 secondi (che dovrebbe essere più che sufficiente per riempire completamente il serbatoio) e rimane in questo stato fino al successivo ciclo di accensione. Questo circuito è l'ultima linea di difesa contro i malfunzionamenti e opera in modo completamente autonomo dalla caffettiera. Se il relè della macchina dovesse guastarsi e rimanere chiuso l'acqua potrebbe allagare la casa, con questa protezione non potrà mai succedere.

Se questo non è ancora abbastanza buono per te o è impossibile chiudere l'acqua o non vuoi giocherellare con i blocchi d'acqua, controlla il mio progetto WasserStation che è stato costruito esattamente per questo per estendere il piccolo serbatoio dell'acqua della macchina del caffè.

Passaggio 6: rilevamento delle inondazioni

Rilevamento allagamento
Rilevamento allagamento
Rilevamento allagamento
Rilevamento allagamento
Rilevamento allagamento
Rilevamento allagamento

Ci sono 2 sensori dell'acqua aggiuntivi per la protezione:

  • Sensore1: sul retro del serbatoio per il rilevamento di tracimazione dal serbatoio
  • Sensor2: nella parte inferiore della macchina da caffè per il rilevamento del trabocco della tazza

Entrambi questi sensori attiveranno un'interruzione che chiude immediatamente l'acqua, accende la luce di errore e interrompe l'esecuzione del programma per prevenire un attacco come fare un milione di caffè e allagare la casa in quel modo. Dopo l'uscita dal programma, la macchina non risponderà più a nulla e dovrà essere riavviata manualmente.

Nel caso ti chiedessi cosa succederebbe se il sensore a ultrasuoni si allagasse (è successo una volta:))

Ha restituito il livello dell'acqua in questo modo per un paio di giorni, ma anche dopo che si è asciugato non è mai più stato preciso e ho dovuto sostituirlo. La macchina è stata progettata per funzionare con l'acqua del rubinetto fredda, quindi nessun vapore caldo danneggerebbe il sensore. Questo sensore è preciso solo fino a quando il livello dell'acqua non si trova a 2-3 cm da esso.

La forma ellittica del serbatoio ha reso difficili i calcoli del livello dell'acqua, quindi sono stati misurati e codificati nel programma per corrispondere alle percentuali.

Passaggio 7: test e assemblaggio finale

Collaudo e assemblaggio finale
Collaudo e assemblaggio finale
Collaudo e assemblaggio finale
Collaudo e assemblaggio finale
Collaudo e assemblaggio finale
Collaudo e assemblaggio finale

La macchina nel suo stato finale, nascondendo quasi completamente le tracce di qualsiasi hacking e se i 3 LED indicatori di stato e la porta di debug USB non fossero lì, non si potrebbe dire che nient'altro stia accadendo all'interno mentre potrebbe persino ospitare un Wifi connesso Quake server:)

Quando modifico i dispositivi, mantengo sempre l'utilizzo manuale una priorità assoluta. Dopo l'hacking la macchina è completamente utilizzabile da chiunque così com'era, tranne che il serbatoio dell'acqua non può essere facilmente rimosso. A meno che non si finisca la parte completa dell'automazione dell'acqua del progetto, la macchina può essere riempita a questo punto solo con una piccola combinazione di tubo + imbuto.

Passaggio 8: codice di controllo del caffè

Codice di controllo del caffè
Codice di controllo del caffè

Trova il codice sorgente completo di Arduino allegato in basso.

Breve spiegazione del codice:

Il ciclo principale chiama la funzione xcomm(), responsabile dell'elaborazione dei comandi, della preparazione del caffè, dell'accensione/spegnimento della macchina.

Il codice sottostante viene raggiunto solo in caso di comando manuale. Aumenta un contatore delle statistiche per tenere traccia di quanti caffè sono stati fatti e riempie automaticamente il serbatoio dell'acqua.

I comandi possono essere inviati tramite Xbee o tramite la porta USB (il debug deve essere abilitato all'inizio). Quando la comunicazione arriva da uno dei due, il led arancione lampeggia per un secondo per mostrare l'attività di rete. Vengono implementati i seguenti comandi:

1, CMSTAT – interroga le statistiche dalla macchina

La macchina memorizza le statistiche su quanti caffè caldi/freddi/manuali sono stati fatti e ottiene anche il tempo di attività dall'RTC che non trabocca dopo 3 giorni, quindi potrebbe durare fino a anni: P

2, CMWSTART – inizia a preparare caffè e bevande calde con acqua calda

3, CMCSTART – inizia a preparare tè freddo e bevande fredde con acqua fredda

I processi a caldo ea freddo iniziano con la chiamata della funzione standby() che esegue ulteriori controlli, quindi attiva la pressione del pulsante di accensione. Dopodiché il programma attende il semaforo verde (quando la caldaia è in fase di riscaldamento) quindi emula la pressione del tasto caldo/freddo. Dopodiché attende 50 secondi (che è più che sufficiente anche per la tazza di caffè più grande) e poi spegne l'alimentazione. Non sarebbe nemmeno necessario visto che questa ottima macchina si spegnerebbe automaticamente 5 minuti dopo aver fatto il caffè ma perché sprecare energia? A proposito, il consumo energetico in standby della macchina anche dopo la modifica è inferiore a 2 Watt.

Rifornimento acqua e sicurezza

Questa macchina è stata progettata pensando alla sicurezza, quindi sarebbe impossibile per un utente malintenzionato che ottiene il controllo allagare l'intera casa con l'acqua. Anche un guasto hardware non comporterebbe gravi danni. Accanto ai sensori hardware sono presenti delle protezioni integrate nel codice per la ricarica. Un contatore che attiva la routine ISR se la macchina non viene ricaricata entro x secondi (questo potrebbe accadere, ad esempio, se il sensore a ultrasuoni non funzionasse correttamente ed emettesse il 20% dopo x secondi dall'inizio della ricarica).

Non c'è autenticazione, chiunque può usare la macchina all'interno del raggio radio che conosce i comandi, quindi ho cambiato l'ID piconet Xbee predefinito in qualcos'altro, anche ERR_INVALIDCMD può essere commentato e la macchina ignorerà tutti i comandi sconosciuti.

bug

Bug del doppio caffè: la cosa più fastidiosa di questo bug è che ha iniziato a verificarsi un paio di mesi dopo aver utilizzato la macchina con lo stesso codice. Dopo che è stato emesso il comando caffè, ha fatto il caffè, si è spento e si è riacceso e ha continuato a fare 1 altro caffè con lo stesso cliente.

Ho dovuto avviare il debug della duplicazione dei comandi dal livello Android perché ho implementato il reinvio al codice in caso di perdita di pacchetti. Si è scoperto che né l'androide, il software di controllo C o il kernel Linux sul raspi2 erano responsabili di questo, piuttosto l'Xbee.

Dopo aver emesso l'eco “CMCSTART”>/dev/ttyACM0 sul nodo di controllo, esce due volte dall'altra parte. Ho concluso che il mio spettro a 2,4 Ghz nella mia casa ha iniziato a saturarsi dai molti dispositivi radio in questa gamma che ha fatto sì che un Xbee invocasse una sorta di reinvio nel livello radio e che i dati fossero inviati due volte (non sempre). Una volta che il primo comando è arrivato nelle macchine, la funzione xcomm() ha iniziato a elaborarlo, tuttavia un secondo è arrivato subito dopo il quale era in attesa nel buffer Xbees e quando il ciclo è terminato ha iniziato a elaborare il secondo comando. Per ovviare a questo problema ho introdotto nel codice 3 soglie per rendere impossibile fare più di 1 caffè in 2 minuti. Inoltre, c'è un limite al CMSTAT, ma per non interferire con il codice di controllo C/Android, semplicemente soffocherà le risposte per 2 secondi.

L'ultima soglia è stata inserita per il contatore caffè manuale, perché una volta che la macchina ha raggiunto lo stato di pronto (caldaia riscaldata, luce verde) ha registrato centinaia di volte l'evento verde aumentando il conteggio del caffè.

Passaggio 9: considerazioni sulla progettazione e considerazioni finali

Dopo molti problemi con la comunicazione Xbee, non consiglierei Xbee per questo progetto. Utilizza la radio standard a 433 Mhz economica con VirtualWire e Bps ridotti per stabilità o incorpora un Raspberry PI Zero con connessione Wi-Fi direttamente nella macchina del caffè.

Poiché la data mostra che è un vecchio progetto, mi scuso per i piccoli dettagli mancanti come la connessione dal circuito di controllo ai piedini precisi dei pin sulla scheda madre. Questo progetto richiede un certo livello di conoscenza tecnica per farlo da solo. Se riscontri bug/problemi o desideri contribuire a questo tutorial, faccelo sapere.

Il software di controllo, metodi per il controllo vocale è per un'altra parte che consentirà di avere il caffè pronto con un semplice comando vocale prima ancora di alzarsi dal letto.

Ora ho completato la documentazione del mio sistema di accumulo dell'acqua (WasserStation) e aggiornato il CoffeeControlCode all'ultima versione, che include anche la ricarica automatica. Se utilizzate la stessa macchina per la costruzione la ricarica funzionerà perfettamente (senza nessuna modifica al codice) poiché i livelli dell'acqua sono stati tarati al serbatoio dell'acqua del Circolo.

Consigliato: