The final version of the device integrates multiples features. Each one of these characteristics comes with its own platform and its own firmware.
We have chosen each one of them with the essential characteristic of being Arduino compatible. The final device looks like a patchwork, with all the different platforms working together to accomplish the main objective: automate the measurement of the electrode.
The hardware is mainly composed of different modules, interconnected for two main purposes: distributing the powers rails through all the modules and communicating each module with the main controller.
Figure 1: Diagram of the different platforms that run the system.
Broadly the system is composed of four main sections:
A pumping system on a microlitre scale. Composed of eight stepper motors, controlling the syringe’s pumps. It is in charge of injecting and removing the fluid from the chips. This system is directly connected to a 12V power supply and controlled through the digital pins from the main controller, Arduino Mega.
A potentiostatic measurement system, the Rodeostat, directly connected to the microfluidic chip. It connects directly to the Arduino (which governs the device) through Serial communication. For that purpose, the pins 26 and 31 of the P14 connector in the RodeoStat have been connected to the RX2 and TX2 pins on the Arduino Mega. The system is supplied by the 5V pin of the Arduino Mega power converter. For a more detailed description of the system connection, check this thread where we have explained to the RodeoStat community our setup.
A WiFi module, designed and developed by ourselves. The system is based on the board ESP8266, broadly extended in IoT applications. It communicates to Arduino through Serial protocol through its RX3 and TX3 pins. The purpose of this module is to uploads the data sent by Arduino to an external cloud server on FireBase. You could go over all the schematic and board designs on our GitHub.
The main controller which operates the rest of the components, the Arduino Mega 2560.
CAUTION: the controllers have several modifications that allow it to work in the device. Trying to replicate it without the modifications is dangerous and can imply the universe destruction:
Arduino’s M7 diode, whose job is to avoid an eventual situation of reverse current, has been removed. This is because of his inability to stand the 4 amperes that go through the system when the 8 motors are at their full capacity. In its position, we have soldered an IRLZ44N transistor, able to stand up to 50 A. To do it, the pins of the source and drain were connected in a similar way as the pins of the diode and the gate pin was connected to the 12V power supply. A heat sink was also put in the upper side.
An Arduino Shield was mounted to increase the total of pins to 8 Vin an 8 GND, to connect the power of the motor drivers.
As we have introduced in the previous section, our system is like a patchwork, with several different platforms including actuators, sensors and control elements.
Although it is essential to correctly choose the programming language for the different platforms, it is mandatory to keep an eye choosing the communication protocols between all of the device’s platforms.
Figure 3: The platform’s programming languages employed and the communication protocols between all of them.
In our circuit there are five platforms liable to be programmed:
The ESP8266, module is in charge of all the wifi communications. We have kept the original firmware because we didn’t have time to reprogramme it during this call.
In the Rodeostat, potentiostat responsible of the electrochemical measurements of the sensor, we miodified the original firmware so it could be controlled through the Arduino Mega, instead of a computer.
The Arduino Mega controls the whole device: handling the motors, receiving the Rodeostat measurements and sending them to the cloud through the WiFi module or the serial communication with the PC.
Outside the device, the data go to Firebase server. he server, on one hand, gets all the data and send them to an iOS design app, where the final user can watch the development of the data in real time.
Finally, a PC program, written in python with Qt creator, is able to communicate through the serial protocol with the device. The application let you to configure 8 different motors, run protocols sequentially or inject liquid into the microfluidic chips.
You can find the code for the PC app, the Arduino control and the Rodeostat’s modified firmware in our GitHub.
Both the iOS app and the firebase server was set up thanks to the help of Marcos Hernández Cifuentes..