Team:EPF Lausanne/Hardware


Revision as of 21:42, 17 October 2014 by Robert Baldwin (Talk | contribs)


Having successfully engineered touch responsive bacteria, the next major step to build a functional BioPad is to detect and process the emitted signals. The microfluidic chip containing our engineered organisms has the advantage of being small and portable. We aimed to keep these characteristics all along the project. That is why, instead of using a big and cumbersome device to detect signals, we opted for a small and cheap Raspberry Pi. Let the adventure for building the BioPad Detector begin !

Raspberry Pi

Raspberry Pi

The Raspberry Pi is a small and cheap (40.- CHF) single-board computer. The raspberry Pi will be used to monitor the light emitted by each chamber of the microfluidic chip. We will be able to detect and process all emitted signals through this small device !

When brainstorming how to build the detector, we initially drafted the follwing setup:

Raspberry Pi

As seen in the picture above, the camera is directly linked to the Raspberry Pi and is able to get a clear view of the whole chip. Our final thus needed a small and high-resolution camera able to easily track signal emission from our touch responsive organisms (including signals emitted in the infrared spectrum).

Raspberry Pi

The Pi NoIR can track near infrared corresponds to wavelengths between 700 and 1000nm. We will use this feature of the camera to track the IFP signal emitted by our CpxR - split IFP1.4 stress responsive cells. The emission of IFP in these wavelengths is especially useful for us, as few things emit auto-fluorescence in the infrared spectrum. This drastically increases the precision of our device as it reduces background noise.

Taking in account all the information above, the main idea driving the way we plan to detect signals through our BioPad detector is to collect the entire light spectrum including near infrared wavelengths and then use a filter to eliminate the visible spectrum.

Raspberry Pi Plan

Light tracking

To track the signal dynamics in the chambers via our detector, we wrote a custom C++ code using OpenCV able to specifically detect the exact position of the signal as well as its nature and intensity. The entire code can be found here:

You can find the result output here:

The most common color space used in programming is RGB, where the pixel color can be split into three components - Red, Green, Blue – each taking a value between 0 and 255.

However, there are many other color spaces, each adapted to a different application. In our case, we are interested in light intensity and not in colors. This made us choose another color space: the YcrCb.

In the YCrCb color space, each pixel is decomposed into three components:

  • Y – the luma value (intensity)
  • Cr – the red difference
  • Cb – the blue difference

Representation of the YCrCb color space


The Raspberry Pi camera that we use has a fixed lens which is not adapted to what we want to do, as we cannot change the focus, the aperture or the zoom.

We searched for a different lens which would allow us more control, and found that the easiest way was to remove the initial Raspberry Pi lens, put a CS mount on it and attach a much bigger lens.

The first thing we did was to unplug the camera module from the PCB. Then, the lens was carefully removed by unscrewing it and the new lens was mounted.


You will then see the camera sensor (CMOS).

The CS mount was screwed on the board and the lens plugged in.

You can see here what the lens sees:


We can clearly see the chambers of the microfluidic chip.