Hur man bygger en egen smart kaffemaskin
HurOm du älskar kaffe, kommer du med största sannolikhet att ha en vacker hemma espressomaskin. Kanske även en Rancilio Silvia. Silvia är en elegant, enkel och robust maskin av hög kvalitet.
En nackdel av denna kaffemaskin är dock att det, som många andra, använder termostater för att styra bryggtemperaturen. Att använda termostater för att få precision och kontinuerlig temperaturkontroll är inte särskilt effektiv.
Det är därför du ser avancerade kommersiella kaffemaskiner använder Proportional-Integral-Derivative (PID) controllers.
Denna hack kommer att visa dig hur man skapar en GUI som kommer att innehålla precisionstemperaturkontroll i en enkel kaffemaskin. Hacking-it-up med hjälp av en Raspberry Pi kommer också att innebära möjligheten att integrera Internet-of-Things i maskinen.
- Prova mer fantastiska Raspberry Pi-projekt
Steg ett kommer att vara att lägga ner ett par dubbla espressor. Då är det dags att komma ner till affärer. Denna hack kommer att kräva lite söta färdigheter i Linux, Kivy (för fronten GUI) och Python.
Men oroa dig inte om du bara är nybörjare - den här handledningen är ett bra sätt att bygga upp dina färdigheter. Du behöver också ett lödstryk, grundläggande elektroniska verktyg och en fast mängd kaffebönor (för egen konsumtion).
Beroende på hur långt du vill gå med byggnaden kan du också skapa en ny frontpanel (även om det här gör det lite dyrare).
Vad du behöver
Hårdvara som krävs för Silvia-Pi-bygget omfattar:
- Raspberry Pi 2
- Raspberry Pi 7-tums pekskärm
- Alla kaffebryggare som kan göra bättre temperaturkontroll
- Solid State Relay (SSR)
- 2x dubbelpol enkel kasta (DPST) reläer
- 2x transistorer och dioder (för förarkretsarna på DPST-reläerna)
- Integrerad strömförsörjning (ditt lands ingång V AC in, 5 V DC ut)
- k-typ termoelement
- 1x termoelementförstärkare (1-tråds MAX31850K)
Varför använder du en SSR? Varför använder du inte ett mekaniskt relä för att styra pannan? Väl…
Detta beror på den potentiella höga växlingshastigheten hos regulatorn. I själva verket är omkopplingshastigheten relativt låg, och vissa low-end-maskiner använder sig av mekaniska reläer. Emellertid misslyckas mekaniska reläer typiskt. SSR: er misslyckas vanligtvis stängda.
Detta är definitivt något att tänka på när du tänker på säkerhet på din ansökan. Dessutom är mekaniska reläer bara bra för ett visst antal cykler. Dessutom gör mekaniska reläer ett ljud, medan SSR är tysta.
För denna applikation är en bra SSR att använda Kudom KSI240D10-L SSR: 10A 240V AC, 4-32V DC.
Temperaturområdet K-typ av termoelement är vanligtvis mellan -250ºC till 1250ºC och noggrann till ± 1ºC. För signalbehandling är K-typen lätt att rymma.
Det finns många olika typer av integrerade kretsar som är förpackade med förstärkare, filtrering, kallkopplingskompensation och analog-till-digitala omvandlare som är speciellt byggda för termoelementet K-typ och är även låga.
På grund av detta är K-typen perfekt för denna kaffemaskinapplikation.
Pekskärmen
För att felsöka, felsöka och bli bekant med funktionaliteten måste du börja med att konfigurera den 7-tums pekskärmen på Raspberry Pi.
Gå till element14-webbplatsen och kolla in deras Raspberry Pi 7-tums Touchscreen Display Tutorial. När du har blivit ansluten, spela en roll med hur vackert Debian, Pi och pekskärmen arbetar tillsammans.
En grafisk användargränssnitt
GUI-specifikationen kommer att vara enligt följande: en realtidsdiagram, en kaffeknapp för att dra ett espresso-skott, en ångknapp för att skumma mjölken och en varmvattenknapp.
Plottningsgrafen gör att du kan se hur effektiv inställningen av din PID-kontroller är genom att inkorporera börvärdesplanen och det faktiska bryggtemperaturområdet - plus det ger din maskin den högteknologiska, precisionskontrollbild som den förtjänar. Espresso-standarden anger trots allt 88 ° C vid grupphuvudutloppet
Bli bekant med Kivy
Kivy kommer att användas för att bygga GUI. Varför? Kivy är baserat på ett enkelt app widget system. Kivys widget system är lätt att räkna ut. Kivy har bra API-support och handledning på Kivys webbplats. Kivy har också en inbyggd inställnings widget manager som använder sig av JSON konfigurationsfiler.
Detta gör byggnadsprogram snabbt och enkelt. Du kan ändra standard Kivy-inställnings widget för att inkludera sömn och uppvakningstider. Detta gör att du kan ställa in grupphuvudet så att det är trevligt och varmt när du går ur sängen och sparar energi under högtider.
Kivy har en super användbar plugin manager kallad Kivy Garden. Kivy har också plattformsfunktionalitet (Linux, Android, IOS, OS X, etc). Kivy Garden har några coola plugin widgets som denna hack kommer att använda, till exempel Graph. Denna hack använder Graph för realtidsplotteren. Kodning med ett FOSS IDE som Eclipse och Secure Shelling i Pi via skrivbordet är ett effektivt sätt att implementera detta hack.
Det betyder att du måste konfigurera Kivy på både skrivbordet och på din Raspberry Pi. Gå vidare och gör det genom att logga in i din terminal och mata in $ pip installera kivy sedan $ pip installera kivy-trädgården följd av $ garden install graph
Bygg din Kivy-app
När Kivy är installerat kan du börja bygga Kivy apps och bli bekant med Kivy-modulerna. Gå till Kivys webbplats och titta igenom API-biblioteket, eller ens följ “första appen” handledning - en Pong app - för att få huvudet runt koden och den allmänna layouten för att bygga Kivy apps.
Här bygger vi en CoffeeApp, som kommer att vara en kombination av Kivy-widgets som BoxLayout, Button, Label, Graph. Så, dags att komma efter det. I coffee.py:
#! / usr / bin / kivy import kivy från kivy.app importera App från kivy.uix.boxlayout import BoxLayout klass CoffeeApp (App): def build (self): # Lägg till föräldra widget root = BoxLayout (orientering = 'horisontal') verticalBtns = BoxLayout (orientering = 'vertikal', size_hint_x = 0,25) # Lägg till barn widgets här och lägg till dem till moderen "root". returnera root # Kör skriptet om __name__ == '__main__': CoffeeApp (). run ()
Ovanstående kod kommer att skapa en stock standard BoxLayout Kivy app med en överordnad widget som heter rot. Du kommer också att märka verticalBtns BoxLayout - Du kommer att använda detta för att separera dina knappar från grafen och visa dem vertikalt i det högra kvartalet av appen.
size_hint_x = 0,25. Du kommer inte att kunna se den här storleken i effekt tills du lägger till grafen senare. Att lägga till knappar och grafer i widgeten är lika enkelt som att skapa widgeten
coffeeButton = knapp (text = 'kaffe')
och lägg sedan till den i överordnad widget:
verticalBtns.add_widget (coffeeButton)
I det här fallet lägger du till de tre knapparna (kaffe, ånga och vatten) genom att upprepa denna kod för varje knapp. Du använder den enkla BoxLayout som hanterar positionen och storleken på knapparna i appens överordnade widgetrots. Därför måste du lägga till verticalBtns till rot widgeten genom att lägga till följande:
root.add_widget (verticalBtns)
Ol 'single line diagram för Silvia Pi bygga. Ser mycket ut som hieroglyfer från det gamla Egypten. Förmodligen för att de arbetade på ett liknande projekt.Knappar, bindningar och händelser
Nu för att få dina tre knappar sorterade. Kör koden och du ser tre knappar som är upptagna vertikalt ner i appen. Om du kör via SSH eller direkt till din Raspberry Pi ser du appen raka direkt till 7-tums pekskärmen.
Försök att trycka på knapparna för att se vad som händer ... Inte mycket? Du kommer se att knapparna ändras från grått till ljusblått, men det handlar om det. Tiden att binda dessa knappar för att få lite funktionalitet. Genom att använda bindningsmetod och definiera on_press () och on_release () metoder du kan ange vad som händer.
Börja med att lägga till funktionalitet till coffeeButton i din kod. Mellan att skapa knapparna och lägga till knapparna till rot, ring följande bindningsmetod genom att lägga till följande kod:
coffeeButton.bind (on_press = self.coffeePress_callback)
och
coffeeButton.bind (on_release = self.coffeeRelease_callback)
Nu behöver du definiera metoderna inom CoffeeApp-klassen:
coffeePress_callback (själv, * args)
och
coffeeRelease_callback (själv, * args)
Gör detta ovanför byggnadsmetoden i klassen. Lägg till några skriva ut uttalanden där som spårare för att se om något händer på press och släpp, och kör appen igen.
Å nej! Ser ut som R2-D2 genomgår hjärtekirurgi! Nah, inte riktigt ... Det är Pi som smiddas in i Silvia tillsammans med de nödvändiga reläerna och förarkretsarna.Du kommer nu hitta på att trycka på den kaffeknapp som din skriva ut uttalanden kommer att matas ut till terminalen. Upprepa ovanstående steg igen för ång- och vattenknapparna.