Innehållsförteckning:

JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare): 9 steg (med bilder)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare): 9 steg (med bilder)

Video: JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare): 9 steg (med bilder)

Video: JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare): 9 steg (med bilder)
Video: Sun javastation "krups" booting Debian GNU/Linux 2024, Juli
Anonim
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)
JavaStation (självpåfyllande helautomatisk IoT-kaffebryggare)

Målet med detta projekt var att göra en helautomatisk röststyrd kaffebryggare som automatiskt fyller på sig själv med vatten och allt du verkligen behöver göra är att byta ut kunderna och dricka ditt kaffe;)

Steg 1: Introduktion

Introduktion
Introduktion

Eftersom detta var min andra kaffemod har jag lärt mig mycket i processen, särskilt att ju mer komplex maskin du ändrar desto fler problem/buggar kommer du att stöta på under den dagliga driften. Den föregående maskinen var bara en enkel gammal 1 switch -kaffebryggare med ett relämod.

Circolo (helautomatisk version) är Dolce Gustos förstklassiga maskin. Jag var tvungen att lägga timmar på att leta efter rätt maskin eftersom alla andra maskiner från denna serie med den övre mekaniska spaken växlar mellan kallt och varmt vatten som det visas på bilden.

Steg 2: Välj rätt maskin

Välj rätt maskin
Välj rätt maskin

Min basmaskin är inte bara helautomatisk men den har anmärkningsvärda funktioner som att stänga av automatiskt efter 5 minuter och komma ihåg den sista kaffemängden (vilket kommer att göra det mycket lättare senare i moddningen). Maskinens grundläggande funktion:

1, strömknappen tryckt

2, kallt vattenknapp tryckt (det kommer omedelbart att sprida vatten till koppen)

3, varmvattenknappen tryckt (den värmer upp pannan ~ 20-60 sek och börjar släppa ut varmvatten till koppen) Strömlampan blinkar rött under vänteläget och blir sedan grönt permanent när pannan är klar.

Denna maskin har också möjlighet att upptäcka följande fel:

Vattentanken är tom

Kopphållaren är inte på plats

I båda fallen blinkar strömlampan mellan rött/grönt.

Steg 3: Hårdvaruändringar

Hårdvaruändringar
Hårdvaruändringar

I detta skrivande kommer jag inte att beskriva demonteringen och återmonteringen av fodralet eftersom det finns videor om det på YouTube. Huvudmikroprocessorn är dold precis under huvudpanelen där de två omkopplarna är. Pannan är på höger sida av höljet separerad från allt annat, pumpen och strömförsörjningspanelen är på vänster sida.

Kaffemaskin är en tung miljö för elektronik, ingen av sidorna är perfekt lämpade att integrera en krets till. Höger vid pannan har mer utrymme men du kommer att hantera värme, uppenbarligen kunde kretsen inte vidröra pannplattan eller ens vara nära den. Jag har valt strömförsörjning / pumpsidan men här måste du hantera tung resonans från membranpumpens funktion som kan förstöra styrkretsen / få ledningar att glida ur sina kontakter över tid.

Strömförsörjningspanelen innehåller inget användbart men kan användas för att sänka av en stabil +5V (ytterligare en tumme upp för denna maskin) som kan anslutas direkt till Arduinos VIN -stift genom att kringgå den inbyggda spänningsregulatorn.

Snabb maskinvarulista (inte fullständig stycklista, inkluderar inte grunderna):

  1. Dolce Gusto Circulo helautomatisk version
  2. 5V 4-kanals relämodul med optokopplare för PIC AVR DSP (jag föreslår att du använder 4x SIP-1A05 Reed Switch Relay)
  3. Arduino Micro (jag föreslår att du använder SparkFun Pro Micro eller nyare i framtiden)
  4. 2PCS 4n35 FSC Optokopplare Fototransistor
  5. 1/2 "elektrisk magnetventil för vattenluft N/C normalt stängd DC 12V
  6. Ultraljudsmodul HC-SR04 Avståndsmätande givarsensor (köp några tillägg, du får se senare varför)
  7. 2st Raindrop Fuktighetsdetekteringssensormodul Regndetektering för Arduino
  8. 1 Xbee
  9. Rörbeslag för vattenblock (kan variera beroende på hus, bäst att köpa det i järnaffär och sätta ihop allt där innan du köper)

Steg 4: Huvudanslutningar och styrkort

Huvudanslutningar och styrkort
Huvudanslutningar och styrkort
Huvudanslutningar och styrkort
Huvudanslutningar och styrkort
Huvudanslutningar och styrkort
Huvudanslutningar och styrkort

Följande kretspunkter måste anslutas:

1, Hot -knapp

2, kall knapp

3, Röd led

4, grön led

5, huvudströmbrytare

6, delad GND

Tyvärr har jag tappat mina anteckningar/bilder om var jag ska löda dessa på tavlan men alla kan enkelt spåras tillbaka med en multimeter (använd bara diodtestläge för att spåra trådarna tillbaka). Lödningen var inte för hård, välj punkter med SMD -ben och löd trådarna där.

De röda/gröna lysdioderna sitter båda bredvid varandra vid strömbrytaren. De behövs för att bestämma maskintillstånd (påslagen, redo att göra kaffe (pannan värms upp), fel). Jag har tagit bort dem direkt från moderkortet, för det är svårt att krångla med den lilla kretsen runt strömbrytaren.

Jag använde 4N35: s optokopplare för att säkert kunna ansluta till Arduino och läsa LED: s tillstånd. Den ursprungliga idén var att använda 5 av dem och göra både avläsningar och omkopplare också (gör en helt tyst krets). Tyvärr kunde detta chip inte generera tillräckligt lågt motstånd för att efterlikna ett knapptryck så jag tvingades använda reläer. Jag använde den generiska 4-kanals relämodulen vad jag hade i handen men om jag skulle behöva göra om det här projektet skulle jag bara använda små Reed-reläer (SIP-1A05 Reed Switch Relay med interna flyback-dioder) som kan anslutas direkt till Arduino-utgången stift (~ 7mA belastning) så att allt kan sättas på en 2 -nivåskortstruktur.

De 5 små kablarna kan enkelt tas ner bredvid nätsladdarna under matningskortet.

För att använda utrymmet mer effektivt i maskinen bestämde jag mig för att dela elektroniken till 2 stora paneler:

Den vänstra är huvudstyrkortet, höger (vad jag kallar kommunikationskortet) håller Xbee och även om det inte visas på bilden kläms de 2 vattensensorerna (för överflödesdetektering) bakom den. På toppen är realtidsklockan (valfri för drifttid:)) och det 4 -kanaliga reläkortet som tar plats bredvid pumpen i botten inlindad i svamp, även limade lite för att skydda mot resonans.

För kommunikationskortet störde jag mig inte på att göra PCB bara använde en vanlig brödbräda eftersom det inte händer så mycket där. Den har 6 anslutningar till huvudkortet:

Vcc (5V), GND, Xbee (TX), Xbee (RX), Vattensensor1 (Data), Vattensensor2 (Data)

Steg 5: Kontroll av vattenflödet och påfyllningsmekanismen

Vattenflödeskontroll och påfyllningsmekanism
Vattenflödeskontroll och påfyllningsmekanism
Vattenflödeskontroll och påfyllningsmekanism
Vattenflödeskontroll och påfyllningsmekanism
Vattenflödeskontroll och påfyllningsmekanism
Vattenflödeskontroll och påfyllningsmekanism

Jag har konstruerat denna maskin med säkerhet i åtanke, vilket gör det omöjligt för angripare/funktionsstörningar att orsaka allvarliga vattenskador på huset eftersom maskinen skulle anslutas till både kranen och Internet 24/7. Detta är vad följande 555 skyddskrets gör ovanpå solenoiden.

Observera också att solenoiden fungerar från en 12V strömförsörjning vad jag fortfarande lyckades klämma in i botten av kaffemaskinen bredvid pumpen och reläkortet. För att inte slösa på strömmen kopplar reläkortet med 4 kanaler 230V huvudströmmen direkt till adaptern som sedan slår på solenoiden. Det finns naturligtvis några mikrosekunder avstängningsfördröjning vad du måste beräkna för magnetfältets kollaps både på solenoiden + på adaptern när du drar ut kontakten.

Jag använder en standard 3,5 mm jack för att ansluta det externa vattenblocket med en lång 3 m tråd och ett PVC -rör med liten diameter som kommer ut från blocket som går till kaffebryggaren.

Vattentankens ovansida borras ut för att rymma detta rör som sedan förs ner till botten av tanken. Jag skulle notera att det är mycket viktigt att mata röret ner till botten på sidan utan att gå igenom mitten och störa ultraljudssensorerna.

Efter att solenoiden slås på stängs kretsen av automatiskt efter ~ 4 sekunder (vilket borde vara mer än tillräckligt med tid för att fylla tanken till fullt) och den förblir i detta tillstånd tills nästa påslagningscykel. Denna krets är den sista försvarslinjen mot fel och fungerar helt fristående från kaffebryggaren. Om reläet i maskinen skulle misslyckas och förbli stängt kan vattnet översvämma huset, med detta skydd kan det aldrig hända.

Om detta fortfarande inte är tillräckligt bra för dig eller om det är omöjligt att stänga vattnet eller om du inte vill busa med vattenblock, kolla in mitt WasserStation -projekt som byggdes exakt för att förlänga kaffemaskinens lilla vattentank.

Steg 6: Detektering av översvämningar

Översvämningsdetektering
Översvämningsdetektering
Översvämningsdetektering
Översvämningsdetektering
Översvämningsdetektering
Översvämningsdetektering

Det finns ytterligare 2 vattensensorer för skydd:

  • Sensor1: på baksidan av tanken för överflödesdetektering från tanken
  • Sensor2: längst ner på kaffemaskinen för övervakning av koppflöde

Båda dessa sensorer kommer att utlösa ett avbrott som stänger av vattnet omedelbart, tänder fellampan och avbryter programkörningen för att förhindra en attack som att göra en miljon kaffe och översvämma huset på det sättet. Efter att programmet avslutat kommer maskinen inte längre att svara på någonting och måste manuellt strömförsörjas.

Om du undrar vad som skulle hända om ultraljudssensorn skulle bli översvämmad (det hände en gång:))

Det gav tillbaka vattennivån så här i ett par dagar, men även efter att det torkat ut blev det aldrig mer korrekt och jag var tvungen att byta ut det. Maskinen var konstruerad för att köra från det kalla kranvattnet så att ingen ånga från hett skulle skada sensorn. Denna sensor är bara exakt tills vattennivån är 2-3 cm från den.

Tankens elliptiska form försvårade beräkningar av vattennivåer så att de mättes och hårdkodades i programmet för att motsvara procenttal.

Steg 7: Testning och slutmontering

Testning och slutmontering
Testning och slutmontering
Testning och slutmontering
Testning och slutmontering
Testning och slutmontering
Testning och slutmontering

Maskinen i sitt slutliga tillstånd, nästan helt döljer spåren efter eventuell hackning och om de 3 statusindikatorlamporna och USB -felsökningsporten inte skulle vara där kan du inte berätta att något annat händer inne medan det till och med kan hysa en Wifi -ansluten Quake server:)

När jag ändrar enheter har jag alltid manuell användning högsta prioritet. Efter hacket är maskinen helt användbar för alla precis som den var, förutom att vattentanken inte lätt kan tas bort. Om du inte avslutar hela vattenautomatiseringsdelen av konstruktionen kan maskinen bara fyllas på med en liten rör + trattkombination.

Steg 8: Kaffekontrollkod

Kaffekontrollkod
Kaffekontrollkod

Hitta hela Arduino -källkoden nedan.

Kort förklaring av koden:

Huvudslingan kallar funktionen xcomm (), som är ansvarig för kommandobearbetningen, tillagning av kaffe, startar/stänger av maskinen.

Koden nedan når man bara vid manuell kontroll. Det ökar en staträknare för att hålla reda på hur många kaffe som gjorts och fyller vattentanken automatiskt.

Kommandon kan skickas via Xbee eller via USB -porten (Debug måste aktiveras i början). När kommunikationen kommer in antingen blinkar den orange lampan en sekund för att visa nätverksaktivitet. Följande kommandon implementeras:

1, CMSTAT - frågestatistik från maskinen

Maskinen lagrar statistik om hur många varma/kalla/manuella kaffe som gjorts och får också drifttiden från RTC som inte överflödar efter 3x dagar så kan gå upp till år: P

2, CMWSTART - börjar göra kaffe och varma drycker med varmt vatten

3, CMCSTART - börjar göra iste och kalla drycker med kallt vatten

De varma och kalla processerna börjar med att ringa till standby () -funktionen som gör ytterligare kontroller och sedan utlöser ett strömknapptryck. Efter detta väntar programmet på det gröna ljuset (när pannan är uppvärmd) emulerar sedan varm/kall knapptryckning. Efter detta väntar det 50 sekunder (vilket är mer än tillräckligt för även den största koppen kaffe) stänger sedan av strömmen. Detta skulle inte ens vara nödvändigt eftersom den här utmärkta maskinen skulle stängas av automatiskt 5 minuter efter kaffet, men varför slösa ström? För övrigt är maskinens standbyförbrukning även efter ändringen mindre än 2 Watt.

Vattenpåfyllning och säkerhet

Denna maskin är utformad med säkerhet i åtanke, så det skulle vara omöjligt för en angripare som får kontroll att översvämma hela huset med vatten. Ett hårdvarufel skulle inte heller leda till allvarliga skador. Bredvid hårdvarusensorerna finns skydd inbyggt i koden för påfyllningen. En räknare som utlöser ISR -rutinen om maskinen inte fylls på om x sekunder (detta kan till exempel hända om ultraljudssensorn skulle fungera fel och ge ut 20% efter x sekunder när påfyllningen påbörjats).

Det finns ingen autentisering, vem som helst kan använda maskinen inom radioområdet som kan kommandona så jag har ändrat standard Xbee piconet ID till något annat, även ERR_INVALIDCMD kan kommenteras och maskinen kommer att ignorera alla okända kommandon.

Buggar

Dubbel kaffebugg: det mest irriterande med detta fel är att det började hända några månader efter att ha använt maskinen med samma kod. Efter att kaffekommandot utfärdades gjorde det kaffet, stängde av och slog på igen och fortsatte att göra 1 kaffe till med samma mönster.

Jag var tvungen att börja felsöka kommandodupliceringen från Android-nivån eftersom jag har implementerat omskicka till koden vid paketförlust. Det visade sig att varken Android, C -kontrollprogramvaran eller Linux -kärnan på raspi2 var ansvarig för detta snarare Xbee.

Efter att ha utfärdat ekot "CMCSTART">/dev/ttyACM0 på kontrollnoden kommer det ut två gånger till den andra änden. Jag drog slutsatsen att mitt 2,4 GHz -spektrum i mitt hem började bli mättat av de många radioenheterna i det här intervallet vilket gjorde att en Xbee åberopade någon form av återutsändning i radiolagret och data skickades två gånger (inte alltid). När det första kommandot kom i maskinerna började xcomm () -funktionen att bearbeta det, men ett andra kom in direkt efter det som väntade i Xbees -bufferten och när slingan var klar började det bearbeta det andra kommandot. För att komma runt detta problem har jag infört 3 trösklar i koden för att göra det omöjligt att göra mer än 1 kaffe på 2 minuter. Det finns också en gräns för CMSTAT men för att inte störa C/Android -kontrollkoden kommer det helt enkelt att krossa svaren i 2 sekunder.

Den sista tröskeln sattes in för den manuella kaffedisken, för när maskinen har nått redo -läget (pannan värms upp, grönt ljus) har den loggat den gröna händelsen hundratals gånger och stängt kaffet.

Steg 9: Designhänsyn och slutliga tankar

Efter mycket besvär från Xbee -kommunikationen skulle jag inte rekommendera Xbee för detta projekt. Använd antingen den vanliga billiga 433Mhz -radion med VirtualWire och sänkta Bps för stabilitet eller bädda in en Raspberry PI Zero med Wifi -anslutning direkt i kaffemaskinen.

Som datumet visar är det ett gammalt projekt så jag ber om ursäkt för att det saknas små detaljer som kopplingen från styrkretsen till de exakta stiftbenen på moderkortet. Detta projekt kräver en viss nivå av teknisk kunskap för att göra det på egen hand. Om du hittar några fel/problem eller vill bidra till denna handledning, vänligen meddela mig.

Kontrollprogramvaran, metoder för röststyrning är för en annan del som gör det möjligt att ha ditt kaffe klart med bara ett röstkommando innan du ens går upp ur sängen.

Jag har nu slutfört dokumentationen av mitt vattenlagringssystem (WasserStation) och uppdaterat CoffeeControlCode till den senaste versionen, som också innehåller den automatiska påfyllningen. Om du använder samma maskin för bygget fungerar påfyllningen felfritt (utan någon ändring av koden) eftersom vattennivåerna kalibrerades till vattentanken på Circolo.

Rekommenderad: