Inhoudsopgave:

JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat): 9 stappen (met afbeeldingen)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat): 9 stappen (met afbeeldingen)

Video: JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat): 9 stappen (met afbeeldingen)

Video: JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat): 9 stappen (met afbeeldingen)
Video: Sun javastation "krups" booting Debian GNU/Linux 2024, Juli-
Anonim
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)
JavaStation (zelfvullend volautomatisch IoT-koffiezetapparaat)

Het doel van dit project was om een volautomatisch spraakgestuurd koffiezetapparaat te maken dat zichzelf automatisch bijvult met water en het enige wat je echt hoeft te doen is de klanten vervangen en je koffie opdrinken;)

Stap 1: Inleiding

Invoering
Invoering

Omdat dit mijn tweede koffiemod was, heb ik veel geleerd tijdens het proces, met name dat hoe complexer je de machine aanpast, hoe meer problemen/bugs je zult tegenkomen tijdens de dagelijkse werkzaamheden. De vorige machine was gewoon een eenvoudig oud koffiezetapparaat met 1 schakelaar en een relaismod.

De Circolo (volautomatische uitvoering) is de topklasse premium machine van Dolce Gusto. Ik moest urenlang zoeken naar de juiste machine omdat alle andere machines uit deze serie de bovenste mechanische hendel gebruiken om te schakelen tussen koud en warm water, zoals op de foto te zien is.

Stap 2: Kies de juiste machine

Kies de juiste machine
Kies de juiste machine

Mijn basismachine is niet alleen volautomatisch, maar heeft opmerkelijke eigenschappen, zoals het automatisch uitschakelen na 5 minuten en het onthouden van de laatste hoeveelheid koffie (wat het later in het modden een stuk gemakkelijker zal maken). De basisbediening van de machine:

1, aan / uit-knop ingedrukt

2, koudwaterknop ingedrukt (het zal onmiddellijk water naar de beker verspreiden)

3, Heetwaterknop ingedrukt (de boiler verwarmt ~20-60 sec en begint heet water af te geven aan het kopje) Het aan/uit-lampje knippert rood tijdens de standby-periode en wordt dan permanent groen als de boiler klaar is.

Deze machine kan ook de volgende fouten detecteren:

Watertank is leeg

Bekerhouder is niet op zijn plaats

In beide gevallen knippert het aan/uit-lampje tussen rood/groen.

Stap 3: Hardwarewijzigingen

Hardwarewijzigingen
Hardwarewijzigingen

In dit schrijven zal ik niet ingaan op de demontage en hermontage van de behuizing, omdat er video's over zijn op YouTube. De belangrijkste microprocessor is verborgen onder het hoofdpaneel waar de 2 schakelaars zijn. De ketel is aan de rechterkant van de kast gescheiden van al het andere, het pomp- en voedingspaneel bevindt zich aan de linkerkant.

Koffiemachine is een zware omgeving voor elektronica, geen van de zijkanten is perfect geschikt om een circuit in te integreren. Rechts bij de ketel heb je meer ruimte maar je krijgt te maken met warmte, uiteraard kan het circuit de ketelplaat niet raken of zelfs maar in de buurt komen. Ik heb de voeding/pompzijde gekozen, maar hier heb je te maken met zware resonantie afkomstig van de werking van de membraanpomp die het stuurcircuit kan beschadigen / ervoor kan zorgen dat draden na verloop van tijd uit hun connectoren glippen.

Het voedingspaneel bevat niets nuttigs, maar kan worden gebruikt om een stabiele +5V uit te lekken (nog een duim omhoog voor deze machine) die direct kan worden aangesloten op de VIN-pin van de Arduino zonder de ingebouwde spanningsregelaar te omzeilen.

Snelle hardwarelijst (niet volledige stuklijst, bevat geen basis):

  1. Dolce Gusto Circulo volautomatische versie
  2. 5V 4-kanaals relaismodule met optocoupler voor PIC AVR DSP (ik raad aan om 4x SIP-1A05 Reed Switch Relay te gebruiken)
  3. Arduino Micro (ik raad aan om in de toekomst SparkFun Pro Micro of nieuwer te gebruiken)
  4. 2PCS 4n35 FSC Optocouplers Fototransistor
  5. 1/2“Elektrisch Magneetventiel Voor Water Lucht N/C Normaal Gesloten DC 12V
  6. Ultrasone module HC-SR04 Transducersensor voor afstandsmeting (koop wat extra's, u zult later zien waarom)
  7. 2st Raindrop Vochtigheid Detectie Sensor Module Regen Detectie voor Arduino
  8. 1 Xbee
  9. Pijpfittingen voor waterblokken (kan variëren afhankelijk van het huis, het is het beste om het in de ijzerhandel te kopen en het daar allemaal samen te voegen voordat je het koopt)

Stap 4: Hoofdaansluitingen en de controllerkaart

Hoofdaansluitingen en de controllerkaart
Hoofdaansluitingen en de controllerkaart
Hoofdaansluitingen en de controllerkaart
Hoofdaansluitingen en de controllerkaart
Hoofdaansluitingen en de controllerkaart
Hoofdaansluitingen en de controllerkaart

De volgende schakelpunten moeten worden aangesloten:

1, Hot-knop:

2, Koude knop

3, rode led

4, groene led

5, Hoofdschakelaar aan:

6, Gedeelde GND

Helaas ben ik mijn aantekeningen/foto's kwijt over waar deze op het bord moeten worden gesoldeerd, maar ze kunnen allemaal gemakkelijk worden getraceerd met een multimeter (gebruik gewoon de diodetestmodus om de draden terug te traceren). Het solderen was niet al te moeilijk, kies punten met SMD-pootjes en soldeer daar de draden.

De Rood/Groene LED's bevinden zich beide naast elkaar bij de aan/uit-schakelaar. Ze zijn nodig om de machinestatussen te bepalen (aan, klaar om koffie te zetten (boiler opgewarmd), fout). Ik heb ze direct van het moederbord gehaald, omdat het lastig is om te prutsen aan het kleine circuit rond de aan/uit-schakelaar.

Ik gebruikte de optocouplers van 4N35 om veilig te communiceren met de Arduino en de statussen van de LED's te lezen. Het oorspronkelijke idee was om er 5 te gebruiken en zowel de metingen als de schakelaarbedieningen te doen (maak een volledig stil circuit). Helaas kon deze chip niet laag genoeg weerstand genereren om een druk op de knop na te bootsen, dus moest ik relais gebruiken. Ik gebruikte de generieke 4-kanaals relaismodule die ik in de hand had, maar als ik dit project opnieuw zou moeten doen, zou ik gewoon kleine Reed-relais gebruiken (SIP-1A05 Reed Switch Relay met interne flyback-diodes) die direct kunnen worden aangesloten op de Arduino-uitgang pinnen (~7mA belasting), zodat alles op een bordstructuur met 2 niveaus kan worden geplaatst.

De 5 kleine kabels kunnen eenvoudig naast de netsnoeren onder het voedingsbord naar beneden worden gehaald.

Om de ruimte in de machine efficiënter te gebruiken, heb ik besloten om de elektronica op te splitsen in 2 grote panelen:

Links is het hoofdbesturingsbord, rechts (wat ik het communicatiebord noem) bevat de Xbee en hoewel het niet op de foto wordt getoond, zijn de 2 watersensoren (voor overloopdetectie) erachter geperst. Aan de bovenkant de real-time klok (optioneel voor uptime:)) en het 4-kanaals relaisbord dat naast de pomp aan de onderkant is gewikkeld in spons, ook een beetje gelijmd om te beschermen tegen de resonantie.

Voor het communicatiebord heb ik niet de moeite genomen om PCB gewoon een gewoon breadboard te gebruiken omdat daar niet veel aan de hand is. Het heeft 6 aansluitingen op het moederbord:

Vcc (5V), GND, Xbee (TX), Xbee (RX), Watersensor1 (Data), Watersensor2 (Data)

Stap 5: Waterstroomregeling en het bijvulmechanisme

Waterstroomregeling en het bijvulmechanisme
Waterstroomregeling en het bijvulmechanisme
Waterstroomregeling en het bijvulmechanisme
Waterstroomregeling en het bijvulmechanisme
Waterstroomregeling en het bijvulmechanisme
Waterstroomregeling en het bijvulmechanisme

Ik heb deze machine ontworpen met het oog op veiligheid, waardoor het voor aanvallers/storingen onmogelijk is om ernstige waterschade aan het huis te veroorzaken, aangezien de machine 24/7 aangesloten zou zijn op zowel de kraan als het internet. Dit is wat het volgende 555-beveiligingscircuit bovenop de solenoïde doet.

Merk ook op dat de solenoïde werkt op een 12V-voeding wat ik nog steeds in de bodem van de koffiemachine heb weten te persen naast de pomp en het relaisbord. Om geen stroom te verspillen, schakelt het 4-kanaals relaisbord de 230V-netvoeding rechtstreeks naar de adapter die vervolgens de solenoïde inschakelt. Er is natuurlijk een uitschakelvertraging van een paar microseconden die je moet berekenen voor het instorten van het magnetische veld, zowel op de solenoïde + op de adapter als op het trekken van de stekker.

Ik gebruik een standaard 3,5 mm-aansluiting om het externe waterblok aan te sluiten met een lange draad van 3 m en een PVC-buis met een kleine diameter die uit het blok komt en naar het koffiezetapparaat gaat.

De bovenkant van de watertank wordt uitgeboord om plaats te bieden aan deze pijp die vervolgens naar de bodem van de tank wordt gebracht. Ik merk op dat het erg belangrijk is om de pijp aan de zijkant naar beneden te voeren zonder door het midden te gaan en de ultrasone sensoren te verstoren.

Nadat de solenoïde is ingeschakeld, schakelt het circuit het automatisch uit na ~ 4 seconden (wat meer dan genoeg tijd zou moeten zijn om de tank tot vol te vullen) en het blijft in deze toestand tot de volgende AAN-cyclus. Dit circuit is de laatste verdedigingslinie tegen storingen en werkt volledig zelfstandig vanaf het koffiezetapparaat. Als het relais in de machine zou falen en gesloten zou blijven, zou het water het huis kunnen overstromen, met deze bescherming kan dit nooit gebeuren.

Als dit nog steeds niet goed genoeg voor je is of het is onmogelijk om het water af te sluiten of je wilt niet met waterblokken rommelen, bekijk dan mijn WasserStation-project dat precies hiervoor is gebouwd om het kleine waterreservoir van de koffiemachine te verlengen.

Stap 6: Overstromingsdetectie

Overstromingsdetectie
Overstromingsdetectie
Overstromingsdetectie
Overstromingsdetectie
Overstromingsdetectie
Overstromingsdetectie

Er zijn 2 extra watersensoren ter bescherming:

  • Sensor1: aan de achterkant van de tank voor overloopdetectie vanuit de tank
  • Sensor2: aan de onderkant van de koffiemachine voor detectie kopjes overloop

Beide sensoren zullen een onderbreking activeren die het water onmiddellijk afsluit, het foutlampje aanzet en de uitvoering van het programma afbreekt om een aanval te voorkomen, zoals het zetten van een miljoen koffie en het huis op die manier onder water zetten. Nadat het programma is gestopt, reageert de machine nergens meer op en moet deze handmatig worden aangezet.

Voor het geval je je afvraagt wat er zou gebeuren als de ultrasone sensor overstroomd zou raken (het is een keer gebeurd:))

Het gaf een paar dagen zo het waterpeil terug, maar zelfs nadat het was opgedroogd, was het nooit meer nauwkeurig en moest ik het vervangen. De machine is ontworpen om uit het koude kraanwater te lopen, zodat geen stoom van heet water de sensor zou beschadigen. Deze sensor is alleen nauwkeurig totdat het waterniveau 2-3 cm verwijderd is.

De elliptische vorm van de tank maakte het berekenen van het waterpeil moeilijk, dus werden ze gemeten en hardgecodeerd in het programma om overeen te komen met percentages.

Stap 7: Testen en eindmontage

Testen en eindmontage
Testen en eindmontage
Testen en eindmontage
Testen en eindmontage
Testen en eindmontage
Testen en eindmontage

De machine in zijn definitieve staat, die de sporen van hacking bijna volledig verbergt en als de 3 statusindicator-LED's en de USB-foutopsporingspoort er niet zouden zijn, zou je niet kunnen zien dat er iets anders aan de hand is, terwijl er zelfs een wifi-verbinding in zou kunnen zitten Quake-server:)

Wanneer ik apparaten aanpas, heb ik altijd handmatig gebruik een topprioriteit. Na de hack is de machine weer volledig bruikbaar voor iedereen zoals hij was, behalve dat de watertank niet gemakkelijk kan worden verwijderd. Tenzij u het volledige waterautomatiseringsgedeelte van het ontwerp voltooit, kan de machine op dit punt alleen worden gevuld met een combinatie van kleine pijp + trechter.

Stap 8: Koffiecontrolecode

Koffiecontrolecode
Koffiecontrolecode

Vind de volledige Arduino-broncode hieronder bijgevoegd.

Korte uitleg van de code:

De hoofdlus roept de functie xcomm() aan, die verantwoordelijk is voor de verwerking van opdrachten, het zetten van de koffie en het in- en uitschakelen van de machine.

Onderstaande code wordt alleen bereikt bij handmatige bediening. Het verhoogt een stat-teller om bij te houden hoeveel koffie er is gezet en vult het waterreservoir automatisch.

Commando's kunnen via de Xbee of via de USB-poort worden verzonden (Debug moet aan het begin worden ingeschakeld). Wanneer communicatie via een van beide binnenkomt, knippert de oranje led een seconde om netwerkactiviteit aan te geven. De volgende commando's zijn geïmplementeerd:

1, CMSTAT - statistieken van de machine opvragen

De machine slaat statistieken op over hoeveel warme/koude/handmatige koffies zijn gemaakt en krijgt ook de uptime van de RTC die niet overloopt na 3x dagen, dus kan oplopen tot jaren: P

2, CMWSTART – begint met het maken van koffie en warme dranken met heet water

3, CMCSTART – begint met het maken van ijsthee en koude dranken met koud water

De warme en koude processen beginnen met het aanroepen van de stand-by()-functie die verdere controles uitvoert en vervolgens een druk op de aan / uit-knop activeert. Hierna wacht het programma op het groene lampje (wanneer de ketel is opgewarmd) en emuleert het de druk op de warm/koud-knop. Hierna wacht hij 50 seconden (wat meer dan genoeg is voor zelfs de grootste kop koffie) en schakelt dan de stroom uit. Dit zou niet eens nodig zijn, aangezien deze uitstekende machine 5 minuten na het zetten van de koffie automatisch zou uitschakelen, maar waarom energie verspillen? Overigens is het standby-stroomverbruik van de machine zelfs na de wijziging minder dan 2 Watt.

Water bijvullen en veiligheid

Deze machine is ontworpen met het oog op veiligheid, dus het zou onmogelijk zijn voor een aanvaller die controle krijgt om het hele huis met water te laten overstromen. Een hardwarestoring zou ook niet leiden tot ernstige schade. Naast de hardware sensoren zijn er beveiligingen ingebouwd in de code voor de navulling. Een teller die de ISR-routine activeert als de machine niet binnen x seconden wordt bijgevuld (dit kan bijvoorbeeld gebeuren als de ultrasone sensor niet goed werkt en na x seconden 20% geeft nadat het bijvullen is gestart).

Er is geen authenticatie, iedereen kan de machine binnen radiobereik gebruiken die de commando's kent, dus ik heb de standaard Xbee piconet-ID gewijzigd in iets anders, ook de ERR_INVALIDCMD kan worden becommentarieerd en de machine negeert onbekende commando's.

Bugs

Dubbele koffiebug: het meest irritante aan deze bug is dat deze een paar maanden na gebruik van de machine met dezelfde code begon op te treden. Nadat het koffiecommando was gegeven zette het de koffie, zette het uit en weer aan en ging verder met het zetten van nog 1 koffie met hetzelfde patroon.

Ik moest beginnen met het debuggen van de opdrachtduplicatie vanaf het Android-niveau omdat ik het opnieuw verzenden naar de code heb geïmplementeerd in geval van pakketverlies. Het bleek dat noch de Android, C-besturingssoftware of de Linux-kernel op de raspi2 hiervoor verantwoordelijk waren, eerder de Xbee.

Na het geven van echo "CMCSTART">/dev/ttyACM0 op het besturingsknooppunt, komt het twee keer naar het andere uiteinde. Ik kwam tot de conclusie dat mijn 2,4 Ghz-spectrum in mijn huis verzadigd begon te raken door de vele radioapparaten in dit bereik, waardoor een Xbee een soort van opnieuw verzenden in de radiolaag opriep en de gegevens twee keer werden verzonden (niet altijd). Zodra de eerste opdracht binnenkwam, begon de xcomm()-functie van de machine het te verwerken, maar een tweede kwam binnen, waarna hij in de Xbees-buffer wachtte en toen de lus eindigde, begon het de tweede opdracht te verwerken. Om dit probleem te omzeilen heb ik 3 drempels in de code geïntroduceerd om het onmogelijk te maken om meer dan 1 koffie in 2 minuten te zetten. Er is ook een limiet voor de CMSTAT, maar om de C/Android-besturingscode niet te verstoren, worden de reacties eenvoudig gedurende 2 seconden onderdrukt.

De laatste drempel werd ingevoerd voor de handmatige koffieteller, omdat zodra de machine de gereed-status heeft bereikt (ketel opgewarmd, groen licht) deze de groene gebeurtenis honderden keren heeft geregistreerd en de koffietelling heeft verhoogd.

Stap 9: Ontwerpoverwegingen en laatste gedachten

Na veel problemen met de Xbee-communicatie zou ik Xbee niet aanbevelen voor dit project. Gebruik de standaard goedkope 433Mhz-radio met VirtualWire en verlaagde Bps voor stabiliteit of sluit een Raspberry PI Zero met wifi-verbinding rechtstreeks in de koffiemachine in.

Zoals de datum laat zien, is het een oud project, dus mijn excuses voor het ontbreken van kleine details, zoals de verbinding van het besturingscircuit naar de precieze pin-poten op het moederbord. Dit project vereist een bepaald niveau van technische kennis om het zelf te kunnen doen. Als je bugs/problemen tegenkomt of een bijdrage wilt leveren aan deze tutorial, laat het me dan weten.

De besturingssoftware, methoden voor stembesturing is voor een ander onderdeel dat het mogelijk maakt om je koffie klaar te hebben met slechts een spraakopdracht voordat je zelfs maar uit bed komt.

Ik heb nu de documentatie van mijn wateropslagsysteem (WasserStation) voltooid en de CoffeeControlCode bijgewerkt naar de nieuwste versie, die ook de automatische vulling omvat. Als u dezelfde machine gebruikt voor het bouwen, werkt de vulling feilloos (zonder enige wijziging van de code) omdat de waterstanden zijn gekalibreerd op de watertank van de Circolo.

Aanbevolen: