Skip to content

croningp/BZComputation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Programmable Hybrid Digital Chemical Information Processor based on the Belousov-Zhabotinsky Reaction

DOI

This repository consist of the hardware and specification of parts associated to the paper "A Programmable Hybrid Digital Chemical Information Processor based on the Belousov-Zhabotinsky Reaction".

Authors: Abhishek Sharma, Marcus Tze-Kiat Ng, Juan Manuel Parrilla Gutierrez, Yibin Jiang, Leroy Cronin*

School of Chemistry, The University of Glasgow, University Avenue, Glasgow G12 8QQ, United Kingdom

Platform Overview

The periodicity of the oscillation of the BZ reaction is controlled via mechanical stimulus from the magnetics stirrers. On top of that, the coupling between two or more neighbouring cells are governed by the hydrodynamics through the interfacial stirrers.
The dimension of each cell was desgined in such a way that no apparent coupling between cells can be observed without activation of the interfacial stirrers.

Details regarding the hardware and the STLs of the 3D printed parts used for the experiments are provided in hardware.

Basic Experimental Control Code example

# Library imports
import cv2
import sys
import time
import queue
import random
import numpy as np

from tricont_ctonrols import TricontControl
from bz_control import BZBoard
import predict_cnn_2D

resq = multiprocessing.Queue()
stopt = multiprocessing.Queue()

cnn = predict_cnn_2D.CNN(kwargs={
	'streampath': "invideo", 'outvideo': "output",
	'resq': resq, 'stopsig': stopt
	})

# Microcontroller Names (Arduino UNOs)
arduino_dict= {         
		0: "/dev/BZ_satu",
		1: "/dev/BZ_dua",
		2: "/dev/BZ_tiga",
		3: "/dev/BZ_empat"  }

b = BZBoard(port_dict=arduino_dict)    # Arduino device
p = TricontControl()                   # Calling Tricontinent pumps 
'''
Pretreatment before starting an experiment which includes filling the platform with the BZ
solutions and mixing/stabilisation period which allow the solution to be spread evenly 
throughout the platform.
 '''
p.filling_2d()
b.activate_all(speed=50)
time.sleep(60)
b.disable_all()
time.sleep(240)

# Start of experiment
cnn.start()
'''
Conditions provided which is unique to the experiments depending on what is required.
In this particular example the experiment will stay put for a minute and terminate the experiment.
'''
time.sleep(60)

# End of experiment
stopt.put(1)
cnn.join()
	
p.cleaning_2d()