The Backstory
This project closely resembles the Slotterie. Our initial goal of the slotterie was to create a fun project that we could enjoy ourselves. But after using it on some parties friends and colleagues started to ask to borrow it. At some point we came in contact with the CEO of “BEMBEL-WITH-CARE”. He loved the idea so much, that he asked if we could create a similar device for his cider brand.
Because BEMBEL-WITH-CARE uses their iconic cans to market the beverage the idea came quick to let the machine look like an oversized beverage can with a lever. We further created some designs (see images below), exchanged some more mails and quickly began to work on the slot machine.
Building the Machine
Because we already had created such a system we thought that it would be a walk in the park (we should be taught better 😅).
Our initial task was to find a suitable can shaped container to use as the housing. We found a online shop that sells industrial steel barrels that suited our needs. This was our starting point to design everything around it.
Because of the radial base we could not use the side-ways positioned piston (see Slotterie: moving-carrige) to dispense the cans and had to think of another solution. Our new solution (and in hindsight much better one too) was to create a rotation dispenser (see pic 1). This approach was much more compact, faster, easier to build and more reliable than the one used in the slotterie.
We then had to cut the necessary openings into the barrel for the can dispensing, the screen and also the controlling panel at the back.
One difficult part was to design the 3D-Parts to fit the radial shape of the barrel perfectly. In theory this sound simple but in practise this took some prints to get perfect. Levin and Janis did an excellent job there (and on all other 3D-Parts)!
The Screen section (see pic 2) was designed as multiple parts that had to be glued together (the 3D-Print bed is not large enough to print everything in one go). It then got sanded and spray-painted before the screen and the LEDs were installed. The finishing touch was a laser-cut milk-glass acrylic part to diffuse the LEDs.
All user-visible parts went through this “treatment” where the print was sanded, spray-painted and this process was repeated until no more 3D-layers and other deficiencies were noticeable.
The Barrel was initially white and was coated black and wrapped.
Some small details:
- The side text lists milliliters the bembel-bandit can hold when counting the max amount of cans (34).
- The cover to put cans into the system is a stay-tab to mimic the look of a can (see pictures)
- we had to glue a small silicone “lip” to the can exit because the cans rolled to far and often fell on the ground.
The Software
We used a Raspberry Pi as the brain of the operation — running the main application, managing inputs (like the lever and settings knob), and triggering the appropriate responses. For I/O, we used an Arduino Mega, which handled the large number of sensors and LEDs. The Arduino and Pi communicated via UART using a custom protocol.
In contrast to the Slotterie we switched from Java and JavaFX as our main programming language to a landscape of JavaScript and Python “Microservices” with the UI running in a Chromium-based fullscreen browser. Each major sensor or LED cluster (e.g., top light, screen ring, arrow indicators) was controlled by its own small Python microservice. These services exposed simple HTTP endpoints that triggered animations or responses. A central “core” application was responsible for controlling the overall flow.
Software Landscape of the Bembel-Bandit running on a Raspberry PiBecause every service was decoupled it was easy to create mock endpoints to test parts in isolation and on our local machines.
I focused on the core application logic, including screen animations and overall workflow, while Janis developed the hardware-interfacing Python microservices. For the led animations i used large parts of the code from the slotterie my brother Tiago Afonso wrote.
We containerized every service and used Docker Compose to orchestrate them, simplifying deployment and enabling local development.
One interesting challenge during development was to optimize the reel spinning animation in the browser. The Raspberry Pi 3B was not performant enough to run the animation smoothly. The solution was to pre-compute the reel with all of its elements after each spin effectively setting the result for the next spin in place. Because the user does not pull directly after each spin the system has enough time to pre-compute everything instead of running the animation in real-time. This was the first time I used the Chrome DevTools to analyze Rendering Performance and optimize the animation.
Conclusion
The Bembel-Bandit project stands as a testament to how passion projects can open unexpected doors. What began as a fun side project—the Slotterie—eventually attracted the attention of BEMBEL-WITH-CARE, leading to a professional commission that we never anticipated. This demonstrates that building things purely for enjoyment and learning can create opportunities far beyond their original intent.
From a technical standpoint, this project reinforced an important lesson: past experience accelerates development but doesn’t eliminate complexity. Despite having built the Slotterie, the radial housing design introduced entirely new challenges. The rotational dispenser we developed proved to be a significant improvement over our previous piston-based approach—more compact, faster, and more reliable. This iterative improvement across projects is where real engineering growth happens.
What started as friends building silly machines for parties evolved into a client relationship, professional deliverables, and deeper technical skills—proof that the best projects often emerge from genuine curiosity and a willingness to take on challenges just slightly beyond your current abilities.