Introduction: Bubble Wrap Painter

As part of our "Mechatronics 1 - MECA-Y403" Master 1 course at ULB, we were asked to design a robot performing a specific function and to create a web site summarizing the design of the robot, starting with the choice of materials, the modeling, the realization and the code allowing the whole system to work. The whole group unanimously chose to realize the "Bubble Wrap Painter" robot.

The "Bubble Wrap Painter" is a device capable of injecting paint into some bubbles of the bubble wrap from a voltage control supplied by the computer. Initially, the robot had to be able to inject the liquid in a 2D plane in order to generate a spot drawing. However, for economical and practical reasons, the group has withdrawn to inject paint on a 1D trajectory. The robot works as follows: a worm screw system is used to press the plunger of a syringe initially filled with paint. The syringe is connected to a flexible polypropylene tube that allows the paint to be conducted to a metal tip attached to the mobile module. This module is able to slide along a horizontal axis, again by means of a worm system. The tip, on the other hand, is attached to a linear electromagnet which is also attached to the mobile module. The electromagnet is used to prick the bubble wrap fixed on a vertical plate. Once the bubble is pierced, the paint is injected into it and so on.

Step 1: Parts and Tools Description


2 Beam Couplings 5mm to 6mm

1 syringe of 10 ml (7,5 cm long) 

1 pipe in flexible polypropylene with a diameter of 4mm

1 needle with his safety cap

Gouache diluted with water 

2 threaded rods: diameter 6mm and 18,5cm long

2 smooth rods of 8mm diameter and 21 cm long

2 smooth rods of 8mm diameter and 10 cm long

Bubble wrap 


1 breadboard

1 arduino

1 stepper motor

1 stepper motor RS PRO Hybrid, Permanent Magnet Stepper Motor 1.8°, 0.22Nm, 2.8 V, 1.33 A, 4 Wires

2 micro switch V-156-1C25

1 electromagnet ZYE1-0530

Power supply 

2 banana connectors

45 jumper wires 

6 conductive cables

Diode 1N4007

Transistor IRF5402

3 resistors 4,7 kohm

2 DRV8825 drivers  

1 push button switch


42 screws M3 16 mm long

4 screw M3 10 mm long

4 screws M4 16 mm long

2 screws M2,5 16 mm long

52 corresponding nuts

2 steel plain washer M3


Laser cutting machine

3D printer (Ultimaker 2 or Prusa)


Step 2: CAD Files

LASER CUTTING with a thickness of 3 mm

-support plates 

-support for lifting the switch

-moving support for the needle

-bubble holder

-4 heightening support


-support for the motor

-support the threaded rod

-syringe pump

-support for the needle

-support for the syringe

Step 3: Assembly

To begin with, we designed a wooden base made up of 3 different elements: a bottom plate, a vertical plate and a triangular plate to hold everything together. 

You can see in the picture that the different plates have repeated T-shaped patterns. These patterns are used to fix the assembly and allow the base to be robust. The two switches are placed on the piston and on the mobile module. This allows to give respectively a reference on the maximum expansion of the piston and a reference on the extreme right position of the mobile module. 

In addition, the stepp-motors are fixed with four screws to a support created with a 3D printer. On this support, two perpendicular holes allow the fixation to the vertical plate. The threaded rods connected to the two rotation axes of the motors as well as the four smooth bars are held by additional supports located at the antipode of the motors. In addition to this, connectors are used to fix the threaded rod to the rotation axis of the stepp-motors.

The syringe is also fixed with a bracket that is screwed onto the horizontal plate. Its plunger can be pressed by means of a trapezoidal piece that runs along the threaded rod as it rotates. This part has a hole in its interior which is fitted with a nut. This nut allows the trapezoidal part to move.

The tube is connected to the syringe by simply plugging it into the end of the syringe. The other end of the tube is stuck in the ring of a small white PLA piece. The metal tip that was originally part of the syringe has also been snapped onto the end of the tube. We have added the syringe cap to the needle to better fill the diameter of the white piece. The cap has a hole at the end to allow the needle tip to pass through. This small white part is screwed with two screws on the sliding plate of the mobile module. 

The mobile module consists of a set of wooden parts fixed in the same way as the plates that make up the base. The module forms a box with three holes to accept the two smooth bars and the threaded rod. Inside this box are two nuts that allow the module to be moved. The top plate of the module slides along two smooth bars. At the internal centre of the module there, a fixed plate holds the linear electromagnet. This allows the sliding plate to make linear movements back and forth.

There are two wooden brackets that allow two perforated tongues to be fixed directly to the vertical plate using washers blocked by the screws. These two tabs wedge a strip of bubble wrap in their centre. The bubble paper here contains seven bubbles corresponding to the 7 bits encoded by the computer.

On the other side of the vertical plate are the PCB and the arduino. The PCB is glued to the horizontal plate by means of a gluing system that is initially present and the arduino is screwed to the bottom plate. In addition to this, there is a resistive divider connected to the PCB which is screwed to the wooden triangular part. (PICTURE: back of the system)

*Each of the screws that are part of the system is consolidated by suitable bolts.

Step 4: Electronics and Sensors

We need to know the position of the upper stepper motor when the bubble wrap painter is started to reach the exact positions of the bubbles. This is the objective of the first switch. Each time the device is drawing a line, the motor rotates until the switch changes state. 

We need another switch to know when the stepper pushing on the syringe has reached the end of the piston. The second switch is used to stop the system when the syringe is empty. A third optional switch can continue the painting when the syringe has been filled in. These switches use low voltages and can be directly supplied by the arduino. The two stepper motors and the magnet need more power and are supplied by a power generator delivering 12V and 1A. Two DRV8825 stepper motor drivers transform the signals from the arduino into a current for the motors. These drivers need to be calibrated. The calibration is done by making one stepper rotate at constant speed and adjusting the driver's screw until the torque is sufficient to smoothly move the needle and the support. The last element is the electromagnet. One pull down resistor is used to reset the mosfet when no current is sent by the arduino. To protect the other electronics parts, a flyback diode is also added to the electromagnet. The mosfet is switching magnet between high and low states.

Step 5: Python Code

For the communication between the computer and the arduino using python, we based ourselves on the codes provided on this forum:

To control the stepper motor, this site was very helpful: And to understand the basics of arduino, the ‘arduino projects book’ was also very helpful. There are two parts of the code: the first one is a python code that converts a letter in the ascii binary code and sends it bit by bit to the arduino, and the second one is an arduino code that spades in the corresponding bubbles. The following flowchart explains the principle of the arduino code:

Step 6: Video

The working project!

Step 7: Improvements

The project can be improved in a number of ways. Firstly, the number of bubbles on a line can be easily increased. This can be done by taking longer binary codes, by writing two letters at the entry instead of one for example. The ASCII code will then be twice longer.

The most important improvement would be to be able to fill in the bubbles not only along the x-axis but also along the y-axis. Bubble filling would therefore be done in 2D instead of 1D.  The easiest way to do this is to vary the height of the bubble paper, instead of raising and lowering the motor. This would mean not hanging the edge of the bubble paper holder on the plate but on a 3D printed support. This support would be connected to a threaded rod, itself connected to a stepper motor.

Step 8: Problems Encountered

The main problem we had to deal with is the electromagnet. Indeed, in order to avoid having a cumbersome and heavy third engine, the electromagnet seemed to be the perfect compromise. After some tests, the stiffness constantly proved to be too low. So a second spring had to be added. Moreover, it can only move very light loads. The arrangement of the different elements had to be revised. 

The syringe pump was also a problem. Firstly, a part had to be modelled that could be hooked to the endless rod and push on the plunger at the same time. Secondly, the stress distribution was important in order to avoid the part breaking. Moreover, the 2 stepper motors are not the same: they don't have the same characteristics, what forced us to add a voltage divider.  We had to use water paint (diluted gouache in our case), because a too thick paint would not pass in the needle and would cause too much pressure loss in the pipe.