Skip to content

Commit ebf9753

Browse files
Project/artem lebedev (#1369)
* Add project page for Artem Lebedev * Image fixed * Delete website/versioned_docs/version-fils_en/project/2026/artem.lebedev/build_website.sh * Apply suggestion from @genan2003 Co-authored-by: Omer Genan <81963672+genan2003@users.noreply.github.com> * Update of file names and markdown * Hardware milestone * Fixed Conflict * Fixed file name * Project progress update * Added new picture * Slightly changed description * Rename Shell.webp to shell.webp * Update index.md --------- Co-authored-by: Omer Genan <81963672+genan2003@users.noreply.github.com>
1 parent 5b4ba62 commit ebf9753

5 files changed

Lines changed: 16662 additions & 10919 deletions

File tree

Binary file not shown.
15.4 KB
Loading
Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
1-
# Ali coffee
2-
Coffee vending machine with drinks selection options, based on ESP-32-C6 chip.
1+
# Ali lemon
2+
lemonade vending machine with drinks selection options, based on ESP-32-C6 chip.
33

44
:::info
55

66
**Author:** Artem Lebedev (group 1221EB, FILS) \
7-
**GitHub Project Link:** [Ali coffee](https://github.com/UPB-PMRust-Students/fils-project-2026-artemlebedev)
7+
**GitHub Project Link:** [Ali lemonade](https://github.com/UPB-PMRust-Students/fils-project-2026-artemlebedev)
88

99
:::
1010

1111
## Description
1212

13-
This project is a coffee vending machine capable of creating a variety of coffee drinks using a gravity- and time-based dispenser of hot water and instant coffee. To implement this idea, we'll use a solenoid valve for the water tank, a servo motor with a flap for the coffee container, drink selection buttons, and a host of additional features: an LCD screen displaying the brewing process and water level, a buzzer to notify when the coffee is ready, and a float sensor to indicate when the water level is low. At the core of all these devices will be an ESP32-C6 chip; the enclosure will be a wooden T-shaped structure.
13+
This project is a lemonade vending machine capable of creating a variety of lemonade drinks using a gravity- and time-based dispenser of hot water and instant lemonade. To implement this idea, we'll use a solenoid valve for the water tank, a servo motor with a flap for the lemonade container, drink selection buttons, and a host of additional features: an LCD screen displaying the brewing process and water level, a buzzer to notify when the lemonade is ready, and a float sensor to indicate when the water level is low. At the core of all these devices will be an ESP32-C6 chip; the enclosure will be a wooden T-shaped structure.
1414

1515
## Motivation
1616

17-
My desire to build a coffee machine, rather than any other device, is easy to explain – I'm a big fan of this aromatic drink, and if I'm going to do anything, it's going to be something I personally wouldn't shy away from using. Of course, my design is a far cry from a professional coffee machine, but at the same time, I think it will provide worthy competition to the machines dotted around campus.
17+
My desire to build a lemonade machine, rather than any other device, is easy to explain – I'm a big fan of this aromatic drink, and if I'm going to do anything, it's going to be something I personally wouldn't shy away from using. Of course, my design is a far cry from a professional lemonade machine, but at the same time, I think it will provide worthy competition to the machines dotted around campus.
1818

1919
## Architecture
2020

2121
The system is organized into three functional layers:
2222

2323
**Input Layer**
24-
- Three tactile push buttons select the drink mode: Espresso, Double Espresso, or Americano.
24+
- Three tactile push buttons select the drink mode: Standard, Extra Sweet, or Not-so-sweet.
2525
- A float switch liquid level sensor monitors the water tank and signals when it is empty.
2626

2727
**Control Layer**
2828
- The ESP32-C6 SuperMini runs the main async task loop via Embassy.
29-
- On button press, a mode-specific timing profile is selected, and serving coffee and water for the correct duration starts.
29+
- On button press, a mode-specific timing profile is selected, and serving sugar with lemon acid and water for the correct duration starts.
3030
- The water sensor is polled continuously; if the tank is empty, dispensing is blocked and the display shows a warning.
3131

3232
**Output Layer**
33-
- A 12V solenoid valve (normally closed) controls water flow from the tank to the cup, driven by an IRF540N MOSFET with a 100Ω gate resistor.
34-
- A servo motor (SG90) opens and closes a mechanical gate on the coffee powder container.
33+
- A 12V solenoid valve (normally closed) controls water flow from the tank to the cup, driven by an DL-4184 MOSFET module gate resistor.
34+
- A servo motor (SG90) opens and closes a mechanical gate on the sugar/acid powder container.
3535
- An SSD1306 OLED display (0.96", I2C) shows brewing status and warnings.
3636

3737
All components share a common ground. The 12V rail powers the solenoid valve and is supplied by an external 12V 2A DC adapter. The ESP32-C6 is powered via USB.
3838

3939
## Diagram
40-
![Ali_coffee_schematics](ali_coffee_schematics.webp)
40+
![Ali_lemon_schematics](ali_lemon_schematics.webp)
4141

4242
## Log
4343

@@ -49,15 +49,21 @@ Awaiting arrival of remaining components, added minor changes in the hardware by
4949

5050
### Week 12 - 18 May
5151

52+
Gathered all the hardware, proceed to create first prototypes. Replace the IRF-3205 for DL-4184 module due to not working transistor.
53+
5254
### Week 19 - 25 May
5355

56+
Changed SSD1306 screen for 1602A 5V. Made the shell of the machine.
57+
58+
![Shell](shell.webp)
59+
5460
## Hardware
5561

56-
The system is built around the ESP32-C6 SuperMini microcontroller, which manages all inputs and outputs over GPIO, PWM (LEDC), and I2C. Two food-grade plastic containers (1–2L) serve as the water and coffee powder tanks, each mounted above the dispensing point to allow gravity-fed flow.
62+
The system is built around the ESP32-C6 SuperMini microcontroller, which manages all inputs and outputs over GPIO, PWM (LEDC), and I2C. Two food-grade plastic containers (1–2L) serve as the water and lemonade powder tanks, each mounted above the dispensing point to allow gravity-fed flow.
5763

5864
Water flow is controlled by a 12V normally-closed solenoid valve. When the ESP32-C6 pulls the MOSFET gate high, the valve opens and hot water flows through a silicone tube into the cup. The MOSFET (IRF540N) is connected with a 100Ω resistor on the gate to limit switching transients.
5965

60-
Coffee powder is dispensed through a mechanical gate controlled by the SG90 servo. At rest, the gate is closed. When activated, the servo rotates 90° to open the gate, powder falls by gravity, and the servo returns to close it after the timed duration.
66+
Lemonade powder is dispensed through a mechanical gate controlled by the SG90 servo. At rest, the gate is closed. When activated, the servo rotates 90° to open the gate, powder falls by gravity, and the servo returns to close it after the timed duration.
6167

6268
### Pin Connections
6369

@@ -66,17 +72,23 @@ Coffee powder is dispensed through a mechanical gate controlled by the SG90 serv
6672
| GPIO23 | Button – Espresso | Tactile button → GND |
6773
| GPIO22 | Button – Double Espresso | Tactile button → GND |
6874
| GPIO21 | Button – Americano | Tactile button → GND |
69-
| GPIO5 | Solenoid valve control | IRF3205 Gate (via 1KΩ) |
70-
| GPIO20 | I2C SCL | SSD1306 SCL |
71-
| GPIO19 | I2C SDA | SSD1306 SDA |
72-
| GPIO2 | Servo PWM (LEDC) | SG90 signal wire |
73-
| GPIO1 | Water level sensor | Float switch → GND |
74-
| GPIO18 | Buzzer | Active buzzer |
75-
| 3.3V | Power | SSD1306 VCC, SG90 VCC, Float switch |
75+
| GPIO2 | Solenoid valve control | Load DL-4184|
76+
| GPIO06 | RC | A1602 |
77+
| GPIO07 | E | A1602 |
78+
| GPIO08 | D4 | A1602 |
79+
| GPIO09 | D5 | A1602 |
80+
| GPIO10 | D6 | A1602 |
81+
| GPIO11 | D7 | A1602 |
82+
| GPIO5 | Servo PWM (LEDC) | SG90 signal wire |
83+
| GPIO3 | Water level sensor | Float switch → GND |
84+
| GPIO19 | Buzzer | Active buzzer |
85+
| 3.3V | Power | SG90 VCC, Float switch |
86+
| 5V | Power | A1602 |
87+
| 12V | Power | Solenoid, DL-4184 |
7688
| GND | Common ground | All GND rails |
7789

7890
### Schematics
79-
![KiCAD schematics](coffee_machine.svg)
91+
![KiCAD schematics](lemonade_machine.svg)
8092

8193
## Bill of Materials
8294

@@ -85,17 +97,21 @@ Coffee powder is dispensed through a mechanical gate controlled by the SG90 serv
8597
| ESP32-C6 | Main microcontroller | 50 RON |
8698
| Solenoid Valve 12V N/C | Water flow control | 45 RON |
8799
| IRF3205PBF MOSFET | Solenoid valve driver | 6 RON |
100+
| DL-4184 MOSFET module | Solenoid valve driver | 6 RON |
88101
| Resistor 1KΩ and 10KΩ | 1 RON |
89-
| Servo SG90 | Coffee powder gate control | 13.5 RON |
102+
| Servo SG90 | Lemonade powder gate control | 13.5 RON |
90103
| OLED SSD1306 0.96" I2C | Status display | 15 RON |
104+
| A1602 screen | Status display | 10 RON |
91105
| Float Switch Liquid Level Sensor | Water tank monitoring | 30 RON |
92-
| Food-grade plastic container 1–2L (×2) | Water and coffee powder tanks | 30 RON |
106+
| Food-grade plastic container 1–2L (×2) | Water and lemonade powder tanks | 30 RON |
93107
| Silicone tube (thermoresistant) | Water delivery from tank to cup | 25 RON |
108+
| Silicone hermetic | Water delivery from tank to cup | 35 RON |
94109
| Tactile push buttons (×3) | Mode selection | 5 RON |
95110
| Breadboard 830 points | Prototyping platform | 10 RON |
96-
| Dupont jumper wires (M-M, M-F set) | Component connections | 10 RON |
111+
| Dupont jumper wires (M-M, M-F, F-F set) | Component connections | 25 RON |
97112
| 12V 2A DC power adapter | Powers solenoid valve | 20 RON |
98-
| **TOTAL** | | **260.5 RON** |
113+
| Wood for shelf | | 40 RON |
114+
| **TOTAL** | | **366.5 RON** |
99115

100116
***
101117

@@ -109,7 +125,6 @@ Coffee powder is dispensed through a mechanical gate controlled by the SG90 serv
109125
| `embassy-time` | Async time utilities | `Timer::after()` for precise dispensing durations |
110126
| `embedded-hal` | Hardware abstraction traits | Standard interface for GPIO and PWM |
111127
| `embedded-hal-async` | Async hardware abstraction traits | `wait_for_falling_edge()` for button and sensor input |
112-
| `ssd1306` | SSD1306 OLED display driver | Renders status messages on the 0.96" display |
113128
| `embedded-graphics` | 2D graphics primitives | Text rendering on the OLED display |
114129
| `esp-backtrace` | Panic handler with serial output | Debugging — prints panic traces over UART |
115130
| `esp-println` | `println!` macro over UART | Logging timing and sensor values during development |

0 commit comments

Comments
 (0)