The OpenDrop V3 digital microfluidics platform is equipped with a powerful ARM Cortex M0 processor, a OLED display, joystick and buttons to control the droplets on the array. The OpenDrop is per-programmed with embedded code to test the device by use of the onboard joystick. There is also an open source PC software available that allows easy control of complex sequences. For your own developments the device can be reprogrammed via the USB-C connector using the Arduino integrated development environment (IDE).
The OpenDrop device is ready out of the box for first experiments. After connecting the device via the USB-C cable and applying the hydrophobic coating, water droplets can be moved using the built in joystick. No computer or programming is needed. The OLED display shows the position of the activated electrode as well as coordinates and voltage levels. Voltage levels can be adjusted in an onboard menu.
For updating the embedded software see instructions (Uploading code to the OpenDrop V3) below.
The new control software “OpenDropCpntroller” allows to control the OpenDrop from a PC. On a simple graphical interface electrodes can be switched on and off through a simple mouse click. Sequences of patterns can be generated and played automatically.
Click the electrode to activate or deactivate.
Use left and right button or the mouse wheel to move to the next frame.
Shift click to activate an electrode and move to the next frame automatically.
When button life is activated the device is updated with the software.
Hit the play button to run the sequence. While playing the speed can be changes with the mouse wheel.
Press save to save the current sequence to a json file on disk.
Load restores a sequence from disk. Delete the sequence before loading a new one.
Hit clear all to delete the whole sequence.
Installing the PC-Software (OpenDropController)
The OpenDrop PC-Software is programmed in Processing (processing.org). Processing is a flexible software sketchbook and a language ideal for learning and prototyping.
To install, download the newest version of Processing here: https://processing.org/download/
Then run the OpenDropController from the OpenDrop GitHub repository
Download the OpenDrop repository from GitHub:
For the OpenDropController to work, you need to have the latest OpenDrop V3 embeded code installed. See below how to uploade code to the OpenDrop V3.
Uploading code to the OpenDrop V3
OpenDrop V3 is controlled by a ATSAMD21G18 ARM Cortex M0 processor with a “Adafruit Feather M0” compatible bootloader.
See Adafruit Feather M0 instructions here:
To upload your own code to the OpenDrop V3 you first need to download the latest release of the Arduino IDE.
Then add “https://adafruit.github.io/arduino-board-index/package_adafruit_index.json” to “Additional Boards Manager URLs” option in the preference menu.
See instructions here:
Now install “Arduino SAMD” and “Adafruit SAMD” the Boards Manager.
See instructions here:
Quit and reopen the Arduino IDE. Then select “Feather M0” from the “Tools->Board menu”
Download the OpenDrop repository from GitHub
Now install all the libraries from the folder “OpenDropV3/Software/Libraries/” into your Arduino IDE using the Library Manager
See instructions here:
Then open the sketch (code) that you want to upload to the OpenDrop.
Preinstalled code from the OpenDrop repository:
Plug in the OpenDrop to you computer using the USB-C cable, choose the “Feather M0” device from the “Port” menu. Then start “Sketch->Upload”
Writing your own code:
Commands implemented so far:
Create a new instance of OpenDrop device.
Example: OpenDrop OpenDropDevice = OpenDrop();
Create a new drop on the device.
Example: Drop *myDrop = OpenDropDevice.getDrop();
void begin(uint16_t freq = 1600);
Initialize OpenDrop device.
void set_Fluxels(bool fluxels_array);
Refresh the display
Update the droplets on OpenDrop
Drive the electrodes according to the droplet positions
read all the droplet positions through the feedback amplifier
void set_joy(uint8_t x,uint8_t y);
void show_joy(boolean val);
Show/hide the cursor on the display.
void set_voltage(uint16_t voltage, bool AC_on,uint16_t frequence);
Set voltage level, AC/DC and frequency:
void setPin(uint8_t pin, boolean val);
void(begin(int x,int y));
Initialize a drop with possition x, y:
void(go(int x,int y));
Get position of drop
ATSAMD21G18 @ 48MHz with 3.3V logic/power
256KB of FLASH + 32KB of RAM
32.768 KHz crystal for clock generation & RTC