The idea of my project is to build a smart cooking scale that works as a recipe assistant and guides users step by step while preparing food.
The scale measures ingredients in real-time and shows clear instructions on an LCD, making recipes easier to follow and more accurate.
I care about this project because precise measurement is one of the main challenges in cooking, and many people get different results when they don’t measure properly.
My inspiration came from modern kitchen tools and smart devices that make cooking more practical.
I wanted to create my own version that is simple, user-friendly, and affordable.
This project reflects how technology and design can solve everyday problems by combining a scale with an interactive recipe system.
Inspiration
The inspiration for my project came from my personal interest in healthy eating, which I started focusing on at the beginning of 2025.
I realized that following recipes accurately is very important when preparing balanced meals, but traditional kitchen scales only show the weight without much guidance.
That’s why I thought of designing a smart scale that doesn’t just measure ingredients but also provides step-by-step recipe guidance.
It combines my passion for healthy food with technology, making cooking easier and more reliable, almost like having a chef beside you.
Software
Fusion 360
Arduino
RDWORKSV8
Machines
ElMalky Laser Cutter
PRUSA 3D Priter
Material
PLYWOOD 3mm
3D Printing Filament
Fusion 360 Design
Most of the lines were projcted.
Sketch for the cut for the Load Cell.
Extrude Cut fot the cut for the Load Cell.
Extrude Cut fot the cut for the Load Cell.
Sketch with dimensions
Extrusion body
Radius of 12 cm
Extrusion body
Radius of 12 cm
Dimensions are according to the Real Components
Dimensions are according to the Real Components
Dimensions are according to the Real Components
Dimensions are according to the Real Components
Dimensions are according to the Real Components
But I cut two sheets because of the Large dimsnions
Parameters:
Cut
Speed 30 (mm/s)
Power 50
To fabricate the housing parts of my project, I used laser cutting to produce precise pieces from wooden sheets.
Design Preparation:
I created the 2D drawings for the housing components using Fusion 360.
The layout included two main sheets:
First sheet for the base, top, front, and back, small part on the Load Cell.
Second sheet was for the two sides and the circle part .
Laser Cutter Parameters:
I set the machine to cut mode, with a speed of 30 mm/s and a power of 50.
These parameters were chosen to cleanly cut through the wooden material without burning the edges too much.
Cutting Process:
The sheets of wood were placed on the laser cutter bed.
The machine traced the design accurately, cutting through the material according to the specified lines.
I carefully monitored the process to ensure clean edges and proper alignment.
Results:
After the cutting was completed, the pieces were removed from the bed.
The cuts were clean, with minimal residue.
These laser-cut parts formed the structural components of the scale’s housing, ready to be assembled together.
The electronic circuit is a smart cooking scale system built around an Arduino Uno.
It integrates a load cell with the HX711 module to measure weight, a joystick for user input and recipe navigation, and a 16×4 LCD for displaying instructions and real-time readings.
A switch and 9V adapter provide control and power.
The system is prototyped on a breadboard using jumper wires for connectivity.
Load Cell + HX711 Module
Function: The load cell senses the applied weight, and the HX711 amplifies and converts the small analog signal into a digital value.
In the system: It measures the quantity of ingredients added and sends the data to the Arduino for processing.
Joystick Module
Function: Provides analog signals (X and Y movement) and a digital button press.
In the system: Used to scroll between different recipes and select one from the menu displayed on the LCD.
On/Off Switch
Function: Allows the user to control the system’s operation or reset it.
LCD Screen (16×4)
Function: Displays recipe names, step-by-step instructions, target ingredient weights, and the real-time measured weight.
In the system: Guides the user through each recipe step and provides immediate feedback when the correct ingredient weight is reached.
Arduino Uno
Receives digital weight values from the HX711 and inputs from the joystick and switch.
Runs the recipe logic: shows available recipes, waits for ingredient additions, compares actual weight with target weight, and moves to the next step automatically.
Sends processed data and messages to the LCD.
The load cell detects the weight of ingredients and sends signals through the HX711 to the Arduino Uno.
The Arduino Uno compares the measured weight against predefined recipe targets stored in the program.
The joystick allows the user to choose recipes and confirm selections.
The LCD screen provides step-by-step cooking instructions, showing the current ingredient, target weight, and live measurement.
When the ingredient weight matches the required amount, the Arduino prompts the user to proceed to the next step until the recipe is complete.
The switch, breadboard, jumper wires, and 9V adapter support operation and connectivity.
Hardware Components:
Load Cell
HX711 Module
Joystick Module
Arduino Uno
LCD 16×4
i2c Module
On/Off Switch
Breadboard
Jumper Wires
9V Adapter
Software:
Arduino IDE – coding and uploading the recipe-based scale program.
Fritzing – designing and documenting the circuit connections.
The power source for my project is a 9V DC adapter connected to the Arduino Uno.
The Arduino regulates the input voltage and provides stable 5V and 3.3V outputs to power the different modules (HX711, joystick, and LCD).
I selected the 9V adapter because:
It is fully compatible with the Arduino Uno’s recommended input range (7–12V).
It is safe, reliable, and easy to connect during prototyping on a breadboard.
Power Source: 9V adapter
Voltage Regulation: Built-in Arduino Uno regulator (5V and 3.3V pins used to power modules)
Hardware:
Arduino Uno
Load Cell
HX711
Joystick Module
LCD 16×4
i2c Module
On/Off Switch
Breadboard
Jumper Wires
Software:
Arduino IDE – for programming the system
Fritzing – for circuit design documentation
The 9V adapter was chosen because it provides the right voltage and current for the Arduino Uno and ensures stable operation of all connected components in the smart cooking scale project.
MY CODE WAS AI-ASSISTED
My code was merged with the help of AI,
which combined the joystick code and the load cell code so that the joystick could be used for control.
I originally had the codes separately, and I needed something to integrate them, and AI helped me with that.
This was done by taking the movement values of the joystick ( right, left, up, and down) and using the readings it outputs when moving. (I measured these readings myself in the joystick code )
Then, we linked these readings to the LCD screen scenario, allowing it to scroll up and down and display different screens and recipes.
The code starts by including essential libraries: Wire.h for I2C communication, LiquidCrystal_I2C.h for controlling the LCD, and HX711.h for the weight sensor.
An HX711 object is created and assigned to the pins DT = 3 and SCK = 2.
These definitions make sure the microcontroller can communicate with both the LCD and the weight sensor.
An array char* recipeNames[3] stores the names of three recipes: "Cake", "Pancake", and "RiceCake".
This provides a clear way to label each recipe, making it easier to display or switch between them later in the program.
A 2D array char* recipeSteps[3][3] stores the ingredients for each recipe.
Example: Cake includes "Sugar", "Flour", and "Butter".
Pancake uses "Flour", "Milk", and "Vanilla".
RiceCake uses "Rice", "Sugar", and "Coconut".
This setup links each recipe to its corresponding ingredients step by step.
Another 2D array int recipeWeights[3][3] holds the required weight for each ingredient.
For Cake, the weights are {30, 50, 40} grams.
For Pancake, the weights are {40, 30, 60} grams.
For RiceCake, the weights are {50, 40, 75} grams.
This ensures each recipe step is not just about the ingredient, but also the exact measured amount.
The setup() function initializes the LCD and prints a welcome message.
It also initializes the scale using scale.begin(DT, SCK);.
The scale is then calibrated and set to tare (zero) before use.
This ensures the system is ready for accurate weight measurement and clear user guidance from the start.
int currentRecipe = 0; keeps track of which recipe is currently selected.
int currentStep = 0; monitors which ingredient step the user is on.
int mode = 0; manages the system’s current mode (for example, navigating menus or adding ingredients).
These variables allow dynamic switching and progression throughout the recipe process.
This is the main cycle of the program that keeps running continuously.
It starts by reading the current weight from the scale with scale.get_units(5) for accuracy.
Then it checks the joystick input: the Y-axis movement is mapped and adjusted, and the button press is detected.
If mode == 0, it means the user is still selecting a recipe, so it calls chooseRecipe().
If mode == 1, it means a recipe is in progress, so it calls playRecipe().
Finally, there’s a short delay (delay(300)) to avoid overly fast updates.
This function handles recipe selection using the joystick.
Moving the joystick up increases currentRecipe; moving it down decreases it, with wrapping around if the value goes beyond the limits (0–2).
The LCD displays the list of available recipes: Cake, Pancake, and RiceCake.
A small arrow (->) highlights the currently selected recipe.
If the button is pressed (btn == 1), the selected recipe is confirmed.
The program switches to mode = 1, resets the currentStep to 0, and shows a short confirmation message with the chosen recipe’s name.
This function guides the user step by step through the selected recipe.
It displays the current ingredient name (stepName) and its target weight (stepTarget) on the LCD.
The screen shows both the target weight and the live weight reading from the scale.
If the weight is within ±3 grams of the target, it shows “Good! Next…”, resets the scale, and moves on to the next step.
Once all 3 steps are completed, the LCD displays “Recipe Done!” for a few seconds.
Finally, the mode returns to 0, taking the user back to the recipe selection screen.
Arduino Connections
HX711
VCC → 5V
GND → GND
DT → D3
SCK → D2
Joystick
VCC → 5V
GND → GND
VRx → A1
VRy → A2
SW → A3
LCD I2C
VCC → 5V
GND → GND
SDA → A4
SCL → A5
On/Off Switch
VCC (Breadboard)
VCC (Arduino)
Enclosure / Final Assembly
Full Assembly and Enclosure
Yes, I asked for feedback during the process of developing my project.
One idea I built upon was adding step-by-step recipe guidance instead of just showing the weight.
This came from a discussion with my classmates who thought it would make the scale more useful in real cooking situations , almost like having a chef with you guiding the process.
I also supported my peers by sharing my knowledge about coding with sensors and helping them debug small issues in their projects.
In return, my peers helped me by giving design suggestions, testing the functionality of the scale, and pointing out where the user experience could be improved.
When I got stuck:
The main problem I faced was that the scale was not giving correct readings. For example, when I placed 200 grams on it, the LCD sometimes showed –1 or other negative values instead of the actual weight. This made the results unreliable and confusing, since the sensor wasn’t reading the load as expected.
How I solved it:
To overcome this issue, I researched online, asked ChatGPT for guidance, and rewired the circuit multiple times to check for loose connections. The turning point was realizing that the calibration factor of the HX711 was not set properly.
By recalibrating the scale using known reference weights and applying the tare function correctly, I was finally able to stabilize the readings and get accurate results.
At what point did I have to pause to research or learn more before moving on?
I had to pause as soon as I noticed these negative readings, because they completely stopped the project from working correctly. This pushed me to study how the HX711 calibration factor operates and how the tare function resets the scale. Only after learning how to properly calibrate with known weights could I continue building the project.
What are some mistakes, pitfalls, or challenges that others can avoid?
Skipping proper calibration of the scale, without it, readings can be completely wrong or even negative.
Loose or unstable wiring, poor connections with the HX711 can cause fluctuating or unreliable results.
Rushing the testing phase, it’s better to test with several known weights to confirm accuracy before finalizing.
By calibrating carefully, double-checking connections, and testing step by step, others can avoid wasting time on errors that block the project from working as intended.
If I had more time, I would 3D print the container (plate) that holds the ingredients.
I had already prepared the design, but my instructor advised me to leave it as a “nice to have” feature since there wasn’t enough time to implement it during the project timeline.
Adding this part in the future would make the project more complete and user-friendly, as it connects the scale with a custom-designed holder for the ingredients.