Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 161 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

eVOLVER

Loading...

General

Loading...

Loading...

Loading...

Getting Started

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Experiments

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Guides

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Troubleshooting

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Hardware

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Software

Loading...

Loading...

Part Sourcing

Guidelines

  1. Use the below Google Sheet to source parts for each of the eVOLVER subsystems (click on the tabs for different parts of the eVOLVER)

  2. Parts may not be available due to backorder, discontinuation, or regional differences

  3. If you are able to find an alternative vendor for a part, please post to the forum so it can be added to the spreadsheet

  4. Should you not be able to order a part, post to the forum

eVOLVER Specific Parts

Vial Caps

Other "Consumables"

See Consumables tab in spreadsheet above.

Recommended to buy several vial racks as well for ease of handling vials.

Relevant Forum Posts

Check the upgrades guide .

Many eVOLVER parts must be 3D printed or are custom PCBs made to control eVOLVER hardware. For these, please see the for CAD files and electronics parts lists for eVOLVER PCBs.

Choose and 3D print vial caps for your application . For most applications choose the "universal" cap.

Note that the eVOLVER Consumables form post calls for 5/32" barbed connectors and 1/8" tubing. This is no longer recommended; refer to the "Fluidics tab" on the google sheet above and

here
hardware GitHub
here
eVOLVER Consumables
Vial Racks
Waste Containers

eVOLVER Community

Check out the forum!

What are the different platforms used for?

Forum

For questions, discussion, and knowledge building

Should users find a problem, they should characterize it and submit it to group discussion on the forum

GitHub

For tracking and distributing code and hardware development.

Not for discussion

Wiki - Documentation

Basic information about the eVOLVER (about the project, contributing, where to buy)

Guides

In-depth hardware / software documentation

How to Edit the Wiki

Publications

Background, final data and experiments

Extensive documentation in the supplements, meant for reference

Code of Conduct

eVOLVER Community Code of Conduct

eVOLVER Documentation Wiki

Welcome to the eVOLVER documentation wiki! This aims to be a resource for all things eVOLVER, covering how to set up, use, modify, and troubleshoot hardware, software, and wetware on the platform.

Please also note that we are still working on this wiki! There are many incomplete pages/stubs that we will fill out as we continue to build out documentation.

Useful Links

Software Repositories

Hardware Repositories

Buying eVOLVER

Buying

If you wish to purchase an eVOLVER, email account@fynchbio.com for a quote.

Connecting to eVOLVER

Currently eVOLVER requires a dedicated computer connected to it to run experiments. We recommend getting a Mac, which are easier to use and more reliable.

The computer needed for running experiments does not have to be new or powerful.

Upgrades

Variants

About Us

If you would like to be listed here as an eVOLVER community member and user, please reach out to us!

Khalil Lab

The Khalil lab uses eVOLVER to enable fundamental eco-evolutionary studies of cellular systems, and to evolve proteins with new and biomedically-useful functions at scale.

  • Brandon Wong

  • Zachary Heins

  • Daniel Hart

  • Ezira Wolle

  • Nathaniel Borders

Alumni

  • Chris Mancuso

Unboxing and Setting Up

Congrats on getting your eVOLVER and supporting our open-sourced community. We rely on support from you guys to help sustain this ecosystem so we can let everyone do the experiments that they want to! In this tutorial, we are going to teach you how to put this system together:

If you ordered the standard kit, this is the tutorial for you! The kit contains the following major components:

  • Vial Platform

  • 16 Smart Sleeves

  • 2x Pump Arrays (total 32 pumps)

  • Fluidic Box to for control of 32 Pumps (can expand to 48 w/ additional hardware)

1) First Unboxing the System

There are several components with protective foam. Insure all the components were delivered intact.

16 Smart Sleeves and a Box of Accessories

Pump Array and Fluidics Box

Vial Platform

2) Set up power and ethernet for the vial platform

The Vial Platform is the unit on which all the Smart Sleeves will be screwed onto. This system contains the eVOLVER Motherboard, Raspberry Pi, and Power Modules that control the Smart Sleeves. Parts used to setup the Vial Platform should be labeled with a black dot.

Contents of the Vial Platform Components Bag:

3) Plug in and screw on Smart Sleeves

If the system turns ON properly, turn off the eVOLVER and start fastening the Smart Sleeves. Use the 4-40 screws to fasten down each Smart Sleeve (2 screws/ sleeve). Vial 0 is in the front left (closest to the touch screen) with vials 1, 2, and 3 on the right of vial 0, in that order. Vial 15 is in the back right (farthest from the touch screen).

4) Setup pump rack

The Fluidics Platform is a separate module than the Vial Platform, typically is placed next to the Vial Platform. For this next part, we are setting up a pump rack that goes on top of the Fluidics Platform.

First we want to set up the components for the pump rack. The parts for this is located in the Fluidic Box Components Bag (Red Dot).

We want to fasten (w/ M6 screws) in aluminum extrusion into 3D printed part for the front pieces first. The front piece are the ones with the longer feet. See below:

Next, insert back piece. Make sure the two feet are offset in the same direction. Do not screw the screws in yet. We will screw those in when we mount everything together with the acrylic piece.

Repeat for the other side.

Next, line up the acrylic piece to the back holes and fasten together with M6 screws.

Screw in 10-32 screws to the feet of the mounts to fasten the pump rack on top of the Fluidics Box. Repeat to fasten all four mounts

5) Plug in Power + Communications to Fluidics Platform

Next, let’s setup the fluidics box. The fluidic box requires several connections:

  • Two Power Entry Cables (one for 12V Power, other for 5V)

  • Serial Communication Cable (To communicate with Raspberry Pi in Vial Platform)

Power the 5V power in the Fluidic Box from the USB port of the Raspberry Pi.

Connect Serial Communication Cable between the Vial Platform and the Fluidics Platform.

6) Attach Pump Arrays to the Fluidics Box

The fluidic box is meant to be flexible, to power whatever fluidic components you want. The standard setup assumes the following setup (back of fluidics box):

Attach ribbon cables to the appropriate slots on the PCB the pumps are mounted on.

Top down view of ribbon cable connections.

Finally, attach the tubing to the appropriate pumps.

7) Label Smart Sleeves with Appropriate Label

New to eVOLVER, or have any questions about how something works or how to do something? Head over to our Discourse forum! We have many guides and resources available and are happy to start a conversation about your eVOLVER and science!

The eVOLVER community follows the .

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting and ccing

If you have any suggestions or feedback on the wiki, documentation, or eVOLVER, please let us know on the !

for asking questions, posting guides, and discussing eVOLVER related topics.

- Visual protocol for running an eVOLVER continuous culture experiment.

- Graphical UI for interacting with the eVOLVER platform

- eVOLVER Hardware (PCB, 3D printed parts)

Consider implementing these to the Fynch Bio eVOLVER.

eVOLVER was initially developed by the at Boston University. The software and hardware designs are available under an open-source license on . There are users around the world using and developing eVOLVER for a wide range of scientific interests.

If you have any questions about this process, feel free to reach out on the !

If your smart sleeves were delivered unassembled use assembly guide.

First, plug in Power and the Ethernet Connection to the system and ensure all the components turn ON properly (e.g. the touch screen turns ON). For more information on how to configure the router, please read the .

The Ethernet should plug into your router, more information about assigning a static IP .

Labeling the vials with the appropriate color coded labels help minimize human error (I just print it and tape it on the vial). You can download a PDF of the file . The front left position (row closest to touchscreen) is vial 0.

https://evolver.bio
CNCF Code of Conduct
heinsz@bu.edu
evolvercommunity@gmail.com
forum
Forum
Nature Biotechnology Paper
Nature Biotechnology Supplement
JoVE Paper
Server (RPi) Code Repository
Data Processing Unit (DPU) Code Repository
Arduino Code Repository
Electron GUI Code Repository
eVOLVER Hardware Repository
upgrades
min-eVOLVER
Custom experiments
Custom fluidics
Adding a new experimental parameter
Khalil Lab
GitHub
forum
this
tutorial on router setup
in this tutorial
here 17

Configuring Computer and Networking

How to set up your computer to communicate with and run eVOLVER software.

Page under construction!

Link to tutorial on forum for DPU installation

How to add multiple evolvers on the same computer

Can go through building router, but contact institution IT (tell them it's RPi)

Electron App (GUI) Installation

Process for installing the Electron App (GUI) for eVOLVER.

Mac Installation

1. Download the evolver-electron-X.X.X.dmg file, where X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

2. When the download finishes, open the file (it should be in your Downloads directory) and drag the eVOLVER app into your Applications directory.

FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

3. Open the eVOLVER app from the Applications directory.

4. Using an editor of your choice (TextEdit, Nano, Vim, TextWrangler, etc.) open the file config.json located at /Users/<your username>/Library/Application Support/eVOLVER/config.json

You may need to enable the ability to view hidden files if you are trying to find this file in a Finder window. With a Finder window open, press Command + Shift + . (period) to make hidden files appear. You can press the keys again afterwards to make them disappear.

If you are attempting to modify this file via a terminal, be sure to escape the space character in Application Support with a \. It should look like this: /Users/<your username>/Library/Application\ Support/eVOLVER/config.json

5. Add a line in this file between the braces: "dpu-env": "/Users/<your username>/Document/dpu/venv"

If you add this line to the beginning of the block, be sure to add a comma at the end! If you add it to the end, put a comma on the line before it.

If you installed the DPU in a different location, be sure to reflect that in this line. The electron app uses this to find the correct python binary/venv to run the DPU

6. Save the file and you're done!

Windows Installation

1. Download the evolver-electron-X.X.X.exe file, where X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

2. Open the .exe file.

FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

3. Using an editor of your choice open the file config.json located at C:\Users\<Your-UserName>\AppData\Roaming\eVOLVER\

4. Add a line in this file between the braces: "dpu-env": "C:\\Users\\<Your-UserName>\\Desktop\\dpu\\venv"

Note the escaped \ , be sure to put double \\ throughout the path.

If you add this line to the beginning of the block, be sure to add a comma at the end! If you add it to the end, put a comma on the line before it.

If you installed the DPU in a different location, be sure to reflect that in this line. The electron app uses this to find the correct python binary/venv to run the DPU.

5. Save the file and you're done!

Linux Installation

1. Download the evolver-electron-X.X.X.AppImage or evolver-electron-X.X.X.deb file, where X.X.X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

Selection of either .deb or .AppImage is largely based on personal preference and computer environment, each presenting slight pros and cons. If you are unfamiliar with installing Linux packaged software, use this link to learn more about what is applicable to you. Briefly, .deb files are natively designed for Ubuntu and will compile the entire application, along with necessary dependecies, onto the local machine. An AppImage file contains everything necessary to run the program, requiring you to execute the file when you want to run program.

2. If downloading evolver-electron-X.X.X.deb, open your Downloads directory and right-click evolver-electron-X.X.X.deb to open the file with Software Install .

3. A new window should open, allowing you to install the eVOLVER GUI. Click Install and follow the onscreen instructions to install the eVOLVER GUI.

FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

4. Open the eVOLVER app by either clicking Show Applications from the home screen or through the command line. To open via command line, open Terminal and enter to access installed applications:

cd ~/usr/bin

Run the eVOLVER GUI by entering:

evolver

5. Using an editor of your choice, open the file ~/.config/eVOLVER/config.json .

6. Add a line in this file between the braces to denote the location of the installed DPU virtual environment:

"dpu-env": <path_to_dpu>

If you add this line to the beginning of the block, be sure to add a comma at the end! If you add this line to the end, put a comma on the line before it.

7. Save the file and you're done!

DPU Installation

Process for installation of the Data Processing Unit (DPU)

You can run eVOLVER experiment culture routines directly on the command line, or through the Electron graphical interface. This page documents how to install the DPU for use on the command line.

Even if you plan to use the GUI to run your experiments, you still need to go through these steps!

(Mac only) Homebrew and openssl/sqlite installation

In Terminal, install homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Afterwards, run the two following commands:

brew install openssl

brew install sqlite

Install Python 3.9

Python 3.9 is required for dpu operation

Mac:

brew install python@3.9

Windows

DPU Installation

2. Click Releases on the right side of the page

3. Click the Source Code link (zip) to download the latest release.

The release name/number will be different from the screenshot below! You will typically want the latest release, which should be at the top of the page.

4. Move the downloaded .zip file (which should be in your Downloads directory for your browser) to the location where you want your experiments to run. Documents or Desktop are good locations. This is also where your data will be saved.

Do not leave the DPU zip file in your Downloads directory. Please move to appropriate location.

5. Unzip the file.

  • If you are using a Mac and have installed homebrew (described above) you can run the following command: brew install poetry

  • Windows Powershell:

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

If you have installed Python through the Microsoft Store, replace py with python in the command above.

8. Navigate to the DPU directory you just downloaded and unzipped:

  • Use this command: cd <path_to_dpu>

  • Replace the <path_to_dpu> with the location you put your dpu

Mac:

python3.9 -m venv venv

source venv/bin/activate

Windows PowerShell:

py -3.9 -m venv venv

venv\Scripts\Activate.ps1

10. Use poetry to install all necessary dependencies.

poetry install

If you can't find poetry on Windows "poetry : The term 'poetry' is not recognized as the name of a cmdlet" and it is installed, use the following command (replace <Your_User_Name> with your user name)

C:\Users\<Your_User_Name>\AppData\Roaming\Python\Scripts\poetry.exe install

You must activate the virtual environment when running DPU scripts from the command line. If you close a terminal or re-open it, you'll need to run . venv/bin/activate(Mac) or venv\Scripts\Activate.ps1 (Powershell) again while in the dpu directory.

You can activate the dpu environment automatically on a Mac or Linux machine by adding a line in your shell run commands (rc) file typically located in your home directory located at ~/.zhrc (Mac) or ~/.bashrc (Linux):

source <path to dpu>/venv/bin/activate

swapping out <path to dpu> with the actual path on your machine to the dpu.

Router Setup

Page under construction

Log in to router and make it have a static IP

otherwise IP will change each time it's power cycled

Then when connecting via ssh it will warn you and you need to change the file

You can then change the name, MAC address, and IP of the evolver in the evolver-config.json file

Router IP: 192.168.1.1

Login: admin

pw: password

Calibrations

About

In order to appropriately interpret data from and actuate physical elements connected to the eVOLVER framework, a relationship must be established between the electrical signals generated by attached sensors and the physical phenomenon they are measuring. This is done by manually measuring values on a controlled set of data via some gold-standard assay or measurement device and comparing these data to the eVOLVER generated data. By doing this across a range of different values, a function can be fit to this relationship to allow eVOLVER to interpret data accurately.

Procedure

Calibrations should proceed in the following order:

Software Installation

It is helpful to have a dedicated eVOLVER computer (not a personal computer) as eVOLVER experiments take multiple days. We recommend a Mac for their high reliability and native Python, however users have reported Windows works as well.

eVOLVER software does not take very much computational power or memory so an older computer should be fine.

Upgrade Base eVOLVER Hardware

Vial Cap Upgrades

As of 25/01/15, FynchBio gives the cap that only accommodates needles. This cap does not have a tight seal on the vial and thus does not enable emergency efflux.

Benefits / Options

  1. Better seal to vial - enables emergency efflux (see below) away from vial if too much is pumped in

  2. More ports available

  3. Reusable connectors - can use luer connectors to connect to eVOLVER tubing

Emergency Efflux

Protect your eVOLVER hardware with a sealed vial and additional efflux line dedicated to preventing vial overflows.

Bubbling

Many organisms require additional gas exchange outside of what eVOLVER stirring can provide. Others require custom gas mixes for growth. In-vial bubblers provide this.

Stop Stir While Taking OD

This is a measure that is necessary if you are bubbling, but can improve OD in general by decreasing noise.

You will need to calibrate with stir off. Swirl the vials when moving standards to make sure cells do not settle.

Pump Calibration

  1. Fill a large beaker with water and submerge all of the pump lines (inputs and outputs of the pumps), ensuring all of the ends are below the surface of the water.

2. Run the pumps on the Setup page to completely fill the lines with water (about 20s)

3. Place 16 vials into a rack and place the output ends of the pumps to be calibrated into the vials.

It's best practice to not put the vials into the eVOLVER platform in case you make a mistake and overflow the vials. Keep the rack to the side.

4. Select the eVOLVER on the top of the GUI home page to be calibrated

5. Navigate to the Pump Calibration page

6. Enter a name for the pump calibration

7. Select the pump configuration for the eVOLVER. In a standard setup, IN1 are the media in pumps, and E refers to the efflux pumps. If you have another pump array (for a second media input source), it is typically going to be in IN2. Click Start Pump Calibration. The standard pumps are the FAST pumps (~1 mL/s, black pump heads). If you have the slow flow rate pumps (~ 1 ml/m, pink pump heads), select the SLOW radio button for that array.

IN1 refers to address 0-15, E refers to addresses 16-31, and IN2 refers to addresses 32-47. If you have a different pump array setup you can either calibrate manually by putting a json fit object into the calibrations.json file on the RPi server, or reach out on the forum to ask for assistance.

8. Select all of the vials either by clicking the button on the bottom right or clicking and dragging across the vials on the selector. Click PUMP IN (or whatever the pump array you are calibrating) to run the pumps for 10s if the FAST radio button was selected or 100s if the SLOW radio button was selected.

The time the pumps will run will be noted in the bottom right of the screen. If you need to stop the pumps early, click FORCE STOP ALL.

9. After the pumps finish pumping, measure how much water was pumped by pouring out the water from each vial into a 25 mL graduated cylinder (or something similar). Enter this number into the box for each vial. The flow rate will appear on the vial selector on the right side of the screen.

Round to the nearest half graduation. The minimum resolution cylinder we recommend for typical eVOLVER pumps should have 0.5 mL graduations.

10. Repeat this process for each pump array you have selected for calibration.

11. Click the pen button to submit and save the calibration. Then click Exit after the calibration is logged.

12. Verify the calibration appears on the setup page.

Temperature Calibration

The goal of this tutorial is to learn how to calibrate the temperature settings for each Smart Sleeve in a 16 vial eVOLVER setup

You must complete temperature calibrations before doing OD calibrations. Temperature affects OD and if there are big differences between vials, you will need to recalibrate all vials once you do a temperature calibration.

About

Why are temperature calibrations important?

Each microorganism has its own culture temperature requirement. Temperature may affect the successful cultivation and growth characteristics of the culture. By using a simple thermistor and heating resistor pair, we can track and change the culture temperature over time.

Why is calibration necessary?

Readings sent from the Raspberry Pi to the computer/server are the raw thermistor values measured by the Arduino. To make sense of the readings in terms of values we understand, we need a calibration file that converts this to degrees (celsius).

Do I need to redo temperature calibration if I switch out a thermistor/resistor pair?

Yes. Variability exists across the individual thermistor and heating resistor elements, necessitating a new temperature calibration anytime one of these parts are replaced. This is why the calibration curve is unique to each smart sleeve.

Materials

  • 16 eVOLVER vials filled with 15mL water

  • Thermometer with probes

    • Do not use a thermocouple-based thermometer, as the magnetic field from the stir components can interfere with measurements

  • eVOLVER Electron GUI

    • This tutorial is for the newest version of the eVOLVER Electron App (Release 2.0.1), which enables both data visualization between each temperature calibration step (RT -> +10C -> +20C), as well as GUI-enabled calibration (without use of the command line).

    • For older versions of the Electron GUI (Release v1.2.1 and earlier), additional notes are provided at the bottom to successfully complete the calibration - the process remains largely the same, apart from the use of the command line to complete the calibration.

  • eVOLVER

Methods

Temperature Equilibrium

Generally, there are two independent methods to determine if the vial water has reached temperature equilibrium.

  1. Place the thermometer probes into the water, clear the "Min/Max" readings, and wait until the reads no longer fluctuates within ~2min of monitoring.

  2. The eVOLVER Electron GUI has an in-built function that displays the change in thermistor value from the last read, shown as a (+/-) value in brackets next to the current thermistor value being read. The GUI uses this information to determine whether the vials have equilibrated across time, shown as an orange circle indicator around each vial circle on the GUI that should turn fully orange upon equilibration.

    • Importantly, sometimes the vials will not display the achievement of equilibrium correctly. Please use your discretion with respect to the time elapsed under heat, lack of temperature fluctuations, similarity of temperature measured by thermometer across vials, and the GUI equilibrium function to determine when equilibrium has been reached.

  • Turn on the eVOLVER 5V power supply. Wait 5 seconds. Turn on the eVOLVER 12V power supply.

  • Open up the eVOLVER Electron GUI app, and ensure you are connected to the correct eVOLVER you wish to calibrate in the upper-right hand corner of the "Home Screen". The circle should be solid green, indicating that the eVOLVER is connected.

  • Tap "Setup" in the GUI home screen, select all vials by tapping "Select All" in the bottom right corner. The vial circles should highlight orange. Tap the "Next ->" button in the upper right-hand box (which includes all the control parameters) until you reach the "Temperature" tab. Drag the slider all the way down to "20C". Tap the button, and the "Executed Commands" box in the lower right should indicate that a temp command was sent to all vials.

  • Place all the eVOLVER vials, pre-filled with 15mL of water, into the Smart Sleeves.

  • Go back to the "Home Screen", click "Calibrations" and then "Temp" in the eVOLVER Electron App.

  • Name the calibration, hit enter, and then click "Start Temperature Calibration". A prompt will read "Heaters turned off. Let equilibrate, then enter values."

  • Room Temperature: Wait ~30 minutes for the temperature of the water to equilibrate to ambient room temperature (and heat generated by the eVOLVER).

  • Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI.

The newest version of the eVOLVER Electron App (Release 2.0.1) enables data visualization between each temperature calibration step (RT -> +10C -> +20C). This is especially useful when verifying that the thermistor reads are as expected, and follows an inverse linear relationship between thermistor value and temperature.

  • Wait 60-120 minutes for the temperature of the water to equilibrate. Use the system outlined in the section "Temperature Equilibrium" to establish when the temperature has equilibrated.

  • Wait ~2-3hrs, or leave overnight.

  • Calibrate: An edit icon button should appear once all 3 measurements have been made. Click on the button, and a graph of the linear calibration curves for all thermistors across the smart sleeves should appear. Please confirm that the curves look linear. If everything looks good, please exit out of the graph (press the backwards arrow twice), and voila! You have completed your Temperature Calibration! Please be sure to change the temperature calibration file to the most recent in the eVOLVER set-up menu (click on the temperature calibration button).

IF In-GUI Calibration Fails (Unexpected Javascript/Python Error)

If after clicking on the "Edit" button upon completion of all 3 measurements, the eVOLVER GUI encounters an unexpected Javascript/Python error, do not fret! The raw calibration data is now saved on the Raspberry Pi, so you just need to continue along to the info note below to run the calibration through the command line. Feel free to exit the calibration at this point - your collected data is safe.

For older versions of the eVOLVER electron GUI (Release v1.2.1 and earlier)

If you are using an older version of the eVOLVER electron GUI (< v2.0.0), an additional step on the command line/terminal is required to linearly fit the acquired calibration data and set-up the temperature calibration. Additionally, there have been instances where unexpected code errors arise, necessitating calibration through command line. You can also still manually run a calibration if you would like to change calibration settings.

For Windows, use py instead of python for all commands.

Now that you have the name of the temperature calibration file, manually run the calibration file:

A figure will pop up displaying the linear temperature calibration curves for each vial. If all looks good (inverse linear relationship between thermistor and temperature values - please see above figure for an example of a successful temperature calibration), then exit out of the figure. A prompt on the command line will ask if you would like to update the eVOLVER to the new temperature calibration. Press and enter "y", and voila, you are all done with temperature calibration.

Manual Calibration - calibrate.py

You can use manual calibration to view past calibrations after they are done. This can be useful for troubleshooting if a vial is not behaving as expected.

About

The GUI will run calibrations automatically upon completion of the calibration protocols. However, you can still manually run a calibration if you would like to change calibration settings. Can be useful if your GUI calibration fails for some reason.

Requirements

  1. You have run calibration and logged raw values already

Commands

List raw calibration files on the eVOLVER

Mac

For Windows, use py instead of python for all commands.

Calibrate Temperature

Calibrate OD

OD135

OD90 (Check to ensure mode is configured properly)

3D FIT (Check to ensure mode is configured properly)

Starting an Experiment

List of things to do to setup and run an eVOLVER experiment.

Checklist

Before starting experiment prep:

  1. Finished Getting Started Page

  2. Calibrations

    1. Temperature (must be first, affects OD cals)

    2. OD

    3. Pump calibrations

  3. Should things not be as expected

Sample Experimental Workflow

Starting eVOLVER experiments takes hours and it is important to supervise your experiment for the first few hours. Therefore, front-loading as much prep work as possible to the days before the experiment is strongly recommended.

Consider running a test experiment with just water or the wild type strain before you devote time to making everything perfect. If you are running an experiment with modified code this is especially essential.

Day 0:

Make sure vials / pumps are behaving as expected

  • Are all vials stirring, getting up to temperature, all pumps pumping, etc?

  • Especially check that efflux is running long enough to remove enough culture from vials

Start overnight cultures

Day 1:

Inoculate cultures into vials

Monitor experiment for correct behavior (over several hours)

  • Are the cells growing?

  • Is the experiment diluting as expected?

  • Are all pumps working?

Day 2 - Onwards:

Monitor media levels - make sure that there is more than enough media to make it to the next time you check the experiment

Monitor biofilming on the vials - this can cause increased OD over time

Relevant Forum Posts

For all operating systems, navigate to the section of the Electron App GitHub page.

For instructions on updating the GUI on the RPi, see .

Chrome may flag the download, just select "Keep".

In Windows 10, Microsoft Defender prevents the app from starting immediately. Simply click "More info" and then "Run Anyway" to get around this.

You may need to the ability to view hidden files if you are trying to find this file in a File Explorer window.

We recommend running the DPU through the GUI for most use cases. Please see the documentation and the for more information.

If you are unfamiliar with working on a command line terminal or cannot use the Electron GUI for your application, check out the guide!

1. Go to the official to download python 3.9.

2. Follow to install python on your machine.

3. If you have multiple versions of python3 on your machine, you can set up an to manage the usage between the different versions.

1. Navigate to the

6. Open a terminal. On Mac, you can use the built in Terminal application (press CMD + Space then type terminal to find it). I recommend if you want a terminal with some quality of life enhancements. On Windows, you can use PowerShell.

7. We use to manage our python dependencies. Go to their website to download and install it on your machine.

9. Create a new then activate it with the following command:

If you have issues with the dpu setup, reach out to us on the

Before beginning calibrations all and should be complete.

For more information see .

If the GUI fails to calibrate you can try to use manually.

Search on the if you have issues with installation.

See for more information and construction protocols.

Guide .

Guide .

To do this, swap in a with stir stopping.

Glass vials - 40mL ()

We use the ""

Press the "RT " button and wait for the eVOLVER to measure the thermistor values (the eVOLVER measures the thermistor values continuously for a minute, with an orange ring appearing around the button. Once complete, the GUI should display "1/3 Measurements made"

Room Temperature +10C: Once complete, click the " +10C ->" button, and then click the "RT +10C ". The GUI should display "Temperature set. Let equilibrate, then enter values."

Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI. Press the "RT +10C " button and wait for the eVOLVER to measure the thermistor values. Once complete, the GUI should display "2/3 measurements made"

Room Temperature +20C: Once complete, click the " +20C ->" button, and then click the "RT +20C ". The GUI should display "Temperature set. Let equilibrate, then enter values."

Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI. Press the "RT +20C " button and wait for the eVOLVER to measure the thermistor values. Once complete, the GUI should display "3/3 measurements made"

Open up a terminal, and navigate to the eVOLVER dpu folder ( for download). List the raw calibration files on the eVOLVER Pi using:

Located in .

You are in your DPU virtual environment in command line. This is set up when you the DPU.

For a video guide and full written protocol for setting up an eVOLVER experiment, check out the 2019 JoVE . Note that some information there, such as using the GUI, is out of date.

Prepare media - especially if using a so it can cool overnight

Start experiment via or

If something goes wrong, check the pages

Finally, end the experiment and

releases
Updating the eVOLVER Server
enable
Electron App (GUI) Installation
GUI Start Guide
Command Line / Terminal Usage
python website
these instructions
alias
DPU Github page
iTerm2
poetry
virtual environment
forum!
Mac
Windows
Linux
python calibration/calibrate.py -a <ip_address> -g
python calibration/calibrate.py -a <ip_address> -n <file_name> -t linear -f <name_after_fit> -p temp
python3 calibration/calibrate.py -a <ip_address> -g
python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t linear -f <name_after_fit> -p temp
python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t sigmoid -f <name_after_fit> -p od_135
python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t sigmoid -f <name_after_fit> -p od_90
python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t 3d -f <name_after_fit> -p od_90,od_135
▶️
▶️
▶️
▶️
▶️
▶️
Forum post
Software Installation
Network Configuration
here
Temperature Calibration
Optical Density Calibration
Pump Calibration
calibrate.py
forum
DPU Installation
Electron App (GUI) Installation
here
here
here
conf.yml
Chemglass, CG-4902-08
Fisherbrand™ Traceable™ Excursion-Trac™ Datalogging Thermometers
github link
/dpu/calibration/
install
paper
eVOLVER Maintenance
Vial Troubleshooting
20L carboy
Prepare vials
Sterilize fluidic lines
Load vials and set initial conditions
GUI
Command Line
Experiment Troubleshooting
clean up
Considerations for your first eVOLVER experiment

OD Blank

Why

When we start an experiment, the script asks us whether we want to calibrate to blank.

Therefore, we take the first OD measurement as a zero and subtract that out from every subsequent measurement.

  • Temperature should be fully equilibrated before this

  • DO NOT add cells before blanking, whatever OD value the cells + media have will be subtracted from future OD measurements

Details

OD blank is only applied to the calculated OD from calibration, not the raw OD data. The blank is applied for each vial, it just subtracts it out from subsequent measurements for that vial

Setup Waste Carboy

  1. Place waste lines into carboy

  2. We use a small stand to bring the carboy closer to the eVOLVER

  3. Have an extra carboy ready to swap in when the first gets full

  4. (Optional) You can fill 10% of the carboy with bleach

    1. Or bleach after depending on whether you hate the smell bleach or your culture more

  5. (Optional) Drill a hole through the carboy cap to make the opening to the carboy smaller (less smelly)

  6. (Optional) Parafilm the opening to the carboy to make it less smelly

If you intend to leave overnight or for a weekend, make sure that the carboy has more than enough room in it for the maximum volume you will efflux. Consider using two carboys.

Carboy Media Prep

Considerations while preparing large volumes of media for continuous culture in 20L carboys.

Materials

Media Requirements

A primary consideration when running eVOLVER experiments is predicting the media consumption rate, which is typically orders of magnitude higher than in typical batch experiments. The required media for continuous culture can be estimated using the following equation: 𝑀𝑒𝑑𝑖𝑎 𝑅𝑒𝑞𝑢𝑖𝑟𝑒𝑑 [𝑚𝐿] = 𝐶𝑢𝑙𝑡𝑢𝑟𝑒 𝑉𝑜𝑙𝑢𝑚𝑒 [𝑚𝐿] / 𝐴𝑣𝑔. 𝐷𝑜𝑢𝑏𝑙𝑖𝑛𝑔 𝑇𝑖𝑚𝑒 [ℎ] ∗ 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓𝐶𝑢𝑙𝑡𝑢𝑟𝑒𝑠 ∗ 𝐷𝑢𝑟𝑎𝑡𝑖𝑜𝑛 [ℎ] (1) It should be noted that additional media (~20mL) is needed during device setup to flush media input lines.

Protocol

20L of media will take a significant amount of time to cool. It's best to autoclave your media the day before you want to use it for an experiment.

  1. Before preparing media, steam clean the carboy by filling with ~2L of water and autoclaving on the liquids cycle for at least 45 minutes. Be sure to keep the lid loose to prevent the carboy from collapsing. Pour out the water.

If the carboy does collapse, you can take the lid off and place it back into the autoclave for 30m-1h. The residual heat should allow it to pop back.

2. If you are able to prepare a concentrate of your media, you can do so as a 10x 2L solution (or whatever makes sense for your media) in a beaker with a stir bar. It is also possible to mix everything directly in the carboy. Add your media components in small batches and try to mix as you go.

3. Fill the carboy up to 20L - volume of media components that will be supplied after the autoclave step. For example, if you need your media to be 2% glucose, you should fill the carboy to 18L and then add 1L of filter sterilized 40% glucose after autoclaving.

4. Place a male Luer cap on the outlet of the carboy lid. Place a filter on the inlet, and cover it with foil. Loosen the entire lid.

You do not necessarily need a filter on the inlet - this depends on the context of your experiment. For most applications, capping the inlet and keeping the lid loose for the duration of the experiment is sufficient - the media should not become contaminated.

5. Place the carboy into an autoclave bin, then place into an autoclave. Autoclave on the liquids cycle for 2 hours.

6. Take the carboy out of the autoclave.

WARNING: The carboy and media will be extremely hot, and there will be ~1L of hot media in the autoclave bin. Ask someone for help removing from the autoclave!

Media will take a significant amount of time to cool (overnight) - be sure to take this into account before running an experiment with the media.

7. If media components need to be added after autoclave (glucose, antibiotics, supplements, etc.) place the carboy on a cart and move next to a bench flame. Sterilize the area thoroughly with ethanol before quickly unscrewing the lid to make the additions. Mix by placing the carboy on a cart and moving the cart in a circular motion, or by placing on the floor, tilting ~30 degrees, and moving the top in a circular motion.

8. You can place the autoclave on the floor next to your experiment. Be sure to keep the lid loose to prevent negative pressure buildup in the carboy which could prevent media from going into the culture vessels.

9. After the carboy is empty, rinse thoroughly with water, being sure to run water through all of the tubing. Steam clean as described in step 1, then pour out the remaining liquid.

Relevant Forum Posts

GUI Start Guide

Guide for using the eVOLVER GUI to start and manage an experiment

Running experiments with Dropbox/Google Drive

If you would like your data to be automatically backed up on Dropbox or Google Drive, first install the desktop applications. This will enable any computer with Dropbox/Google Drive and access to the directory to monitor the experiment using the eVOLVER GUI in real-time, while providing all the benefits of using these services (automatic backup of data, ease of data sharing, etc).

Setup

Select the eVOLVER you wish to run an experiment on in the dropdown on the top right, then click the SETUP button.

On left side of the screen, ensure the correct calibrations are selected for Temp, OD, and the pumps. Click the box to bring up a list of available calibrations for each parameter.

Once you have selected the calibrations, you can set the initial stir and temperatures, and sterilize the fluidics as described in the JoVE paper.

Experiment Manager

The JoVE paper is out of date with regards to using the GUI for running and managing an experiment, from 3) Configuring eVOLVER Software and Programming Algorithmic Culture Routines on.

Open the experiment manager on the Home screen of the GUI. You should see something that looks like this if this is the first time you have used the application:

In the top center the Expt Directory is listed out. You can click the pen icon to change this location to be anywhere you like.

If you have Dropbox or Google Drive installed, you can select a location on the cloud to save your experiments. This will enable you to view your data from any computer that has permissions and the Dropbox/Google Drive application installed!

You do not need to make a new folder called experiments as shown below - the GUI will automatically create this directory.

If you'd like your data to be backed up on Dropbox or Google Drive, set this location BEFORE starting the experiment. Otherwise you will have to manually move it later to view the data in the GUI remotely. You can always click the Default Expt Dir button to reset the location back, or set your own personal location.

Click the New Experiment button to open a prompt to name your experiment. Type a name then click Submit.

Click the Pen button on the row of the new experiment to bring up with experiment editor page.

Experiment Editor

By default, the Turbidostat editor will appear when you come to the editor page.

  1. The name of the experiment. You can click the pen icon to change the experiment name.

  2. The parameter selector. The name of the currently selected parameter is listed at the top. You can click the -/+ buttons to change the value (or use the slider), and then click the box in the middle to apply this value to the selected vials.

  3. Experiment control panel. From left to right: Start/Stop experiment, View Data, Save Files (Only for File Editor), Copy Experiment, View Files in File browser, Delete experiment.

  4. eVOLVER Selector. Select the eVOLVER to run the experiment on.

  5. Experiment type. Default will bring up the Turbidostat editor. Chemostat and growth rate editors are also available. You can also bring up the file editor to directly modify the python files within the GUI.

  6. Vial selector - select the vials and then apply desired experimental parameters from the buttons on the parameter selector. Values display the currently set parameters.

  7. Vial selector control buttons - flip the orientation on the display or select all of the vials.

  8. Reset - goes back to default. Save Experiment - saves the parameters for all vials.

You MUST click Save Expt. to apply all the changes you made to the experiment!

The chemostat and growth rate modules function similarly to the turbidostat one.

Clicking File Editor in the experiment type dropdown will allow you to directly modify the python files.

Do not change the EXP_NAME variable if you wish to use the GUI based graphing features! We keep this variable here for backwards compatibility with the previous graphing app. They will be normalized in a future version.

You can select the file you would like to edit on the left, edit it on the right, and save by clicking the Save icon on the bottom left. For most cases you will not need to use this! If you change the files, you will not be able to use the t-stat/c-stat/growth rate modules, and you will need to modify the EVOLVER_IP, OPERATION_MODE, and other variables throughout the code.

You can also click the folder icon on the bottom left to view the files in a file browser and edit them using an editor of your choice.

Starting the experiment

When you're ready to start the experiment, click the Play button either on the Experiment Manager page or the Experiment Editor page. Then you can click the graphs icon to go watch your experiment running in real-time.

When you navigate to the graphs page, the graphs will look fairly empty to start. After a minute or so, data will start to appear as it is collected. You can also click the VIEW LOGS button to see how the experiment is running.

On the left, you can modify how the graphs are displayed by clicking the appropriate radio buttons. You can also look close up at an individual vial and use the data slider at the bottom of the graph to zoom in on an area of interest.

When you click ALL to go back to seeing all vials, the range set on a single vial will be applied to all vials. You can click the radio buttons to set it back to the latest data.

To end the experiment, click the STOP square button on the device running the experiment.

If you are looking at the data on a different device than the experiment is being run on, you cannot control the experiment through the app! Do not click the play button!

Chemostat

Process and considerations for running a chemostat.

Code Breakdown and Explanation of Flow Rates

  • OD_data: The OD_data variable saved from the transformed values from the input_data variable. The data is transformed via calibration scripts called from eVOLVER.py.

  • start_OD: This variable determines if you want the culture to be above a certain OD before starting dilutions

  • start_time: This variable determines when the dilutions should start. If set to 0, the dilutions start immediately

  • OD_values_to_average: The script will average N recorded OD values before it triggers the dilution via the start_OD variable.

  • chemostat_vials: Modify this script to to turn off vials (e.g. pumps). There is a known bug on the rate definition that might not turn off the pumps there (see below).

The peristaltic pumps are fixed flow rates, does that mean I have to use different pumps for each flow rate setting?

No, with the eVOLVER setup, we approximate continuous perfusion by frequent small boluses of media. By doing this, a faster pump can achieve tunable, slower net flow rates. In our experience, this compromise does not significantly impact the culture conditions of common laboratory microbes.

Here is an example calculation one would make:

  • The culture volume is 30 mL/ vial.

  • The typical pumps eVOLVER comes with have a fixed flow rate of 0.5 - 1.0 mL/s. We typically recommend a minimum bolus of 0.5 mL per dilution, meaning 60 boluses would turnover the culture once.

    • FynchBio also sells slower pumps that flow at ~1 mL/ min

  • If we want our culture to double every 3 hours, the pumps will fire every 3 minutes (180 min/ 60 boluses). In a chemostat, nutrient is limiting thus growth rate == dilution rate.

  • A doubling time of 3hr has a growth rate of 0.231/hr via the following equation:

Below, we set the script such that the cultures will all have a 3 hour doubling:

If one wanted to set the V0-3 at a doubling time of 3 hours but the rest of the 14 vials with a doubling time of 6 hours, the rate_config would be set as the following:

NOTE (5/12/2023): There is a bug that does not turn OFF pumps if defined to 0 on rate_config variable.

Code for interfacing with eVOLVER GUI

Below is code that grabs values from the GUI and populates it in the code. If you aren't using the GUI, please ignore this portion of the code:

Rest of the Chemostat Configuration Settings

The following parameters initialize variables that will calculate how much time to turn the pumps ON to maintain the flow rate set in rate_config

  • flow_rate: get the calibrated flow rates for each pump

  • period_config: how often to pump (seconds)

  • bolus_in_s: how long to pump during a given pump event (seconds)

Chemostat Pump Commands

When we set vials to a new flow rate in the chemostat function, we see the experiment script send a comma separated pump command. Each pump assigned to the a chemostat gets a command that looks like this:

1.18|144

Which is in the format of:

bolus_in_s|period_config

If the above pump was influx, its corresponding efflux pump would be 2.36|144 because we pump out double the time to avoid overflows.

Cleaning Up After Experiment

Stopping Experiment and Bleaching

  1. In the GUI electron app or command line, click to stop your experiment.

  2. In large beakers, prepare 500mL of 10% bleach and 200 mL of 10% bleach.

  3. Disconnect media bottles and place lines into 10% bleach solution

  4. To use pumps to bleach the cultures, keep tubing connected, but move vials to a white eVOLVER rack. Prepare an additional 1L of 10% bleach and add to the media input beaker.

  5. Run 10% bleach through vials until final concentration in the vials reaches ~10% bleach (~60 seconds for 25mL volume). Disconnect influx and efflux lines from vials, set vials aside for 30 mins.

  6. To manually clean vials, disconnect influx and efflux lines and skip steps 39 and 40

  7. Submerge the disconnected influx and efflux lines in the 200mL bleach beaker, then run all pumps for 20 seconds to fill all lines with 10% bleach. Let sit for no less than 30 minutes, no more than 48 hours.

  8. Remove media input lines from bleach, and run air though the lines to remove bleach. If not planning on using the device again right away, run diH2O through all lines for 20 seconds to remove residual bleach from the lines. Dried bleach can form salt crystals and clog the lines. If this happens, break up the crystals manually using pliers to squeeze the line.

  9. Turn off the 12V power, then the 5V power.

  10. Proceed to vial & bottle cleaning protocol.

Clean Vials After Bleaching Cultures

  1. Prepare a beaker ~50% full of 10% bleach

  2. Remove vial lids and place in 10% bleach solution

  3. Using the magnetic stir bar grabber, remove the stir bars from each vial, place in the 10% bleach solution

  4. Let vial caps and stir bars sit for 30 minutes-overnight in the 10% bleach solution

  5. Meanwhile, dump bleached culture down the drain, rinse with diH2O

  6. Use a test tube brush to scrub inside of vial, particularly important if you grew bacterial cultures

  7. Place bleached/scrubbed vials right-side-up in the vial racks to indicate they have not yet been dishwashed

  8. Once vial lids/stir bars have been soaked for sufficient time, carefully pour out the 10% bleach solution, and replace with diH2O

  9. Let vial lids and stir bars soak for another 30 mins-overnight.

  10. Once vial lids/stir bars have been soaked for sufficient time, carefully pour out the diH2O.

  11. Run diH2O through influx and efflux straws for 2-3 seconds at the sink to remove any residual bleach

  12. Place stir bars in the stir bar tray.

  13. Once 60+ vials have accumulated, vials should be dishwashed.

  14. Place vials open side up in 3 white eVOLVER racks.

  15. Take one rack, cover the vials using the wire mesh from the bottom rack of the dishwasher, then flip upside down. Repeat for the other two racks.

  16. Add any other glassware or eVOLVER bottles to the top rack as desired, then run on cycle 3.

  17. Store vials upside down in vial boxes to indicate that they have been dishwashed.

on vial position, vial opacity, media, environmental light conditions, temperature, and more.

(Optional) Shrink onto the waste lines to make them easier to deal with

You should be able to follow the 2019 JoVE for most of the process. Differences will be highlighted here.

We recommend saving your experiments through Dropbox or Google Drive, but you do not have to - it's fine to have everything run locally on your lab computer. Both options will be detailed in the section below.

If GUI graphing is not working, use graphing tool.

This section is assuming you already have gone through the , which outlines basic parts of the script, and lets one run an initial pilot experiment.

Here, I will explain chemostat functionality. This is the segment where the chemostat function begins on

Bolus Size: The minimum volume that the pumps are allowed to turn on. Please take great caution in tuning this parameter. For example, the ~1 mL/s pumps are sensitive to the bolus size since 0.5 mL would mean the pumps are turning ON for only 0.5 seconds. Lower values could induce variability to the amount pumped. Note: Fynch Bio provides that would require this bolus size to be tuned.

Bleach (sodium hypochlorite) may create a small amount of chloroform when mixed with ethanol. In addition, many EHS policies prohibit mixing of ethanol and bleach waste streams. Considering this, you may want to move your efflux lines to a separate waste container when sterilizing tubing with ethanol, and move them back to your normal waste container when starting your experiment. Also consider using alternative sterilization agents such as and detergent.

OD is dependent
https://www.evolver.bio/t/where-or-how-is-od-blank-info-stored/182
heat shrink tubing
Nalgene 20L carboy
Nalgene fitting/venting closure
About the volume of required media
Making Media Bottles and Media Splitters
def chemostat(eVOLVER, input_data, vials, elapsed_time):
    OD_data = input_data['transformed']['od']

    ##### USER DEFINED VARIABLES #####
    start_OD = [0] * 16 # ~OD600, set to 0 to start chemostate dilutions at any positive OD
    start_time = [0] * 16 #hours, set 0 to start immediately
    # Note that script uses AND logic, so both start time and start OD must be surpassed

    OD_values_to_average = 6  # Number of values to calculate the OD average

    chemostat_vials = vials #vials is all 16, can set to different range (ex. [0,1,2,3]) to only trigger tstat on those vials
gr=ln(2)/doublingTimegr = ln(2)/doublingTimegr=ln(2)/doublingTime
    rate_config = [0.231] * 16 #to set all vials to the same value, creates 16-value list
    stir = [8] * 16
    #UNITS of 1/hr, NOT mL/hr, rate = flowrate/volume, so dilution rate ~ growth rate, set to 0 for unused vials
rate_config = [0.231,0.231,0.231,0.231,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46]
if eVOLVER.experiment_params is not None:
    rate_config = list(map(lambda x: x['rate'], eVOLVER.experiment_params['vial_configuration']))
    stir = list(map(lambda x: x['stir'], eVOLVER.experiment_params['vial_configuration']))s
    start_time= list(map(lambda x: x['startTime'], eVOLVER.experiment_params['vial_configuration']))
    start_OD= list(map(lambda x: x['startOD'], eVOLVER.experiment_params['vial_configuration']))
#Tunable settings for bolus, etc. Unlikely to change between expts
bolus = 0.5 #mL, can be changed with great caution, 0.2 is absolute minimum

##### End of Chemostat Settings #####

flow_rate = eVOLVER.get_flow_rate() #read from calibration file
period_config = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #initialize array
bolus_in_s = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #initialize array

Tips and Tricks

Ways you might accidentally change the OD reading

  1. Moving vials once experiment has started

  2. Altering

paper
this
growth curve tutorial
custom_script.py
slower pumps
Wescodyne
BacDown
Experiment Manager
media bottle and splitter guide.

Command Line Start Guide

Overview

Reasons you might use command line experiment start:

  1. Doing a custom experiment

  2. Unable to install GUI or getting errors you aren't able to fix easily (post on the forum first)

Protocol

Set your computer to never fall asleep to prevent experiments from being halted.

  1. In a command line window, enter the dpu virtual environment.

    1. Navigate to the DPU directory

      • Use this command: cd <path_to_dpu>

    2. Enter the command:

      • On Mac OS:

        • source dpu-env/bin/activate

      • On Windows PowerShell:

        • dpu-env\Scripts\Activate.ps1

  2. Navigate to your experiment folder

    1. This should be in dpu/experiment

  3. Copy the template folder and rename it for each experiment

    1. Navigate into your new experiment folder

  4. Alter settings in custom_script.py

    1. EVOLVER_PORT = set correct IP of the eVOLVER

    2. Set initial temp and stir settings

  5. Start the experiment using the command:

    1. python3 eVOLVER.py -i <your_evolver's_IP_address>

    2. python3 eVOLVER.py -i 192.168.1.9

    1. Temperature should be fully equilibrated before this

    2. DO NOT add cells before blanking, whatever OD value the cells + media have will be subtracted from future measurements

  6. Stop the experiment using the keyboard shortcut control+C

    1. One control+C pauses the experiment from recording data

    2. Two control+C stops the experiment

  7. To change parameters mid-experiment or restart from blank data files:

    1. Stop the experiment fully

    2. Change parameters in custom_script.py

    3. Restart the experiment

      1. Continue to keep your data

        1. Overwrite to make new blank data files and throw away your old experiment. NOTE: you will lose your OD blank and will need to make a new one (a hassle if you have already inoculated with cells)

  8. You can run experiments on more than one eVOLVER at a time

    1. Create a new experiment folder (different custom_script.py) and change IP

    2. Follow this procedure in an additional command line window

Ending an Experiment

Making media bottles and splitters

For routing media from standard lab glassware

Overview

While large carboys (autoclavable plastic jugs >10L) are useful for long-term experiments or particularly fast-growing bugs, the best typical media storage is standard Pyrex/Corning bottles, which range from 100 mL to 10 L. The 1-2L bottles are the most convenient size for media prep, short experiments, and experiments with many media types, so we'll be sharing the process for those bottles here.

Parts:

1 ft of 1/8" ID silicone tubing 2 Female luer-lock connector with 1/8" barb, polypropylene 1 Male luer-lock connector with 1/8" barb, polypropylene 1 Male luer cap Tools: Scissors/razor Drill gun 3/16" drill bit

Step-by-step

First, drill a hole directly down through the cap. Be sure to have something safe to drill into on the other side. If having trouble with the 3/16 bit catching on the plastic, drill a pilot hole with a smaller bit.

Next, push one of the barbed female luer connectors through the top of the cap, so the luer side is facing up.

Next, cut two pieces of tubing. One is for the cap above, and can be as short as 3". Put the two remaining luer adapters (one male, one female) on this piece. This flexible piece makes it a little easier to connect lines to bottles. The other should be at least 9" so that it makes it from the barb on the cap all the way to the bottom of the bottle (for 1L bottles). Connect the longer piece of tubing to the barb poking through the bottom of the lid.

The long straw should reach the bottom of the bottle and bend slightly. If it’s too long it will be annoying to screw the bottle cap on, and might get stuck against the wall. If it's too short, it won’t be able to reach media at the bottom of the bottle. Your bottles may vary: for 2L bottles, you need a 13" straw.

Rinse out the straw with diH2O, and add a male luer cap to the top of the straw before autoclaving, and you’re good to go!

You can also make splitters with the same 1/8" tubing and corresponding luer-barb connectors and barbed T-connectors, allowing you to split one media bottle to multiple input lines. We usually sterilize the splitters using 10% bleach and ethanol (by connecting them before sterilizing all the lines when beginning an eVOLVER experiment), but everything shown here is autoclavable as well.

Building a Smart Sleeve

A guide for building Smart Sleeves on eVOLVER

Background

eVOLVER hardware is primarily divided between the Smart Sleeves and Motherboard. The Motherboard is where all the sensitive control hardware is, whereas the Smart Sleeve is nice modular way of integrating all the sensors to control your culture conditions.

Goal

The goal of this tutorial is to show how one can build an eVOLVER Smart Sleeve using commonly found tools and easily customizable parts.

Time/Cost

That all sounds great, but I have never soldered or 3D printed before, how do I start?

How can I modify or change the design?

Does this tutorial include how to build the Motherboard?

No. This tutorial only provides instructions on how to build a Smart Sleeve.

Guide

1. Order all of the necessary parts and tools.

List of supplies needed ( displayed in photograph above ):

  1. Laser Cut 1/4" Acrylic Base

  2. 2 pieces of laser cut 1/8" Acrylic Fan Spacers

  3. 5/64" Hex Key

  4. IR LED

  5. IR Photodiode

  6. Thermistor

  7. 2x Socket head screw

  8. 12 V DC Computer Fan with Magnets Glued

  9. Vial Board

  10. Lab Tape

  11. 3D Printed Part

  12. Aluminum Tube

  13. Soldering Iron + Solder

  14. 2x Stainless Steel Screws, 2.5" 4-40 threading (Not Shown)

2. Familiarize yourself with how the Vial Board, 3D printed part, and aluminum tube should be assembled.

Take notice if all the components line up properly:

  • Tapped 2-56 holes on the Aluminum Tube lines up with holes on heating resistors (2 black rectangular components soldered on vial board)

  • The heating resistors should sit on two rectangular holes on the 3D printed part

  • Green screw terminals line up with the LED holes on the 3D printed part

Take note of where the two holes labeled “thermistor” are on the PCB.

3. Tape thermistor on the aluminum tube near where the two vias were located on the PCB.

When taping the thermistor, ensure the writing on the thermistor is facing away from the aluminum tube. Tape the thermistor parallel to the length of the tube about .5 cm away from the bottom of the tube. The leads should be exposed when slotted into the 3D printed part.

4. Slot the aluminum tube into the 3D printed part. Verify that the holes for the LEDs on both the aluminum tube and 3D printed part are properly aligned.

Make sure 3D printed part is slotted tightly. Add additional pieces of tape if is loose. Avoid damaging the thermistor by twisting or rotating the parts.

5. Align the PCB over the 3D printed part, with the two thermistor leads threading through the vias on the PCB.

Also verify that the two small 2-56 holes on the aluminum sleeve align with the holes on the heating resistor.

6. Use the 2x Socket head screws to fasten the heating resistors to the aluminum sleeve.

Aligning the hole with the heating resistor makes screwing the socket cap in much easier. Thermal paste can also be applied before this step to form better contact between the heaters and aluminum tube.

7. Place the 1/8" laser cut acrylic pieces onto of the fan to act as spacers between the magnets and glass vessel.

8. Use the two 4-40 stainless steel screws to fasten the assembled 3D printed part and the computer fan with spacers. Fasten both screws onto the 1/4" acrylic piece.

9. Coil the wires from the computer fan around the Smart Sleeve and connect to appropriate ports on the screw terminal labeled “fan”.

The red wire should go into PWR and the black wire should go into the GND ports.

10. Attach the LED (clear packaging) and photodiode (dark packaging) for OD measurement to the appropriately labeled slots.

Both the photodiode and LED should have a short and a long lead. This corresponds to the polarity of components. Make sure for both components, the longer lead is connected to PWR . If this is done improperly, you will not get a reliable signal.

11. Bend the LED and diode into the corresponding slots.

12. Finally, solder the thermistor onto the PCB.

That’s it! You’re done.

Use the GUI to Control Parameters

A guide for usage of the eVOLVER GUI to set parameters

Turn on the eVOLVER 5V power supply by flipping the associated switch. IMPORTANT: Wait for 5 seconds before turning on the 12V power supply.

Ensure the correct eVOLVER is selected by consulting the upper right hand corner of the GUI. It will display the eVOLVER name (default is evolver-darwin), followed by the IP address in parentheses. This will be the IP address you assigned it when setting up the router connecting the DPU to the vial platform.

In the PARAMETER box, ensure the correct calibrations are selected for Temp, OD, and the pumps. Click the box for each to bring up a list of available calibrations for that parameter.

Select all vials by tapping Select All in the bottom right corner of the screen. The vial circles on the right side of the display should become orange.

You can also click and drag to select as many vials as you want.

Tap the NEXT → on the box that says parameter to get to the Stir tab. Tap the - button or drag the slider to a Stir of 8. Press the Stir: 8 button to alter the stirring of all vials.

Tap the NEXT → on the box that says parameter to get to theTemperature tab. Tap the - button or drag the slider until the middle button says 37.0 °C and tap the button. The EXECUTED COMMANDS box should state that a stir and then temp command was sent to all vials.

Pumps

View the Server Log and Restart Server

About Server Logs

We also provide a utility monitoring and restart script, evolvercron and server_monitor.sh. To use, add the crontab job line in evolvercron into your cron installation.

View Server Logs

  1. Connect to your server via the following command (replace <eVOLVER_IP> with your eVOLVER's IP)

    1. ssh pi@<eVOLVER_IP>

  2. Enter the eVOLVER server's password

[Option 1] View the server log live

  1. Enter the supervisor environment via the following command:

    1. sudo supervisorctl

  2. Use the following command to follow the eVOLVER server log:

    1. tail -f evolver

  3. Ctrl+C to exit

[Option 2] View the whole server log file

You can either view there or move it to your computer for more analysis

Restart the eVOLVER Server

  1. Enter the following command:

    1. restart evolver

  2. If you quickly follow the server via tail -f evolver you should see it restart

Change Your conf.yml File

Overview

Reasons you might want to do this:

Guide

[Optional] Before doing this, save the conf.yml file you are using, if you don't already have it saved. You can use the following command in a terminal window:

scp pi@<your-IP-address>:/home/pi/evolver/evolver/conf.yml

  1. In a terminal, navigate to the folder in the server files containing the conf.yml file you want to change to

    1. For example if you want to change to the stir pause conf.yml:

      1. cd <your-directory>/evolver/alternate_conf_files/stir_pause_for_OD_reads

    2. For example if you want to change to the default conf.yml:

      1. cd <your-directory>/evolver/

  2. Copy over your new conf.yml file (overwriting the old one)

    1. Input the following command:

      1. scp conf.yml pi@<your-IP-address>:/home/pi/evolver/evolver/

    2. Input your eVOLVER server's password

  3. Restart your eVOLVER server

    1. Input the following command (replaced with your eVOLVER's IP)

      1. ssh pi@<your-IP-address>

    2. Input your eVOLVER server's password

    3. Input the following commands to restart the server

      1. sudo supervisorctl

      2. restart evolver

  4. Check the server log files to see that it is cycling properly

    1. While still in supervisorctl, input:

      1. tail -f evolver

Raspberry Pi Configuration

Process for configuring a Raspberry Pi for eVOLVER

Using Raspberry Pi Imager

3. Plug an 8GB micro-SD for the RPi into an adapter, then into a the computer.

4. Click the Choose OS button, then scroll to the bottom and click Use Custom.

5. In the popup at the dropdown at the bottom of the window, select All files(*.*). Then select the image file downloaded in Step 1.

6. Click the Choose Storage button and select the SD Card.

7. Click the Write button. A notification might appear warning about erasing all existing data on the card. Click Yes. If it asks for your computer password afterwards, enter it. It might take a while to finish (~40m).

Using command line utilities (Mac/UNIX only)

2. Plug the SD card into the computer.

4. Run the following command:

diskutil list

Identify the SD card name from this (it should be obvious). Next run:

diskutil unmountdisk <diskname>

where <diskname> is the name you identified from the previous command - it should look like

/dev/disk3/ or something similar.

5. Use the dd command to copy the image onto the SD card:

sudo dd bs=4m if=<diskimage.img> of=<diskname>

Be sure to change the two arguments above! if should point to the image you downloaded from step 1, and of should be the diskname.

Backing Up Raspberry Pi (Make a Custom Image)

Writing an image to save your full Raspberry Pi configuration.

Useful to save time when reimaging your Raspberry Pi if you want to go back to your custom Python code and calibrations as quickly as possible.

If you are new to command line / bash, you can start !

custom_script.py has basic settings for running chemostat and turbidostat experiments, but you can also customize. To learn more click .

You can graph your experiment using the graphing tool .

the experiment

Data is in the

Note: The original calls for 5/32" barbs and 1/8" inner diameter tubing for use with media bottles and splitters. While this will work (with some effort) for soft silicone tubing, it does not work for more firm tubing or some barb styles. We advise that you always match the barb size rating to the tubing inner diameter; i.e. always use 1/8" barbs for 1/8" ID tubing, and 5/32" barbs for 5/32" ID tubing.

Per media bottle, you will need (see , fluidics page):

If you need additional aid or have questions about this process, feel free to ask on the !

In this post, we are describing the Smart Sleeve built for continuous culture documented in our . It typically takes 10 to 15 minutes for construction of this version of the Smart Sleeve with all the appropriate parts (e.g. soldered PCB, constructed aluminum tube). Raw materials cost roughly $40/ vial however cost for 3D printing, machining, and coloring (spray painting/ anodizing) parts vary due to accessibility to appropriate tools.

Here is a great introductory tutorial on soldering from our friends at . Also, you can easily outsource your 3D printed parts to be produced by folks at by uploading the appropriate (if you’re a student, don’t forget the student discount!). Generally, building a Smart Sleeve is simple because we only use through hole components and screw terminals, so it is much easier to make than surface mount designs.

We built our PCB designs on , an open-sourced software for circuit board design, and our 3D models on Solidworks. Here is a schematic of the PCB and the Solidworks part . There are many other programs for vial board design, including a bunch of tutorials on , another popular CAD tool for the open-source community.

Following a similar framework for building the Smart Sleeves enables adding different parameters, adaptation to different vial sizes, and other creative eVOLVER applications! Have fun! Let me know if anything is unclear on the .

Before doing using the GUI, all and should be complete.

Also, make sure to parameters before using them.

Also Refer to the paper for a video of using the GUI and the GUI Experiment Start .

If connected, the indicator dot next to the name should be green. If this dot is red, you may need to troubleshoot the eVOLVER vial platform connection to the DPU. Consult the eVOLVER DPU and for details on setting up and troubleshooting this connection. Otherwise consult the or post a question.

Refer to the video for how to use pumps and sterilize fluidic lines

We use to run and manage the logs for the . eVOLVERs should come pre-configured with this.

To understand what you see in the server log, take a look at the information .

The stores the log file here: /var/log/supervisor/

If you are currently following the eVOLVER server in supervisorctl, use ctrl+C to exit. Otherwise, follow steps to .

Changing - ie how often the s erver cycles

More about the server log

Please see the infrastructure page for additional information on the RPi we use for the eVOLVER.

Be sure to on the RPi after following this guide, or you will have issues communicating with the server through the DPU or with actuating/sensing connected components!

- Recommended

1. Download the pre-configured eVOLVER RPi image .

2. Download and install the .

8. When it completes, you can plug the SD card into the RPi. You will need to and potentially the conf.yml with the latest code from GitHub.

1. Download the pre-configured eVOLVER RPi image .

3. Open a terminal of your choice (I recommend ).

This command can take a while, and it doesn't show any status or progress updates - be patient. If it fails, try decreasing the bs argument to 1m instead of 4m - this will slow things down but will decrease the chance of failure. If you still have issues reach out on the .

6. When it completes, you can plug the SD card into the RPi. You will need to and potentially the conf.yml with the latest code from GitHub.

Follow this guide:

here
here
Calibrate to blank
here
Clean up
data files
forum post
parts list
forum
Nature Biotechnology paper
Sparkfun
3DHubs
STL file
KiCAD
here
here
Eagle from Sparkfun
forum
Software Installation
Network Configuration
calibrate
JoVE
Guide
Installation
Networking Setup
forum
JoVE
supervisor
eVOLVER server
server monitor
Background
Guide
view server log

Constructing Laser Cut Millifluidics

Page under construction

Protocol

Control Layer (1/4" acrylic)

Cut outlines first

  • 0.1pt

  • 3 copies

Keep full stock in place + outline on computer

  • Acts as a frame for the device

  • Remove board from stock with tweezers

Add adhesive

Put adhesive covered outline back in place on stock

On the computer

  • Align control vector cuts (ports) to the outlines

  • Delete outlines

  • Print (3 copies for 1/4")

Keep board in place

Rastering control channel

  • Undo deletion of outline, delete previous vector cuts

  • Align raster outline to old outline + delete outline

  • Load control_channel 2 in advanced settings

    • 1200 dpi

    • Deep to get through adhesive

  • 1 copy => print

Remove board + stock from laser cutter

Flow Layer (1/8" acrylic)

Cut adhesive sheet

  • Copy/paste in design with scooped out region around bridge

  • Cut adhesive out first

  • This way we don't have to move the acrylic stock later to put adhesive on the laser cutter

  • Check adhesive stickiness

      • Remove corner from adhesive

      • One side will stay attached to adhesive, one will remove cleanly

  • Put adhesive sheet on laser cutter, with side that easily removes down

  • Focus to adhesive

  • Vector cut Full speed + 80 - 90% power

Cutting acrylic

  • Delete scoops, we just want the outlines

  • Print vector cut for outline

  • Refocus laser cutter to 1/8th inch + cut

Plasma clean acrylic

Put adhesive on

Rastering acrylic

  • Place device back in stock on laser cutter

  • Copy/paste raster of flow route

  • Remove outline

  • Raster cut

  • While rastering, start tapping control board

Assembly

Tap control board

  • 2 turns one way, little turn the other way

  • Use a countersink to remove burrs around the holes

    • A couple of turns

    • Both sides of board

    • Allows silicone to sit flush + barbs to insert easily

  • Blow out small bits of acrylic from threading using air before plasma treating

Remove backing from all acrylic (helps with alignment later)

Silicone

  • Sam from Densmore lab bought a big roll

  • Some in drawer under cutting station

  • Cut larger size than device

  • Peal one side of silicone

  • Plasma treat 30 seconds

Apply silicone to control board

  • Align and press onto control board

  • Take off plastic from other side of silicone

  • Wrap in paper towel

  • Put between aluminum plates in vice

  • Turn tight + one small more turn

  • Wait 10 minutes

Punch holes in silicone

  • Use biopsy punch (green on shelf above 3D printers) to make holes silicone for flow

  • Don't need to do the control

  • Put pressure and turn

Clean silicone + adhere to flow layer

  • Use piece of packing tape to remove dust

  • Plasma clean silicone 30 seconds

  • Align flow and control

    • Take special care to align IPP flow and control

    • Easier to align flow layer on top

  • Clamp full device in paper towel for 10 minutes

    • Avoid over tightening - this can overstretch the silicone layer

Put loctite on barbs + screw in to board

  • Barbs are in Dan's drawer

Subprotocols

Laser Cutter

Different colors of line produce different depth / intensity of cut

  • Use black for everything

Make all lines hairline outline

  • Otherwise it won't cut!

Open up a new page

  • Paste whatever you're cutting into this

  • This will be the correct size of bed

Printing

USB Bullshit

  • Open up printers / devices

  • Have to reconnect USB multiple times for it to be recognized

  1. Open up print

  2. Select correct printer you figured out

  3. Load the correct settings

  4. Set the correct copy number

    1. For millifluidics this is 2 for vector cutting (we have the double line problem)

    2. 1 for raster probably

  5. Press print

On the Laser Cutter

Make sure it's on / connected

Focus first using metal thing attached to laser

Run the job with lid open to double check it's doing what you hope

Run the job

Plasma Cleaning

Plasma treat surfaces (except adhesive)

  • Take off one side of acrylic backing

  • Vacuum knob arrow left

  • Metal valve tight, then quarter turn loose

  • Pump on + power on to remove air 1 minute

  • Then switch on upper right knob to high

    • Acrylic = 1 minute treatment

    • Silicone = 30 seconds treatment

  • Turn off pump and power

  • Slowly open black knob and let vacuum fill

Adhesive

Adhesive is in a box above 3D printers

Cut adhesive to larger size than acrylic

  • Remove adhesive backing and place face up on surface

  • Remove acrylic from plasma cleaner and firmly press clean side onto adhesive

  • Squeegee the bubbles out as much as you can (and away from where the channels will be)

  • Cut excess adhesive off with razor blade

Calibrating IPPs

Page under construction

Contamination

While batch culture techniques often utilize biosafety hoods or flame convection currents to keep workspaces sterile, these are rarely amenable for automated cell culture devices. Prevention of contamination in eVOLVER is achieved at three levels: 1) sterilization of media, culture vessels, and fluidic lines, 2) attention to sterile technique, and 3) physical and chemical barriers to contaminants. First, all media bottles and their adapters, and all components of the culture vessel (e.g. borosilicate glass vial, magnetic stir bar, cap with fluidic adapters) are designed to be autoclaved before each use. Fluidic lines on the device are sterilized before and after each experiment using bleach and ethanol (see Online Methods). Second, following sterilization, sterile technique should be practiced when attaching media lines to culture vials by working quickly, avoiding physical contact with the ends of fluidics lines, and taking care to spray gloves with ethanol. Finally, additional physical and chemical measures may be taken depending on the organism and experiment. For example, the sampling port may be covered by a sterile membrane for long-term culture. For slow-growing eukaryotic cultures, antibiotics can be added to the media to exclude bacterial contaminants. UV sterilization of components or surfaces is another preventative measure to consider.

Constructing Millifluidics via SLA Printing

Page under construction

About the conf.yml file
Adding an experimental parameter
here
Raspberry Pi
update the server code
here
Rapberry Pi Imager Tool
update the server code
here
iTerm2
forum
update the server code
https://www.tomshardware.com/how-to/back-up-raspberry-pi-as-disk-image
RPi Imager Guide
Command Line Guide (Mac/UNIX only)

Operating Millifluidics

Always use less than 10 psi inputs into the millifluidics and pressure regulator to avoid breaking them

Never use ethanol to sterilize millifluidics as it breaks them. Use bleach to sterilize and flush it with sterile water.

Plug in 5V power supply and 5V fan

Changing Pressure Settings

  • Unplug the SAMD21 from the pressure regulator before uploading code (otherwise there might not be enough power to the SAMD21 from the USB)

  • Upload modified pressure code to SAMD21

Option 2: Add a 'pres' command to the evolver conf.yml and modify conf.yml

Fluidic Lines

Connect a 8-10 psi air input into the input port (only port on its own in 1.0 design)

Connect regulated line to both sensor (below) and controlled output (white, above) as shown below:

Set Up Solenoid Control

Solenoid Bank Diagram (facing holes)

  • The solenoids should be normally open and connected to the 8 psi air source. ie Vacuum when closed

  • Left = 8 psi

  • Right = Vacuum

  • Middle = 8 different solenoids, groups of 3 are IPP controls

Connect solenoid ribbon cable to slot 5 on the fluidics box

Turn on eVOLVER server and fluidics box

Check that the solenoid bank is correctly set

Run ipp_cal.py on the server:

  • Use command:

    • python3 ipp_cal.py <frequency (hz)> <seconds to run>

    • For example: python3 ipp_cal.py 1 100

Set Up IPPs

It is recommended to calibrate using a pressurized input line (ie a 1.5 psi bottle). Always use that same pressure on the fluidic input.

  • Hook IPPs up to a pressurized input bottle for consistency

  • Make sure that IPPs are operating as expected and producing the expected flow rate

If running a trial experiment with just water, you can put food dye in to the inducer to visualize how much is injected into vials

Experiment Troubleshooting

Miscellaneous

Optical Density (OD) Readings

Overview

Optical density (OD) is one of the most integral parts of continuous culture. While chemostats do not innately rely on OD, it is still a useful metric for your evolution. Meanwhile, turbidostats and growth curves heavily rely on OD to function.

However, OD is the most easily disrupted parts of eVOLVER hardware. This guide serves as an initial list of things to check when troubleshooting OD.

After trying a fix, before attempting a whole new calibration, prepare a couple of standards in the OD range that you care about and check if you see a difference between them in the raw OD values (in the GUI Setup page or by starting an experiment and going to the data folder).

Most Common Problems

Variability in OD Sensing Range Between Vials

  1. If you already have a version of the 3D printed tube holder with defined OD LED and photodiode distances:

  2. Try different ADC resistor packs

    1. eVOLVERs come with a variety of these

    2. Ask on the forum for help

  3. Check that your vial construction is not variable

Noisy OD Data

  1. Stir bars jumping around during OD readings

    1. Decrease stir speed

  2. You are near the edge of your calibrated OD range

Incorrect OD

ie eVOLVER OD is offset from the cuvette or plate reader measured value.

    1. Especially because you did not wait for temperatures of the vials to equilibriate

  1. Poor quality OD calibration

    1. Different temperatures require different OD calibrations

No Change in OD

  1. Photodiode or IR LED not working

    1. A failed photodiode will show a raw OD value close to 64,000

    2. A failed IR LED will most likely show a raw OD value much closer to your other vials

    3. Check that they have the long (positive) lead in the correct positive terminal

  2. ADC board or motherboard broken

    1. Can happen after vial overflow

Other Considerations

Pre-Calibration Considerations

  • od_led value in conf.yml file (PWM value)

    • Use the splash guard that comes with your eVOLVER

    • You may need to recalibrate if you calibrated with ambient light

Experiment Considerations

  • Photodiode Temperature - make sure temperature is equilibrated before calibration and before start of experiment

  • eVOLVER recently turned on - causes rapid change in values

  • Needles or other structures coming below 10mL line (close to OD PD etc)

  • Vial volume - a volume of 10mL will totally change OD compared to 30

  • Stirring with low vial volume - this will give noisy readings as the funnel created by stirring fluctuates and is more and less reflective

Non-standard changes

  • Vial holder reflectiveness - ie white vs black vs metallic

Server Troubleshooting

Overview

If a parameter is not working properly, often the first place to check for issues is the server

Guide

  1. Monitor the server log file

  2. Any time you are troubleshooting the server, make sure to save your calibrations.json file in a secure location before going further

  3. If the log file is not updating (via evolver tail -f)

    1. If you have manually edited the conf.yml file, most likely you have made an error somewhere there

      1. This could be formatting or a typo

        1. ONLY copy the conf.yml to home/pi/evolver/evolver/

        2. Otherwise you will overwrite your calibration files

      2. Restart the server

        1. Stop following the server using ctrl+C

        2. Type restart evolver

        3. evolver tail -f

      3. The server log should now be updating each cycle

Relevant Forum Posts

Heating Element

Relevant Forum Posts

Vial Overflow, Pump Failure, and Spills

Vial overflow is one of the most common problems to plague eVOLVER experiments. Overflow events can cause damage to internal components such as the PCB motherboard, sensor actuator (SA) boards, power supplies, etc. If you experience overflow during an experiment, it is important to immediately stop the eVOLVER and evaluate potential causes of overflow, as well as any damage that the overflow may have caused.

If you catch an overflow that happened recently (i.e. an overflow that happened overnight), the best thing you can do after stopping the experiment is turn off and unplug the eVOLVER, determine the extent of overflow spilling, and wash any components that have media on them. There are no components on the vial board or motherboard that retain significant charge (i.e. no batteries or large capacitors), so they are safe to wash gently in soap and water. Once clean, they should be dried quickly with a paper towel.

The main reason for electronics failure after an overflow is current shorting through media (most microbial media is salty and conductive), or connections and copper corroding from media that has been left to dry. If you can clean off all the media immediately after an overflow, you will have a much better chance of saving electrical components, and saving yourself many headaches down the road.

If you did not catch an overflow quickly, or a large amount of media spilled, follow the workflow below.

Troubleshooting Workflow for Overflow

Inspecting internal components

Overflowed media can enter into the vial platform through the ports that connect the Smart Vials to the motherboard. This can cause damage to the internal circuitry, which is should first be evaluated by visually inspecting the motherboard, SA boards, power supplies, and Raspberry Pi. Damage to any of these components can look like burned or melted spots or loose/broken connections. If you see visible damage to any of these parts, they will need to be fully replaced. See pages below for specific instructions on how to replace these various parts.

Old evolver pumps (solid black plastic head)

Relevant Forum Posts

Stirring

Stir Bar Jumping

Replacing Photodiodes and LEDs

Additional tip: if you see strange raw OD values after swapping out LEDs or photodiodes, it's possible you have the positive and negative ends switched.

Vial Platform Troubleshooting

Set Up

Option 1: Manually change via Arduino (hard coded)

Follow the Arduino Software Installation

IPPs need to be and before use.

"" after a very long term experiment

- another alternative is to tape the switches on

Disclaimer: You may find that you are still not getting "good" OD readings after trying solutions in this guide. We hope that you will search the because others may have had your same issue.

For more in-depth information about the OD hardware see .

Use the upgrade to double check your photodiodes and LEDs are correctly placed!

Sometimes a given OD photodiode or LED can be variable as they are cheap parts. Swap both out for new ones. Part numbers .

Try

is off enough to make your calibration fail

Bad

You can check your OD calibration using the script

Replacement

See motherboard and

Or using black acrylic

-

For more information about the server software, see .

Guide

Copy a conf.yml that you know works (for example to )

Using the server update as a reference

If not, and you have not recently updated the evolver.py or other python files,

by increasing space between fan and vial

Before attempting to troubleshoot the vial platform, make sure that the is working as expected.

The eVOLVER vial platform is the base that the Smart Sleeves sit upon. It contains the , (where the server is running), and power supplies.

Pressure Regulator
code
guide
ssh to server
constructed
calibrated
Contamination
Vial Overflow, Pump Failure, Spills
Media Consumption Tracking
No Buffer Space Available
Accidentally turning the eVOLVER base off
forum
here
here
OD90 for OD600 0.5-4.5 or OD135 for OD600 0.0-0.5
Stop stirring during OD readings
OD blank
OD blank
manual calibration
guide
hardware
troubleshooting
LED to photodiode angle
Resistor pack value
Ambient light
make one
Vial to Vial Sleeve Distance
Second Forum Post
Low (~10mL) culture volumes ONLY - readings are affected by stirring
Standardize LED/Photodiode distance
guide
Motherboard Troubleshooting/Replacement
12V Power Supply Troubleshooting/Replacement
here
here
base eVOLVER conf.yml
guide
update them
Directly Connecting to Rpi over USB
Sudden Server Disconnections
Using Raspberry Pi 4 as a server
ssh Connection Refused
Heating element not working
Pump is not actuating / spinning
Pump failure and spill, lessons learned
How to recognize if your stirbar is jumping
Fixed
Forum Guide
server
motherboard
Raspberry Pi

IPPs (Integrated Peristaltic Pumps)

Pressure Regulator

Described initially in Huang, Heins et al. 2022 Nature Biotech

Description

As IPP devices are sensitive to changes in pressure at valves and in connected media bottles, we developed an 8-channel pressure regulator that can be used to regulate these pressures through the eVOLVER framework. The device consists of sets of two proportional valves that can limit air flow from a high-pressure source and a vent at atmospheric pressure. By connecting an electronic pressure gauge to the output of this valve configuration, it is possible to implement proportional-integral-derivative (PID) control over the valves in order to set the output pressure to any desired level between the input and atmospheric pressure. We validated the functionality of this device by regulating pressure at 1.5 psi over 24 hours, and compared the performance of our device with that of a fixed, manually set regulator (PARKER-WATTS R25-02A) connected to the benchtop air supply (Supplementary Figure 3). The average pressure with PID control was 1.498 psi with an RMS error of 0.0086 psi, while the fixed regulator had an average pressure of 1.706 psi with an RMS error of 0.2220 psi. Large pressure deviations (>0.5 psi) that can affect the performance of the devices were observed with the fixed regulator, but were successfully eliminated with our automated pressure regulator scheme. We further characterized the effects of pressure changes at various locations in the system in order to optimize performance of the IPP devices for the course of a PACE experiment (Supplementary Figure 3).

eVOLVER Maintenance

We have monitored the lifetime of eVOLVER components since the invention of the device (~3 years). As in most systems, mechanical parts have the highest possibility of wear and thus need replacement most frequently. Likewise, in eVOLVER, the peristaltic pumps used have a lifetime of 6 months of typical use during continuous culture. Specifically, the silicone tubing within the head of the pump is frequently compressed when actuating peristaltic pumps and will tear over time. The head can easily and inexpensively be replaced ($4/ pump). The computer fan used for stirring has robustly operated continuously for > 3 years, whereas the magnetic stir bars are rated for a limited number of autoclave cycles and need eventual replacement. All other components (e.g. heaters, thermistors, LEDs, diodes, PCB, power sources) have been stably operating for > 3 years.

Peristaltic Pumps

Just like the digestive system!

Standard components

The standard eVOLVER peristaltic pumps (since ~2020) sourced by Fynch Bio are selected specifically to eVOLVER use. Previous pumps used with eVOLVER during its early development tended to wear out quickly and have variable flow rates, primarily due to the mechanism for rotating the rollers against the tubing to drive pump flow. The motor shaft directly turned the rollers through friction, which led to slippage and abrasion over time. The current pumps do not have drirect contact between the motor shaft and rollers, instead driving roller rotation through a gear reduction system.

This gear system drives a roller casing with fixed roller axles contained in the pump head. In this way, the pump action does not rely on friction and thus much more accurate and durable than previous pumps.

Troubleshooting and repair

Because the current pump style has been introduced so recently, very few of them have failed from wear and tear. Based on our experience with other pump styles, the most likely failure mode will be collapse or tear of the tubing inside the pump head, or shearing of the tubing on the barb outside the head. This can be solved by replacing the pump head (contact Fynch Bio) or replacing the tubing.

The induction motor inside the pump is very unlikely to fail through normal use. If there is a liquid spill on the pump array and some pumps are not spinning, the most likely cause is corroded contacts with the pump array PCB. While the pumps themselves will be fine, they should be removed and replaced to a new PCB, ordered from Fynch or PCBWay. This will require removing solder, which can be tricky.

Swapping and modifying

The pump heads can be rotated 90 degrees in any direction, should your bench setup require changing the direction your pumps face.

The low-flow pumps available through Fynch use an additional gear reduction box to reduce the speed of pump action by a factor of 45. This is useful for addition of inducers, antibiotics, or other media feeds that require a small and precise bolus.

Plenty of other peristaltic pumps are suitable for eVOLVER, so long as they operate at 12V.

The flow rate of eVOLVER pumps (and any pump with an induction motor) is somewhat modifiable through PWM modulation. This effectively reduces the voltage going to the pump, which will slow its rotation, down to the point where the coils can't generate enough torque to consistently turn the shaft. This happens about halfway through the PWM range (around 2000), where you can get the pumps to run at about 1/3 speed. This is rarely necessary for experiments, so it has not been optimized, but is a potential feature for users to explore.

Motherboard Troubleshooting/Replacement

From eVOLVER Forum

Overview

Diagnosis

If you have determined that the server and Arduinos are both functioning properly, however, the link between them seems to be broken in some or all ways, then the last likely culprit is the motherboard.

In the example below, overflow events during an experiment caused media to leak through the Smart Vial ribbon cable ports into the vial platform, which houses all of the eVOLVER circuitry. This resulted in visible damage to the motherboard, which can be seen below.

Replacement Protocol

Before getting started with disassembly, be sure to unplug the eVOLVER from the wall outlet.

Unfasten Motherboard

The motherboard is fastened to the eVOLVER platform and other internal components in several ways (numbers correspond to image below):

  1. Ribbon cables connecting the motherboard to the Smart Sleeves (not shown)

  2. Screws in gold holes

  3. 6 screws that fasten wiring from the power supplies to the motherboard

  4. Cable connecting motherboard to Raspberry Pi (fastened to base of platform)

  5. Cable connecting motherboard to display screen (fastened to lid of platform, obstructed by ribbon cable in image)

Remove Motherboard

  1. Unplug the cables connecting the motherboard to the Raspberry Pi and display screen.

  2. Remove the screws in the gold holes using a Phillips screwdriver.

  3. Remove the screws holding the wiring in place using a flathead screwdriver.

  4. Close the eVOLVER chassis lid half way, making sure to hold the motherboard with one hand. Unplug the ribbon cables that connect the Smart Sleeves to the motherboard, starting from the last row of vials and moving towards the first row of vials.

  5. Maneuver the motherboard around the 3D printed part housing the display screen.

Transfer Parts to New Motherboard

The PWM boards, ADC boards, SAMD21 mini Arduino boards and jumpers need to be transferred to the new motherboard.

Be sure to take note of where each board is on the old motherboard before removing them. An image of the configuration can be seen in the images above.

Remove the ADC boards, PWM boards, and SAMD21 mini breakout boards from their slots

  1. Using an Integrated Circuit (IC) puller, as seen in the image below.

    1. Pull the IC puller perpendicular to the motherboard to prevent bending or breaking the SA boards’ pins.

  2. Or put a screwdriver in the hollow under the board and SLOWLY work it back and forth the pry the board out.

Make sure you pull the pins out as straight as possible because it will be challenging to get the board back in if they are bent.

BE VERY CAREFUL. If you break off the wrong connector pin on their bottom, it's pretty annoying to figure out a solution other than replacing the whole board. Unfortunately, you also need to apply a good amount of force to get the board up. But be patient!

  1. If pins are bent in the process of removing the boards, they can be straightened using tweezers. Avoid bending the pins too much; excess bending can cause the pins to snap off.

  2. If pins are snapped off during this process:

    1. Alternatively, the pins can be soldered back into place onto the board, but this is much trickier to do.

    2. The board should be replaced with a new board if other options do not work

Optional: If your motherboard includes a variable resistance board, proceed to steps 3 and 4. If not, skip to step 5.

  1. Remove the variable resistance board from the motherboard. The ADC boards on this board can be removed first, or the variable resistance board and ADC boards can be removed as a single part.

  2. Remove the headers under the variable resistor board and transfer to the new motherboard. These can be removed with pliers.

  1. On the side of the resistor array, there is a description of the part and a black dot, seen in the image below. This black dot indicates the ground pin of the resistor array, and should go into the slot towards the top of the motherboard.

  1. Remove the jumpers to the old motherboard by pulling them straight up. Transfer the jumpers to the new motherboard, recreating the same configuration as shown below.

Before transferring the SA boards to the new motherboard, they should be evaluated for damage. Damage to SA boards will look like burns, melted parts, etc. Damaged SA components should be replaced.

  1. After checking for damage, transfer the variable resistance board (if applicable) and SA boards to the new motherboard (it is easiest to move these boards after transferring the resistor arrays and jumpers). Be sure to align the boards’ pins with the slots on the motherboard before pushing the boards into place.

You may need to apply some force to get the SA boards into their slots. HOWEVER, make sure you are not bending the pins further as you push them in

Adding the SA parts to their slots on the motherboard can be quite tricky, especially if their pins were bent during the removal process. Some tips for this step:

  • Inspect boards and use tweezers to carefully straighten pins that have been bent out of place. Bending the pins back and forth too much can cause them to break off the board, so this should be kept to a minimum.

  • If pins break off an SA board, they can be soldered back into place, or the entire board can be swapped out.

  • Place the SA board over its slots and check for pin alignment. Try to wedge the bent pins into place first, before pressing the board into place.

  • Make sure ALL PINS enter their respective slots before pressing the SA board into place.

  • The SA boards can withstand some force when being pushed into the motherboard. Press the SA boards into their slots until the boards lay flush with the slots on the motherboard.

  1. Unscrew the 3D printed corners from the old motherboard and fasten them to the new motherboard. These parts act as spacers to prevent the backside of the motherboard from touching the eVOLVER platform.

Prepare New Motherboard and Plug in to eVOLVER

  1. Use electrical tape to cover all exposed elements on the back of the motherboard. There are exposed pins on both the top and bottom of the motherboard.

The new motherboard is now ready to be fastened to the vial platform!

  1. Align the motherboard correctly by lining up the ribbon cable ports with the openings in the platform.

  2. Fasten the motherboard to the platform using the screws and a Phillips screwdriver.

  3. Fasten the wiring from the power supplies to the motherboard. The new motherboard will have screws in place for where the wires should go, so those should be removed and then used to fasten the wires to the motherboard.

  4. Plug in the cables to the Raspberry Pi and display screen.

  5. Plug in the Smart Vial ribbon cables to the motherboard from the top of the eVOLVER.

Power Up eVOLVER

You are now ready to power up your eVOLVER!

The first time you turn on the eVOLVER after replacing the motherboard, we recommend opening the platform and keeping an eye out for a few things:

  • Be sure to turn on the 5V power supply first, wait 10 seconds, then turn on the 12V power supply.

  • If you notice smoke or the smell of something burning, immediately turn off both power supplies. If this occurs, inspect the motherboard and the SA boards for melting or burn spots.

  • The red light on the Controls Raspberry Pi should turn on steady, and the green light should blink on and off.

  • The red and blue lights on the SAMD21 mini breakout boards should turn on steady.

Fluidics box

Separating fluidic control from the motherboard

What's in the box

The fluidics box can be opened by removing the 8 phillips head screws on the sides. Inside the box is the fluidics board (with a SAMD21 and three PWM boards) with RS485 and 5V connections for the SAMD21, and a 12V power supply beneath the board. Should the need arise to update the arduino code on the SAMD21, you'll need to open the box to get to it.

The connections to the pumps are numbered according to their address, i.e. cable 1 connects to pumps 1-8, cable 2 connects to pumps 9-16, etc.

Troubleshooting and repair

Not many things can go wrong inside the box, but we have dealt with a situation where the 5V power connection was faulty and led to malfunction. This part can be replaced by opening the box and replacing the faulty connector.

Modifications

Adding another pump array

The existing pump pox can control up to 16 additional pumps (or any other 12V valve, actuator, etc) with no modifications. Typically this would mean using connections 5 and 6 on the back of the box, which correspond to indices 33-48.

Modifying fluidics code

Daisy-chaining multiple boxes

Two RS485 ports (the telephone jack-looking ports) are available on the back of the fluidics box so that multiple boxes can be linked together on the same RS485 "line". All SAMD21 microcontrollers are receiving the same serial data from the Raspberry Pi, and only responding to commands when the appropriate address for that SAMD21 is in the command, like "temp" or "stir". Additional fluidics boxes can have the same "pump" address with higher pump indices (i.e. pumps 49-96 for a second box), so long as you change the number of expected pump values on the conf.yml file. You will also need to modify the SAMD21 arduino code accordingly. You can also have a different address for the other fluidics box, by adding another parameter in the conf.yml and modifying the arduino code accordingly.

5 and 7 Port Nylon Tubing Caps Construction Protocol

Materials

  • 3D printed vial cap with ports for nylon tubing

      • Service = SLS; material = nylon PA-12

      • Get "vapor smoothed" for better sealing

  • Mixing tray (here a small weighboat)

  • Disposable applicator (here a wooden stir stick; pipette tip also works)

Design

  1. Choose the minimum number of ports necessary

    1. You will need to block up ports that are unused if you want to do emergency efflux

    2. Therefore, choose the cap with the minimum number of ports that you need

    3. For example, counting ports for PACE

      1. Lagoon: 1 vial-to-vial + 1 efflux + 2 inducers + 1 emergency efflux = 5 ports

      2. Cell reservoir: 1 media influx + 1 efflux + 1 vial-to-vial + 1 emergency efflux = 4 ports

  2. Efflux straw sets the volume of the culture

  3. Increase influx accuracy

    1. Important for low volume influx like inducers

    2. Angled influx tubing should touch the inside of the glass vial to create a stream of liquid rather than drops.

    3. It should also be well above the efflux line to avoid contamination.

  4. [Optional] Use different colors of tubing to denote different ports (see above)

Construction Protocol

0. Mark fluid lines on a glass eVOLVER vial (see below image)

  1. This will be used to set the efflux tube height, which sets the volume in the eVOLVER vial.

  2. Tape an eVOLVER vial

  3. Using a serological pipette, measure water into the vial in increments of 5 mL

1. Cut Nylon Tubing to Various Lengths Needed

Tip: To keep things tidy and make the process of constructing the cap easier, cut everything you need first and store in clearly labeled old micropipette tip boxes.

The nylon tubing will straighten in the autoclave.

  1. Cut the necessary components of the hard semi-clear white nylon tubing (1/8" OD). Refer to the table below for lengths.

The table below has the necessary components for the construction of one cap.

  1. Cut the necessary components of the flexible nylon tubing. Refer to the table below for lengths.

The table below has the necessary components for the construction of one cap.

2. Assemble Cap

When handling epoxy, use gloves to avoid getting it on skin as it can eventually lead to allergic reactions.

Steps

  1. You may need to drill out the ports in the 3D printed vial cap if powder is blocking them.

  2. Insert the hard semi-clear white nylon tubing (1/8" OD) into each corresponding port in the cap as per the image below.

  1. Screw the cap into the glass vial with measuring tape on the side and ensure that:

  1. Follow the epoxy directions to mix up a small amount of epoxy in a disposable dish. Use even pressure to get even amounts of resin and hardener. Use a toothpick or other similarly sized applicator to put the minimum amount of epoxy around the outside area of the cap where the ports and the hard nylon tubing connect, ensuring to spread the epoxy in between any gaps.

  2. Set assembled caps upright (with a vial rack or spare vials) so that epoxy doesn't drip into the sampling port as it cures.

  3. Set cap on its side to cure overnight.

  4. Next day, add the appropriate color flexible nylon tubing (3/32" ID) to each hard nylon tubing (1/8" OD) as per the table above.

    1. [Bubbler Only] Connect the flexible nylon tubing (3/32" ID) bubbler connector component onto the inside end of the gas bubbler hard tubing. Allow the tubing to reach halfway through the connector tubing.

    1. [Bubbler Only] Connect the constructed gas bubbler onto the other side of the connector tubing. The end of the gas bubbler hard tubing that is inserted in the cap and the gas bubbler should connect as per image below.

Tubing and connectors

Also known as plumbing

For reference: Inner diameter = ID, Outer diameter = OD. Quotation marks (") indicate inches, single apostrophe (') indicates feet. Most eVOLVER hardware is in US customary units (i.e. not metric) due to wider availability of parts.

Standard components

Tubing

Silicone is the tubing of choice for eVOLVER because of its flexibility, durability, cost, and resistance to beach and ethanol. It is also autoclavable, although 30 minutes of 10% bleach sterilization is sufficient to completely sterilize the lines.

Connectors

The barb side of the connector is rated for the ID of tubing it is mean to be used with, i.e. 1/16" barb for 1/16" ID tubing, 1/8" barb for 1/8" ID tubing, etc. Barbs are designed to get a tight seal around their widest diameter, with the max pressure and resistance to slippage depending on the softness of the tubing and style of barb (40 psi for standard eVOLVER connectors).

Luer connectors work by pressing a "male" plug into a "female" socket, both tapered at 6%. Because of the smooth surfaces and large contact area, this creates an effective seal without tools, held in place by friction. Syringes and medical equipment commonly make use of luer connections.

To hold luer connections in place more securely, luer-lok connectors use a screw-like "skirt" to prevent luer connectors from simply being pulled apart. eVOLVER tubing connections are luer-lok, allowing for easy but relatively secure connections between most components.

However, luer-lok connections have some common failure modes. Because the threads of the skirt are so coarse, it only takes a 1/4 turn to break the seal at the plug-socket interface, leading to a leak (if positive pressure) or air bubble source (if negative pressure). Loose luer connections easily become disconnected, leading to spills (the major source of electronics failure) and of course, failed experiments. One should always ensure luer connections are snug (hand tight), and tubing free from torsion that might unscrew the luer-lok.

Additionally, because the male connector comes in direct contact with fluid, it becomes your most likely contamination source. Be careful not to bump the tips of the male connectors against contaminated surfaces when setting up your experiment. Doing a final wash with 70% ethanol after bleach sterilizing can prevent some contamination from this route, depending on your media and organism.

Swapping and modifying

Any soft tubing (durometer 40-70A) works well with the barbed connectors. Vinyl (PVC) or tygon tubing might be a suitable alternative for decreased permeability. Opaque tubing may make sense for light-sensitive media or antibiotic feeds that have extended time exposed to light in the tubing due to low flow rates, at the cost of not being able to observe media in your line. Remember that 1/16" ID tubing contains about 0.75 mL per foot.

Universal Vial Cap Construction Guide (Luer Connectors Only)

Materials

  • 3D printed (SLS, nylon PA-12) vial cap

    • Get these "vapor smoothed" for better sealing

    • Get white nylon PA12 (the default black will leach dye into your media)

    • Other default settings are fine

    • Buy at least 4 x number of caps + extra

    • Nylon required to survive autoclaving (expansion differential between normally used polypropylene and nylon 3D printed vial causes epoxy to separate)

Construction Protocol

  1. [Optional] Mark fluid lines on a glass eVOLVER vial (see below image)

    1. This will be used to set the efflux tube height, which sets the volume in the eVOLVER vial.

    2. Tape an eVOLVER vial

    3. Using a serological pipette, measure water into the vial in increments of 5 mL

  2. Using a razor, trim nylon tubing so that it reaches the volume you have set

    1. Nylon tubing will straighten in the autoclave, so try and straighten it out as much as you can

    2. Cut to 53 mm for 20mL

    3. Otherwise, determine the correct length using graduated eVOLVER vial from step 1

      1. Cut the tubing to a longer length than you need

      2. Pushing it into the vial cap until you feel a little resistance (easy to accidentally go further, but there is a stopping point)

      3. Screw the cap on all the way

      4. Estimate where to trim

      5. Check in vial cap again

      6. Measure length when you have this correct - use this for the rest of your vials (or use cut length as a guide for cutting the rest)

    4. Cut all tubing for the caps you are making

  1. Use gloves when working with epoxy

  2. Put epoxy into mixing tray and mix

    1. You don't need much because epoxy will likely set before you finish all vials

  1. Apply epoxy to barb of luer connector

    1. Be generous, but avoid the opening in the barb

    2. If you do get epoxy in the opening, blow it out or pick it out with a paperclip

  1. Press the connector into a port in the top of the cap, and twist a few times to spread epoxy

  1. Repeat steps 4 and 5 for the other ports

    1. When epoxy starts to solidify, mix more (in a new tray)

  2. Wait for at least an hour for epoxy to set somewhat

  3. Epoxy one side of the outside of efflux tube (avoiding the hole)

  4. Press the tube into left port of cap (when sampling port is facing you) (see below)

    1. Only press until you feel a slight resistance

    2. Twist once or twice to spread epoxy

  1. Repeat steps 8 and 9 for all caps

  2. Allow epoxy to set 24 hours before using

Smart Sleeve

Description

The programmable Smart Sleeve is the foundational unit on which the eVOLVER is built (Fig. 2 and Supplementary Fig. 1). The Smart Sleeve is comprised of all the sensors and actuators required to control the culture conditions inside a 40 mL borosilicate glass vial. At the core is an aluminum sleeve, which surrounds the vial and is used to control temperature via two resistive heaters and a thermistor integrated within. Near the base of the vial sits a 3D printed part that houses and aligns the optical density LED and photodiode. Below that sits a fan motor equipped with magnets to rotate a stir bar within the vial. The Smart Sleeve represents one of the most easily customized features of the eVOLVER: by changing which sensors and actuators are used and their layout, the user may develop culture vessels that fit their experimental needs. For a detailed description of the sensors and actuators used to control stirring, temperature, and optical density in Smart Sleeves featured in this study, as well as strategies for modifying the Smart Sleeve to fit experimental needs, refer to Supplementary Note 4. Liquid handling is also controlled at the level of the individual culture vessel, yet these components are housed in a separate fluidic module, described in Supplementary Note 5.

The sensors and actuators on each sleeve are integrated in a small printed circuit board (PCB), termed the Vial Board (VB). We designed the VB such that we can easily solder electrical connections and efficiently manage/package wiring from the sensors. The VB is a very simple PCB, containing only a few resistors, and is straightforward to redesign and inexpensive to manufacture, if needed. The simplicity in the VB leads to robustness in the system. For example, any accidental overflow and spillage from the vials (e.g. from clogged fluid lines or user error) should minimally impact the rest of the system, as critical components are located at the Motherboard rather than the sleeve itself. Ribbon cables provide a modular way to connect the integrated Smart Sleeves to the Motherboard.

The VB is designed to rest atop a 3D printed piece, which houses optical density and temperature components (see Supplementary Note 4). The printed part can be fabricated with Nature Biotechnology: doi:10.1038/nbt.4151 5 any commercial or DIY 3D printer, readily available at almost any university or hacker space, and customized to the requirements of the user. For example, if a user wanted to change the mode of optical density detection between scattering and absorption, they could redesign the 3D printed part housing the LED-diode pair such that it would have the correct offset angle for the desired mode of measurement.

Vial

Vial Holder

Vial Sleeve

Vial Cap

Vial Board

Vial Board

Version D

Pin Map

Differences to Version C bolded

  1. Fan

  2. Unused; linked to fan for future fan tachometer

  3. Heating resistor

  4. Thermistor

  5. OD IR LED

  6. OD 135 photodiode

  7. OD 90 photodiode / Spare A

  8. Spare B

Version C

Pin Map

Differences to Version D bolded

  1. Fan

  2. Unused; linked to fan for future fan tachometer

  3. Heating resistor

  4. Thermistor

  5. OD IR LED

  6. OD 90 photodiode

  7. OD 135 photodiode / Spare A

  8. Spare B

Inside the pump head, the pump tubing can be removed and inspected. The tubing is 2x4mm Pharmed BPT, which has similar chemical compatibility as the silicone tubing for the rest of eVOLVER fluidics, and is rated to over 1000 hours of operating life. Learn more here:

Pharmed BPT can be purchased from Saint-Gobain suppliers. However, the tubing should be 2mm ID and 4mm OD, and there is not enough tolerance to allow for similar non-metric sizes (like 1/16"x1/8"). 2x4mm Pharmed tubing is difficult to find in the US, and we are working on finding a reputable supplier for it. In the meantime, these alternatives from McMaster-Carr have been tested to seal and pump properly: and

The is the large printed circuit board (PCB) in the vial platform that connects the Smart sleeves to the PWM boards, ADC boards, and SAMD21 mini breakout boards and these boards to the Raspberry Pi. In the event that the motherboard is damaged, it will need to be replaced. Some damage to the motherboard will be immediately obvious.

to GitHub hardware page for the motherboard

You may want to purchase an to help remove the PCBs from the motherboard without damaging them.

Not all pins are needed. You can check the hardware KiCad for whether the pin you snapped is necessary

Remove the yellow resistor arrays (see below). An or pliers may be helpful here. Transfer the resistor arrays to the new motherboard, making sure to insert them in the proper orientation.

Adding another pump array will of course require changes to custom_script.py, because pump indices 33-48 are not being sent commands during normal eVOLVER operation. The MESSAGE variable holds all information on how long to run each pump, and this is where you should implement your commands in custom_script. See the section of the custom_script page for more information.

the .stl file from GitHub

Order from

(1/8" OD)

flexible silicone rubber tubing (3/32" ID (inner diameter))

flexible silicone rubber tubing (3/32" ID (inner diameter))

Five 3/32" female barb to luer

[Optional - for color coding ports] flexible silicone rubber tubing (3/32" ID (inner diameter))

[Optional - for color coding ports] flexible silicone rubber tubing (3/32" ID (inner diameter))

[Optional] 3D printed (SLS, nylon PA-12, vapor smoothed) for in-vial aeration

For simplicity, you may want to just use this type of cap and plug the extra port with a luer .

Mark the volume at each increment on the tape at the bottom of the

Component
Length
Component
Length
Flexible Tubing Color

The standard eVOLVER package includes 1/16" ID (1/8" OD) soft silicone tubing for all fluid handling operations. For exact specifications, see the , "Fluidics" tab.

Silicone tubing is highly permeable to gasses, including water vapor. If you leave media in the tubing for >1 week, it will likely dry out and cause an obstruction (see ).

The standard eVOLVER package includes 1/16" barb to luer-lok connectors for all pump-to-vial connections. For exact specifications, see the , "Fluidics" tab.

For more information on luer connections (and credit for the above images), see here:

the .stl file from GitHub

Order from

4X - 3/32" female white nylon

(1/8" OD)

[Required for overflow protection]

[Required for overflow protection]

Mark the volume at each increment on the tape at the bottom of the

https://www.evolver.bio/t/replacing-photodiodes-led-on-smart-sleeve/155
https://www.biopharm.saint-gobain.com/components/fluid-transfer/pharmed-bpt-tubing
https://www.mcmaster.com/5102K11/
https://www.mcmaster.com/7027N11/
12V Power Supply Connection to Motherboard Melted
motherboard
Link
Integrated Circuit (IC) puller
files
IC puller

1 x Regular Efflux (culture volume of 25 mL)

3 inches

1 x Emergency Efflux

1.5 inches

2 x Influx

2.5 inches

1 x Gas Bubbler

2 inches

1 x Regular Efflux

1.5 inches

Blue

1 x Emergency Efflux

1.5 inches

Black

2 x Influx

1.5 inches

Clear

1 x Gas Bubbler

1.5 inches

Red

1 x Bubbler Connector

5/8 inches

Clear

Sensor/Actuator Board Slots

Download
Hubs
Plasticweld epoxy
Semi-clear white hard nylon tubing
White
Blue
connectors
Red
Black
bubbler
cap
meniscus
https://www.apsf.org/article/managing-luer-connections/
Download
Hubs
barb to luer lock
Semi-clear white hard nylon tubing
Plasticweld epoxy
Rubber stopper
O ring
meniscus
part sourcing google sheet
part sourcing google sheet
obstruction troubleshooting

Chassis

Vial Caps

Overview

An essential component that screws on top of the glass eVOLVER vial. Connects to eVOLVER fluidics via luer lock.

Versions

4 Port Universal [Needle or Luer Lock]

Overview

Option 1: [Recommended] Can be easily constructed with luer locks

Option 2: [Not Recommended] Can be used with needles like old caps, however this opens you up to preventable overflows as the old caps did

Advantages

  1. Reusable connectors (no need to use needles) - connect tubing directly to luer lock on cap

  2. Easy assembly with few additional parts

  3. Ports work with old needle setup if needed

Assembly

5 and 7 Port [Nylon Tube Only]

Overview

Use a honeycomb pattern for the ports to cram more ports onto the cap.

Advantages

  1. Reusable connectors (no need to use needles) - connect tubing directly to luer lock on cap

  2. Up to 5 or 7 ports per cap (plus sampling port) - other caps only have 4 ports

  3. Allows color coding of cap tubing to aid correct setup (see image above)

Assembly

[Old] Needle-Only

Overview

This is the cap that is currently given by default from FynchBio as of 25/01/15.

Requires needles, so cannot have a full seal on the vial. Therefore, should be used with caution because of overflow risk.

Assembly

Must be assembled with needles at correct heights before each run.

Arduino

Resources related to using and programming arduinos for eVOLVER.

The eVOLVER uses SAMD21 mini breakout boards that can be programmed using the Arduino IDE. These microcontroller breakout boards allow the eVOLVER to read analog signals from sensors (OD, temperature, etc.) and actuate pumps, stir, LEDs, and any other culture component that is needed.

Optical Density

Description

Based on previous work26, optical density measurements in a bioreactor can be measured with a simple 900 nm infrared (IR) LED and photodiode pair. There are two practical benefits of using 900 nm scattered light instead of the classic OD600. First, at 900 nm, turbidity/optical density measurements are less dependent on the absorbance spectrum of the media, meaning calibration is required less frequently before each experiment. Second, wavelengths in the visible range are preserved for light induction and colorimetric assays. To maximize scattering, the LED-diode pair is offset at a 135° angle. The 3D printed part is designed to house the LEDNature Biotechnology: doi:10.1038/nbt.4151 16 diode pair slightly above the height of the stir bar, at the correct angular offset. The part can be easily customized and printed to the users required specifications with any 3D printer. In the eVOLVER configuration used in this study, the IR LED and photodiode pair (4 leads) are each connected to the CMB via screw terminals in SA slots 4 and 5, respectively (Supplementary Fig. 7). In SA slot 4, a 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 5V signal to power the IR LED. A resistor is placed on the CMB to limit current and prevent the LED from burning out. SA slot 5 contains the 16-channel ADC board, responsible for analog filtering and demultiplexing the signal from the photodiodes. The ADC board reads the sensor by measuring the voltage difference across a 1M Ohm resistor, located on the Motherboard. Both slots are managed by Arduino 3 in the system developed in this manuscript. Briefly, the Arduino code interprets serial inputs from the Raspberry Pi, flashes ON the IR LEDs to measure turbidity, and responds with the current measurements. In the present system, optical density can be measured every 30 seconds, limited by the time taken for the Arduino to average diode readings (to minimize noise). For convenience, density readings from the 900 nm LED-diode pair were calibrated to OD600 measurements from a spectrophotometer, and the calibration curve fit with a sigmoidal function (Supplementary Fig. 8). Spectrophotometer readings were performed on a Spectramax M5 using 300 uL of media in a 96-well flat bottom plate; users may substitute density calibration data from measurements used in their labs. The optical density measurements in all experiments are calculated based on the calibration curve fit for each Smart Sleeve (Supplementary Fig. 8). For our experiments, calibration was performed using a dilution series of yeast cells suspended in distilled water, but in theory any cell type and/or solution of interest (such as evaporated milk) could be used. A custom MATLAB script was developed to facilitate the density calibration process, particularly important for bringing new eVOLVER units on line. Following calibration, the system was used to compare growth of S. cerevisiae (FL100) cells in eVOLVER vials to that in 250 mL flasks with 50 mL of media shaken at 300 rpm (Supplementary Fig. 8). Finally, to quantify the variance in growth across eVOLVER vials, 96 cultures across six 16-vial eVOLVER units were grown in parallel and aligned (Supplementary Fig. 8). These results demonstrate that eVOLVER cultures are repeatable, and exhibit comparable growth rates to cultures in shaken flasks. As previously mentioned, varying temperature induces a shift in the optical density readings (Supplementary Fig. 6). In measurements performed on yeast cells, we observed the largest shift near the center of the optical density calibration curve, while at low or high OD, the shift due to temperature was minimized. This information was used to select a density range for experiments in which temperature was controlled dynamically (see Fig. 4). As cells may shift in size in response to heating, we also quantified temperature-induced offset in optical density readings using evaporated milk.

Temperature

Description

In contrast to current approaches in which all culture vessels are housed in a single incubator7,26, we developed a module for individually controlling the temperature of each Smart Sleeve in the eVOLVER. This not only allows the cultures to be maintained at distinct temperatures, but also reduces thermal mass, permitting dynamic temperature profiles. For the configuration described in this study, the temperature module utilizes SA slots 2 and 3 on the Motherboard (Supplementary Fig. 5). Typically, there are three main components to temperature control: (1) a thermometer, (2) a heater, and (3) a feedback controller. In our setup, the thermometer and the heater are integrated in the Smart Sleeve while the feedback controller is located on the Motherboard. Specifically, the temperature is measured by a 500 μm thick temperature-sensitive resistor, or thermistor (Semitec, 103JT-025). The sensor is integrated into the sleeve between the 3D printed part and the aluminum tube, and the thermistor is soldered onto the component mount board (CMB) after assembly. The aluminum tube enables even heat distribution/dissipation and shields the culture from ambient light (important for other measurements/parameters). Two heating resistors (20 Ohm 15 W, thick film) are screwed onto the aluminum tube for better contact and connected to the CMB via soldering. In our setup, the four leads, 2 from heating resistors and 2 from thermistor, are connected via a ribbon cable to the Motherboard and routed to SA slots 2 and 3, respectively. In slot 2, a 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 12V signal to actuate the heating resistors. Slot 3 contains a 16-channel ADC board, which reads the voltage difference across a 10 kilo Ohm resistor, and is responsible for analog filtering and demultiplexing the signal from the thermistor. These slots are connected to and are programmatically controlled by Arduino. Briefly, the Arduino code interprets serial inputs from the Raspberry Pi, updates the set point on the PID controller, and responds with the current measured temperature. Temperature settings can be updated as frequently as every 30 seconds. To determine how much to turn the resistive heaters on, the Arduino is programmed with a simple PID control algorithm. The PID controller can be easily tuned via software to obtain the desired overshoot and time delays. The Arduino then controls a PWM board (on SA slot 3) to interface with the resistive heaters and get the desired heat output. Calibration of the temperature measurement in the sleeve was performed by comparing the temperature of water measured in the vial using a thermocouple to the values returned by the thermistor (Supplementary Fig. 6). The dynamics of heating were determined by tracking temperature during a programmed step function, again comparing thermocouple and thermistor readings; the thermistor measures the temperature of the sleeve, while the thermocouple measured the actual water temperature. At room temperature (23°C for this experiment), a single culture (20 mL) can reach a temperature of 42°C in roughly half an hour with the current hardware setup (Supplementary Fig. 6). During an experiment, the transient offset between the recorded temperature and actual temperature may vary due to ambient temperature and volume of liquid. At steady state, the temperature can be maintained to +/- 0.1°C, with properly tuned PID constants. Max temperature and rate of temperature ramp can be changed with different power sources (e.g. 24V power source could reach temperatures >55°C). It should also be noted that at different temperatures, the optical density readings are affected accordingly. This effect was measured in both yeast cultures and evaporated milk (Supplementary Fig. 6). See the next supplementary note for more detail.

Sterilizing Lines

Protocol

  1. In three large beakers, prepare 500 mL of 10% bleach, 200 mL of 10% bleach and 300 mL 70% ethanol.

  2. Using the switches on the eVOLVER device, turn on the 5 V power supply on the eVOLVER, wait for >3 seconds, then turn on the 12 V power supply.

  3. Submerge the media input lines (clear, media in) in the first bleach beaker, and the media efflux lines (blue) in the second bleach beaker. Place the downstream end of the media input lines (clear, to vial) in the second beaker with the efflux lines. Since the lines may be different lengths, a hairclip is useful to keep the ends of each lines close to eachother in order to ensure all remain submerged.

  4. Add 1 L bleach into large empty waste carboy, which will sterilize waste generated during experiment. Consult with a safety coordinator to ensure proper disposal of waste.

  5. Using the switches on the eVOLVER device, turn on the 5 V power supply on the eVOLVER, wait for 5 seconds, then turn on the 12 V power supply.

  6. If running several vials from the same media bottle, connect multiple media input lines with tubing splitters (drawer under eVOLVER computer) before sterilizing. Custom sizes can be made if necessary.

  7. Submerge the media input lines in the first bleach beaker, and the media efflux lines in the second bleach beaker.

  8. Place the downstream end of the media input lines in the second beaker with the efflux lines. Place waste lines into waste carboy.

  9. Open the eVOLVER electron app, select the appropriate eVOLVER from the dropdown menu.

  10. Navigate to setup, then fluidics. Highlight the appropriate vials, select the influx and the efflux pumps, and run pumps for 20 seconds to fill lines with 10% bleach.

  11. While running, ensure by visual inspection that all lines have been filled and that pumps are operating normally. Allow bleach to sit in the lines for at least 30 minutes to sterilize. This is a good pause point, can wait up to overnight. This is a good time to make code edits if necessary.

  12. Run pumps again using the touchscreen app until lines are no longer submerged, pushing air through the lines to get as much of the bleach out as possible.

  13. Place media input lines in the ethanol beaker (or pour ethanol into the first beaker) and repeat as in above, filling the lines with ethanol and flushing with air. Note: ethanol sterilizes quickly, so no need to wait 30 mins here.

  14. It is also recommended to dip the downstream ends of the influx lines in ethanol to rinse off residual bleach, then drape on side of beaker rather than resubmerging in the remaining bleach. Residual bleach can affect culture viability, though washing with ethanol and media should be sufficient.

  15. Attach media input lines to the media bottles with the Luer connectors and run the pumps until the media fully runs through the lines (10-20 seconds, depending on tubing), flushing out any residual ethanol.

Optical Density Calibration

The goal of this tutorial is to learn how to efficiently generate OD calibration curves for each Smart Sleeve in a 16 vial eVOLVER setup.

About

Why are OD measurements important?

The turbidity (cloudiness) of the culture typically correlates to how many cells are in a culture. By using a simple LED and photodiode pair, we can quantify how many cells are in the population, track how the culture is growing over time, and observe the culture changing over the course of the experiment.

Why is calibration necessary?

Readings sent from the Raspberry Pi to the computer/server are the raw voltage values measured by the Arduino in the Motherboard. In other words, to make sense of what these readings are, we need a calibration file that converts this to a useable optical density measurement.

Is calibration different between different organisms?

Yes. Cells with different size and shapes scatter differently and would result in unique calibration curves. eVOLVER is set up such that one could easily use the appropriate calibration files for each experiment/organism.

Is calibration different between different temperatures?

Yes. Temperature effects the photodiode sensors that we use to measure OD. If you plan to use different temperatures we suggest doing a new calibration for each one.

Prepare the day before:

  • 16 assembled glass vials:

    • Glass vials (Chemglass, CG-4902-08)

    • Vial screw caps

    • Octagon magnetic stir bars (Fisher, 14-513-57)

  • 300 mL of saturated culture of desired organism

    • If calibrating to ODs above 1.5, you may need more cells

  • 300 mL of 1X PBS (Phosphage Buffered Saline)

Check your Smart Sleeves with a vial containing water vs a culture of an arbitrary OD to make sure that you see some change in the Setup page of the GUI. Otherwise you will need to change the photodiode or OD LED.

OD Standard Preparation

Wash cells and resuspend in 1X PBS to avoid cell growth

  1. Spin down saturated cultures in 50mL or 250mL centrifuge tubes.

    1. 2500 rcf for 5 minutes should be fine for bacteria or yeast

  2. Pour off media and resuspend cells in 50mL 1X PBS

  3. Spin down cells in a 50mL conical tube

  4. Resuspend well in 50mL 1X PBS

Find OD of Concentrated Cell Stock and Make Standards

The cell stock will likely be much too dense to measure undiluted. For example, OD600 absorbance values on our plate reader above about 0.5 are inaccurate and we can expect this stock to be above an OD of 4.

  1. Measure the OD of cell stock using a dilution series

    1. Dilute 200uL of cells into 1800uL of 1X PBS (1:10)

    2. Dilute the 1mL of the 1:10 dilution into 1mL 1X PBS (1:20)

    3. Make 1:40 and 1:80 dilutions

  2. Measure OD of dilutions and a 1X PBS blank

    1. It is recommended to use 300uL of dilution if using plate reader to provide a similar read length to the cuvette

    2. Use absorbance at 600nm for most bacteria and yeast

  3. If the measured OD of the lowest dilution is above 0.5, make further dilutions to bring it below 0.5

  1. Calculate OD of concentrated cell stock

    1. Input ODs for dilution and 1X PBS blank into the spreadsheet

    2. Enter calculated OD into 'OD of Cell Stock'

      1. Use a dilution that is roughly between 0.1 and 0.5

  2. Calculate and make OD standards

    1. Optional: alter the series of standards to include more ODs in the range you care about

    2. Get 16 vials and add a stir bar to each

    3. Add calculated amount of 1X PBS and cell stock to each vial

    4. Mix by swirling or putting in eVOLVER with stirring on

Measure OD of Standards

  1. Make dilutions for standards above 0.5 OD

    1. Use a 96-well plate to ease dilutions and transfer to plate reader

  2. Measure ODs and calculate original OD from dilution OD

    1. An example calculation, including the 1X PBS blank is included at the bottom of the spreadsheet

  3. Adjust standards if necessary

  4. Cap vials containing standards and place in eVOLVER to equilibrate to temperature while stirring

    1. Keep track of which vial is which OD

    2. This may take >30 minutes

    3. Each vial is labelled with its latest temperature in the SETUP page of the GUI

Don't immediately throw out your standards after finishing calibration! You could need to make another calibration should one or more vials be off.

Calibrate OD using the GUI

  1. On the eVOLVER app home screen, make sure you are connected to your eVOLVER (green symbol next to active eVOLVER), then choose CALIBRATIONS and then O.D.

  1. Give the calibration a name (a standard suggestion is YYMMDD_YourInitials_od) and click enter.

  2. Click on the white box by the S0. The display should now have an overlay with Sample 0 on top of a box with a keypad. Input the OD values of each sample.

    1. You can input the OD values using the keyboard, then hit enter to increase the vial selected.

  3. Click Start OD Calibration ▷.

  1. Press ▷. After the eVOLVER has logged the vials in one configuration, click the forward arrow. Move vials into their new positions, as seen on the right side of the GUI.

  2. Click VIEW COLLECTED DATA to monitor the smoothness of the curves as you calibrate. If a particular value is a big outlier, consider rewinding to that vial position and doing it again. Don't worry your other work will be saved!

  3. Continue until all sixteen sets of values have been saved for each standard in each vial.

  4. Click the pen button to submit and save the calibration. Then click Exit after the calibration is logged.

  5. To validate the calibration was logged on the eVOLVER, from the touch screen home tap Setup and then tap the box next to OD: and a list of calibrations should come up. Select your recent one from the list. If not present, it was not logged to the eVOLVER.

Known Issues

Vials

OD is dependent on depth of LED in vial

  • Characterized on this forum post

  • Needs to be pushed to users

OD is dependent on vial position

  • Notched vial caps help align

  • Brandon has designed vial aligners

  • It is generally an unwritten rule to not move vials after experiment start, but this is sometimes impossible

Stirring affects OD

  • Tuning stirring too high can cause stir bars to chitter (stop turning and move around)

  • Because the stirred media forms a spout in the middle

  • Therefore inconsistent stirring can means more noise in OD reading

  • Also, less stirring = less optimal growth

Fluidics

Pump heads stop working

  • Causes overflows, poor reliability

  • Fixed by new pumps

  • Almost all evolvers have old pumps

eVOLVER Base

New eVOLVER base susceptible to fluid damage

  • Vial overflows or spills get into chassis via ribbon cable ports, then short motherboard

  • Drainage system drips down the back of the eV and into chassis

  • Overflows finally leak onto bench and floor requiring serious cleanup

Old eVOLVER base susceptible to fluid damage

  • Fluids from vials drip onto pumps, destroying them

Loading Vials and Setting Initial Conditions

  1. For the next few steps, it is recommended to spray your gloves with 70% ethanol.

  2. Partially insert autoclaved vials into the eVOLVER Smart Sleeves such that efflux straw is entirely visible, if possible.

  3. Start by attaching input lines (clear) to the short influx straw, avoid touching the tips of the lines to avoid contaminating the inside.

  4. Next, attach efflux lines (blue) to the long efflux straw. It is critical to check for loose connections or incorrectly routed lines. Failure to do so will cause overflows and potentially damage the Smart Sleeve.

  5. In the setup menu in the electron app, run all pumps in 10 second intervals to fill the vials with media. Run enough media so that the efflux pumps start removing media through the efflux straws.

  6. Visually inspect the culture volumes at this point. If the efflux straws do not appear to be functioning efficiently (media levels rise above the efflux straw), inspect the fluidic line connections and the peristaltic pump. Correct or replace parts as needed to prevent overflows.

  7. Push vials down until fully encased by the Smart Sleeve. If aluminum sleeves are cut to different lengths, vials may appear to be covered in different amounts.

  8. Be sure that the desired calibration files have been selected from the dropdown menu in the setup panel. These files are stored on the device itself, and will default to the most recently used calibration. Temperature and OD calibrations must be repeated if vials are replaced, and OD calibrations are recommended if switching to a new organism (i.e. bacteria vs yeast). Otherwise, calibrations can be used over and over again.

  9. Set the initial conditions for experimental parameters using the eVOLVER electron app. This will be overwritten once the experiment code starts running, but can be helpful for preheating media or trying out different stir rates.

  10. If stir bars are jumping around (audibly) then the stir rate may be too high for the volume of culture you are using. Commonly used values are between 8 and 12.

Relevant Forum Posts

Preparing Vials

Protocol

Make 1-2 extra vials, in case you find an issue after autoclaving. If using septa, it may be best to make 4-5 extra as many septa will be pulled inside of vial by autoclave pressures.

  1. Rinse vial lids by running DI water from sink through influx and efflux straws (2-3 seconds). Alternatively fill a large beaker with DI water, dump vial lids in and stir.

  2. Shake vials caps to remove excess water and set aside on a clean surface

  3. Get out enough dishwashed vials (stored upside down), place in white rack

  4. Place a small stirbar in each vial

  5. If using septa, place a septa on each

  6. Screw on rinsed vial lids

  7. If vials will be used within 24 hours of prepping, then place white rack in small autoclave bin, cover entire bin with foil (reuse foil if possible), and autoclave on vacuum cycle for 10 minutes

  8. Keep foil on bin until right before loading vials into eVOLVER to maintain sterility

  9. If vials are being prepped in advance, screw a white or black mini-cap onto every straw, then autoclave in bin without foil

  10. Keep mini-caps on until right before loading vials into eVOLVER to maintain sterility

Light Blocker / Splash Guard

Functions

  • Keeps liquid spills away from electronics

  • Protects OD readings from environmental light interference

    • If you have calibrated without the light blocker / splash guard you will likely need to recalibrate

Construction

Materials

  • 1/8" acrylic sheet

    • Laser cut or get laser cut by a vendor

  • Acrylic solvent cement (Weld-On 4)

Protocol

  1. Remove backing, if any, from acrylic sheets

  2. Hold pieces in place using tape or clamping

  3. Follow solvent cement directions for assembly

Overview of Software Architecture

High-level description of software architecture

Arduino (SAMD21)

All code is in C/C++.

Raspberry Pi

The server is written in python.

Lab Computer

This is where the logic for experiments happens. Users can program culture routines in python (DPU) that are carried out as commands sent to the RPi via websockets typically over a local network (router).

Additionally, users can use the electron GUI interface to send immediate one-off commands and see the current data being collected on the eVOLVER. The GUI is also used to carry out calibrations of connected components, mapping the currents and voltages that the sensors generate to real-world representation of what they are measuring like OD or temperature.

Lastly, the GUI is also capable of customizing and managing eVOLVER culture routine experiments, and can be used to view the data from current and past experiments.

Raspberry Pi

Resources for setting up and interacting with the Raspberry Pi for use in the eVOLVER platform.

eVOLVER uses Raspberry Pi for interfacing with the Arduino microcontrollers and for processing user and experimental commands. Hardware and software configurations and calibrations are saved on the RPi.

We provide a pre-configured RPi image that is configured to run all eVOLVER software.

Setting up a new RPi

DPU

Description of how the DPU (Data Processing Unit) code functions.

General Information

The DPU is where actual experiment logic and data collection occurs. DPU code is typically ran on a lab computer or laptop connected to the the same router as the eVOLVER. Setpoints for experimental parameters, deciding when to actuate fluidics, and deciding how to vary experimental parameters as a function of time or based on feedback from experimental data is programmed in the DPU.

File Structure

Within the DPU are 3 main components, the experimental code for running experiments, the calibration code for making fits relating sensor measurements to what they physically are measuring, and the graphing code for the deprecated experiment viewing web app.

Experiment

There are two main files in the experiment DPU code, eVOLVER.py, which is the file that is run to execute an experiment, and custom_script.py which is where experimental logic goes.

eVOLVER.py

This file handles all of the initialization (creating data directories and initializing files), communications with the server, and lower level details of sending commands and receiving data. Additionally, it handles data transformations based on the calibrations whenever data is received. It then makes a call to custom_script.py to carry out the user-desired experiment routine based on the received data.

custom_script.py

This file is where the experimental culture routine is located. At the top of the file is commented code directing the user to modify constant variables to configure the experiment (experiment name, eVOLVER to run on, etc.) Then there are two default experiment functions for running either a turbidostat or a chemostat. It is also possible to write your own custom function to run by changing the OPERATION_MODE variable to your custom function name.

Graphing

python3 manage.py runserver 0.0.0.0:8080

You should then be able to open a web browser and navigate to localhost:8080 to see the application. The app should also be accessible via the internet if the computer is connected to the internet by navigating to <ip_of_computer>:8080.

The GUI now allows viewing of the data in real-time - you should not need to use this unless.

Turbidostat

Turbidostats are automated culturing systems used to maintain a constant cell density in microbial cultures.

Algorithm

  1. OD is constantly monitored

  2. When OD goes above the an upper OD threshold

  3. A dilution is calculated to bring OD to the lower threshold

    1. Dilutions are capped at 20 seconds to avoid vial overflow

  4. Both influx and efflux pumps are run simultaneously for the calculated length

  5. Efflux pumps are run extra to make sure volume stays constant

    1. The efflux straw sets volume

Turbidostat Dilution

Pumps

  • Influx and efflux are both run at the same time

  • Like chemostat, vial volume is set by efflux straw height

    • Efflux is run extra time to make sure that enough volume is removed

  • Pumps run at roughly 0.75mL/second

  • Pump calibration is important for turbidostat otherwise dilutions will not hit the lower OD threshold accurately

Dilution Calculation Example

Example Dilution

time_in = -(np.log(lower_thresh[x]/average_OD) *VOLUME)/flow_rate[x]

However, the mox dilution is 20 seconds to avoid overflow.

Growth Rate

Calculation

When there is a turbidostat dilution, it fits a line to the log of the OD data since the last growth curve (ie last turbidostat dilution) time. The slope of that line is reported as the growth rate in 1/hr.

Doubling Time

Convert growth rate to doubling time (in hours) via ln(2)/growthrate.

More Info

[ enabled] - prevent vial overflows via air tight seal to vial

GitHub

[ enabled] - prevent vial overflows via air tight seal to vial

GitHub

GitHub

If running several vials from the same media bottle, connect multiple media input lines with tubing splitters. Custom tubing splitters can be with Luer components.

You must complete before doing OD. Temperature effects OD and if there are big differences between vials, you will need to recalibrate all vials once you do a temperature calibration.

Always calibrate OD with the on to block ambient light. Recommendation: check the page for other things that can effect OD readings.

Before preparing standards, turn eVOLVER on and to the temperature you will use this calibration at (ie 37C for E coli and 30C for yeast) and set stirring to 8.

Use spreadsheet to make calculations. Make a copy on your own Google Drive or download for use in Excel.

Before doing an experiment it is recommended to further validate your calibration (after you have selected it on the SETUP page) by and logging a few values for each vial at a known OD.

Please report any issues you come across in the appropriate and consider making a post on the !

vials caps before starting this protocol

Find vector cutting files for this

All code is located in our :

(Raspberry Pi, Python)

(C/C++)

(Python)

(Node, JS, Electron, React)

Responsible for collecting data from sensors and actuating culture vial components. A single is typically responsible for a single culture parameter. All of the SAMD21 boards are connected in parallel to a . They listen for commands from the Raspberry Pi and communicate only when the RPi asks them specifically for information.

The Raspberry Pi orchestrates the control of all connected components, keeps track of calibration data for those components, and serves as the interface between the hardware and any lab computers or users wanting to interact with the eVOLVER. It can communicate via a network and also interface with low-level hardware. It communicates with the connected Arduino's via Serial RS-485, and with users via a lab computer with , typically over a local network (router).

The DPU code is all in python, and the GUI is written in Javascript using and .

- Use this to upload the disk image linked above to the RPi SD card. We have a guide for this process .

- Only use this if you are comfortable working on a terminal and the upload tool above isn't working for you.

If you need to setup a new RPi, download the image linked above and install the Raspberry Pi Imager tool on your personal laptop or computer. Plug in the SD card from the RPi and upload them image onto it (this process might take a while). Afterwards, you can plug the card back into the RPi and .

This page aims to explain how the server on the Data Processing Unit (DPU) functions. The repository can be found on .

The DPU uses websockets via to communicate with the eVOLVER server. It functions as a client, connecting to the server when the experiment is running, receiving data periodically, and sending commands to the server based on the experimental design. The EvolverNamespace class (which is the socketio client class) has functions which are called when the corresponding event occurs over the websockets connection. For example, the function on_broadcast is called when a broadcast event occurs from the server.

This is the deprecated based web-app for viewing experiment data in real-time. To run it, open a terminal and cd to /graphing/src/. Then execute the following:

Dilution is calculated in the code and is modeled as a mass balance equation

Calculated in eVOLVER.py in function and stored in your data folder during an experiment.

Growth Rate (1/hr)
Doubling Time (hr)

See and the for information.

Emergency efflux
link
Construction guide
Emergency efflux
link
Construction guide
link
General Arduino Resources
SAMD21 breakout board documentation, hookup guide
constructed
temperature calibrations
light blocker / splash guard
OD troubleshooting
set all vials
this
starting an experiment
Github repository
forum
Recommendations for Septas and Needles?
Using nylon caps to determine culture volumes
Making vial caps w/ laser cutter and pipette tip
Construct, print, or source
here
broadcast timing
turbidostat
average_OD = 1 # OD
lower_threshold = 0.5 # OD
VOLUME = 25 # mL
flow_rate = 0.75 # mL/second
time_in = -(np.log(0.5/1)*25)/0.75 = 23.1 # seconds

0.2

3.47

0.5

1.39

1.0

0.69

1.5

0.46

2.0

0.35

here
Github Repositories
eVOLVER Code
Arduino/Microcontroller Code
Data Processing Unit
eVOLVER GUI
SAMD21 mini-breakout board
Serial RS-485 bus
websockets
Electron
React
RPi image for eVOLVER
General RPi information
Raspberry Pi Imager
here
Guide for uploading a disk image to the RPi SD card via command line
update the server code
Github
socketio
Django
here
this
custom_script
GUI start guide

FAQs

FAQs

Q: Can the eVOLVER do very long-term growth experiments?

Growth Curve

Process and considerations for running a growth curve.

Why is running the growth curve algorithm a good first experiment?

What parts of the setup does the algorithm test?

The growth curve algorithm tests the following before running a more intensive experiment:

  • Continuous communication from the eVOLVER to the DPU (lab computer)

  • Power settings appropriately set on the lab computer (e.g. sleep settings)

  • OD calibration during an actively growing culture

  • Stirring stability

  • Detection of any noisy from ambient light

  • Temperature stability

What the growth curve experiment does NOT test:

  • Pump actuation and calibrations

  • Media line setup and sterility

Code Setup and Introduction

  1. eVOLVER.py generally contains most of the infrastructural code to communicate with eVOLVER and interpret raw data coming from the system. Basic users should not need to modify this file.

  2. custom_script.py includes several basic functions (growth curve, chemostat, and turbidostat) but is where the user should customize/ write their own scripts.

Importing libraries

For those familiar with coding and Python, the first few lines in the script is for importing libraries and logging files.

#!/usr/bin/env python3

import numpy as np
import logging
import os.path
import time

# logger setup
logger = logging.getLogger(__name__)

Initial settings

The next part of the code goes through inital settings one would want the eVOLVER to start at. These are sent at the start of the experiment when the script is initiated. Please refer to our API for examples on how to modulate the settings mid experiment.

There are initial three parameters in this eVOLVER script that defined: temperature, stir, and what mode this script will run.

##### USER DEFINED GENERAL SETTINGS #####

# If using the GUI for data visualization, do not change EXP_NAME!
# only change if you wish to have multiple data folders within a single
# directory for a set of scripts
EXP_NAME = 'data'

# Port for the eVOLVER connection. You should not need to change this unless you have multiple applications on a single RPi.
EVOLVER_PORT = 8081

##### Identify pump calibration files, define initial values for temperature, stirring, volume, power settings

TEMP_INITIAL = [30] * 16 #degrees C, makes 16-value list
#Alternatively enter 16-value list to set different values
#TEMP_INITIAL = [30,30,30,30,32,32,32,32,34,34,34,34,36,36,36,36]

STIR_INITIAL = [8] * 16 #try 8,10,12 etc; makes 16-value list
#Alternatively enter 16-value list to set different values
#STIR_INITIAL = [7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10]

VOLUME =  25 #mL, determined by vial cap straw length
OPERATION_MODE = 'growth_curve' #use to choose between 'turbidostat' and 'chemostat' functions
# if using a different mode, name your function as the OPERATION_MODE variable

##### END OF USER DEFINED GENERAL SETTINGS #####

Each position in the array corresponds to the vial it is updating (e.g. first position is typically called via an index of 0 in Python and thus is updating vial 0). For example, if one would want to set the temperature for Vials 0 - 3 to 37C but the rest to 30C, the array would look like the following:

TEMP_INITIAL = [37,37,37,37,30,30,30,30,30,30,30,30,30,30,30,30]

If one wanted to run a turbidostat script instead of the growth curve script, one would replace the OPERATION_MODE variable:

OPERATION_MODE = 'turbidostat'

If you wrote a custom modality named "new_super_cool_script", you would define it as a function and call it in a similar way. For example:

def new_super_cool_script():
    print('hello world')

You would define it as the following:

OPERATION_MODE = 'new_super_cool_script'

Making sure eVOLVER.py is run as main script

Let's skip the turbidostat and chemostat scripts for now (for another lesson) and jump straight till the end of the script. The following is just to indicate that the user should not be running this script from the command line

if __name__ == '__main__':
    print('Please run eVOLVER.py instead')
    logger.info('Please run eVOLVER.py instead')
    

That's all the code you need to run the growth curve!

eVOLVER Setup

For this experiment, we will need:

  • Autoclaved vials (with stir bar and caps)

  • Sterile growth media

Protocol:

  1. Fill autoclaved vials with 30 mL of sterile media and place in eVOLVER Smart Sleeves.

  2. Set the desired temperature for the eVOLVER (using the GUI) to preheat the vials

  3. Wait for ~30 minutes

  4. Start experiment using the Command Line Start Guide or GUI Start Guide

  5. Spike in cells (1 mL of saturated culture) and watch the OD spike on the traces.

  6. Let the cells grow until saturated.

FAQ

  • OD traces are noisy in bursts of ~10 - 12 hours:

    • This is most likely noise from light during the working hours of the day. Try placing a box over the system to block out ambient light. If works better, than try making a shield for the eVOLVER

  • OD readings are really noisy/ don't make much sense:

    • Verify that the stir vortex is not interferring with the OD sensors. This might happen if low volume is used (~20 mL) or stir settings are too high. A good way to debug this is to turn off stirring manually (via 12 V switch) and see if the measurement is better. NOTE: Toggling 12V switch will turn off STIR and TEMP.

    • Switch out the LED and or photodiode

  • All measurements stop after a few hours:

    • Check computer power saving settings. Make sure the system does not go to sleep.

Emergency Efflux

Overview

Purpose

Long have we been plagued by vial overflows. Certainly, many were our fault when we pumped too much in during setup or made unscrupulous changes to code. However, not always! And the cost was always too high for the magnitude of the mistake. Testing vials, rebuilding, and recalibration took weeks of our time.

No longer! We can seal our vials, so that even if we make a mistake* and pump too much, it will flow out through an emergency tube into a secondary receptacle.

*Mistakes that cause overflows are the most common and most catastrophic

How It Works

  1. Vials are sealed using O-ring, a plug for the sampling port, and caps with no air leaks

  2. One fluidic port in the cap has a line connected that goes to a secondary container

  3. If you pump too much fluid in or knock the vial over:

    1. Fluid follows the path of least resistance out into the secondary container

Parts

  1. Emergency efflux tubing (semi-clear is ideal)

  2. Sterile beaker or other container to drape efflux tubes into

  3. Glass vial

Guide

Construct emergency efflux tubing

  1. Place a capped vial in your eVOLVER as far away from your beaker as possible

  2. Cut tubing to a length that comfortably drapes into your beaker from your vial

  3. Use this tubing as a metric to cut tubing for the rest of your smart sleeves

  4. Make a few extra just in case

  5. Insert male luer locks into your tubing

Additions to Experiment Setup

  1. Vial construction

    1. Put O-ring in the slot in underside of cap

    2. Put rubber stopper in sampling port

    3. Cap any unused ports

  2. Autoclave emergency efflux tubing in an aluminum foil pouch

  3. While setting up fluid lines during experimental setup:

    1. Attach emergency efflux lines onto unused port

  4. Drape ends of emergency efflux lines into sterile beaker

    1. You can use the beaker you used in sterilization of fluid lines, but make sure it no longer has bleach or any other fluid in it

    2. Tape lines in place, far from the bottom of the beaker

Emergency efflux lines must be far away from the bottom of the beaker. Efflux pumping will suck air and any liquid in from the emergency efflux port.

A: Yes. Experiments with over a month of growth have been done. An example of a 250h experiment was reported in Supplemental Figure 14 of the 2018 NBT .

When setting up eVOLVER for the first time, we recommend performing a simple growth curve as a starting experiment. The growth curve algorithm functions similar to the turbidostat algorithm, except the feedback between any experimental parameters are turned OFF (or ). That way, you won't have to worry about any leaks or overflow issues from pumps misbehaving while testing the system.

There are just that you need to run eVOLVER (eVOLVER.py and custom_script.py).

For those of you familiar with Python, I highly encourage reading through the scripts (>1000 lines of code) after this tutorial. Let's quickly walk through before we talk about any of the experimental setup.

Emergency efflux enabled

- for air-tight fit of cap onto vial

- for sealing sampling port

- for sealing unused vial cap ports

Connector -

paper
deleted in the code
two scripts
custom_script.py
vial cap
O-ring
Rubber plug
Luer caps
Male luer lock, 1/16" ID

Designing Millifluidics Using Eagle

Page Under Construction

Design

Eagle

  • Using Eagle to drag and drop elements + make layers

  • Problem with Eagle

    • Only outputs dxf

    • We then have to trace as a png in illustrator

    • This creates a double line

    • Less accurate + goes over each area twice

Zack defines width of the pumps, but doesn't worry about depth

Width of channel / valves

  • Too small = hard to align + valves will no longer stay closed

  • Larger is more robust

Barb spacing

  • Want enough space between each barb for tool

  • Far enough from the edge

    • Prevent leaking from the port

Arduino Software Installation

Process for installing the Arduino IDE and necessary eVOLVER Arduino libraries.

1. Download the Arduino IDE

2. Install SAMD libraries

Navigate to your board manager ( Tools > Board > Boards Manager… ), then find an entry for Arduino SAMD Boards (32-bits ARM Cortex-M0+) . Select it, and install the latest version.

3. Install the Sparkfun libraries for the SAMD21

First, open your Arduino preferences ( File > Preferences ). Then find the Additional Board Manager URLs text box, and paste the below link in

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

Then hit “OK”, and travel back to the Board Manager menu. You should (but probably won’t) be able to find a new entry for SparkFun SAMD Boards . If you don’t see it, close the board manager and open it again.

4. Choose the correct BOARD and PORT to upload into

  1. Plug the SAMD21 into your computer via a data transfer micro-USB cable.

  2. The boards used in eVOLVER are the SAMD21 Mini boards.

  3. The port changes based on which USB the Arduino is connected to. The wrong port is typically the most common reason why the Arduino won’t upload.

    1. If you are unsure which port is the correct one, plug and unplug the SAMD21 board and see which port appears and disappears.

Choosing the board:

Choosing the port:

5. Download the Arduino scripts and copy eVOLVER libraries into Arduino folder

    1. Download by clicking "Code" and downloading as a zip file

  1. Extract the files from the zipped file

    1. For example, on my computer, it is under Documents > Arduino > libraries

6. Upload script to Arduino!

This should be all. Open up the files and upload your scripts to the microcontroller via microUSB! The program should tell you that it has uploaded successfully.

Updating the eVOLVER Server

Process for updating code on the eVOLVER Server (Raspberry Pi)

Updating the RPi GUI

1. SCP File to Pi

On Mac: scp evolver-electron-2.0.0.AppImage pi@<your_evolver_ip>:.

2. Change Permissions to AppImage

First, ssh to the Pi:

ssh pi@<your_evolver_ip>

Next, make the file executable using chmod:

chmod +x evolver-electron-2.0.0.AppImage

3. Change What AppImage the Pi uses at startup

sudo nano /etc/xdg/openbox/autostart

Scroll down and change the following line to correspond with the version you are using.

# Start Electron App in Kiosk Mode
./evolver-electron-2.0.0.AppImage

4. Reboot the eVOLVER

You can either power cycle (turn off the eVOLVER completely, wait a few seconds, then turn it back on) or you can use the following command:

sudo reboot now

Updating the eVOLVER Server Code

Mac/Unix

  1. Use the cd command to navigate to the eVOLVER server software.

3. Use git to pull the latest version of the code. I have my own fork, so I need to pull the code from an upstream master branch. git pull origin master should work for most setups.

Replace the <eVOLVER_IP> text below with the actual eVOLVER IP.

scp evolver/evolver/*.py pi@<eVOLVER_IP>:/home/pi/evolver/evolver

5. Now that the files have been updated, the last step is to restart the server so the changes will take effect. ssh over to the evolver and run sudo supervisorctl. Then enter restart evolver, and you're done!

Windows

Follow steps 1-3 as described above.

5. Most Windows 10 computers have a Windows 10 SSH client (such as OpenSSH Client) so you can log into the Raspberry Pi from Command Prompt in order to restart the server. Simply type ssh pi@<eVOLVER_IP> (replace <eVOLVER_IP> with your actual eVOLVER IP) and log in. From here you can run sudo supervisorctl as normal.

Command Line Usage

A guide to basic command line terminal usage on a UNIX based machine.

What is UNIX?

UNIX is an operating system originally developed in the 1960s that is the base for modern operating systems such as macOS X, GNU/Linux, Sun Solaris, and many more. While modern UNIX systems usually have a graphical user interface (GUI) that you can use to interact with the system and run programs, the most direct and powerful way to interact with the kernel (operating system core) is through the shell (command line).

Key Concepts

Pretty much everything in UNIX is either a file or a process. Files are simply collections of data – they can be plain text, programs, binary machine code, or even directories. A process is a program that is being executed by the kernel.

The file-system on UNIX is very simple – it’s a tree that starts at root, which is written as /. Everything then branches off of the root with a location specified by a path from the root to the file. For example, if there were a user on a UNIX system with the username unixuser1, the home directory would typically be located at /home/unixuser1. If this user had written a hello world program in c and put it in a directory called myprograms in their home directory, that path would look like /home/unixuser1/myprograms/hello.c. It’s useful to think of the file-system as a tree that you navigate up and down through, and create routes from one spot to another. More on this later!

The Shell

The shell is the interface between the user and the kernel – it is a command line interpreter (CLI) which takes commands that the user types in and sends them off to the kernel to be carried out. Commands in UNIX are actually programs, which means that they are files on the system. When a user enters a command, the shell goes and finds that program and arranges for it to be executed by the kernel. The shell is configured through some other files that it looks at when it starts up to know where these programs are located so that the user doesn’t have to type out the path each time they want to use them.

Command Line Usage

When you open your command line terminal, you should see something like this:

This line is called the prompt – it is the shell waiting for the user to enter a command to run. Typically, the prompt will end with a $, meaning the shell is ready to accept a command.

Your prompt will probably look a little bit different, as this system has some customization and configurations set that print some extra information and changes the colors. This will be explained at the end! Just make sure you see a $ at the end of the line.

To execute a command, simply type it out on the command line after the prompt and press enter! Some commands can accept additional arguments or flags that will change the way they print things out or how they execute. Arguments are passed to a command as space separated strings of text. Because they are space separated, you cannot include spaces in your arguments - they will be interpreted as separate arguments. To pass in a string with spaces, you must either escape the space character by placing a \ in front of the space, or put the entire string in double quotes ("). Be careful though, as not all commands behave the same! It is best practice to not use spaces and other special characters in filenames if it can be helped. More on passing arguments will be shown in the following examples.

Current Working Directory and Paths

The shell has a concept of a current working directory, which can be thought of as the location in the file-system that the shell is currently “looking” at. When you start a terminal, usually the current working directory is the home directory of the user, typically at /home/username, or /Users/username on mac.

As stated earlier, a path is a string that tells the shell where to look for a specified file. There are two types of paths, absolute paths and relative paths. An absolute path starts at root (/) and lists out the entire file-system route to a file. For example:

/home/unixuser1/myprograms/hello.c

A relative path is the route through the file-system from one location to another. These are useful as they require fewer characters, less typing, and allow programs to be written that interact with the file-system that can run from anywhere and not have to worry about where the current working directory was when it was called.

When writing out paths on the shell, if you do not write an absolute path, the shell will interpret the path as relative starting from the current working directory. For example, let’s say a user wants to do something with the hello.c file in their /home/unixuser1/myprograms directory, and their current working directory is their home directory (/home/unixuser1), as in this figure:

The relative path to their c file would be the following:

myprograms/hello.c

This would be interpreted the same as the absolute path /home/unixuser1/myprograms/hello.c, but it requires less typing!

It is also possible to write relative paths to things further up or in a different branch of the file-system. For example, if the current working directory is /home/unixuser1/Desktop, and the user wants to reference the same c file as above, visually it would look like this:

and the relative path would be:

../myprograms/hello.c

The double dot (..) means up one level in the file-system. You can go up more than one level by stringing them together. For example, given a current working directory of /home/unixuser1/Desktop/another_directory, to reference the same file the relative path would be

../../myprograms/hello.c

Useful commands and tips

  • Double dot .. means the directory above the current one. A single dot . means this current location.

  • Tab can be to autocomplete a path or filename. Start typing the first letters, then hit Tab. USE THIS! It will prevent you from making typos or looking for something that doesn’t exist, and saves time overall.

    • Hitting Tab twice in quick succession will print out all files matching up to the point typed, then allows you to keep typing.

  • The star character * matches 0 or more characters in a filename. For example, *.txt would match all files ending in .txt.

  • The tilde character ~ stands for the home directory of a user.

  • Ctrl + C: kills the current foreground running process in the terminal and returns control back to the user (prints a new prompt).

  • Ctrl + L: Clear the screen. Alternatively, use the clear command.

  • Ctrl + A or Home: Moves the cursor to the end of the line.

  • Ctrl + E or End: Moves the cursor to the end of the line.

  • Ctrl + K: Deletes from the current cursor position to the end of the line. String this together with Ctrl + A to delete everything on the line!

  • The up arrow and down arrow on your keyboard will let you scroll through your recent commands so you don’t have to retype them.

  • Ctrl + R: Recall the last command matching the characters you provide. Press repeatedly to search past the last matching to previously matching commands.

  • command > file redirects the output of a command to a file, overwriting existing content.

  • command >> file redirects and appends output of command into a file (does not overwrite).

  • first_command | second_command is a pipeline, (the | character is called a pipe). This will send the output of the first command as input to the second command.

Here are a few useful commands for navigation, inspection, and basic file manipulation on the command line. This is by far from being exhaustive! Most operating systems will have documentation listing out available commands and how to use them. You can also use the command man <command> to bring up the documentation (or manual) for a command within the shell. Press q to quit the manual after running. You can type /<search_string> to search through the manual.

whoami

Displays the username of the current user.

Notice that after executing the command, the shell will print a new prompt for the user to enter another command.

which

Identifies the location of an executable. Use this to determine if a command or program is installed on your system, and also to see where it actually resides on the file-system. If the program cannot be found, nothing will be returned.

pwd

Stands for Print Working Directory. It prints the absolute path of the current working directory from root. The current working directory is the location on the file-system where the shell is currently focused.

ls

Stands for list. This command will list out all files in a given directory.

You can provide a path to ls to list files not in the current working directory. Some useful flags are -l (long listing format), which can show you file permissions, owner, size, and last modified date, and -a (shows all files, including hidden files).

cd

Stands for Change Directory. Moves the current working directory to the path specified as an argument to the command. The syntax is cd <path>, where <path> can be any relative or absolute path on the file-system. If the path is invalid, the current working directory will stay the same.

mkdir

Stands for make directory. Creates a directory at the stated path if it does not already exist.

cp

Stands for copy. Copies file at one path to another specified path. If the path to be copied to is a directory, cp will copy the file and keep the same filename. You can also specify a new filename. The syntax is cp <file_to_copy> <new_location>

If you want to copy an entire directory, pass the -r flag.

mv

Stands for move. Works exactly like cp, but will remove (rename) the file from the original location.

Notice in this example that the directory went from having two files to only having one! Be very careful with cp and mv – these commands will overwrite any existing files, and there is no undo or recycle bin!

rm

Stands for remove. Delete a file at a given path. To delete an entire directory, pass the -r flag. You can also pass the -f flag which will not prompt for confirmation regardless of the files permissions. Remember, there is no undo when using this command. The syntax is rm <filename>

touch

Updates file timestamp information. Can be used to create an empty file.

echo

Outputs the strings being passed to it as arguments. You would usually pipe this command into other commands or use it to write data into a file through a single command. If you pass the -e flag, you can parse escaped characters. You can use this to print out Unicode symbols or different colors.

To append a line into a file:

echo "This is a string I want to append" >> myfile.txt

cat

Stands for concatenate. Displays the contents of a file. You can use it to concatenate by passing it multiple files, and it will print them to some output location.

head

Displays the first 10 lines of a file. Pass the -n argument to specify how many lines to display.

tail

Displays the last 10 lines of a file. Pass the -n argument to specify how many lines to display. Pass the -f flag to follow, or to not stop when end of file is reached, but rather to wait for additional data to be appended to the input. Press Ctrl + C to quit afterwards. Useful for watching log files in real time.

less

Like cat, but only displays contents from the beginning up to what will fit on the screen. Use the arrow keys (or j and k) to move the display through the file. Press q to quit.

grep

Searches a file or files for lines that match a regular expression or string. There are lots of flags and options for this command depending on what you’re trying to do, run man grep to see everything it can do.

For example, say you have a complicated project with many directories and want to find where a specific variable name or library is used. You could use grep to recursively look through all directories and look for that variable name. Grep will print the filename and contents of the line it found it on. In this example, the -r flag means to look recursively through any directory it finds, the -I means to ignore binary files, the -n will make it also print the line number, and the . means to start the search at this current location (the current working directory).

find

Finds files with properties that match a specified pattern. To find a file with a specific name from the current working directory, type the following:

find . -name "myfilename.txt "

You can also pass regex patterns to find multiple files that match a certain pattern. To find all c files, try the following:

find . -name "*.c"

sed

Stands for Stream Editor. Useful for searching, finding and replacing, inserting, or deleting things in files. As an example, maybe you want to replace all the tabs in every file within a directory to four spaces. You could do this all at once with one command:

sed -i .bak $'s/\t/ /g' *.c

The -i means to edit the files in-place, and backs up the files with an extension .bak. The characters within the quotes are what we are searching and replacing (basic regular expression), with / as a delimiter between what we are searching for, replacing, and any other options in the regex. So in this case, we are searching for \t (tab), and replacing it with four spaces. The g signifies to do this globally across the entire file and not just on the first occurrence. You can combine commands like find with sed to modify files across your file-system or in specific projects all at once.

Pretty colors and text editors

If you want the same coloring scheme I have in my terminal, edit the file ~/.bash_profile using a simple text editor. If you want to do it in the terminal, try using nano (a very simple text editor) or vim (an extremely powerful editor with a learning curve). Look up the usage of these on google before you open them! If you want to learn vim, you can use the built-in program vimtutor that will guide you through the basics.

To turn on some basic coloring, add this line anywhere in the file:

export CLICOLOR=1

The export command is setting the value of the environment variable CLICOLOR to 1, turning on colors. You can change how these colors look by changing some other environment variables. For example:

export LSCOLORS=GxFxCxDxBxegedabagaced

This setting makes the ls command print in a different color scheme. You can look up how to customize this on your own.

Lastly, to make your username/hostname on the prompt have different colors or display different things, you can modify the PS1 environment variable, which contains the value of the default prompt:

export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

This makes my username (the \u) bold and green, prints an @, then the host name (\h) and a colon, then prints the current working directory in blue (\w) followed by a $ in white.

You can modify the .bash_profile file to do lots of other useful things as well, such as making aliases for different commands, modifying or appending to environment variables, or setting up other things. Do your own research to see what kinds of things you can do!

Some terminals also have some color settings applied by default, or the ability to load up different profiles. Keep this in mind when trying to modify the appearance of your terminal.

Troubleshooting Overview

Summary

The eVOLVER system is highly complex and it is easy to feel lost about what happened when something went wrong.

Tubing and Connector Blockage and Bursting

Burst Tube at Barb Connection

When there is an obstruction in the line, from dried media or biofilm, the peristaltic pumps can produce up to 45 psi of pressure, which is enough to exceed the barbed connector tolerance and burst barb connections. This is clearly undesirable, so if you find that one of your barb connections has burst, check the length of the line for obstructions. If it's an efflux line to the waste container (opaque), assume it has an obstruction.

Obstructions

For the pumps that we typically use for eVOLVER, 1/16" ID tubing does not resist flow in any appreciable amount. If a pump is not pulling liquid, it is likely blocked or obstructed.

Unblocking With Syringe

Biofilm obstructions can happen during long experiments with a biofilm-forming organism like E. coli - your best bet is to pause the experiment and bleach sterilize all lines before restarting. If your line is completely blocked, either replace the line or clear the obstruction by pushing water through the line with a 50 mL syringe (shown below).

Unblocking by Soaking the Lines

If the syringe method does not immediately work to clear the blockage, the blocked lines can be soaked in water for a few days to help rehydrate the dried media/biomass - the silicone tubing is quite permeable, so water can slowly enter the tubing and help loosen any dried blockage so that it can be flushed out with a syringe.

Stuck luer-lok connectors

Residual or leaked media on the ends of luer-lok connectors can dry and leave the connectors stuck. Rather than reach for a pair of plyers, soak the connection in hot water to dissolve the media. This can also help for any stubborn fluidic connection, and make tubing much more pliable.

Millifluidics Guides

This is a page collecting guides for millifluidics. These do not come with the base eVOLVER and thus should done only by advanced users.

Page under construction

If you have any questions or hit a roadblock, check on the forum.

should be fairly easy to navigate.

The Sparkfun website has on this. For more details, please refer to that link. The following is information copied from there.

Download the scripts from our

Copy the into your local Arduino libraries folder

A quick tip: there are many poorly designed microUSB cables out there (e.g. just for charging). Be careful to use one that you know works. If you can’t upload, try another cable. If it still fails, take a look at this .

If you have any questions or concerns not addressed here, reach out on .

You can download the latest version of the code on our . If you do, skip step 3 below.

On Windows, use or to drag the file to /users/pi/home/

Open up a terminal of your choice (I use ).

4. I like to use the scp command to transfer the files over to the eVOLVER. scp stands for secure copy - it usesssh to transfer files between computers on a network. You can also use any GUI based tool - is a popular one. I also normally only transfer the python files, and not the entire evolver directory. The server saves calibration files and other configurations which we don't want to modify by accident. To transfer only the relevant python files, run the following command:

4. Use or to drag the .py files into the correct locations. Be careful not to overwrite other types of files.

If you really want to do some interesting command line text processing, check out the command!

For example, the behavior of optical density readings can vary widely and the underlying cause can be .

Please look through these troubleshooting guides and the relevant documentation before posting to the about your problem. It could also be the case that your problem is a .

For documentation and information about millifluidics see the .

this post
Their website
a very good blog
Github Page
libraries folder
guide
this forum post
GitHub release page
WinSCP
Filezilla
iTerm2
Filezilla
WinSCP
Filezilla
awk
Mac/UNIX
Windows
What is UNIX?
Key Concepts
The Shell
Command Line Usage
Current Working Directory and Paths
Useful commands and tips
whoami
which
pwd
ls
cd
mkdir
cp
mv
rm
touch
echo
cat
head
tail
less
grep
find
sed
Pretty colors and Text editors
complex
forum
bug
hardware page

Vial Troubleshooting

Overview of Hardware Architecture

High-level description of hardware architecture

  1. Smart Sleeve

  2. Motherboard

    1. SAMD21 Arduino Microcontrollers

    2. Characterized SA Boards

      1. PWM Board

      2. ADC Board

  3. Auxiliary Board

General Overview

The eVOLVER hardware framework contains three levels of organization: (1) programmable sensors and actuators (e.g. Smart Sleeve components, pumps/fluidic control elements) (2) a Motherboard and microcontrollers, and (3) a Raspberry Pi. At the level of individual culture vessels, Smart Sleeves enable individual control over several experimental parameters in the culture.

Specifically, each sleeve contains sensors and actuators (e.g. heaters, LEDs, thermometer/thermistor) that measure and adjust aspects of the culture environment of a glass vial housed within. At the next level of organization, the Motherboard, Arduino microcontrollers, and other core electronic boards form a robust hardware infrastructure that communicates internally and coordinates activity of each individual Smart Sleeve to control each experimental parameter.

At the final level of organization, a Raspberry Pi forms a link to the outside world by relaying information and commands to and from a computer/server, permitting the same computer/server to run many eVOLVER devices across a network. Layered on top of the hardware framework, control software enables programmable feedback between parameters and orchestrates experiments at an abstract level, providing an easy method of customization that is shareable with other users. Below we present the core hardware framework as well as the particular configuration enabling the experiments described in this study.

Smart Sleeve

The Smart Sleeve houses each culture vial and contains all the necessary sensors and actuators to regulate desired culture parameters. An aluminum sleeve surrounds the vial, which is mounted into a 3D printed part that houses a printed circuit board (PCB) called the Component Mount Board (CMB). The CMB contains a variety of different sensors and actuators needed to regulate culture conditions. As the most flexible component in the eVOLVER Framework, the Smart Sleeve can be re-designed to regulate other culture conditions based on the user's end application.

Motherboard

The Motherboard is responsible for housing custom PCBs and Arduino microcontollers that control user defined culture conditions by routing signals to and from an array of Smart Sleeves. Custom PCBs are plugged into SA (sensor/actuator) slots, of which there are 8. Using the routing system, these custom PCBs can collect data from CMB sensors or deliver power to CMB actuators. For example, in the base eVOLVER setup, there is a SA slot dedicated to individually powering heaters across all 16 Smart Sleeves.

SAMD21 Arduino

On the Motherboard are 4 SAMD21 Arduinos, each of which is responsible for regulating a single culture parameter. To do so, each SAMD21 board is electrically connected to 2 SA slots since many culture conditions require both a sensor and actuator. To regulate temperature, for example, a single SAMD21 will leverage its SA slot pair to sense the temperature for each Smart Sleeve and provide the necessary power to each Smart Sleeve heater to maintain the user-defined temperature for each culture vial. This modular design enables functional parallelization of culture parameters, providing a high degree of flexibility to users when designing hardware for experiments.

Characterized SA Boards

FynchBio has designed and characterized the PWM Board and ADC Board, two PCBs that plug into Motherboard's SA slots. These boards are designed to power actuators and collect sensor data for existing CMB components and should be sufficient to handle custom reconfigurations.

PWM Board

The PWM Board is designed to power 16 actuators, in parallel, by amplifying the SAMD21 voltage ouptut using the Motherboard's voltage source. The PWM Board leverages pulse-width modulation (PWM) signals to power actuators, allowing digital signals to better approximate analog signals. This is essential because analog signals provide precise control of actuators, rather than simple ON/OFF dynamics with digital signals.

ADC Board

The ADC board is a 16-1 de-multiplexer that collects data from 16 sensors and filters it before sending it to its cognate SAMD21 Arduino. Specifically, the ADC Board reads the output voltage from a basic voltage divider circuit integrated with the sensor on the CMB. After analog signals are collected, they are filtered to remove noise, sent to the SAMD21 Arduino through an input pin, and finally converted to a digital signal for downstream data processing.

Auxillary Board

Akin to the Motherboard, the Auxillary Board is a custom PCB designed to control a peristalitc pump array to handle fluidic functions. This includes removing waste and adding nutrients/chemicals to cultures. The Auxillary Board contains a single SAMD21 Arduino, which connects to 3 PWM Boards to actuate 48 peristaltic

GUI Troubleshooting

Overview of Fluidics

Making culture continuous

For eVOLVER to be more than a 16-well plate reader, there needs to be control of liquid flow through each vial. The most common hardware for this application is the peristaltic pump, used in continuous culture for almost a century. Novel aspects of eVOLVER include the automated, individual control of these pumps, and modularity for different types and numbers of pumps. This is enabled by an auxiliary fluidic board, separate from the motherboard, that controls up to 48 fluidic actuators. For typical eVOLVER use, this is coupled with 32 pumps (16 for influx, 16 for efflux), 64 lines of tubing (to and from each pump), and 128 barbed connectors (for both ends of each line of tubing). This section of the Wiki will go into detail of how each component works, and options for repair, troubleshooting, swapping, and modifying them in the eVOLVER fluidic hardware framework.

Overview of Millifluidics

Description

A key development in microfluidics was the design and fabrication of devices containing integrated (pneumatic) valves that could allow for complex fluidic manipulations with minimal number of control elements27–29. Here, we describe (1) why adapting this technology for the macro scale is valuable for automated cell culture, (2) challenges faced when scaling to larger flow rates, and (3) a new framework for fabrication and bonding of millifluidic devices featuring integrated pneumatic valves. These devices offer a scalable solution to challenges faced by traditional fluidics.

Importance of Complex Fluidic Tasks

The ability to program complex fluidic tasks could enable entirely new manipulations in automated cell culture applications (see Fig. 5, Supplementary Notes 15 - 17). For example, when growing undomesticated microbes, biofilm may form in the efflux fluidic lines and vials in as little as in 12 hours (e.g. see Fig. 5). The ability to programmatically bypass the vial in order to clean the fluidic lines with a bleach solution, and passage the culture from one vial to the next as a preventative measure, would be critical for long-term continuous growth of these microbes. However, complex fluidic tasks like vial-to-vial transfer, cleaning protocols, and mixed media inputs are extremely difficult with traditional fluidic systems used by current devices. In electronics, custom circuits can be readily created by breadboarding; however, this approach scales poorly to larger, more complex circuits because it relies on tedious manual assembly and leads to limited durability. Similarly, fluidic systems consisting of flexible tubing connecting separate control elements, like pumps and valves, can solve simple fluidic tasks. However, the number of necessary fluidic connections scales with the complexity of the desired task. For example, even with an optimal valving scheme, the ability to perform automated large volume transfers between any two culture vials in a 16-vial eVOLVER unit would require almost 300 fluidic connections and over 20 control elements. As in breadboarding, each connection would need to be routed individually by fluidic tubing and often by hand, a tedious task. Additionally, the tubing is usually fairly long, and each connection introduces dead volume, making the system less robust and impractical. Instead, by creating integrated (pneumatically valved) schematics, we sought to make a millifluidic equivalent of a printed circuit board; the complex fluidic connections are now integrated in a small device that is computer designed, manufacturable, and much easier to reproduce. With the flexibility of CAD, one would be able to customize a fluidic device to fit their particular experimental needs.

Fluidic Scaling Problem

The cost of control elements and assembly time of bioreactor units can prove to be a significant burden as one scales fluidic inputs and outputs for high-throughput operations. As previously described, most designs rely on a pinch valve or a peristaltic pump to separately control each of the media sources and another to control waste. For example, a single vial turbidostat unit with 4 different media inputs would require 5 pumps. A hypothetical 48-vial unit with the same capabilities would therefore require 240 pumps, at a cost of $7,000 to $10,000. The key problem is that the number of control elements increases linearly with the number of vials. Our pneumatically-valved devices can leverage concepts developed in microfluidics in order to scale throughput by multiplexing and demultiplexing inputs and outputs27,30. In this scheme, the number of controllable vials scales exponentially to the number of control 23 elements, needing only 30 elements to route up to 16 different fluidic inputs to 48 vials. We project the costs of this new hypothetical 48 vial fluidic schematic to be $1,000 to $2,000, roughly a 90% decrease in cost in comparison to current systems.

Desired Characteristics and Properties of Integrated Millifluidic Devices

Though inspired by microfluidic technologies, integrated millifluidic devices for continuous culture have drastically different design requirements. The following is a list of critical requirements for this technology in the context of continuous culture:

  • Devices need to be on the decimeter scale. Indicated in the nomenclature, microfluidic devices operate on the nano to micro liter per second flow rate. In contrast, continuous culture in eVOLVER requires flow rates of roughly ~1 mL per second, a 1000-fold increase. As such, in order to increase flow rate with an appropriate safety factor, the flow channels and device needs to be at least 10-fold larger than typical microfluidic devices.

  • New prototyping framework is necessary for larger devices. Traditional microfluidic prototyping techniques rely on standards from the microelectronics industry, namely patterning photoresist on silicon wafers29,51. Typically, 100 mm (4 inch) circular wafers are the largest size the machinery can pattern designs on, which is still too small for complex millifluidic devices. New fabrication framework is necessary to prototype devices for continuous culture.

  • Design cycle must be fast and repeatable. The success of microfluidics in the laboratory is, in large part, attributed to rapid and reliable design cycles enabling iteration and testing of prototypes. New design frameworks for millifluidic devices must be equally rapid and reliable.

  • Device must be transparent. Fluidic systems designed for long-term continuous culture of microbes will be prone to biofilm formation. The ability to monitor flow through the device is critical for debugging experimental issues.

  • Device needs to interface with pumps, filters, and tubing. Fluidics for laboratory continuous culture typically interface with syringe pumps, pressurized fluids, sterile filters and peristaltic pumps. A robust way to interface dozens of connections between the device and other fluidic elements (e.g. vials, filters) is critical and nontrivial.

  • Device must be resistant to 10% bleach and 70% ethanol. Sterilization of the device is necessary prior to any experimentation. Fluidic materials and fabrication must be resilient to these chemicals for weeks of continuous usage.

Characteristics of Pneumatic Valves for Millifluidic Devices

Our pneumatically-valved millifluidic devices enable customizable, programmable routing of liquid at volumetric flow rates of ~ 1 mL/sec. The valves pinch off fluid flow on the flow layer when 10 psi is applied to the control layer and enable flow when vacuum is applied (Supplementary Fig. 11). Improvement of device bonding will enable application of pressures above 10 psi, necessary with higher flow rates.

Coordinating New Fluidic Experimental Parameters

Fluidic tasks in eVOLVER are enabled by the sequential actuation of valves in a specific fluidic network encoded in the integrated millifluidic device. We demonstrate these fluidic manipulations in a series of experiments (see Fig. 5, Supplementary Notes 15-17). Each experiment utilizes different devices as required to meet the experimental needs. The architectures for most functions are modular (e.g. multiplexer, vial-to-vial router) and can be combined in order to achieve more complex functionalities (Supplementary Fig. 11). For example, simple single media input turbidostat function utilizes multiplexer and demultiplexer modules. The demultiplexer routes the media source to the correct vial and the multiplexer routes the efflux from vial to waste. The same multiplexer and demultiplexer modules are Nature Biotechnology: doi:10.1038/nbt.4151 25 reused in all Fig. 5 applications, but different multiplexed media selectors and vial-to-vial routers are included as needed in different experiments. Software routines to control the control elements (valves and pumps) are also divided into commonly repeated functions, usually in a similar manner to how fluidic modules were divided. The code for each fluidic function is preloaded into the Arduino to coordinate tasks between each fluidic module. For example, a simple dilution event would first actuate valves in the media multiplexer to select media, then actuate a syringe pump for metering the desired volume, followed by valves in the vial demultiplexer and multiplexer to route media into the vial and remove efflux. By loading the routine for abstract functions (e.g. dilute, clean, vial-to-vial transfer) into the Arduino, robust communication can be ensured, with rapid transition between sub-tasks and no skipped steps (which could cause incorrect media routing, mis-priming of the syringe pump, or leaks and other device failures).

12V Power Supply Troubleshooting/Replacement

Troubleshooting

  • measuring w multimeter?

Replacing a 12V Power Supply

If you have found that the 12V power supply is not functioning, you can replace it following the steps below.

Before getting started, be sure to unplug the eVOLVER from the wall outlet.

  1. The 12V power supply is fastened to the bottom of the vial platform with 4 hexagonal bolts. Use an Allen wrench to remove these bolts.

  1. Unscrew the wiring that connects the motherboard to the 12V power supply using a flathead screwdriver. This is easiest to do when the power supply has been unfastened from the case so that it can be turned on its side.

  1. Attach the wiring to the replacement 12V power supply, making sure that the wires are in the correct configuration, as shown below.

See the for all practical construction and operation.

The 12V power supply powers the heating and stirring elements in the Smart Vials. If both of these elements are not properly functioning and you have inspected the internal circuitry for damage (see for more information), the next element to check is the 12V power supply.

guides
Motherboard Troubleshooting/Replacement
Real-time temperature calibration data visualization on the eVOLVER GUI interface
Example image of a successful temperature calibration
Waste carboy with black heat shrink over the waste lines and hole in carboy cap.
Assembled supplies and tools for media bottle
Drilling into the lid
Luer connector and lid
Assembled cap
Proper straw length
Final assembly
Example 4:1 and 2:1 media line splitters.
Vial 1 (left) shows a smaller range than vial 2 (right). However, vial 2 is still unable to accurately differentiate values under OD 0.5.
Layout of damaged motherboard
Internal components fastening the motherboard to the vial platform
Using an IC puller to remove an ADC board. In black are the PWM boards. Small red boards are the SAMD21 Arduinos
Variable resistance board sitting on top of headers after being removed
Jumper configuration indicating power supply for each component
3D printed spacers in corners
Materials needed for cap assembly. Instructions for making glass vial with graduations below.
Optional: When making multiple caps, it is easier to keep track of the varying lengths of tubing by storing them in old pipette tip boxes.
1. Influx, 2. Influx, 3. Gas Bubbler, 4. Emergency Efflux, 5. Regular Efflux
Color flexible tubing connected to cap.
Luer-slip connector
Universal vial cap with efflux tube in place.
(Top) Connector without epoxy. (Bottom) Connector with epoxy on barb.
Cap with efflux tube epoxied in to left port
Picture of version D vial board in KiCAD
Picture of version C vial board in KiCAD
4-port universal cap with nylon efflux straw on bottom.
5-port cap assembled
IR LED-photodiode pair integrated in each Smart Sleeve enables individual monitoring of optical density. (a) CAD drawing and photographs of a 3D printed part for housing optical parts. Designed on CAD software, printed parts housing the IR LED and photodiode are customized for 135° offset to maximize scattered light (left). Completed part printed from CAD file (center). CMB assembled with mounted LED and photodiode via screw terminals (right). (b) Schematic of system design for eVOLVER optical density module. The IR LED (SA slot 4) and photodiode (SA slot 5) are integrated into the Smart Sleeve (left). A resistor is placed on the Smart Sleeve to limit current through the LED. A turbidity measurement is triggered by a serial command from the Raspberry Pi, and consequently, the Arduino responds with the current optical density measurements (right). The Arduino coordinates the timing when the LED flashes ON and the photodiode starts collecting measurements. Nature Biotechnology:
Optical density calibration and growth characterization. (a) Optical density calibration curves. Optical density is measured by a 900 nm LED-diode pair (see Supplementary Fig. 7) and calibrated to an OD600 measurement performed on a Spectramax M5 using 300 uL of media in a 96- well flat bottom plate. The calibration curve is fitted with a sigmoidal function. All optical density measurements in the experiments are calculated based on the fitted calibration curve for each Smart Sleeve. Sensitivity of OD measurements can be tuned by swapping the photodiode resistor. Top: A larger photodiode resistance at a lower LED intensity (2125 a.u.) gives a larger dynamic range, robust after 4 months of use. Bottom: A smaller photodiode resistor at a higher LED power gives a smaller dynamic range, but with more precision. This setting is also robust over time (1 year of use). Both traces are representative of a typical Smart Sleeve. (b) Comparison of cell growth in flask vs Smart Sleeve. Comparison of yeast cells grown in flasks in a shaking incubator with cells grown in SDC in 18 different Smart Sleeves across 6 different eVOLVER systems (left). (c) Comparison of cell growth across Smart Sleeves. We characterized variability of yeast growth across 96 Smart Sleeves (6 different eVOLVER platforms). Traces were aligned at 0.2 OD before plotting in order to normalize for different lag phases.
Individually controllable temperature achieved by feedback between thermometer and heaters integrated in the Smart Sleeve. (a) Photographs of eVOLVER temperature components. A temperature-sensitive resistor, or thermistor, with a compact form factor, 25 mm x 3.6 mm (left). Sensor integrated into Smart Sleeve in between the 3D printed part and spray painted aluminum tube (center). Two heaters are screwed onto the aluminum piece and all components are soldered onto the CMB (right). (b) Schematic of system design for eVOLVER temperature module. The resistive heaters and thermistor are integrated into the Smart Sleeve and interface with PWM and ADC boards at SA slots 2 and 3, respectively. Arduino 2 manages both boards and interprets the desired temperature settings and responds with the current temperature (right). The temperature is maintained with a PID controller programmed into the Arduino. The controller interprets the input from the ADC board in slot 3 to determine the output of the PWM board in slot 2.
Temperature control characteristics in eVOLVER Smart Sleeves. (a) Temperature calibration curves. Top: A thermocouple was used to measure the temperature at different thermistor readings. The points were fit with a line and all temperature measurements in the experiment were calculated based on the fitted line. Bottom: Recalibration, after a year of use, demonstrates stable and robust temperature control in Smart Sleeves. (b) Temperature offset between aluminum sleeve and liquid. To measure the temperature offset during dynamic temperature changes, the integrated thermistor (upper left) and a thermocouple (lower left) simultaneously recorded temperature at two different locations during a square wave (right). (c) Impact of temperature changes on optical density readings. Optical density calibration curves for yeast cultures (see Supplementary Fig. 8) were generated at three different temperatures, and verified separately by OD600 spectrophotometer readings (left). To characterize temperature-induced OD offset without cells, evaporated milk was used to generate another set of calibration curves at different temperatures (right).
A basic eVOLVER vial setup with emergency efflux. Top, red emergency efflux line; center, capped fluidic port; bottom, black rubber plug in sampling port.
Selecting the SAMD21 Mini in the Board Manager out of available boards.
You should see the SAMD21 come up on the Ports list if it is plugged in.
It would be really annoying to type out that filename! Just use Tab autocomplete!
Notice the .im_a_hidden_file.txt entry that is only in the output when using -a.
Using a syringe to clear blocked fluidics lines
Figure 2C Wong. Nature Biotech, 2018 - Millifluidic multiplexing devices enable novel, customized liquid routing. Devices are fabricated by bonding a silicone membrane between two plastic layers with laser-etched flow channels. Integrated pneumatic valves actuate on the membrane to direct fluidic routing from media input to output ports (to or from vials).
This is for the old motherboard / smart sleeve which had 7 slots for customization of sensor/actuator (SA) boards. The current motherboard / smart sleeve combination has 8.
Modular fluidic control system for the eVOLVER platform. (a) Electronic hardware for fluidic control. The Auxiliary Board enables one Arduino to independently and simultaneously control 48 fluidic elements (e.g. pumps and valves) via three PWM boards. (b) Schematic of system design for basic fluidic control. Serial commands from the Raspberry Pi are sent to the Motherboard and Auxiliary board on the same RS485 communication line. The Auxiliary board interprets the appropriate serial commands and actuates specific pumps for fluids to be metered in and out of a target smart sleeve.
Figure 2C Wong. Nature Biotech, 2018 - Millifluidic multiplexing devices enable novel, customized liquid routing. Devices are fabricated by bonding a silicone membrane between two plastic layers with laser-etched flow channels. Integrated pneumatic valves actuate on the membrane to direct fluidic routing from media input to output ports (to or from vials).
Millifluidic devices featuring integrated pneumatic valves. (a) Characteristics of macro pneumatic valves. A silicone rubber layer is sandwiched between two PETG plastic layers to form disposable, pneumatically-valved millifluidic devices (left). Valve layouts and fluidic paths can be designed with any vector-based CAD software, patterned with a laser cutter, and bonded with adhesive (upper right). The entire process, from CAD to completed device, can be done in 3 hours. Pneumatic valves and devices can be daisy chained together for improved scalability (lower right). (b) Integrated millifluidic devices as fluidic modules. Completed devices are transparent, disposable, and patterned with a laser cutter (left). Fluidic routing and valving can be customized to form specialized fluidic modules (center). These modules can be connected in various ways to enable complex fluidic functions (right). (c) Photograph of 16-channel multiplexer device, with fluidic lines (clear) and pneumatic lines (blue). Thread-to-barbed plastic connectors can be fastened onto the millifluidic device to interface with standard fluidic components.
Supplementary Figure 27. Control structure for millifluidic devices enables unique fluidic programs for each experiment. (a) Control structure for custom millifluidic devices. Fluidic sub-routines are pre-loaded onto an Arduino in order to ensure rapid and robust transition between the many sequential tasks needed to perform fluidic tasks on a custom fluidic module. These sub-routines convert abstract commands (e.g. dilute vial 1 with media A) into sequential actuation of control elements, such as solenoids for valving, or peristaltic and syringe pumps for media metering. (b) Logic diagram for dilution event. For routine turbidostat dilutions, a dilution event triggered by reaching a density threshold consists of three parts: 1) Open route from appropriate media input, pull fluid into syringe, repeat as necessary in order to mix medias (as in glucose/galactose ratio sensing experiment, see Fig. 5a), then dispense through demultiplexer route into vial. 2) Open route through multiplexer to run efflux from vial to waste. 3) Open media selector route to 10% bleach, ethanol, then sterile water, to sterilize and flush fluidic paths used during dilution event. (c) Logic diagram for vial to vial transfers. Transfer of cells from a source vial to a target vial were triggered either by elapsed time for the biofilm prevention experiment (see Fig. 5b) or by a growth rate measurement above threshold value for the antifungal evolution experiment (see Fig. 5c). A transfer consists of four parts: 1) Open route from appropriate media input, pull fluid into syringe, dispense through demultiplexer route into source vial. 2) Open route through multiplexer to run efflux from vial to syringe to collect cells. 3) Dispense through demultiplexer route into target vial. 4) Open media selector route to 10% bleach, ethanol, then sterile water, to sterilize and flush entire device.
Bottom view of eVOLVER: 12V power supply volts are circled in red
Side view: wiring that connects the 12V power supply to the motherboard
Top view:
Example cap with 5 ports, one of which is a [optional].
bubbler

Analog-to-Digital Converter (ADC) Boards

Description

Another customizable control board, the ADC board is designed to plug into the Motherboard and measure the signal from dozens of sensors in the system. The sensors currently integrated in each sleeve are simple and can be measured with basic voltage divider circuits. The sensor and resistor are placed in series, and the voltage across a resistor changes when the measurement from the sensor changes. The board reads this voltage and has two main roles: (1) remove noise from the signal through a low pass filter and (2) multiplex the signal from all 16 channels to one analog input pin on the Arduino. When the signal arrives at the input pin, the Arduino changes the analog signal to a digital signal via its own 12-bit ADC. Nature Biotechnology:

Pulse Width Modulation (PWM) Boards

OD90 vs OD135

Definition

The two photodiodes on the eVOLVER are at 90 degrees and 135 degrees from the IR LED.

Recommendations

  • Try OD135 for OD600 < 0.5

    1. There will likely be vials that max out between OD600 0.5 and 1.0

  • Try OD90 for OD600 > 0.5

    1. Some eVOLVER systems are able to read OD90 up to OD600 of 4 or 5

    2. This may require optimization of the internal resistor pack

Stirring

Description

The eVOLVER platform features tunable and independent stir rate control across culture vials. Stirring in eVOLVER is actuated by 12V brushless DC motors with attached neodymium magnets. The fastened magnets spin a stir bar (20 mm x 3 mm, PTFE coated) within an autoclaved glass vial (28 mm x 95 mm, borosilicate). The stirring module utilizes a single SA slot on the Motherboard; in the particular configuration described in this study, we utilized SA slot 1 (Supplementary Fig. 4). The two leads of the motor (12V & GND) are connected to a screw terminal on the component mount board, from which a ribbon cable connects the smart sleeve to the Motherboard. The PWM board (plugged into the SA slot) can control each motor independently to achieve different stir rates across eVOLVER vials. Briefly, the 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 12V signal to actuate Nature Biotechnology: doi:10.1038/nbt.4151 12 the motor. Arduino 1, which manages SA slot 1, was programmed to take in serial inputs from the Raspberry Pi and translate the serial values to different stir rates, determined by pulsing the motor ON and OFF at different ratios (Supplementary Fig. 4).

Relevant Forum Posts

Motherboard Layout and Circuitry

This page aims to go more in depth into the Motherboard's circuitry to assist users in making the necessary modifications to add/subtract new experimental parameters or tune existing ones.

General Information

As a quick recap, the Motherboard is designed to collect and send data/power to all 16 Smart Sleeves. The Motherboard is essentially a large PCB used to route signals via a network of electrical traces. Each SA slot (8 total) posses two electrical connections (positive and negative leads) to each Smart Sleeve CMB (8*2=16 connections per CMB). These two leads per SA slot are then used to make the physical connections to a sensor/actuator. In total, this results in 2 (leads per sensor/actuator) * 8 (SA slots) * 16 (number of Smart Sleeves) = 256 total traces. This is important to keep in mind when modifying the Smart Sleeve or troubleshooting when problems arise.

Lastly, each SA slot acts as a de-multiplexer/multiplexer for bidirectional relay of signals with its cognate SAMD21 Arduino.

TODO: Include a figure to highight transfer of data including voltage divider

Tuning Sensor Behavior

As mentioned earlier, the Motherboard makes use of voltage divider circuits to acquire sensory data on cultures. Briefly, a voltage divider circuit works by connecting two resistors in series with Vin, a voltage source, to produce Vout, a set fraction of Vin (Fig 1.). The value of Vout is based on the the resistance values of the two resitors and the value of Vin, which can be modeled as:

Vout=Vin∗R2/(R1+R2)Vout = Vin *R2/(R1+R2)Vout=Vin∗R2/(R1+R2)

This principle is used by the Motherboard to implement sensory circuits with components that transduce environmental signals into electrical signals (i.e. thermistors, photodiode, phototransistors, etc). This signal is read via Vout, the voltage across the resistor, which is proportional to the sensor's electrical readout (Fig 2.).

Based on experimental conditions, it may be of interest to tune how these sensory circuits behave to acquire optimal data. The Motherboard offers two primary ways to modify sensory circuits: 1) swap R1 to alter sensor sensitivity and 2) swap Vin to alter the circuit's dynamic range.

Tuning Sensor Sensitivity

To streamline sensitivity tuning, the Motherboard uses 9-pin resistor packs (one is reserved for ground), which connect to the left-and-right to each SA slots (8*2=16 parallel resistors). As a user, all you need to do is remove the two current resistor packs and replace them with packs with desired resitance values. By taking a look at the raw sensory data coming off the eVOLVER, you can assess if the sensitivity modifications are adequate or not.

Resitor packs are polarized electrical components so ensure that the ground pin (with dot) is properly put into the female ground connector on the Motherboard.

Avoid bending or breaking pins when removing/placing resistor packs. Use pliers to gently pull up on both ends to nudge the resistor pack out

Switching between currently requires (can be applied to an existing GUI calibration you have on your eVOLVER)

See forum post for an example

Individually controllable stirring utilizing DIY parts. (a) Photographs of eVOLVER stirring components. A 30 mm x 30 mm computer fan affixed with neodymium magnets actuates stirring in the eVOLVER smart sleeve (left). Two 1/8” acrylic sheets are used to space the magnets from the glass vial. The 3D printed part and CMB are fastened with screws (center, right). Electric leads are connected to the CMB with a screw terminal. (b) Schematic of system design for eVOLVER stirring module. The computer fan spins a stir bar (20 mm x 3 mm, PTFE coated) within a glass vial (28mm x 95 mm, borosilicate) (left). The Arduino interprets the serial command from the Raspberry Pi, amplifies the signal with the PWM board, and applies a 12V signal to the motor (right). The stir rate is determined by the ratio of pulsing the fan ON and OFF. (c) Stir rates can be roughly calibrated by using a smartphone camera recording at ≥240 frames per second. Calibration curve shown is for a single Smart Sleeve. Stir rate was calculated multiple times in a five second window, with error bars depiction standard deviation of these measurements. Rotations per minute varies with different types of Nature Biotechnology: doi:10.1038/nbt.4151 13 stir bars and volume of liquid in the vessel due to drag. Stir rates remain stable after 3 weeks of continuous use.

Figure 1. Basic voltage divider circuit
Figure 2. Optical density sensor circuit using a photodiode sensor to transduce changes in light.
manual OD calibration
this
About stir speed