logo

Our mission is to ensure the generation of accurate and precise findings.

Contact Us No. 111, Ren'ai Road, Dushu Lake Science and Education Innovation Zone, Suzhou Industrial Park iGEM@xjtlu.edu.cn
Qiayi Zha Oct 6, 2022

Overview

After determining the market position of the product based on HP researches, our team designed a hardware for water purification. There are three parts in the device model: shell and sensing system, MBBR carrier[1], membrane module. The shell is made of environmentally friendly material polylactic acid, and the corresponding flow channel is designed to improve the flow efficiency of water; our sensor system can reflect the environment in the device. The parameters such as temperature, humidity are tested to ensure that the internal environment of the device can ensure the efficient adsorption of bacteria; the MBBR carriers grow the biofilm of our modified pure-breed engineering bacteria, which can efficiently adsorb heavy metal ions in sewage; in addition, the membrane module will filter the sewage treated by engineering bacteria, and its pore size is less than 0.2 microns to ensure that there are no engineering bacteria in the treated water. The device is used for heavy metal adsorption in industrial sewage treatment. The model we made can reflect the adsorption effect of the device in real industrial application scenarios to a certain extent.

Column Shell

The column shell is made by 3D printing. The appearance of the device is a cylindrical design, which fits the shape of a water purification device in real life. In addition, the material of the shell uses an environmentally friendly material: polylactic acid.

The internal design of the device reflects the convenience of our bioreactor. The lid of the cylindrical shell is connected to the support column in the device for fixing the hollow fiber tube. People can open the lid to take out the filter membrane, making filter replacement very easy.

Front View

This picture shows the direction of water flow. Our hardware uses the component of a peristaltic pump, which consists of a rotor and multiple compressed flexible tubes. As the rotor turns, the section of the tube under pressure is squeezed closed, forcing the fluid to be pumped through the tube. When the water flow is transported into the bioreactor for reaction, the treated sewage will flow through the hollow fiber tube and be sucked out. So as to achieve the effect of biological water purification. This process will be introduced in the following pictures.

  • A: Peristaltic pump
  • B: Display screen
  • C: Column shell
  • D: Water for treatment

Top View

This is a top view of the hardware. Due to time reasons, our device has not been well integrated with circuits for the time being. The microcontroller and signal transcoder are temporarily exposed. But it could allow us to give unprofessional people a clear understanding of how circuits and the whole devices work. We can find that all the circuit components are controlled by the MCU as the center, and the data will be displayed on the screen after being programmed and calibrated by the computer program.

The middle of this display screen shows our team name, water temperature, solubility of solids, water level, and turbidity in the device. The temperature and moderation outside the device are displayed in the upper left and upper right corners of the display.

  • E: Battery
  • F: MCU (arduino)
  • G: Turbidity signal transcoder
  • H: Hollow fiber tube

Left View

The left view of the hardware mainly shows the two signal transcoder. Their main function is to collect indicators such as temperature and humidity in the device and the environment, and convert them into electrical signals to feed back to the central MCU.

The graph on the right reflects the changes in the value of each indicator of the sensor from the air to the contact with the water surface to the complete immersion into the water.

  • I: External environment, Temperature, Humidity Signal Transcoder
  • J: Water temperature, Dissolved Solids Signal Transcoder

Inside

Inside the device are MBBR carriers, genetically modified E. coli and hollow fiber tubes. Due to time and laboratory safety issues, our device is a conceptual model for the time being without actually putting E. coli. The experiment of the growth and adsorption of E. coli biofilm on the filler will be presented in the experiment section.

The treated sewage will pass through the device and flow out from the hollow fiber tube to achieve the effect of water purification.[2]

  • K: Air stone
  • L: MBBR carriers
  • M: Turbidity sensor
  • N: Water level sensor
  • O: Temperature sensor
  • P: TDS (Turbidity Degree Sensor)

int DHpin = 8; 
   byte dat[5]; 
   byte read_data(){
      byte data;
      for(int i=0; i<8; i++){
      if(digitalRead(DHpin) == LOW){
      while(digitalRead(DHpin) == LOW); 
      delayMicroseconds(30); if(digitalRead(DHpin) == HIGH)
      data |= (1<<(7-i)); 
      while(digitalRead(DHpin) == HIGH); 
      }
      }
      return data;
   }
   
   void start_test()
   {
      digitalWrite(DHpin,LOW); 
      delayMicroseconds(40); 
      delayMicroseconds(80); 
      delayMicroseconds(80); 
      for(int i=0;i<4;i++) 
      pinMode(DHpin,OUTPUT);
      digitalWrite(DHpin,HIGH); 
   }
   
   void setup()
   {
      Serial.begin(9600); pinMode(DHpin,OUTPUT);
   }
   
   void loop()
   
   {
      start_test();
      
      Serial.print("Current humdity = "); Serial.print(dat[0], DEC); 
      Serial.print(dat[1],DEC); 
      Serial.print("Current temperature = "); Serial.print(dat[2], DEC); 
      Serial.print(dat[3],DEC); 
      delay(700);
   }
   

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET     4
Adafruit_SSD1306 display(128, 64, &Wire,OLED_RESET);

void setup() {
   display.begin(SSD1306_SWITCHCAPVCC,0x3C);
   display.setTextColor(WHITE);
   display.clearDisplay();
   
   display.setTextSize(1); 
   display.setCursor(30, 5);
   display.println("-iGEM 2022-");

   display.setTextSize(2);
   display.setCursor(34, 28);
   display.println("XJTLU");

   display.setTextSize(1);
   display.setCursor(47, 55);
   display.println("CHINA");
   
   
   display.display(); 
}

void loop() {

}

OneWire  ds(10);  // on pin 10 (a 4.7K resistor is necessary)

void setup(void) {
   Serial.begin(9600);
}

void loop(void) {
   byte i;
   byte present = 0;
   byte type_s;
   byte data[12];
   byte addr[8];
   float celsius;
   
   if ( !ds.search(addr)) {
      ds.reset_search();
      delay(250);
      return;
   }
   
   for( i = 0; i < 8; i++) {
      Serial.write(' ');
   }

   if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
   }
   Serial.println();
   ds.reset();
   ds.select(addr);
   ds.write(0x44, 1);        // start conversion, with parasite power on at the end
   
   delay(1000);     // maybe 750ms is enough, maybe not
   // we might do a ds.depower() here, but the reset will take care of it.
   
   present = ds.reset();
   ds.select(addr);    
   ds.write(0xBE);         // Read Scratchpad

   for ( i = 0; i < 9; i++) {           // we need 9 bytes
      data[i] = ds.read();
   }

   int16_t raw = (data[1] << 8) | data[0];
   if (type_s) {
      raw = raw << 3; // 9 bit resolution default
      if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
      }
   } else {
      byte cfg = (data[4] & 0x60);
      // at lower res, the low bits are undefined, so let's zero them
      if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
      else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
      else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
      // default is 12 bit resolution, 750 ms conversion time
   }
   celsius = (float)raw / 16.0;
   Serial.print("  Temperature = ");
   Serial.print(celsius);
   Serial.print(" Celsius, ");
}

float temp,data;
   void setup() {
      Serial.begin(9600);
      analogWrite(3, 255); 
      analogWrite(5, 0);
   }
   
   void loop() {
      // put your main code here, to run repeatedly:
      temp=(long)analogRead(1);
      data=(temp/640)*4;
      if(temp>=580){
         Serial.print("Much water!!\n");
         }
         else{
         Serial.print("Safe volume\n");
         }
      Serial.print("the depth is:");
      Serial.print(data);
      Serial.println("cm");
      delay(1000);
   
   }

void setup() {
analogWrite(6, 255);
analogWrite(11, 0);
Serial.begin(9600); //Baud rate: 9600

}

void loop() {

int sensorValue = analogRead(A2);// read the input on analog pin 0:

float voltage = sensorValue * (5.0 / 1024.0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):

float temp=(float)voltage*(-865.68)+3291.3;
Serial.println(temp); // print out the value you read:
Serial.println(voltage);
delay(1000);

}

  1. 1.  A. Barwal and R. Chaudhary, Rev Environ Sci Biotechnol, 2014, 13, 285-299. ↩︎

  2. 2.  Park, Hee-Deung, Chang, In-Soung, Lee and Kwang-Jin, Principles of Membrane Bioreactors for Wastewater Treatment,.↩︎

  3. 3.  https://blog.csdn.net/Reasally/article/details/123944337↩︎