Domino Stacker Robot
Domino stacking is a task that appears simple at first glance, yet it requires a high degree of precision, repeatability, and coordination when automated.
We have designed a prototype of a Domino stacker robot which is capable of accurately placing the dominos in a pre-defined sequence and alignment.
Supplies
The materials used for the Domino Stacker Robot are :
- Arduino Uno
- 2x Stepper motors
- 2x Line Following sensors(TCRT5000, HW-511)
- 2x Motor Drivers A4988
- sg90 servo motor (180 degrees)
- 1x Castor wheel
- 2x Wheels
- 2x Capacitors 470uF
- 1x Current Sensor (ACS712)
- Jumper wires
- Breadboard
- M2.5 and M6 screws
- Black Tape
We have also used the following materials for the mechanical structure and design :
- CAD software : AutoDesk Inventor
- Laser Cutter
- PLA Filament
- 3D printer
- MDF
Abstract
This report presents a domino stacker robot designed for educational purposes. It is intended for schools and pedagogical events to help students discover the core principles of robotics and mechatronics.
Various design concepts were generated to integrate the project requirements and functions while differentiating the device from competitors and respecting existing patents. The chosen design utilizes two stepper motors connected to two wheels (plus one free caster wheel) for the driving mechanism. It features a servomotor with a gear mechanism to push the dominoes from a single storage column into a slider and tunnel, ensuring they are placed in a precise, upright position. For the control system, two IR sensors enable line-following, while a current sensor is placed in series with the servomotor to detect if a domino is stuck.
All subsystems were modeled using CAD software, and materials were selected following a formal analysis, adapted to the resources available in the lab. The prototype was manufactured using laser cutting and 3D printing. The circuitry, sensors, and software subsystems were designed according to technical requirements, represented in logic diagrams, tested, and validated.
Custom brackets and mounting hardware were integrated to secure all subsystems to a laser-cut plate. These components ensure structural stability and organized cable management, preventing any parts from loosening during operation.
The final prototype successfully lays dominoes while following a line. Sustainability was prioritized by minimizing the use of 3D-printed components. The total cost to realize this project is 97 €.
Table of Content
- Project Motivation
- Project working modes/functionality/requirements
- State of the art and patent analysis
- Conceptual Design
- High-Level Design / Embodiment design
- Design of Sub-Systems
- Mechanical Systems
- Requirements
- Conceptual design: preliminary concepts and selection
- Embodiment design: manufacturing and assembly (justification of all the choices)
- Final CAD Design (components and assembly)
- Testing if applicable
- Provide CAD files
- Circuitry & Sensors
- Requirements
- Design process and considerations of components
- Final Circuit Diagram
- Testing if applicable
- Provide exact components
- Software
- Requirements
- Design process and considerations of components
- Code flow diagram
- Testing if applicable
- Provide code
- Integration guide
- Demo project show + Quick start guide
- Critical Review
- Sustainability
- Bill of Materials
- Presentation of Team
- Project Repository
Project Motivation
Stacking dominoes is generally a painstaking, time-consuming, and repetitive process. This process becomes even more evident in educational demonstrations, hobby projects, and public exhibitions, where repeatability, speed, and visual impact are pivotal.
Keeping this in mind, we came up with a reliable solution to build a compact, low-cost robot which can perform the task for placing the dominos with sufficient precision to guarantee a functional outcome, while remaining simple, robust, and for educational purposes. This system is designed to remain simple enough for young learners entering the STEM field and for demonstration at various educational events.
What's the Need?
Large domino installations often involve hundreds or thousands of dominos, and manual placement can take several hours for a single setup. Popular domino artists and public demonstrations (such as large YouTube projects and record attempts) clearly show how much effort is spent just on preparation. In educational environments, robotics students and hobbyists are increasingly looking for hands-on projects that go beyond simple line followers, while still remaining affordable.
This project was designed to fill that gap: a low-cost, semi-autonomous domino-stacking robot that demonstrates real robotic principles while remaining accessible to students and makers.
Who is this for?
- Users
- Students learning robotics, mechatronics, or automation
- Hobbyists interested in creative robotic projects
- Demonstrators operating the robot during workshops or science events
- Buyers
- Universities and engineering schools
- STEM education programs
- Science museums or event organizers
The users interact directly with the robot, while the buyers are typically institutions looking for educational or demonstrative value.
Why this Project Matters?
This domino-stacking robot shows how simple hardware, smart design, and basic sensing can automate a task that is normally repetitive and error-prone. It turns a playful activity into a serious learning platform, combining mobile robotics, sensors, actuators, and control logic in a way that is easy to understand, build, and improve.
Whether you want to automate domino art, learn robotics, or demonstrate automation in a fun way, this project offers a practical and scalable solution.
Project Working Modes/functionality/requirements
The aim of this project is to design and implement a domino stacker robot capable of following a black line using onboard sensors and sequentially placing dominos along the predefined path. The robot' vertical colomn is initially loaded by the user with dominos. During the autonomous operation, the robot moves by detecting the black tape placed on the ground, which defines the trajectory to be followed. When the end of the line is detected, the robot automatically stops.
In addition to the line-following operating mode, the robot also includes a manual control mode, allowing the user to remotely command its movements. This mode enables the robot to be repositioned toward another black line or operating area.
The robot is required to perform the following functions:
- Follow a black line accurately using IR sensors
- Transport and place dominos sequentially and upright
- Stop automatically at the end of the black line
- Allow manual control via buttons
- Enable easy refiling of the domino column
The system does not perform the following functions:
- The robot cannot detect if the domino is empty
- The robot does not detect a domino that may be stuck
- Some dominos may not fall upright when placed
From an eco-design perspective, the parts of the robot that were 3D-printed use PLA, a biodegradable material. The remaining parts were laser-cut from MDF sheets. Although full sustainability was not the primary goal, efforts were made to minimize material waste during fabrication and allow for a re-use of components.
The main constraints of the project are related to precision, control and geometry. Each constraint has been quantified when possible and justified as follows:
- Precision of stacking: Dominos must be placed in upright position with a gap of approximately 2 cm to ensure consistent stacking. It ensures that the dominos fall in sequence and product a correct chain reaction.
- Control: Reliable line detection and robot movement control are required to achieve precision placement.
- Manual operation: the robot must allow repositioning easily to provide flexibility.
To sum up, the robot is designed to follow a black line accurately, place dominos sequentially and upright, stop automatically at the end of the line and allow a manual control. Those functions are necessary to perform precise and reliable domino placement.
The requirements table summarizes and quantifies all defined criteria.
State of the Art and Patent Analysis
State Of The Art Analysis
The objective of this project is to develop an automated domino stacking robot capable of accurately and efficiently placing dominos for educational purposes.
To position the domino stacker robot within the current technological landscape, it is essential to analyse existing solutions, both direct and indirect competitors, and
compare their technical performance, availability, cost, and market alignment.
Identification of Competitors :
Direct Competitors:
1. Mark Rober – “Dominator”
2. RC Arduino Domino Layer
3. DIY Domino Stack Bot
4. 4M Dominobot Kit
Indirect Competitors:
1. Laser-guided line-following robots
2. Commercial educational robotics kits
Competitor Descriptions:
A. Mark Rober – “Dominator”
A custom-built, large-scale automated domino-laying robot designed for record-breaking installations. It uses high-precision actuation, advanced sensing, software-driven pattern logic, and modular cartridge loading, capable of deploying ~100,000 dominos in 24 hours. Not commercialised.
B. RC Arduino Domino Layer
A remote-controlled domino-laying platform based on Arduino. Accessible design, open build files, and educational value. Limited precision, moderate speed, battery powered.
C. DIY Domino Stack Bot
Open-source hobby robot with basic ultrasonic sensing and low-speed single-domino placement. Prioritises accessibility and simplicity over speed or scalability.
D. 4M Dominobot Kit
A small toy robot for children that pushes or places dominos at low speed. No programmability. Intended for education and entertainment, not engineering or performance applications.
Criteria for Comparison
To meaningfully evaluate these systems, the following criteria were selected based on user requirements, system objectives, and engineering relevance:
Technical criteria
1. Precision & sensors
2. Placement speed
3. Capacity/autonomy
4. Programmability
Business and practical Criteria
1. Cost (initial + maintenance)
2. Product availability
3. Market segment fit
These criteria directly relate to the performance goals of the proposed solution: high precision, modular control, continuous operation, and medium-range affordability.
The table compares five domino-laying systems across multiple design and performance criteria. Mark Rober’s Dominator stands out as the only high-speed, high-precision, fully autonomous professional system, while all other existing products remain DIY, educational, or low-performance commercial toys.
Our Domino stacker robot sits strategically between hobbyist/educational kits and high-end professional systems, offering mid-range cost, automation, capacity, and programmability, which currently do not exist in the market.
From the figure table of the state of the art analysis, green cells highlight characteristics that align well with the project’s educational and affordability goals, while red cells indicate features that are less suitable for the intended target users, despite potentially being advantageous in other contexts. Certain aspects, such as limited storage capacity, partial autonomy with manual reloading, and non–high-speed operation, are intentional design trade-offs introduced to reduce complexity, improve reliability, and preserve educational value. By combining integrated sensing, upgradeable modular capacity, and software-based behaviour, the prototype addresses the main limitations observed in existing solutions without compromising affordability or practicality for educational and demonstrator applications.
Conclusion – Positioning in the Market
The competitor landscape indicates a technological and commercial void for a mid-range autonomous domino robot that:
- offers repeatable precision
- integrates sensors and software control
- operates semi-autonomously
- provides visual engagement suitable for public use
- remains financially accessible
Our Domino stacker robot directly addresses this gap.
It balances performance, autonomy, programmability, and affordability in a way no existing competitor offers. Certain aspects, such as limited storage capacity, partial autonomy with manual reloading, and non–high-speed operation, are intentional design trade-offs introduced to reduce complexity, improve reliability, and preserve educational value. By combining integrated sensing, upgradeable modular capacity, and software-based behaviour, the proposed system addresses the main limitations observed in existing solutions without compromising affordability or practicality for educational and demonstrator applications.
Therefore, based on current market offerings, our domino stacker robot is positioned as a novel and commercially viable solution, bridging the divide between extreme high-end robotic automation and low-end toy systems.
Patent Analysis
A prior art review was carried out to identify patent-protected mechanisms related to the functions of the Domino Stacker Robot. Three key patents were determined to be technically relevant :
- US 4245756 A (Movement-synchronized ejector, 1979)
- This patent describes a vehicle capable of laying dominos in synchronisation with its movement through a purely mechanical actuation system. While the overall objective is comparable to the present project, the technical implementation is different: the current design relies on electronically-controlled actuation using a servomotor rather than mechanical synchronization. The patent has expired, meaning its specifically claimed mechanical approach is no longer protected.
- US 5782377 A (Domino Storage and Feeding System, 1996)
- This patent describes complex multi-channel domino storage and dispensing mechanisms. The current design instead uses a single-column gravity-fed hopper with an actively driven ejection system, making its implementation simpler and technically distinct. The expiration of this patent in 2016 confirms that these previously protected architectures are now in the public domain.
- EP 1 591 149 A1 (Automatic Handling and Righting Mechanisms, 2005)
- This patent addresses automated handling mechanisms used to orient and stabilise objects during operation. The current design makes use of similar handling principles. As the patent expired in 2024, these techniques are no longer subject to active intellectual property protection.
All relevant patents identified are expired, meaning the underlying concepts are now in the public domain. The current design uses modern implementations that are not covered by any active protection.
Freedom To Operate
- Among the identified patents, the third one is the most relevant to the present design, as it relates to automated orientation of flat objects. The concepts it describes are reflected in the current robot, but the patent is no longer in force, meaning these principles are now in the public domain.
- The two other patents (US 4245756 A and US 5782377 A) cover different functional architectures that are not directly implemented in the current prototype. However, they may serve as a foundation for potential future design enhancements, for example in response to user feedback or performance improvements.
Based on this analysis, our Domino Stacker Robot benefits from a positive Freedom to Operate. It can be developed, used and potentially commercialised without infringing active patent protection.
Conceptual Design
Building upon the established specifications, the following section transitions from theoretical requirements to the conceptual design phase, where various technical solutions are compared and the optimal configuration is selected to meet the project’s objectives.
The robot is designed to perform several integrated functions, primarily navigating autonomously via line-following. It must reliably dispense dominoes from a storage unit and place them stably along its path. To support these operations, the system requires a robust power supply for all subsystems and a user-friendly architecture suitable for a DIY kit.
These functions are achieved using stepper motors for precise movement control and a dedicated pusher mechanism for domino ejection. Furthermore, the integration of hardware and software ensures the accurate, one-by-one placement of each piece during movement along the line. While the final design specifies a Li-Ion battery for safe, portable power, a fixed DC power supply was utilized for the current prototype's testing phase. All of these functions and features are represented and interconnected in the linked Graph.
Each of these features can be implemented using various technical means; their comparison and the preferred solutions (highlighted in green) are presented in the linked Table.
Since the robot needs to move precisely and at a controlled speed to ensure accurate domino placement, a differential driver offers better maneuverability and sufficient precision for smooth and stable motion of the robot.
Detachable modules were selected to improve repairability and, in an educational context, to allow students to easily identify, assemble and dissamble the different subsystems of the robot. An on-off button for the sensor was also selected to allow users to directly observe the role and importance of sensing in the robot behavior, providing a clearer understanding of a complete roboic system is built. Screws were chosen instead of glue as they allow easy desassembly and reassembly.
The LCD screen was selected to provide visual feedback to the user as it allows more detailed information compared to simple audio feedback.
To allow an autonomous operation, a Li-on battery was prefered to power the robot due to its compact size and rechargeability.
A line-following system was selected as the main control strategy. This solution provides good balance between simplicity and educational value. A manual control using keyboard inputs is implemented, allowing students to understand different approaches to robot control.
What concerns the domino release mechanism, a pusher mecanism was chosen since it is mechanically simpler, offers precise control and ensures repeatability compared to rotary dispensers. The vertical column is more compact and better suited for continuous operation.
Finally, the robot is programmed to stop during domino placement to maximize accuracy and stability. This approach is simpler and more reliable than using an additional end-stop sensor.
It is worth noting that not all selected components were included in the final prototype. For example, the LCD screen and the mecanism used to detect a stucked domino were not implemented.
From these selected means, four distinct concepts have been defined:
- Concept 1: Consists of two stepper motors with hidden wheels inside a box, placed at approximately half of the box length, two IR sensors at the extremities, and a column with a pusher.
- Concept 2: Features a column with a pusher and a door to release the dominoes, two steppers with wheels outside of the box and bearings, and two IR sensors at the extremity with barriers to block ambient light.
- Concept 3: Comprises a column with a slider and a tunnel, a single pusher, two stepper motors with apparent wheels, and two IR sensors placed outside of the plate, very close to the ground and to each other.
- Concept 4: Consists of a column with a slider and a tunnel, two pushers (one to move the domino out of storage and the other to push it out of the tunnel), two stepper motors with apparent wheels, and two IR sensors placed under the plate near the middle.
Various criteria based on the project requirements and functions were used to compare the models and select the optimal design.
These include the safety of use, which was assigned a lower priority as the domino stacker does not present significant operational risks. To achieve a DIY-style product, high importance was placed on the ease of assembly and disassembly, repairability, and the overall simplicity of the mechanism. Furthermore, the precision of the line-following, the stability of the dominoes upon placement, and the stability of the robot during movement were evaluated to ensure the prototype works efficiently. Finally, the weight on the arm of the robot was a critical factor, as excessive load could affect the proper movement or lead to structural breakage.In this analysis, the stability criterias were considered the most important for a functional prototype, while the ease of assembly and disassembly remained the most important factor for a successful pedagogical product.
The different concepts, including their respective sketches and a grade for each criterion (on a scale from 1 to 3 with assigned weights), are presented in the linked table.
Based on this evaluation, it can be concluded that the third design is the optimal solution as it achieved the highest grade. Consequently, it was chosen for this project. Although some practical aspects were adapted for the prototype to ensure feasibility within the given timeframe and available materials, the main features remain unchanged. This final concept will be detailed in the following sections.
High-Level Design / Embodiment Design
High Level block Diagram :
Based on the Figure of the block diagram, the system is organized around an Arduino microcontroller, powered by a regulated VCC supply, which coordinates sensing, navigation, and domino placement. IR line sensors and a current sensor (ACS712) provide feedback to the Arduino for line following and servo load monitoring.
For robot navigation, the Arduino processes sensor data and controls the drive system to follow the line. In parallel, the domino handling subsystem consists of a single-column feeder, a servo-driven pushing mechanism, and a curved exit slide, enabling controlled placement of one domino per cycle from a larger stack. All subsystems communicate through the Arduino, ensuring synchronized motion and placement, which also exchanges commands and status information with a PC interface via serial communication.
Complete CAD design:
To verify that no parts interfered with each other, we modeled the entire system in CAD software. An image of the completed assembly is provided, and this will be discussed in more detail in Step 8.
Material Selection
Due to the mathematical equations required for the material selection, we compiled this part of the project into a dedicated LaTeX report. Please download the attached PDF under the "Manufacturing Process Selection" section to view the full analysis.
Manufacturing Processes Selection:
The manufacturing processes selected for the domino-stacking robot are chosen to support both rapid prototyping and future industrialisation. During the prototype phase, mechanical and structural components such as the chassis, base plate, and wall plates are manufactured using laser cutting from MDF or similar sheet materials, allowing fast fabrication and easy design modifications. Functional parts with more complex geometry, including the slider, funnel, and curved exit guide, are produced using FDM 3D printing (PLA), which is well suited for low-volume production and iterative testing. In an industrial context, these plastic components would be transitioned to injection molding to ensure repeatability, dimensional accuracy, and reduced unit cost.
The mobility components, such as the wheels and castor wheel, follow standard industrial practices. Wheel hubs are manufactured by injection molding, combined with rubber or polyurethane over-molding for traction, while axles are produced using CNC turning. Standard fasteners (screws, nuts, and bolts) are sourced as off-the-shelf components manufactured through cold heading, ensuring low cost and high availability.
Electronic and electromechanical components are assumed to be industrially manufactured. The stepper motors are produced through stator stamping, coil winding, die casting, and automated assembly processes. The servo motor uses injection-molded housings, stamped gears, coil winding, and automated assembly. All electronic boards, including the Arduino Uno, motor drivers, line sensors, and current sensor, are fabricated using standard PCB manufacturing, followed by SMT pick-and-place assembly and reflow soldering. Electrical interconnections are realised using a wiring harness, produced by copper wire drawing, insulation extrusion, and crimping.
Overall, this manufacturing strategy enables low-cost and flexible prototyping while remaining fully compatible with scalable industrial production methods.
Downloads
Design of Sub-Systems
I-Mechanical Systems
The foundation of any robot is its physical structure. This is due to the fact that if there is a mechanical error in the robot it will never function how you want it to. This is why the mechanical design of the robot has gone through many different iterations. Next up there will be a list of the main iterations of the placing mechanism, what problem they solved from a previous version and why they weren’t adequate.
Placement Mechanism:
Version 1:
The first version of our placing mechanism was a simple combination of a slide with a pusher to get the bricks out of the column where they were stored. This version had a lot of flaws. The biggest one of them being that the domino bricks never stood up straight. Since this is a big problem we never tried further implementation of this version.
Version 2:
In the second version we changed the design of the slide to be a quarter circle. We also added a pusher at the bottom of the slide to be able to push the bricks out of the landing zone when they landed. The reasoning behind this being that it would be more stable to push a brick out then moving the entire robot without knocking the brick over. First manual tests gave good results so we tried integrating this design. Once integrated we came across several problems. The first problem was that when we automated the placement of the brick using a servo we would get very inconsistent results. Sometimes everything worked as hoped and other times the brick fell over. A second problem was that the robot was very difficult to assemble due to the many different components that had to be placed perfectly for everything to fit.The last problem was that there was a lot of friction on the gears connecting the servo motor and the pusher at the bottom of the slide. This problem was an easy fix by adding some extra spacing and holes to the attachment plate.
Version 3:
In the second version we noticed that the bricks had the tendency to fall backwards. To try and counter this we raised the entire slide to allow the bricks to straighten up completely in a closed tube before they hit the ground. This solution worked perfectly. Secondly we tried adding the pusher at the bottom of the slide back in but this lowered the successful placing rate of our mechanism. Since we removed the second pusher we tried adding a back wall to the slide since we thought this would provide more stability for the bricks. After testing we noticed that this wasn’t the case so we decided to remove it again.
Final Version:
For the final version we kept everything that worked in version 3 but polished it for a more pleasant assembly. This means the following things changed:
- Separation of attachment plate and column
- Removal of gears
- Combination of base of the column and the slide
Although we removed the gears and the second pusher we left the option to add all the gears and pusher back in case we would need it in the future or in case these are useful when using other types of bricks.
Driving Mechanism:
Next up was the movement of the robot. This was achieved through a differential drive system consisting of two stepper motors and a castor wheel. The reason we chose this configuration instead of another was because of its simplicity. The price for this simplicity is that it is very difficult to have the robot move in a perfectly straight line when the robot’s weight is off center. But since we are able to make our robot pretty symmetrical and since we don’t have to move in long straight lines without feedback this should not be an issue. For the 2 powered wheels we decided to use stepper motors directly connected to the wheel since these allow for small movements and precise control. The reason why we attached these directly to the wheels is because this simplified the design process and since our robot weighs less than the maximum vertical load these motors can handle this should not cause any major problems.
To attach the motors to the base we used 3D printed brackets. And to attach the castor wheel we designed a lasercuttable support mechanism.
Finally the wheels and stepper motor had to be attached to each other. To attach these two we printed a fitting piece that connected the motor shaft and the wheel. After testing an unexpected problem appeared. There was a significant wobble present when the wheels rotated. We fixed this issue by adding a buffer piece in between the motor and the wheel which provided the extra support the wheel needed.
Sensor Attachment:
For the sensors we tested 3 different ideas.
Our first idea was to place the sensors underneath the robot. This way they were close enough to the ground to detect the black line. And they could not interfere with other components since they would be the only component below the robot. This configuration did not work due to the lack of light underneath the robot so we had to change it.
The second idea was to move the sensors to the front of the robot but still underneath the baseplate to solve the lack of light problem. At this point we realized that the sensors were too close to the ground which also caused them to send a signal when they were not meant to.
The final solution was to design a bracket that attaches at the front of the robot and raises the sensors by 16mm. An image of the bracket has been provided above.
Robot Base:
Lastly we designed a baseplate where all the different components could be attached upon using different types of nuts and bolts.
Entire assembly:
The final assembly looks like the image shown above. In this image there are no nuts and bolts present since this caused problems in the CAD software. This assembly has also been attached as a STL-file.
II-Circuitry and Sensors
Requirements :
Line following: detect black tape on a lighter surface using 2× TCRT5000 (HW-511) sensors.
Motion control: drive 2 stepper motors independently for differential steering (left/right).
Domino actuation: control SG90 180° servo for domino release/placement.
Electrical safety/monitoring: This is done by measuring the motor current using ACS712 current sensor.
Stable supply & noise robustness: protect A4988 drivers and Arduino from stepper/servo noise using bulk capacitance and proper grounding.
Design Process and Component Considerations :
A) Line sensors(TCRT5000 HW-511)
Why chosen : Cheap, simple, fast response, good for black tape tracking.
Key design choices:
Mount height: ~2–5 mm above floor for best contrast.
Use the digital output (D0) with the onboard potentiometer to set threshold.
Two sensors is the minimum possible configuration:
- Left sensor detects line → steer left
- Right sensor detects line → steer right
- Both off-line → search/recover logic required through manual driving.
B) Stepper motors + A4988 (2 drivers)
Why chosen: precise wheel motion, easy speed control by STEP pulses, repeatable movement.
Important considerations:
- Current limiting was set (Vref) on each A4988 to avoid overheating motor/driver.
- 470 µF capacitors was placed close to VMOT on each A4988 to reduce voltage spikes.
- Keep STEP/DIR wires short and away from motor power lines.
C) Servo motor (SG90)
- Why chosen: simple, lightweight, good for a small domino release gate.
- Critical note: Servo can draw high peak current → power it from 5 V rail with bulk capacitor, not through weak USB power.
D) Current sensor (ACS712)
- Purpose: measure current draw (useful for diagnosing jams, overload, and estimating power usage).
- The ACS712 current sensor is placed in series with the servo motor power supply line, between the regulated 5 V source and the servo V+ terminal, in order to measure the total current drawn by the servo motor during actuation. This configuration allows monitoring of torque demand during domino placement and enables detection of abnormal current peaks caused by mechanical blockage or misalignment.
Final Circuit Diagram
Power supply architecture :
The robot system is powered from an external DC supply, which is split into two distinct rails, which are the Motor supply(VMOT) and regulated 5V rail. For the case of VMOT, it is fed to both A4988 stepper motor drivers and for the 5V rail, it supplies the necessary voltages to the Arduino Uno, line-sensors,servo-motor, and the logic side of the motor drivers. Using a dedicated 5v supply is recommended, as powering the servo directly from Arduino USB may cause voltage drops and unintended resets due to the servo's current demand.
A4988 Stepper Driver : Left Motor & Right Motor
The left and right motor is driven by an A4988 driver configured as in the wiring schematic diagram. From the wiring, VMOT is connected to the motor supply positive terminal, the GND(ground) is connected to the motor supply ground. There is also a usage of two 470uF electrolytic capacitors for both the drivers which is placed between VMOT and GND close to the driver to suppress any voltage spikes.
For both the Motor outputs(2B,2A,1A,1B), the connections were connected to the two coils of the left and right stepper motor respectively. For the VDD and GND, it is connected to the Arduino 5V output and Arduino ground(common ground) respectively. The STEP, DIR for the Right motor are connected to D7 and D8 digital pins of Arduino and for the left motor it is connected to D9 and D11 for STEP and DIR pins respectively.
For the Micro-stepping pins(MS1,MS2,MS3) we have configured in hardware (jumper-wired) to enable micro-stepping operation.
Servo Motor (SG90):
The SG90 servo motor used for the domino release mechanism is connected as follows:
- V+: connected to the regulated 5 V rail.
- GND: connected to the common ground.
- Control signal: connected to Arduino digital pin D13.
A 470 µF capacitor is placed across the 5 V and GND lines near the servo to reduce voltage fluctuations during actuation.
Line-follower sensors(2x TCRT5000 HW-511):
Two infrared reflectance sensors (TCRT5000 HW-511) are used for line detection. Each sensor provides a digital output indicating whether the black tape is detected.
Electrical connections (per sensor):
- VCC: connected to the regulated 5 V rail.
- GND: connected to the common ground.
- D0 (digital output): connected to an Arduino digital input pin.
The pin connections are as follows :
For the left sensor, the D5 pin of arduino is used and for the Right sensor D12 pin is used. These two sensors ensure to detect both left side and right side.
Current sensor(AC712):
The ACS712 sensor is used to measure the total motor current.
High-current path (series with servo supply):
- 5 V supply → ACS712 IP+
- ACS712 IP− → Servo V+
Logic connections:
- VCC → Arduino 5 V
- GND → Arduino GND
- OUT → Arduino A0 (ACS_Pin)
The servo motor is powered via an ACS712 current sensor connected in series with the 5 V supply. The sensor output is interfaced with Arduino analog input A0, while the servo control signal is provided through digital pin D13. This configuration enables real-time monitoring of servo current during domino actuation.
Testing and Validation :
Sensor threshold caliberation
- Place robot on white floor → record D0 state
- Place sensor above black tape → record D0 state
- Adjust potentiometer until switching is consistent.
- Verify in different lighting (phone flashlight / room light).
Stepper driver operation
- Test each motor independently:
- Run at low speed first (avoid skipping)
- Confirm direction matches DIR logic
- Check driver temperature after 2–3 minutes (overheating = reduce current limit).
Servo actuation test
- Command 0° ↔ 180° repeatedly
- Confirm no Arduino reset (if resets happen → improve 5 V supply + add capacitor).
ACS712 validation
- Read A0 at idle → should be around mid-scale (sensor offset)
- Run Servo motor → observe current increase
- Use current spikes to detect stall/jam conditions
Exact Components Used :
Arduino Uno
2× Stepper motors
2× A4988 stepper motor drivers
2× TCRT5000 (HW-511) line sensors
1× SG90 servo motor (180°)
1× ACS712 current sensor
2× 470 µF capacitors
Breadboard + jumper wires
2× wheels + 1× castor wheel
M2.5 & M6 screws
Black tape (line track material)
III-Software
Requirements
The software is required to implement two distinct operating modes for which the dominos need to be stable, placed along the path of the robot and all pushable in once at the end:
- Automatic Mode: The system must autonomously navigate using line-following logic via IR sensors. It must simultaneously trigger the domino-pushing mechanism at a calibrated frequency and continuously monitor the current sensor to detect if a domino is stuck.
- Manual Mode: The user must be able to control the robot’s movements and actions directly from a computer interface, acting as a remote controller.
Design process and considerations of components
The software runs on an Arduino microcontroller, where sensors are configured as inputs and motors as outputs. It utilizes two primary libraries: Servo.h to control the pushing mechanism and Filters.h to compute the RMS current values.
To ensure the stability of the placed dominoes, several factors were considered:
- Vibration Control: The robot's speed is managed by an optimal step delay, reducing mechanical vibrations that could destabilize the dominoes. Micro-stepping is also implemented on the stepper motors to ensure smoother and more precise displacement.
- Pushing Calibration: The timing was carefully calibrated. The robot moves a specific distance, pauses briefly to let vibrations settle, and then activates the servo. This distance is calibrated so that dominoes are close enough to fall in sequence but far enough apart to remain stable during placement.
- Servo Kinematics: The servo's angle of movement and speed were optimized to prevent dominoes from sliding too fast (which causes instability) or not far enough (which can result in a stuck domino). A small delay is also integrated after each push to allow the domino to stabilize before the robot moves again.
- Turning Logic: To avoid collisions, the software ensures the robot moves forward until it is far enough from the placed domino before turning. These distances were precisely calibrated to maintain a consistent distance between dominos even in curves.
- Current Sensing: The current threshold was experimentally determined to differentiate between the normal operation of the servo and the specific current spikes that occur when a domino is stuck in the column.
Regarding the manual control interface, it is imperative to first ensure that the PyQt5 and pyserial libraries are installed on the host system. These libraries are essential as PyQt5 manages the graphical user interface and captures keyboard input, while pyserial enables the necessary serial communication with the embedded controller.
Once the microcontroller is connected via USB and the script is executed, the connection must be established by selecting the appropriate COM port and setting the baud rate to 115200. The rover can then be piloted using the Z, Q, S, and Dkeys for directional movement, while the Space bar triggers the servo mechanism and the T key toggles the system between automatic and manual modes.
Code flow diagram
A flowchart summarizing the communication between the Python interface and the Arduino control loop (manual vs. automatic mode, servo pulse triggering, and sensor-based navigation) is attached below (flow_diagram.svg).
Testing if applicable
The automatic control and manual control were tested and the two of them were validated as it is possible to see in the video linked. The robot follows correctly the line, it places the dominos along its path and the current in the servo can be read in the serial monitor.
Downloads
Integration Guide
For the final assembly all different subsystems have to be put together. This process consists of assembling all different subsystems first and then adding the mall together. The following parts will be a detailed description on how every subsystem should be assembled and then put together.
Placing mechanism
The first step is to take one of the mounting plates and to put 7 M6 x 35mm bolts with the threaded side up in the marked holes as shown on the first image.
To facilitate the further assembly we will now prepare two pieces. The first one is the servo with the current sensor (image 2) and the second one is the pusher(image 3). Attach the servo and current sensor to their designated mounting plate. The servo is attached using 2 M2.5 bolts and the current sensor is attached next to it using 2 M3 bolts. All 4 bolts should have their thread facing towards the body of the servo motor. To finish this part we snap the gear onto the servo.
To assemble the pusher we will start by attaching the racket holder to its supporting plate. This is done using 2 M3 bolts with their threaded side pointing towards the supporting plate. Then we slide the pusher into its holder and that finished up this part.
From here on the assembly consists of repeatedly sliding the right parts onto the right bolts as shown in image 4.
Now we will add 2 more M6 bolts. One will go into the hole above the servo and one will go into the right corner of the slide side plate. Once this is done all nuts can be added onto the bolts.
To finish this part off we will add the supporting L-brackets at the bottom. These will be attached using M6 bolts with their threaded side facing inwards. This should look like image 5.
Stepper motors and wheels
The assembly of the powered wheels consist of two main steps. The first one being the preparation of the wheel. This should be done by sliding the two parts onto the wheels as described in the image 6.
This should then be pushed onto the motor shaft but make sure the flat part of the motor shaft and the flat part of the hole align. Once this is done the last step is to put the bracket over the stepper motor. Your final result should look like image 7.
Caster wheel
The different parts of the castor wheel should slide together as described in image 8. The casterwheel attachment itself should then fit perfectly in the hole in the middle.
Final assembly
In general the final assembly is pretty self explanatory but there are a couple of caveats. The one thing you should be weary of is that the casterwheel is attached using the L-brackets of the dispenser as shown in image 9.
The casterwheel and the dispenser are then attached to the baseplate using 4 M6 bolts with their thread facing down. The 2 stepper motors are attached using a total of 4 M4 bolts facing down. The final step is to attach the infrared sensors to their mounting piece using a total of 4 M4 bolts and attaching that mount to the baseplate using another 4 M4 bolts. The top view should then look like image 10.
The final step is to attach the arduino and electronics using 8 M2.5 bolts and wiring everything up as described in the circuit diagram.
Demo Project Show + Quick Start Guide
Quick Start Guide
- Fill the vertical column with dominos using the side openings provided.
- Use black tape to define the desired path for domino stacking.
- Manually control the robot using the buttons to position it at the start of the line.
- Switch to automatic mode to start stacking dominos along the line.
- The robot will stop when the end of the line is reached.
The position of the line-detection sensors, the side openings for refilling the column, and the slider mechanism are shown in the provided Figures.
Critical Review
To assess the project's outcomes and limitations, we focused on answering three key questions:
What would you do differently? We would fundamentally shift to an early hardware integration strategy. Waiting until the final week to test the full assembly prevented us from mitigating the physical incompatibility between the lightweight dominos and the floor surface. Starting physical prototyping four weeks earlier, for example, would have highlighted these stability issues in time to engineer a mechanical solution, rather than discovering these environmental constraints too late to address them effectively.
What would you add if you had more time? We would focus on maximizing versatility and usability. Instead of being restricted to a single physical path taped on the floor, we would develop a software interface allowing users to draw custom curves on an electronic device, which the robot would then execute via odometry. Additionally, we would redesign the reloading mechanism to function like an interchangeable magazine system. This "clip-on" rack design would allow users to reload the robot instantly by swapping pre-filled cartridges, significantly reducing downtime compared to the current manual refilling process.
What were you not able to realize? We failed to achieve high reliability regarding the chain length. The robot rarely exceeds twenty consecutive dominos without a fault. This is due to mechanical sensitivity rather than software; we could not sufficiently stabilize the lightweight dominos against floor imperfections, effectively limiting the system to a prototype status rather than a finished product.
Sustainability
Here is our strategy to further improve the robot's environmental impact:
Building on our successful implementation of "Design for Disassembly" (using screws and friction fits rather than adhesives), we would shift our focus to material toxicity and component lifecycle. We would replace the MDF structure with FSC-certified plywood or heavy-duty cardboard. Unlike MDF, which relies on urea-formaldehyde resins that are hazardous during laser cutting and difficult to recycle, these alternatives are cleaner and lighter. Similarly, for the 3D-printed components, we would transition from virgin PLA to Recycled PLA (rPLA) to close the material loop. Finally, since our robot is tethered and produces no battery waste, we would focus on the circular economy of the electronics: ensuring that high-value parts (steppers, sensors) remain unaltered during assembly so they can be easily harvested and reused for future academic projects.
Bill of Materials
The table presents the Bill of Materials (BoM) for the developed system, listing all mechanical, electronic, and structural components along with their rough, approximate estimated costs. The main cost drivers are the stepper motors, Arduino Uno, and motor drivers, while standard hardware, wiring, and sensing components contribute marginally to the total cost. These prices are based on online retail prices and access to university fabrication facilities. Manufacturing costs (laser cutting, 3D printing), labour, tooling, and overheads are not included. Consequently, the total cost of €97 should be interpreted as an indicative prototype cost rather than a final commercial production cost. In the case of larger purchase quantities, the unit price is expected to decrease significantly.
Presentation of the Team
Seppe:
Background:
- No professional background in the engineering field
- Bachelors in Electromechanical engineering at the VUB
- Because of my hands-on background, I am familiar with working with different tools and understand how to use them properly.
Contribution:
- Everything related to CAD.
- Design, making and testing of mechanical en structural parts (except baseplate)
- Attempt to make a protoboard (untested)
Favorite part:
I personally loved designing the different components ,thinking of ways how these would interact with eachoter and thinking of ways i could solve certain problems. I also used a very hands on approach to many of the problems. If I wanted to know if something would work i made it, tested it and itterated until all problems were solved.
Risheb
Background:
- Bachelors in Electronics and Instrumentation engineering.
- Professional background in the field of Industrial Automation.
Contribution:
- In this project, I mainly worked on the electronics, with a focus on sensors, including their selection, integration, testing along with the flow diagram of how the sensors work together with the robot. I also created the schematic circuit layout drawings and integration for the wheel driving mechanism, servo motor and sensors along with design planning, and idea generation for the prototype.
- On the practical side, I attempted to solder and assemble the electronic components however, this approach did not lead to a reliable result and was therefore not retained in the final prototype.
- For the design aspects, I contributed to the state of the art analysis, high-level sub-system, requirements list, conceptual design(particularly in Abstract formulations and problem identification), manufacturing process selection, eco-design analysis, cost analysis, and business outlook as overall.
Favourite part:
This project was my first experience working in a Fab Lab and on a prototype involving CAD-manufactured parts, which allowed me to learn a lot from my teammates. I really enjoyed collaborating with people from different backgrounds, as it provided multiple points of view and helped improve the overall design of the prototype.
Lina
Background:
- No professional background in the engineering field.
- Bachelors in Electromechanical engineering at ULB
- My practical experience comes from the different projects I worked on all along my bachelor's.
Contribution:
- Design : I worked on the need identification, the state of the art and the conceptual designs.
- Electronics: I was responsible for the driving subsystem and worked on the entire electronic architecture. This included circuit assembly, soldering (even if it didn't work because it would burn the drivers everytime), and cable management.
- Software Development: I worked on developing and optimizing the code, specifically the line-following control, the pushing mechanism logic, and the current sensor integration (the only part of the code that I didn't work on is the manual control which was completely done by Jean).
- Assembly: I worked on the physical assembly of the whole prototype, ensuring that all mechanical and electronic subsystems were properly integrated.
Favorite part:
I particularly enjoyed the concept generation phase; it was intellectually stimulating to brainstorm and evaluate every possible technical solution to achieve our objectives. I also found the coding process very rewarding, specifically the iterative cycle of testing and tuning parameters to see the robot improve. Finally, I liked a lot the hands-on experience of assembling the electronic circuits, as it brought the entire design to life.
Sarah
Background:
- No professional background in the engineering field
- Bachelors in Electromechanical engineering at ULB
- My practical experience comes from the various projects I worked on throughout my bachelor’s degree
Contribution:
- My main focus was on the design, construction and assembly of the final prototype where I attempted to 3D print and laser cut mechanical parts of the robot. After that I switched my attention to the driving system, particulary in cable management and soldering, to optimize the electronics, although the improvements were not entirely successful.
- What concerns design, I contributed to the requirements for the robot and the conceptual design.
Favorite part:
I really enjoyed this project because working on it from scratch let me experience the pratical side of my studies. I love hands-on work, which was my favorite part, and I particulary enjoyed coming up with convenient solutions. Discovering and using machines like the laser cutter was a good experience. Another saisfying aspect was seeing something i contributed to actually work in the end.
Jean:
Background:
- I work as an assistant process engineer at Pharma Technology SA alongside my master's degree
- Bachelors in Electromechanical engineering at ULB
- My practical experience comes from the different projects I worked on all along my bachelor's.
Contribution:
- I started by creating a (very) preliminary CAD draft of the robot's design to get an idea of where we were headed.
- I then moved on to the electronics side, where I worked on the driving subsystem. Although I was present during the debugging sessions where we tried to get all the subsystems to work together, I was more specifically involved in the manual control part.
- Regarding the more theoretical aspects, I mainly worked on the patent analysis and on the material selection.
Favorite part:
My favorite part was definitely tweaking the code to get a functional robot. Being able to modify the initial logic to achieve a specific action that solves a problem is really cool, in my opinion. Then, I had a pleasant surprise when it came to selecting materials. I wasn't really excited about doing this task, but in the end I rather enjoyed it. I had bad memories of it from my bachelor's degree, but this time, working with industrial tools and really understanding the process seemed very interesting to me.