Team:EPF-Lausanne/Tools/Microfluidics/Tamagotchip
From 2011.igem.org
(→For the geeks: details of the software framework) |
|||
Line 32: | Line 32: | ||
== For the geeks: details of the software framework == | == For the geeks: details of the software framework == | ||
- | The entire software framework, code-named "Muigi the Microplumber" was written in Python, and is open sourced under the GPL license. The source code is available on github | + | The entire software framework, code-named "Muigi the Microplumber" was written in Python, and is open sourced under the GPL license. The source code is available on [github|https://github.com/douglas-watson/muigi]. From the hardware up: |
Communicating with the EasyDAQ is done through the ''pySerial'' library. The EasyDAQ expects two-character strings to set the state of its on-chip relays. To provide a clearer interface to the card, a 'driver'-like library provides a set of high level functions, allowing explicit opening or closing of valves, that are then used by the other layers. It also automatically reconnects to the EasyDAQ when it drops the connection. Overall, it provides an abstraction from the hardware, for the other layers to avoid low-level hardware communication. | Communicating with the EasyDAQ is done through the ''pySerial'' library. The EasyDAQ expects two-character strings to set the state of its on-chip relays. To provide a clearer interface to the card, a 'driver'-like library provides a set of high level functions, allowing explicit opening or closing of valves, that are then used by the other layers. It also automatically reconnects to the EasyDAQ when it drops the connection. Overall, it provides an abstraction from the hardware, for the other layers to avoid low-level hardware communication. | ||
Line 42: | Line 42: | ||
Video is streamed through EPFL's Flash streaming server. The video is transcoded live by Flash Media Encoder on a Mac Pro, to which the webcam microscope is connected. | Video is streamed through EPFL's Flash streaming server. The video is transcoded live by Flash Media Encoder on a Mac Pro, to which the webcam microscope is connected. | ||
- | [[File:EPFL-Muigi-schematic.png|600px]] | + | [[File:EPFL-Muigi-schematic.png|600px|center]] |
{{:Team:EPF-Lausanne/Templates/Footer}} | {{:Team:EPF-Lausanne/Templates/Footer}} |
Revision as of 19:24, 18 September 2011
Tamagotchip: an online microfluidics game
In our quest to promote the use of microfluidics within the iGEM community, we decided to make iGEMers play with a chip from the comfort of their own labs. To do so, we built a web-controlled microfluidics setup, where users can view the chip live and control the valves from a web browser.
Hardware
The hardware is a relatively standard microfluidics setup, as described on the how-to page. It has with two different pressure outputs, one with five manual twist valves and the other with twelve solenoid three-way valves. The solenoid valves are controlled by an EasyDAQ USB24mx relay card, connected by USB to a Thinkpad T40 running Ubuntu Linux 11.04. We wrote our own Python software to control the EasyDAQ.
The video stream comes from a our toy USB microscope (Celestron Deluxe Handheld Digital Microscope), connected to an Apple Mac Pro. The Mac encodes the video for live streaming through EPFL's Flash Media Server.
Software
When users points their browser to tamagotchip.epfl.ch, they are presented with a video player and a set of controls for the valves. The video player streams live video from the microscope, with a buffering delay of approximately five seconds. When they click one of the controls, the instruction is relayed to the hardware and the valves respond accordingly.
Since there is only one piece of hardware, but many users could log in at the same time, the web application puts users in a waiting line, with only the first person having access to the controls. The others can only watch the video stream. However, to give every one a chance to play, the user in control is swapped every minute, and the others are presented with a countdown of waiting time.
For the geeks: details of the software framework
The entire software framework, code-named "Muigi the Microplumber" was written in Python, and is open sourced under the GPL license. The source code is available on [github|https://github.com/douglas-watson/muigi]. From the hardware up:
Communicating with the EasyDAQ is done through the pySerial library. The EasyDAQ expects two-character strings to set the state of its on-chip relays. To provide a clearer interface to the card, a 'driver'-like library provides a set of high level functions, allowing explicit opening or closing of valves, that are then used by the other layers. It also automatically reconnects to the EasyDAQ when it drops the connection. Overall, it provides an abstraction from the hardware, for the other layers to avoid low-level hardware communication.
On top of that, a Remote Procedure Call (RPC) layer provides the connection between the web application and the hardware driver, enabling the two to run on separate computers. All this is handled by the RPyC library and its registry server (which used by the RPC client to discover RPC servers on the network).
The final layer is the web application written in Flask, with jQuery on the client side for AJAX calls (to submit forms, and keep track of users in the queue). The queue is kept in a Redis database. The application is served by the CherryPy web server. The automatic twitter posting, from the web app, is managed by python-twitter. All scheduled events (tweeting, clearing the queue of inactive users) is managed by kronos.
Video is streamed through EPFL's Flash streaming server. The video is transcoded live by Flash Media Encoder on a Mac Pro, to which the webcam microscope is connected.