Skip to content

Machine Design

Introduction

Latte Art Machine Project Documentation - “Artista Amara”

As part of FabAcademy Machine Building Week we developed Artista Amara, a machine intended to automate parts of the latte art process through a combination of motion control, milk foaming, sensor feedback, relay-based actuation, and a browser-based user interface. Over the course of roughly two weeks, we invested around 330 hours into the project.

Although we each had areas in which we naturally took the lead, this was very much a shared build. Nico often had a stronger supervisory role during hands-on workshop and assembly tasks, while William took more responsibility for digital planning, electronics integration, firmware work, and the software side of the system. Still, we were both active in both domains throughout the project. The machine is therefore the result of continuous collaboration rather than cleanly separated roles.

Concept Development

The project began with an open ideation phase. We explored a wide range of machine concepts, but in the end, we returned to our initial idea, as none of the alternatives felt as compelling to us. The Latte Art Printer stood out because it combined a range of technical challenges in one system: linear motion, liquid handling, heating, milk foaming, user interaction, relay control, and sensor-based calibration.

Once the concept had been chosen, we started by defining the rough function of the machine. The goal was to create a system capable of preparing and dispensing milk onto a coffee surface in a controlled and repeatable way. From the beginning, it was clear that the machine could not be approached as a purely mechanical project. Fluid Dynamics, foam generation, recycling, electronics, and software all had to be developed in parallel, because each decision in one area directly influenced the others.

Working with Old Machines and Extracted Parts

A key aspect of the project was the reuse of existing hardware. Rather than starting with only new components, we deliberately worked with donor machines and recovered parts. The main sources were an old Ultimaker Mini, an old ANET V1-5 board, several used coffee machines sourced through eBay Kleinanzeigen (a local online marked), and a old power supply setup that included a 600 W PSU.

From these old systems, we extracted the components most relevant for the build. The essential extracted parts included a pump, a heating element, the 600 W power supply, three Prusa MK3 stepper motors, three endstops, and motion hardware such as threaded rods and timing belts. We also reused structural and mechanical parts wherever possible. This extraction phase was not just about harvesting components; it also helped us understand what each part could realistically contribute to the final machine and what kind of adaptation work would be necessary, while keeping the price low.


Planning, Electrical Structure, and Ordered Components

In parallel with dismantling the donor machines, we refined the system architecture of Artista Amara. We worked out the basic electrical structure, mapped out the relationships between the subsystems, and determined which additional parts would be required to bridge the gap between the reused hardware and the new machine.

We placed initial orders for general components such as buttons, tubing, and other integration parts, and later derived a more specific list of core electronics and fluid-handling components. Among the most important ordered elements were relays for the different switched systems, a logic level converter, the Raspberry Pi Zero 2 W, connectors, wiring, a tank, hoses, hose clamps, and the foam. These parts were necessary to create a stable interface between the motion controller, the Raspberry Pi, and the higher-voltage or fluid-based hardware components.

Early Hardware Testing

Before the machine could be assembled into a functional system, we repeatedly tested the extracted and planned components. These tests included checking the power supply levels, validating the pump, testing the heating element, and understanding the electrical behavior of additional components such as LEDs and relay-driven loads.

At the same time, we analyzed and reverse engineered the ANET board to determine whether it could be repurposed as the low-level motion and relay controller. This phase also included first communication tests and validation of the board’s usability in a non-standard setup. These early tests were crucial because they helped us identify faulty assumptions and avoid building later system layers on unstable foundations.

![](./images/power_test.JPG
![](./images/setup.JPG

Mechanical Construction of the Frame

Once the general architecture was sufficiently clear, we began the mechanical construction of the machine. The frame was built from rods cut to different lengths and assembled using M4-based fastening hardware. The goal was to create a structure that was rigid enough for motion control while still leaving enough room for tank handling, cable routing, electronics, and external casing.

To support the internal geometry, we redesigned plexiglass inner walls for the rod mounts and motor positions. These elements helped define the internal layout of the machine and gave the motion system a more stable structure. Throughout this phase, the frame was treated as an evolving construction rather than a fixed design. As more components were introduced, measurements and alignments had to be revisited and adjusted.

Upcycling of Existing Structural Elements

The old Ultimaker side panels were not simply reused as-is. Instead, they were cut down so that only the useful sections remained, and the white primer was sanded away to reveal the aluminum finish below. This was both a practical and aesthetic decision. Structurally, it allowed us to preserve useful machine parts from the donor system. Visually, it helped Artista Amara move away from looking like a temporary assembly of leftovers and toward a more coherent prototype identity.

Motion System and Cup Bed

As the machine developed, the motion system required several adjustments. The Z motor was given a new base area, stabilized, and raised to a more suitable height. This helped improve the overall geometry and created the space needed for the final movement range.

The cup bed went through multiple iterations. It was designed, tested, redesigned, and finally printed in TPU. This was necessary because it had to support the cup reliably while still integrating into the rest of the machine. To improve the quality and finish of that area, a metal top plate was produced in the Metal Fab. A logo was engraved into it, and the plate was then bonded to the TPU base using two-component adhesive.

During assembly of the bed and axis hardware, we noticed inaccuracies of around 2 mm in width, especially around the threaded rod spacing. Instead of remaking the entire assembly, we corrected this using 3D-printed spacers attached around the threaded-rod system. This allowed us to compensate for the tolerance issue and continue with a more stable setup.

Motors, Axis Adaptation, and First Motion Tests

The final motor setup relied on Prusa MK3 stepper motors, which were better suited to the control and voltage conditions of our system. These motors still required physical adaptation before they could be integrated. On the Z axis, threaded sections were shortened and sanded, and on the Y axis the motor shaft had to be shortened by several millimeters to prevent collision with the side wall.

Once the timing belts, threaded rods, and bed-related rods had been installed, we wired the motors in a first provisional state and tested the three axes through the ANET board. This was an important milestone, because for the first time the frame, mechanics, motor system, and firmware side of the build came together as a functioning motion platform.

ANET Board Repurposing

One of the most important technical tasks in the project was the repurposing of the ANET 3D V1-5 board as a controller for Artista Amara. Instead of driving a standard 3D printer toolchain, the board was meant to coordinate the motion system and switch relay-driven systems for the pump, heating element, air supply, and valve. The Raspberry Pi would take over the higher-level system logic and communicate with the ANET board over a serial interface.

At first, we had to understand how to gain proper UART access to the board. Contrary to some of the online documentation we found, J8 was not the actual problem in itself. The real issue was that the onboard USB chip was still being electrically preferred. To solve this, two resistors had to be removed and J8 had to be bridged, so that the onboard USB path would no longer dominate the communication line. The challenge here was that several online guides were misleading or simply wrong, and the correct pins to bridge were not the ones described there. I only arrived at the correct solution after carefully tracing the board with a multimeter and analyzing the paths directly.

This made the debugging process much slower than expected, but it also gave us a much clearer understanding of how the board actually behaved. In the end, the serial communication path could be reconfigured in a way that matched our architecture.

The ANET board was flashed via ISP, and for that process we used an Arduino as an ISP-to-USB bridge. This allowed us to write the board despite the problems with the onboard USB solution and gave us a reliable way to install the required firmware configuration.

Raspberry Pi Role and System Goal

The Raspberry Pi was intended to act as the higher-level brain of Artista Amara. The overall goal was a machine in which the Pi hosts a mobile-friendly web interface, accepts uploaded image files, converts those files into motion paths, communicates with the motion controller, handles sensors, and coordinates the relay-driven foaming and dispensing logic.

More specifically, the planned system behavior was defined as follows: a user should be able to upload a PNG or SVG through the browser interface, the machine should convert that image into a motion path, measure the milk surface before printing using a ToF sensor, calculate the correct print height, and then execute the print while coordinating the foaming and dispensing process. At the same time, the browser interface should provide live feedback on print progress, sensor readings, and warnings, while also exposing adjustable settings through an advanced tab.

To support this, the Raspberry Pi setup was envisioned as a central software layer coordinating browser communication, serial communication with the Marlin board, sensor access, GPIO-driven relay control, tank-related logic, and configuration storage. It was designed as the main integration point between user interaction and machine behavior.

Web Interface and Hosting on the Pi

Before settling on the Raspberry Pi-based approach, we first explored a lighter setup based on a microcontroller-hosted web structure. That route was eventually abandoned because it proved too slow and unstable for the overall complexity of the project.

We then moved to a setup in which the Raspberry Pi Zero 2 W hosted the web interface directly. The machine website was served locally on the Pi, allowing the browser-based UI to run directly from the system that also handled the machine logic. This made the architecture cleaner and reduced the number of moving parts.

The intent behind this setup was not just to display a static webpage, but to provide a responsive machine interface through which uploads, machine control, warnings, and future advanced parameters could all be managed. The Pi therefore became the natural bridge between the front-end interface and the underlying hardware systems.

Relay Logic and Machine Control

The ANET board and Raspberry Pi were planned as a layered control system. The Raspberry Pi would provide higher-level orchestration, while the ANET board would handle the motion side and controlled outputs. The relay strategy was built around the key machine subsystems: pump, heater, air supply, and valve. Later, related systems such as the vacuum pump and LED elements were also considered within the broader switching logic.

An important part of the architecture was the idea that the machine would not simply be mechanically driven, but recipe-driven. That meant that foaming and dispensing behavior would eventually depend on adjustable parameters rather than fixed manual timing. This became especially relevant after the foaming experiments.

Milk Foaming Experiments

Alongside the mechanical and electronics work, we repeatedly carried out practical milk-foaming tests. These tests ran in parallel with the build and were central to understanding whether the machine could actually create a usable medium for latte-art-style output.

For these experiments, we used barista oat milk and tested different combinations of the pump, different sized metal screens as well as kitchen sieves, the heating element, several nozzle variants, and different degrees of air input. These tests were important because they shifted the project from a theoretical machine concept into a process question: not only how to move and dispense material, but how to prepare that material in the first place.

The results were mixed. We had some encouraging outcomes, but the majority of the tests were negative or only partially successful. Nevertheless, those experiments were extremely valuable because they showed that it is in fact possible to generate usable foamed milk if the right combination of variables is chosen. The most important conclusion from these trials was that the decisive factor seems to be the relationship between the amount of open air valve and the milk flow, meaning the ratio of air to milk.

This means the final success of the machine does not depend on hardware alone. The process will need to be finalized later through software parameters that regulate timing, valve opening, air input, and pumping behavior in a more controlled way.

ToF Sensor and Dynamic Height Calibration

To improve print consistency across different cups and fill levels, we planned for the machine to use a ToF sensor to measure the milk surface before a print starts. This sensor was intended to be connected to the Raspberry Pi rather than directly to the ANET board. The reason for that decision was flexibility: it fit more naturally into the Pi-based software architecture and allowed the measured value to be processed in software before being translated into a motion offset.

This approach supports the broader goal of making the machine adaptive rather than fixed. Instead of assuming a single cup geometry or fill level, the print height can be corrected dynamically before each print.

Pi HAT Development

To make the Raspberry Pi easier to integrate into the full machine, we designed and milled a custom HAT that sits directly on top of the Raspberry Pi. This HAT effectively acts as a compact machine-specific interface board. It provides both 5 V and 3 V power distribution and functions as a connector-based bridge between the Pi, the ANET board, and the different relay-controlled or button-based subsystems.

In practice, this meant the HAT served as a kind of simplified mainboard layer for the Raspberry Pi side of the system. It exposed connectors for communication with the ANET J3 interface, for relay-related wiring, and for other Raspberry Pi pin-based control elements such as buttons and further machine-side logic. This made the wiring structure more deliberate and far easier to organize than if the project had relied only on loose jumper wires and ad hoc breadboard-style connections.

![](./images/pcb.JPG

Additional Mechanical Fabrication

Beyond the larger visible assemblies, we also had to produce smaller connection components ourselves. In particular, we machined stainless steel connection elements in order to mechanically integrate parts such as the pump into our own system. These custom metal adapters were necessary because the donor parts were not originally designed to interface with the geometry and fittings of Artista Amara. Without these fabricated connectors, several transitions between reused and custom-built hardware would not have been possible.

![](./images/adapter.JPG

Side Walls, Back Panel, and Overall Body

As the machine became more complete, we continued to refine the body and structural layout. The side walls were mounted, and the front and rear sections were measured and installed using brackets. A perforated rear panel based on an M4-compatible hole grid was designed to carry mechanical and electrical components. Manufacturing this panel was more complicated than expected because workshop issues caused poor cutting quality and additional manual work.

Even so, this rear structure became an important part of the machine because it provided a clear mounting surface for components that needed to be safely fixed and spatially separated from the motion area. It also works very well as a cooling element.

Project Management and Time Pressure

In addition to the physical and technical work, we also managed the project in the project planning software Monday, where we documented tasks and tried to maintain a timeline for the overall development process. This helped us keep track of what had been done, what still needed to be built, and how the different work packages related to one another.

At the same time, the experience showed how limited even good project management can be when building a machine under real conditions. Machine failures, wrong documentation, fabrication issues, and newly emerging constraints during assembly kept changing the plan. As so often happens in machine projects, new information only appeared once parts were actually installed and tested. Because of that, the schedule slipped repeatedly, and despite the effort to structure everything properly, the process became increasingly stressful.

Soon

Several major steps were already conceptually integrated into the project direction and were treated as the next major layer of completion for Artista Amara.

The print head was designed around the rod dimensions of the Ultimaker-derived mechanical system. It integrated a LED ring, the ToF sensor, and a 4 mm stainless steel nozzle, combining illumination, sensing, and dispensing into one compact head assembly.

At the rear of the machine, the 240 V components were mounted onto the perforated back panel. This included parts such as the power supply, the relay-related hardware, and the milk-foaming components, creating a more organized and safer separation between the high-voltage section and the rest of the machine.

The outer side panels were cut from acrylic and then covered with veneer, giving the machine a more finished outer shell. These outer panels also integrated the openings and placements for the machine buttons, so that interface hardware and casing design were combined into one consistent layer.

Finally, decorative elements were added to the outer case, including the logo and LED filament accents, giving Artista Amara a more recognizable visual identity beyond its technical function.

Conclusion

Artista Amara is one of those projects that is both genuinely exciting and genuinely too ambitious for the available time. For a two-week period, we definitely took on too much. The machine combines motion control, repurposed electronics, fluid handling, heating, foaming, sensing, interface design, and custom hardware development, and each of those areas alone could easily have justified a much narrower project scope.

At the same time, the project has real potential. Even in its difficult and unfinished state, it already proved that the core idea is not just visually interesting but technically plausible. The foaming tests showed that workable milk texture is possible with the right parameter combinations. The motion platform was brought to life. The ANET board was successfully repurposed despite misleading documentation. The Raspberry Pi architecture was defined in a meaningful way. The machine body, interfaces, and subsystem logic all began to form a coherent whole.

Still, the cost of that ambition was high. We spent essentially every day from morning to evening in the lab, and even outside the lab the machine remained mentally present all the time. Every free moment was occupied by planning, troubleshooting, redesigning, or thinking through the next step. That intensity was part of what made the project possible, but it also made it clear that the scope had exceeded what could comfortably be finished in such a short time.

Even so, the project was worth doing. Artista Amara is a very cool machine, it taught us an enormous amount in both practical and conceptual terms, and it clearly has the potential to become something much more refined with more time and continued iteration.