The LabBot-Duet-Pi software is customizable and browser based!

LabBot-Duet-Pi - software overview

    The software for running the system is conveniently run using an internet browser since the computer that runs the instrument is a linux based Raspberry Pi. It uses a commonly used Apache webserver and most of the webpages are written in PHP also a common web scripting language. There is a schedular that manages the devices (using serial interfaces) which is written in Python and the PHP code that collect user input sends data to the schedular using MQTT pub/sub messaging (where the schedular runs as the subscriber and the PHP code runs as publishers). There is also Node.JS code that monitors the robot and displays the current ongoing processes of applications runs. Here described in more details are some screen shots of the general software layout and some info about how to run the system.

In order to get started, first click "Connect". This starts up the subscriber that establishes the serial connections to the devices (i.e, 3D printer, microfluidics, etc). This is the python schedular script and once this is running, you are forwarded 4 different control tabs (manual, macro, imaging, microfluidics modes). Also shown is the data tracker display view. This is the Node.JS real time data monitor that tracks the data that is getting as the robotic application is getting processed. So when connecting, the Node.JS script also gets initiated. When the instrument is connected, a "Disconnect" button is displayed and this can be selected at anytime to turn off the application even when it is in the process of running.

The manual mode is one of the 3 display views that can be selected. This view has the same graphical panel that is used with the 3d printing Pronterface that allows you to move in 0.1, 1, 10 and 100 mm increments and there are buttons to home the X, Y and Z axis. In addition to this graphical tool, it is also possible to input individual G code commands (a feature that also exists in Pronterface). For liquid handling applications when controlling the pump this is done in the similar way as with a 3D printing extruder indicated by E in Gcode syntax, (here is a link for more detailed info about Gcode). To the right of the manual mode view (which also exists in the macro and imaging mode views), is the data tracker display.

The macro mode allows you to save, select and run macros. The macro can be accessed using the text box and the list of macro files are displayed on the select box to the right of the text box. The macro syntax is fundamentally based on RepRap Gcode described on this link; however, the python based schedular is flexible enough to add custom commands too. The way the schedular works is that each command is timed and the list of commands are submitted to the motion controller (ie., smoothieware) and peripheral devices over the course of the robotic application in a timed way. The timing is either algorithmically calculated (or it is possible to overwrite this by adding "_[seconds]" after the gcode command. This is nice since the system can be halted immediately and the Node.JS data track keeps track of the process displays the last command executed so that you can pick up where you left off if a problem occurs. Gcode can be designed using the LabBot-Duet-Pi GcodeDesigner.

The imaging mode configures the camera or ... cameras. As long as its possible to set up webcam streams then its possible to synchronize with the LabBot-Duet-Pi to grab frames during an application run. This page allows for selecting different IP streaming cameras, it is possible to adjust the size/orientation of the image. Supplied with a LabBot-Duet-Pi is a RaspberryPi camera and attached RaspberryPi Zero (Pi-zero). The Pi-zero runs a python subscriber that controls the webcam stream (turning it off and on). More info about how the camera can be configured for different magnification requirements are posted here. The mode allows for creation and selection of where the images will be saved and the prefix of the image name. Here is one example of how the gcode has been modified (it extends beyond the scope of what is explained on the RepRap gcode page). In the macro, to save an image the command is "snap" and to rename the image prefix it is "renamesnap [filename prefix]", the image file name also is time stamped.

The microfluidics mode configures the microfluidics related components. Generally speaking the microfluidics device components that are connected with this interface are:
    1. 3 way valve - Every syringe is connected to a 3 way valve which is as servo motor connected to a valve. The positioning of the valve have 3 options: input, output and bypass. Input is when the pump is drawing liquid to or from the water reservoir. Normally this is the pressure compensation vessel. Output is when the pump is drawing liquid to or from the dispensers and its connected fluidic tubing. Bypass shuts off the fluidic path.
    2. Pressure compensation vessel To control for the liquid level stabilization in the tip (liquid not drawing up the tubing or leaking from the dispensers). There is an electrocaloric liquid level sensor that is used to moitor the liquid level. The level gets low enough causing the sensor to get too hot which signals the pressure compensation vessel pump to turn on and pump more liquid into the vessel.
    3. Wash, dry and pressure compensation pumps
    4. The conserve pipettes and washing station is provided that isued for tip cleaning. This includes a wash, waste and dry position. The wash and waste have pumps where for washing the pump moves liquid into the washing station and the waste pump moves excess liquid from the washing station waste basin to a waste bottle.