Team:Grenoble Alpes/Hardware

PyoBuster - Hardware


Our project aims at destroying the biofilm of Pseudomonas aeruginosa. This biofilm can be adapted to many environments which could be inside or outside the body. To make our experiments easier and to prove that our engineered Escherichia Coli works, the dry lab team created an automated incubator. Our incubator takes charge of the plate during all the experiment : it provides the wished experiment parameters and does the analysis of the plate. To do so, our automated incubator has 3 functions : an environment control module, an agitation module and a fluorescence module.

The first module sets the environment parameters: our incubator controls and monitors temperature and humidity. Indeed, these two parameters have a significant impact on bacteria growth and must be properly set. Here, the challenge is to obtain a stable atmosphere, so that we have the same growth characteristics during the whole experiment.

The second part operates the plate movements. Bacterial growth requires agitation to homogenize the access of the cells to the surrounding medium. We chose to implement this agitation by controlling the position of the multiwell plate where our samples are, at any time. This agitation is necessary to grow bacteria to form a biofilm. Moreover, this module is necessary to examine each well of our plate precisely to analyze its fluorescence.

The last part is the detection module. We chose fluorescence because you don’t need to extract a part of the medium to make the analysis and fluorescent genes can be a constituent element of bacteria. This means that we can remove human interaction with the plate during the analysis. We chose to use green and red fluorescence to distinguish the E. Coli and P. aeruginosa evolutions. Thanks to this module, AMI takes care of the analysis and is able to show the results of the experiences.

Growth module

The first step in cell growth culture is to define the culture conditions. AMI is taking care of two important environment parameters: temperature and humidity in addition to a physical parameter: the agitation.

Environment control

  • Description

An overview of the components and the global electronic circuit is shown in the Figure 1 below.

Scheme of the eletronic circuit
Figure 1: Overview of the environmental control module electronic circuit

The temperature module is composed of a power supply of 24V and 5A, a relay which plays the role of a controlled switch and ATE RB50 heating resistors. Heating resistors are electric devices that generate heat. It is based on the Joule’s first law that is whenever an electrical current goes through a conductor and produces heat.

Heat resistor image Relay image Power supply image
Figure 2: Left: power supply; middle: relay; right: heating resistors

To make it to a fully wet atmosphere, we used an ultrasonic water atomizer. It works as follows: a little disk vibrates at the surface of water, shooting out microdrops in the atmosphere. This atomizer works in 2 parts: there is a control card that is an intermediary between the Arduino and the disk. The placement of the disk was tricky because it needed a perfect placement in order to properly function. The common solution is to support the disk with paper but it is quite unstable. We solved this issue thanks to the 3D printed piece with cotton inside the cylinder. Water is carried to the disk through cotton and the atomizer works nicely. Thanks to this, the atomization is independent of the water level.

The disk of the water atomizer The control board of the water atomizer
Figure 3: Overview of the humidity module in action with in gray the plastic piece designed and printed by us

Before trying to monitor the environment, it should be quite homogeneous. To do so, we used the idea of rotating heat in the ovens. Hence, 2 fans of 12cm*12cm were put on the back wall. These fans are powered with its own 12V power supply and they can be controlled by an Arduino (function “PWM fan”). That means that you can control the rpm or the cfm (cubic feet per minute).

The fans integrated to the hardware
Figure 4: Overview of the fans fixed in the prototype
DHT22 presentation of the dht22 sensors
Figure 5: Overview of the DHT22 (left) and its 2 sensors inside the plastic protection (right)

We needed sensors both for humidity and temperature. We wanted sensors with high sensitivity (temperature precision of the order of 0.1K) and stability over time. After comparison with other sensors, we chose the DHT22 (Figure 5) because it was meeting the best of these expectations. To sum up, the DHT22 is both a humidity and temperature sensor. It is accurate at 0.1°K and 0.1 relative humidity and it works finely during such long experiments. Another plus for this sensor is its ease of communication with Arduino.

DHT22 temperature sensor is a NTC (Negative Temperature Coefficient) thermistor, it means that the resistance value changes in function of the temperature. Concretely, if you know the characteristic of the compound by reading its resistance then you know the temperature of the compound. For humidity, it is 2 electrodes separated by a moisture substrate holding that changes its resistance with moisture. That’s the same idea as temperature : by knowing the characteristic of the compound, if you measure the resistance then you have access to humidity.

But all of these components need to be controlled in order to perform their proper function, and this is what we are going to see in the next paragraph.

  • Control of the environment module

Due to our choice, which was based on heating resistances, the temperature evolves thanks to long term effects. Indeed, when you stop the current which supplies the resistances, it will take time to cool down and therefore continues to heat up the atmosphere. About humidity, it evolves instantly because it is an on/off phenomenon.

presentation of the dht22 sensors
Figure 6: An Arduino Uno microcontroller

Hence, the automation of the temperature is more complex than the one for humidity. The control of the temperature is based on a PID (Proportional-Integral-Derivative) corrector. The PID corrector adapts the heating power depending on the error between the expected temperature and the actual one. Concretely, the PID corrector decides on the duty cycle of the PWM (Pulse Width Modulation) alimentation for heating resistors.
If you want to go a little deeper in the PID theory, there are 3 proportional coefficients that have to be calibrated to get a good answer of the system. Each of them has its own effect : reaching the desired value, deciding on the speed or stabilizing at the target. That is what the PID corrector plus the PWM supply does: it allows the environment to smoothly reach and stabilize at the desired temperature with low overshoot.

Regarding humidity monitoring, we set our water atomizer to work until reaching a mean humidity of the desired value. In the case you need saturated humidity, the saturated value is set to 99,5% of relative humidity.

  • Prototype and results

We made a prototype of the environment module with a 10L box in order to validate in the first instance our choices. This prototype is a smaller version of the actual environment module. We checked many results with this prototype: to verify that the environment module works, to calibrate the PID corrector parameters, to see the influence of disruptions and how a biological sample evolves compared with a real incubator.

Figure 7: Overview of the prototype

Too see the results of the experiments go to Results.

Plate displacement module

The first goal of the plate movement module is to create an agitation for bacteria growth. The second goal is to line up the desired well and the detection module. To reach these 2 goals, we created our own device thanks to 3D printed pieces and stepper motors. In this part we will develop an overview of the module and how it works. Thus we focus only on the agitation function as the displacements well by well use the same idea and computer programs are very similar.

A 3D model was built on ©Fusion 360 before building the agitation module. It saved us some time and plastic waste as this model was used for printing the 3D pieces.

  • Description

We got inspired by the 3D printer we had in our room to build this plate control device. This results in combining 2 stepper motors, belts, pulleys, axes and limits switches.

We first created a base to hold the whole components. This base was 3D designed and we printed most of the pieces. Then the base is completed by two steel linear axes which support linear bearings. To these bearings we screwed 2 other plastic pieces supported by two additional linear axes. Which themselves carry the 96 plate holder screwed to two linear bearings. But a figure is worth a thousand words as you can see in figure 8.

picture of the final prototype
Figure 8: Overview of the final prototype

To move the plate, we decided to use stepper motors because of their accuracy. An electric motor converts electric current into magnetic force and allows the motor to carry some weight away. Stepper motors are built to reach determined positions at the same angular distance. We used NEMA17 motors (Figure 9) which has 200 steps for one revolution, equivalent to 1.8° or 0.0157 rad steps. These motors are controlled with TMC2130 motor drivers. If you want more details on stepper motors, you can check the 2019 Grenoble Alpes hardware page.

Figure 9: The motors (left) and the drivers (right)
  • Agitation control

The first goal of the plate movement module is to create an agitation for bacteria growth. The second goal is to line up the desired well and the detection module. To reach these 2 goals, we created our own device thanks to 3D printed pieces and stepper motors.
To move the plate, we decided to use stepper motors because of their accuracy. An electric motor converts electric current into magnetic force and allows the motor to carry some weight away. Stepper motors are built to reach determined positions at the same angular distance. We used NEMA17 motors and it has 200 steps for one revolution, which means it does 1.8° or 0.0157 rad by step.

Basically, you need drivers that act as an intermediary between the microcontroller and the stepper motor. The Grenoble Alpes 2019 team used the driver DRV8825, but we chose to use the TMC2130. Basically, the combination motor-driver determines many things. Moreover, there is also how you code it, using pre-defined Arduino libraries or not, that determines how the motor works. In our opinion, this driver has many improvements because it allows more functions and also, compared to the DRV8825, it is noiseless. We ended up copying the idea of 3D printers: to combine 2 stepper motors, belts, pulleys, axes, limits switches and 3D printing support. The result is the possibility to move the plate on a plain which approximately is/does a square of 15*15cm.

Agitation model 3D
Figure 10: An overview of the plate movement module, on the bottom the 3D modelisation realized with ©Fusion 360.

The motors drive the pulleys which in their turn drive the belts. Thus, these pieces transform the rotative movement of the motor axis in a linear movement. In addition we added two switches in order to bound the plate’s stroke. All of the components are wired to an Arduino MEGA according the following scheme (Figure 11).

electronic scheme of the control circuit

Figure 11: An overview of the electronic circuit of the control agitation system

Fluorescence module


To observe the evolution of the biofilms of Pseudomonas aeruginosa as well as the PyoBusters which are our engineered E. Coli Nissle designed to kill the P. aeruginosa’s biofilm, we manufactured a module allowing us to follow by fluorescence in a qualitative way the evolution of the biological systems. We chose this technique because fluorescence is widely used in biology and also, for the biologists, it is relatively easy to insert fluorescence genes that can be expressed.

Fluorescence is a light emission induced by an excitation of the electrons of a molecule. We use this phenomenon to follow the biofilms and the PyoBusters at the same time, we labeled them both with different fluorescent proteins. Each protein has its proper excitation wavelength which is given by the excitation and the emission spectra (Figure 12).

Fluorescence is a light emission induced by an excitation of the electrons of a molecule. We use this phenomenon to follow the biofilms and the PyoBusters at the same time, we labeled them both with different fluorescent proteins. Each protein has its proper excitation wavelength which is given by the excitation and the emission spectra (Figure 12).

The two fluorescent molecules we worked with are EGFP, dedicated to mark the biofilms and mCherry, the fluorescence expressed by our therapeutics bacteria.

egfp spectra mcherry spectra
Figure 12: Excitation(in blue/orange) and emission (in green/red) spectra of the EGFP (left) and mCherry (right) proteins

Our fluorescence detection module is made of two main parts. The first one is the excitation part which includes the excitation light and the excitation filter. The second one is the detection module, composed of an absorption filter and a light sensor able to detect the emitted light like a camera (Figure 13).

Figure 13: Principle of the fluorescence detection

Our device

  • The excitation module

In order to emit a sufficiently high intensity of fluorescence, bacteria need a specific and sufficiently intense excitation light source. To achieve this, we created a compartment for each fluorescent protein. The excitation light comes from RGB LEDs that can be monitored to produce a specific light with a chosen spectra. For the EGFP protein, the maximum excitation bandwidth is around 488nm, so we used the blue channel of the LED which emits a light between 465 and 475nm (close enough to the maximum excitation). We coupled the LED with a 410 nm cut-off wavelength shortpass filter (Figure 14) [1]. For the mCherry protein we used the same method with the combination of the green channel of the LED (515-530nm) in addition with a shortpass filter (cut-off wavelength: 510 nm) (Figure 14) [2].

Figure 14: Emission spectra for EGFP (left) and mCherry (right) filters

We designed and printed a 3D plastic piece with 2 chambers. In each one, at the bottom 4 RGB LEDs and at the top the filters. The LEDs are controlled with an Arduino.

figureExcitation figureExcitation
Figure 15: Excitation module and 3D model
  • The detection module

The detection is made of two components, two absorption filters specific to each protein and a detector controlled by a raspberry microcontroller. The high-pass filters have shortcut frequencies of 515 nm to observe the EGFP and 610 nm to observe the mCherry (Figure 15) [3] [4].

The two absorption filters ensure that the camera receives only the fluorescent light coming from the sample. Without these filters the image captured is very noisy, and the image processing would be trickier. As we can see in the first image in the figure 17, the excitation light is clearly visible by the camera. The two other image show that with the 515nm high-pass filter the image get rid of the excitation light associated to the EGFP fluorescence (the blue light) and with the 610 nm high-pass filter, we get rid of the mCherry fluorescence excitation light (the green one).

absorption spectra for egfp absorption spectra for mcherry
Figure 16: Absorption spectra for EGFP and mCherry

image without filters blue well filtered black image
Figure 17: From left to right: image without absorption filters, image with the EGFP filter, image with the mCherry filter

The camera is a Picamera HQ with a Sony IMR477R detector of 12 million pixels (Mpx). On it we settled a 16mm lens which has a 10Mpx resolution (Figure 18). The camera is monitored by the Raspberry Pi 4. The lens enables to set the diaphragm’s aperture and the focal length. To focus on the samples and get an image without blur, we set the focal length at 16 mm and the diaphragm to its minimum aperture.

picamera HQ 16mm lens
Figure 18: The camera (left) and the 16mm lens (right)
Figure 19: Overview of how the detection module is integrated to the testing bench
Left: the camera maintained by a plastic piece
Up right: the two absorption filters held by 2 plastic pieces
Bottom right: another angle of view of the filter holder

  • How is it controlled?

The light source is controlled by an Arduino with the FastLED-3.3.3 library. We can set the intensity, the color and decide to switch on and off the LEDs. To control the camera, we use a javascript script. After the picture is taken, we processed the image with a python script in order to get the light intensity corresponding to the sample’s emitted fluorescence.
To understand better how the image is processed, here are the big steps of our algorithm. First, the image is reframed to get only the interest well, then we threshold the image in order to get rid of the possible artefacts and the noise, and finally we compute the average pixels containing the information. You can see the result below, Figure 20.

image processing cura overview
Figure 20. Left: raw image
Right: processed image

The samples are the well of the plate, to perform the best measure possible, the excitation light, the sample and the camera must be aligned, and this is managed by the plate displacement module.

  • Discussion

The question of the filter is very important and took us a lot of work to find the right ones. The difficulty lies in the fact that the transmission light is very important but depending on what spectra you need, the transmission can be very bad. In a fluorescence microscope, the filters have a very high quality but are also very expensive. We had to deal with the best compromise between the price and the quality.

The lens has a lower resolution than the camera but it isn’t a problem because with a 10 Mpx resolution the quality of the images will be quite good enough for our application. With this camera, the aperture isn’t sufficient to observe the whole plate, this is one of the reasons why we developed the 2D displacement module. With the settled parameters of aperture and focal, it takes a dozen of seconds to take picture. This is quite long and if we take a picture for both fluorescence for each well, the image capture can take 96 x 2 x 15 = 2880s=48min.

Testing bench


The structure of the testing bench is made of plexiglass for its robustness, its ease of drilling hence the manufacturing is quite smooth. In addition, we had to integrate all the wires properly and to do so we designed Printed Computer Boards (PCB). We let some electronic devices outside in order to protect them as they wouldn’t sustain the levels of humidity we use.

Modelisation and 3D printing

We made all of our 3D modelisation with the Fusion 360 software, prepared the pieces for printing with Ultimaker Cura and printed our pieces with a Creality Ender 3 V2 printer. All of the pieces were printed with PLA plastic, a common material used in these kind of application.

3D printer ender 3 cura overview fusion overview
Figure 21: Left: the Creality Ender 3 V2, Middle: Ultimaker Cura overview, Right: Fusion 360 overview

With the abilities of Fusion 360, we have been able to modelize completely our prototype. That was a very useful thing to do, in order to realize before printing the many problems that we could encounter during the building step. The time and effort put in the 3D modelisation allowed us to first save plastic because a lot of pieces of our testing bench are in plastic and printed with the 3D printer; as well as save time because the prints are long. In total we modelize close to a dozen of pieces.


One of the main reasons we have built this incubator is due to the excessively high cost of an industrial incubator on the market. With this device, a lot of laboratories without enough funds can acquire this technology.

Element Quantity Price in € Total
Heat and humidity module
Arduino Uno 1 6 162,26
upHere 12x12 fan 2 10,66
SRD-5VDC-SL-C relay 2 7,26
ATE RB50 5R6 heat resistors 6 29,94
Grove - Water Atomization 1 8,72
DHT22 sensors 5 44,95
24V power alimentation 1 36,25
12V power alimentation 1 14,23
1.5mm² electric cable 2 meters 3
screws 21 1,25
Fluorescence module
Raspberry Pi 4 1 45 493,85
Picamera HQ 1 113,6
Excitation filter High-Pass 1 73
Absorption filter 1 260
WS2812B rgbLEDs 4 1,5
screws 12 0,75
Agitation module
Arduino Mega 1 14,99 81,3
200 mm chromed steel linear axis 4 17,98
Ø 5mm pulley 2 2,8
2 steel axis Ø 5mm and Ø 8mm compatible 2 4
608ZZ ball bearing 2 1
Linear bearing 4 6,99
6mm belt 1 meter 2
Nema 17 HS4401 2 14,8
TMC 2130 motor driver 2 12
Micro switch 2 2,24
Screws 31 2,5
Other pieces
plexiglass 1 m² 60 87,62
screws 33 2,5
joints 1 meter 10
angle brackets 8 4
corner brackets 4  
Micro switch 1 1,12
0.2 mm² electric cable 10m 3
hinges 2 3
door locks 2 4
Total 825,03


Our testing bench has been developed during 3 months due to the mondial pandemic and because the PyoBusters project started in 2020. In order to improve our testing bench the following ideas can be followed:

  • Create of a complete hermetic chamber to prevent the air, heat and humidity leaks;
  • Install a pump system providing gas mixtures, in order to mimic better biological environment;
  • Install a microscope module able to see an entire well thus provide a better image of the cultured biological sample;
  • Integrate a microfluidic system in order to cultivate biofilms in a non static environment;


[1] 400 nm low-pass filter:
[2] 500 nm low-pass filter:
[3] 515 nm high-pass filter:
[4] 610 nm high-pass filter: