Introduction: Soup Machine

Soup Machine

Good day everyone in this instructable i will explain how i created my own soup dispenser using the following items.In the pdf you can see my bill of materials.



· Raspberry Pi 3B+

· Temperature sensor (Waterproof, Onewire)

· Force sensing resistor

· Ultrasonic sensor

· Servo (x2)

· MCP3008


· Potentiometer

· Waterpump

· Transistor

· Diode

· Relay

· Button (x4)

· Resistor 2.2k Ohm

· Resistor 3.3k Ohm

· Resistor 4.7k Ohm

· Resistor 1k Ohm (x2)

· Resistor 220 Ohm (x3)

· Wires 5 meter

· Heat shrink tubing

· Hose 30 cm

· Wooden planks 2m²

· Glue

· Screws

· Metal corner support

· Paint (black, white and red)

· Wooden letters and figures

· Funnel (x2)

· Split water pipe

· Distribution plug


· Soldering iron

· Wire strippers

· Wire cutters

· Glue gun

· Drilling machine

· Sawing machine

· Laser cutter

Step 1: Making the Circuit

In the pictures above you can see my circuit. On the circuit you see a DS18B20 that's is my temperature sensor so we can measure the temperature in the water. Next to that you can see a dc motor with a diode this is my pump. Near that you can see the relais so we can turn our heating element on and off. There is also a MCP3008 this is for our force sensing resistor. With this we are able to know if there is a cup underneath our maker or not. You should also see 2 servo's these are needed for our powder supply. The US-100 CSC is an ultrasonic sensor this can measure how much water we need to pump into the cup. At last we have our 3 buttons and lcd these are needed to interact with the users.

Step 2: Making the Database

My database is running on my raspberry pi. As you can see i have three entities in the top left i have an entity named temperature with two attributes idtemperature and value. Underneath that i have an entity named taste with 5 attributes: idtaste, name, picture, mainpicture and discription. Next to that we have our last entity name history in this entity we also have 5 attributes: idhistory, date, random, tasteid, temperatureid.

Step 3: Code Programming (Python)

My code is pretty simple. First you should make it so while the force sensing resistor is unpressed you shouldn't be able to run the rest of the code so no soup is made without a cup. Then i added event detectors that should detect when a button is pressed. If i press on a button the machine is going to make a soup so for this i simply let the servo make a turn so the powder can fall into the cup and i send a high signal to my relais. This leads to cooking the water because our heating element will start working. After a while when our water is cooking our temperature sensor will detect it's cooking and then my pump will start pumping. It keeps on pouring water into the cup until the ultrasonic sensor detects that the cup is almost full. You can see my code on my github:

Step 4: Creating the Website (Frontend and Backend)

In my backend I have three queries. The first one is this one: "Select s.foto, s.naam, t.waarde, date_format(g.datum, '%Y-%m-%d %H:%i') as Datum from geschiedenis as g join smaak as s on g.smaakid = s.idsmaak join temperatuur as t on g.temperatuurid = t.idtemperatuur order by Datum" with this query I am able to get my pictures, name, temperature value and date from our history. The second query is this: "SELECT s.naam, s.fotomain, s.description FROM smaak as s;" with this I can show what kinds of soup I have with a nice picture and a description. As last I have a query that puts recently made soups in my database: "INSERT INTO geschiedenis(willekeurig, smaakid, temperatuurid) VALUES (var1,var2,var3)". With the app.route method i am able to send my data to the website.

In my frontend i have two javascript files. The first one is for my main page. In this I have a querySelector that i fill using innerHTML with the data I received from my backend.

The second script does the same for my history page with every soup made from my machine.

You can see my code on my github:

Step 5: Making the Housing

For our hosing i'm going to make it out of wood. In the pictures you can see the sizes of the planks i cut. You can also see how i put them all together. I also made a small metal plate where i can put my lcd and button. On the second last picture you can see a metal plate this one i use for the damp created by our kettle. The 2 big holes are to put your fingers in so you can easily remove it. At last you can see we glued some planks together i am going to put these on top of our construction. With hinges we are going to make it easier to open and close it. These last 2 steps are important since we are going to refill our water and powder. Now our construction is finished we can decorate it so i bought a red spray can. After colorizing our housing we are finished.

Step 6: Inserting the Circuit Into the Housing

As you can see in the pictures above you can see how I managed to put the circuit in my housing

Step 7: Painting

I used red, black and white paint